Примітка : Це адаптований до сучасного стану програмування під ESP8266 переклад моєї публікації “Эксперименты с WiFi модулями на основе SoC ESP8266” від 29 листопада 2018 року. Роблячи переклад, я зауважив, що деякі речі, описані в моїй публікації, з часом змінилися, тому я трішки доповнив та переробив статтю.

Система на кристалі SoC (System on crystal) ESP8266 від китайського виробника Espressif надає можливість простої розробки програмованих модулів з доступом до бездротової мережі WLAN. ESP8266 не має вбудованої Flash – пам’яті програм, а замість неї використовує зовнішню мікросхему QSPI Flash.

Основні характеристики ESP8266:

  • RISC процесор Tensilica L106 з тактовою частотою 160 МГц
  • Максимальний обсяг зовнішньої Flash – пам’яті програм до 16 Мбайт
  • Частота зовнішнього тактового резонатора від 24МГц до 52 МГц
  • Вбудований високочастотний 2,4 ГГц приймально-передавач з підтримкою стандартів IEEE802.11 b/g/n
  • Вбудований стек протоколів TCP / IP і повна підтримка протоколу 802.11b / g / n WLAN MAC
  • Доступні для програмування периферійні інтерфейси GPIO, SDIO, SPI, HSPI, I2C, I2S, UART, PWM, IRDA, ADC

На основі ESP8266 китайська промисловість випускає велику кількість недорогих WiFi модулів. Для своїх експериментів я придбав в різний час два таких модуля: ESP-12F і ESP-14 .
Обидва модуля зображені на наступній картинці.

Відмінності між модулями полягають в основному в розмірі Flash пам’яті програм і наявності в ESP-14 вбудованого мікроконтролера STM8.
Додатковий мікроконтролер доданий для взаємодії з модулем ESP8266 за допомогою передачі AT – команд.
Мабуть ідея виявилася не дуже вдалою і судячи з відсутності документації на модуль ESP-14 на сайті виробника цей модуль був знятий з виробництва.
Обидва модуля розташовані на друкованій платі розміром 24 x 16 (мм) з антеною у вигляді друкованого провідника. Всі компоненти модулів закриті захисним металевим екраном.
Відстань між контактами для запаювання модуля становить 2 мм, загальна кількість контактів дорівнює 22, розташування контактів на обох модулях відрізняється.

Для програмування модулів на основі ESP8266 використовується UART, режим програмування активується установкою низького логічного рівня на ніжці GPIO0.
Для зручності підключення зʼяднувальних проводів я запаяв обидва модуля на плати-перехідники.

Підключення до комп’ютера здійснюється адаптером USB-UART на основі мікросхеми CP2102.

Примітка : Перечитуючи оригінал статті я вирішив, що було б ще непогано додати схему підключення модуля, щоб не змушувати читачів шукати її в інтернеті

Далі наведена схема підключення модуля ESP-12F

Існує також велика кількість модулів на основі ECP8266 з вбудованим перетворювачем USB-UART, які не вимагають від користувача навичок роботи з паяльником і готові до роботи відразу після включення.

Розглянемо можливості ESP8266 на прикладі модуля ESP-12F. Наведена нижче інформація актуальна також для інших модулів на основі ESP8266.
Для роботи з модулем існує декілька способів, найпростіший, що не вимагає зміни прошивки ESP8266 – це використовувати текстові AT – команди.
Для програмування ESP8266 доступний набір розробника SDK від Espressif.
Також ESP8266 можна програмувати в Arduino-IDE.

Програмування ESP8266 в Arduino-IDE

Завантажити Arduino-IDE можна з офіційного сайту Arduino .
Середовище розробки Arduino-IDE дуже просте і до того ж крос-платформне.
Вихідний файл з текстом програми на мові С ++ називається в Arduino-IDE скетчем.
Це основний і єдиний модуль програми, з якого можуть бути викликані численні бібліотечні функції (або створені об’єкти на основі бібліотечних класів).

Як нескладно здогадатися з назв цих функцій всередині setup() необхідно виконати початкову ініціалізації, а в loop() крутиться основний цикл програми.
За замовчуванням програма для Arduino однозадачна, код програми виконується всередині нескінченного циклу, але можливо також використовувати планувальник завдань FreeRTOS.
Для цього необхідно задіяти бібліотеку FreeRTOS.

На момент написання даної статті підтримки FreeRTOS для ESP8266 в бібліотеках Arduino не виявилося.
Хоча виробник Espressif вже портував FreeRTOS на ESP8266 в своєму RTOS-SDK.

Примітка : Через два роки з моменту публікації даної статті я також не виявив підтримки FreeRTOS для ESP8266 в бібліотеках Arduino, хоча для Arduino Mega 256 вона існує вже давно.

Додати підтримку ESP8266 в Arduino-IDE можна додаванням в мене File -> Preferences посилання http://arduino.esp8266.com/stable/package_esp8266com_index.json для стабільних версій або http://arduino.esp8266.com/staging/package_esp8266com_index.json для тестованих версій в поле Additional Boards Managet URLs.




Інший спосіб додавання підтримки ESP8266 в Arduino-IDE полягає в клонуванні git – репозиторію.

Цей спосіб детально описаний на наступному сайті


$ cd hardware
$ mkdir esp8266com && cd esp8266com
$ git clone https://github.com/esp8266/Arduino.git esp8266
$ cd esp8266
$ git submodule update --init


Також можна встановити бінарний інструментарій для програмування ESP8266, для цього необхідна наявність встановленого Python 3.

$ cd esp8266/tools

$ python3 get.py

Далі необхідно вибрати Generic ESP8266 Module в меню Tools->Board .

Налаштування модуля ESP-12F у мене виглядають наступним чином:

У розділі Examples for Generic ESP8266 Module меню File->Examples можна вибрати цікавий приклад для програмування ESP8266.

Компіляція і завантаження прошивки в плату здійснюється натисканням на кнопку Upload в верхньому меню Arduino. Плата повинна бути підключена до USB-UART адаптера, GPIO0 = 0. Також повинен бути обраний правильний номер COM – порта в меню Tools->Port.
Якщо ви працюєте в операційній системі Linux, то необхідно дозволити доступ до пристрою COM-порту, наприклад додати себе в групу dialout власників файлу /dev/ttyUSB0:


$ sudo usermod -a -G dialout
$ sudo systemctl restart

З Arduino-IDE можна викликати функції ESP API. Для перевірки такої можливості відкрийте приклад File->Examples->ESP8266->TestEspApi .
У цьому прикладі я змінив швидкість роботи UART з 74880 на 9600, інакше на екран виводилося сміття.

Опис функцій ESP API знаходиться в документації ESP8266 Non-OS SDK API Reference .
Документацію для програмування ESP8266 з Arduino-IDE можете завантажити за цим посиланням Welcome to ESP8266 Arduino Core’s documentation!

У прикладах також є оновлення прошивки модуля по повітрю OTA (Over the air).
Для перевірки даної можливості відкрийте приклад File-> Examples-> ArduinoOTA-> BasicOTA.
У прикладі необхідно підставити назву своєї бездротової мережі і код доступу до неї:

Завантажте цей приклад звичайним способом (через COM – порт), далі відкрийте термінал Tools-> Serial Monitor, від’єднайте живлення, GPIO0 = 1, знову подайте напругу живлення.
У терміналі з’явитися IP адреса модуля для програмування за допомогою OTA.
Перепрошити модуль по повітрю можна різними способами, в тому числі з Arduino-IDE, для цього необхідно перезапустити середовище розробки і вибрати в меню Tools-> Port бездротовий пристрій (у мене він називається esp8266-ab3eff at 192.168.0.107) в розділі Network ports.

Далі натискаємо на кнопку Upload, закорочувати GPIO0 на землю при цьому немає необхідності. Модуль буде перепрошитий по повітрю. Але необхідно пам’ятати, що якщо прошитий в модуль скетч не підтримує OTA, то наступного разу доведеться заново прошивати модуль через UART.
Хочу зауважити, що програмування ESP6266 в Arduino-IDE – найбільш простий спосіб роботи з модулем.
Якщо можливості Arduino-IDE вас не влаштовують, то можна скористатися фреймворком PlatformIO і програмувати модуль на основі ESP8266 в своєму улюбленому редакторі коду або IDE (наприклад Eclipse).

Програмування ESP8266 в Eclipse за допомогою PlatformIO

Фреймворк PlatformIO для розробки додатків IoT (Internet of things) написаний на мові програмування Python і дозволяє працювати з фреймворками Arduino, ARM mbed, засобами розробки для STM32, ESP8266, ESP32 і багатьма іншими з використанням різних редакторів коду та IDE. На даний момент PlatformIO підтримує 923 різних налагоджувальних плат.
PlatfornIO можна встановити відразу з IDE на основі редактора коду Atom або Visual Studio Code, а можна скористатися інтерфейсом командного рядка CLI (command line interface).
CLI дозволяє створювати нові проекти і експортувати їх в різні IDE.

Для роботи PlatformIO необхідно встановити Python версії 3 або вище.
Після установки пакета Python завантажити PlatformIO можливо за допомогою менеджера пакетів pip.
Для цього відкрийте вікно терміналу (в Windows або Linux) і введіть в командному рядку:


$ pip install -U platformio

Далі необхідно створити каталог проекту і зробити його початкову ініціалізацію:


$ mkdir project_example
$ cd project_example
$ platformio init --ide eclipse --board esp12e

Список всіх підтримуваних PlatformIO налагоджувальних плат можна переглянути за допомогою команди:


$ platformio boards

Після генерації нового проекту його можна відкрити в Eclipse CDT.

У файлі platformio.ini знаходяться настройки проекту:


[env:esp12e]
platform = espressif8266
board = esp12e
framework = arduino

Для збирання проекту використовується фреймворк Arduino. Тепер необхідно створити всередині каталогу src / файл main.cpp і наповнити його наступним змістом:

Далі запускаємо ціль “PlatformIO: Build” і спостерігаємо за збиранням проекту:

Тепер необхідно закоротити контакт GPIO0 на землю, подати живлення на нашу плату ESP12F і запустити ціль PlatformIO: Upload, після чого почнеться завантаження створеної прошивки в модуль:

Послідовний порт для оновлення прошивки модуля повинен бути визначений автоматично, але якщо він визначиться неправильно, то можна призначити правильний номер порта в файлі platformio.ini:


[env:esp12e]
platform = espressif8266
board = esp12e
framework = arduino
upload_port = /dev/ttyUSB0

PlatformIO також надає можливість використовувати при складанні проекту фірмовий SDK від виробника Espressif (правда його версія далеко не остання).
Для цього необхідно в файлі platformio.ini змінити поле framework на наступне:


framework = esp8266-rtos-sdk

У складі фреймворка є приклади, які розташовані в каталозі $ (HOME)/.Platformio/packages/framework-esp8266-rtos-sdk/examples.

Нарешті ми впритул підібралися до програмування на мові С модулів на основі ESP8266 без використання високорівневих фреймворків.

Для цієї мети існує відкрите неофіційне SDK і SDK від виробника Espressif, яке до недавнього часу було закритим.
В обох випадках для використання SDK необхідна наявність операційної системи Linux.

Встановлення гостьової ОС Linux в VirtualBox.

Для початку необхідно завантажити та встановити останню версію Oracle VM VirtualBox.
Цей процес досить тривіальний, щоб детально на ньому зупинятися.
Установка повинна проводитися з правами адміністратора.

Після установки запускаємо VirtualBox і тиснемо на зелену кнопку «New», потім вибираємо тип операційної системи і натискаємо «Create».
Для користувачів Windows та Mac OS є можливість встановити Linux як гостьову ОС у віртуальній машині.

В оригінальній статті я описав встановлення в якості гостьової ОС Fedora Linux. Але спробувавши образ Lubuntu Linux, рекомендований Espressif, виявилося, що Lubuntu Linux працює значно швидше у віртуальному сереовищі Virtual Box. Тому зараз я розповім про встановлення образу, рекомендованого Espressif.

Встановлення віртуального середовища з Lubuntu Linux описане в офіційній документації Espressif ESP8266 SDK Getting Started Guide на десятій сторінці.

Завантажити образ від Espressif можна за наступним посиланням ESP8266_GCC.zip.

Після завантаження необхідно імпортувати образ Lubuntu Linux у Virtual Box. Для цього виберіть завантажений образ в пункті меню File->ImportAppliance.

Для того, щоб екран Lubuntu Linux мав такий-самий розмір, як відкрите вікно, виберіть в меню Virtual Box пункт View->Adjust Window Size.

Тепер треба скопіювати в образ Lubuntu завантажений разом з ним Toolchain. Для цього скопіюємо архів xtensa-lx106-elf.tar.bz2 в спільний каталог (в мене це $HOME/VM/Share). В запущеному образі Lubuntu він буде примонтований до /mnt/Share.

Імʼя користувача Lubuntu по-замовчуванню ESP8266, пароль espressif.

Зайдіть в домашню директорію (cd ) та запустіть на виконання скрипт mount.sh для монтування спільного каталога


$ cd
$ ./mount.sh

Необхідно скопіювати інструментарій в домашній каталог та вилучити його із архіву.


$ cp /mnt/Share/xtensa-lx106-elf.tar.bz2 ~
$ cd && tar -xf xtensa-lx106-elf.tar.bz2


Перевіримо встановлений компілятор

$ xtensa-lx106-elf-gcc --version

Espressif пропонує встановлювати свої SDK в каталог Share, призначений для обміну файлами між віртуальною та хост машиною. Для цього є обʼєктивні причини. Розмір образу Lubuntu Linux від Espressif становить приблизно 8ГБ, якщо встановлювати всі SDK у віртуальну машину, то дуже швидко закінчиться вільний простір на диску Lubuntu.
Тому перед вами є вибір, – встановити власну віртуальну машину (Lubuntu, Fedora і т.д) з розміром диску не менше 20Гб або використовувати каталог Share для встановлення в ньому всіх доступних SDK.

Програмування ESP8266 в ESP-Open-SDK

ESP-Open-SDK надає інструментальні засоби для розробки програмного забезпечення для чіпів ESP8266 і ESP8266EX.
Для установки ESP-Open-SDK необхідно спочатку встановити додаткові пакети, для цього відкриваємо lubuntu у віртуальній машині і вводимо команди:


$ sudo apt install make unrar-free autoconf automake libtool gcc g++ gperf \
flex bison texinfo gawk ncurses-dev libexpat-dev python3-dev python3 python3-serial python3-pip\
sed git unzip bash help2man wget bzip2

Встановимо пакет esp-open-sdk в каталог /opt


$ cd /opt
$ sudo git clone --recursive https://github.com/pfalcon/esp-open-sdk.git

Потім необходно змінити власника каталога esp-open-sdk з root на esp8266


$ sudo chown -R esp8266:esp8266 /opt/esp-open-sdk
$ ls -l

Далі заходимо в каталог esp-open-sdk і починаємо процес збирання:
$ make STANDALONE=n

Процес збирання досить тривалий як в рідній, так і в гостьовій ОС Linux.
Інструментальний набір буде встановлено в директорію /opt/esp-open-sdk/xtensa-lx106-elf

Якщо перівірити версії щойно встановленого і скопійованого із архіву ESP8266_GCC.zip компілятора, то виявиться, що esp-open-sdk містить новішу версію інструментарія.
Тому пропишемо новий шлях до інструментарія xtensa-lx106-elf в системній змінній PATH


$ cd
$ sudo vim .bashrc
export PATH=/opt/esp-open-sdk/xtensa-lx106-elf/bin:$PATH
$ source .bashrc

Перевіримо у вікні термінала вірсію компілятора


$ xtensa-lx106-elf-gcc --version

Встановимо утиліту esptool для програмування Flash – пам’яті модуля ESP8266:


$ sudo pip3 install esptool

Тепер настав час додати підтримку FreeRTOS в нашу інструментальну середу, для цього виконуємо команди:


$ cd /opt
$ sudo git clone --recursive https://github.com/Superhouse/esp-open-rtos.git
$ sudo chown -R esp8266:esp8266 /opt/esp-open-rtos

Для доступу модуля ESP8266 до мережі WIFI необхідно вказати її назву (SSID) і пароль доступу до бездротової мережі, для цього створимо заголовочний файл private_ssid_config.h і пропишемо в ньому зазначені параметри:

$ cd /opt/esp-open-rtos/include
$ vim private_ssid_config.h

Якщо ви працюєте у гостьовій ОС Linux, то необхідно активувати свій USB-UART перетворювач в VirtualBox. Для цього потрібно просто вибрати свій перетворювач в меню Devices-> USB-> Your USB to UART Bridge Controller. Але якщо хост-система також Unix подібна (Linux, MacOS), то необхідно спочатку додати свого користувача в групу vboxusers:


$ sudo usermod -aG vboxusers $USER

Після цього підʼєднуємо до USB порта USB-UART адаптер і запускаємо Virtual Box, вибираємо свій перетворювач в меню Devices-> USB-> Your USB to UART Bridge Controller

Компілюємо приклад HTTP – сервера і завантажуємо прошивку в модуль ESP-12F, не забуваючи встановити GPIO0 = 0:


$ cd /opt/esp-open-rtos/
$ make flash -j4 -C examples/http_server ESPPORT=/dev/ttyUSB0

Після успішної прошивки модуля вимикаємо живлення, встановлюємо GPIO0 = 1 і знову подаємо живлення на модуль ESP-12F.
У вікні веб-браузера можна буде спостерігати роботу вбудованого в ESP8266 HTTP – сервера:

Програмування ESP8266 в SDK від Espressif

Espressif надає для програмування модулів на основі ESP8266 свій фірмовий SDK, який складається фактично з двох незалежних частин: non-OS SDK і RTOS SDK.
Кожен з наданих SDK містить приклади програм.

У прикладах non-OS SDK є програма, що демонструє розширення кількості підтримуваних AT – команд за рахунок додавання користувацьких.
RTOS SDK заснований на операційній системі реального часу FreeRTOS і містить набагато більшу кількість прикладів, ніж в non-OS SDK.

Компілювати приклади із SDK ми можемо також у віртуальній машині, власне саме для цього Espressif її нам і надав.

Документацію для швидкого початку роботи з SDK можна завантажити з сайту виробника ESP8266 SDK Getting Started Guide.
Встановимо RTOS SDK і non-OS SDK від Espressif в гостьову ОС lubuntu:


$ cd /opt
$ sudo git clone https://github.com/espressif/ESP8266_RTOS_SDK.git
$ sudo git clone https://github.com/espressif/ESP8266_NONOS_SDK.git
$ sudo chown -R esp8266:esp8266 /opt/ESP8266_RTOS_SDK
$ sudo chown -R esp8266:esp8266 /opt/ESP8266_NONOS_SDK

Почнемо з найцікавішого, а саме з прикладів програм для RTOS SDK.
Але спочатку треба встановити RTOS SDK, для цього виконаємо наступні команди:

$ cd /opt/ESP8266_RTOS_SDK
$ ./install.sh
$ source ./export.sh

Після інсталляції RTOS SDK версія компілятора стане ще новішою:


$ xtensa-lx106-elf-gcc --version
xtensa-lx106-elf-gcc (crosstool-NG esp-2020r3-49-gd5524c1) 8.4.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Зберемо приклад https- клієнта, побудованого на основі бібліотеки mbed TLS для ESP8266:


$ cd /opt/ESP8266_RTOS_SDK/examples/protocols/https_mbedtls
$ make

Повинно запуститися конфігураційне меню, виконайте настройку основних параметрів, як показано на наступних картинках:

Завантажуємо прошивку прикладу в модуль ESP-12F (не забуваємо про GPIO0 = 0) за допомогою команди:

$ make flash

Перевіримо виведену модулем інформацію, запустивши наступну команду:

$ make monitor

Для виходу із монітору, побудованого на основі PySerial, необхідно натиснути комбінацію клавіш Ctrl+].

Вибрати швидкість послідовного порта можна при конфігурації прикладу, для цього ви можете знову запустити конфігурування та встановити необхідну швидкість, по-замовчуванню встановлено швидкість обміну 74880 бод.

$ make menuconfig

Якщо вже надумаєте змінювати швидкість монітора, то незабудьте також змінити швидкість виводу даних в UART

Настав час випробувати приклад для non-OS SDK. Робота з non-OS SDK має свої особливості. Для того, щоб зібрати будь-який приклад з каталогу /opt/ESP8266_NONOS_SDK/examples/ необхідно скопіювати вибраний приклад в каталог на рівень вище (в /opt/ESP8266_NONOS_SDK).

Компіляція може здійснюватися двома способами: викликом скрипта gen_mics.sh з подальшим введенням необхідних параметрів в інтерактивному режимі або передачею параметрів в командному рядку разом з make (насправді gen_misc.sh робить те-саме).

Спробуємо запустити приклад MQTT – клієнта на модулі ESP-12F.

MQTT (Message Queue Telemetry Transport) – мережевий протокол, який працює поверх TCP/IP, який має архітектуру видавець-передплатник. Для роботи протоколу необхідний постійно працюючий сервер, так званий MQTT брокер. MQTT клієнти обмінюються один з одним повідомленнями через MQTT брокера. Для цього одні клієнти (передплатники) підписуються на прийом повідомлень від інших клієнтів (видавців), коли хто-небудь з видавців відправляє повідомлення, то всі підписані на нього клієнти негайно отримують відправлене повідомлення.

Для того, щоб випробувати приклад з ESP8266_NONOS_SDK/examples/esp_mqtt_proj необхідно встановити MQTT брокер. Найпоширеніший MQTT брокер під ОС Linux називається Eclipse Mosquitto.

Встановлення MQTT брокера Mosquitto на Raspberry Pi

Перед встановленням Mosquitto необхідно зробити оновлення:


$ sudo apt-get update
$ sudo apt-get upgrade

Додаємо репозиторій для завантаження Mosquitto:


$ sudo wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
$ sudo apt-key add mosquitto-repo.gpg.key
$ rm -f mosquitto-repo.gpg.key
$ cd /etc/apt/sources.list.d/
$ sudo wget http://repo.mosquitto.org/debian/mosquitto-stretch.list
$ sudo apt-get update

Встановлюємо Mosquitto

$ sudo apt-get install -y mosquitto mosquitto-clients

Запускаємо Mosquitto

$ sudo service mosquitto restart

Тепер потрібно протестувати роботу передплатників і видавців.
Для цього спочатку робимо підписку, відкриваємо нове вікно терміналу і вводимо:


$ mosquitto_sub -d -t /mqtt/topic/0

Відкриваємо ще одне вікно терміналу і публікуємо повідомлення за допомогою команди:


$ mosquitto_pub -d -t /mqtt/topic/0 -m “Hello world!”

У вікні передплатника має з’явитися повідомлення “Hello world!”.
У попередній публікації я описував як встановити для сервера на Raspberry Pi 3 статичну IP адресу. IP адреса плати може бути визначена за допомогою команди:


$ hostname -I

Приклад MQTT клієнта із ESP8266 non-OS SDK

Спочатку копіюємо приклад esp_mqtt_proj в кореневий каталог ESP8266_NONOS_SDK :


$ cp -R /opt/ESP8266_NONOS_SDK/examples/esp_mqtt_proj /opt/ESP8266_NONOS_SDK
$ cd /opt/ESP8266_NONOS_SDK/esp_mqtt_proj

IP адресу запущеного на Raspberry Pi MQTT брокера і ще кілька параметрів необхідно додати в заголовочний файл mqtt_config.h:


$ vim include/mqtt_config.h

Запускаємо скрипт gen_mics.sh для збірки проекту, в процесі роботи скрипта необхідно ввести декілька параметрів, як показано на наступній картинці:

Далі повинна розпочатися компіляція проекту, але якщо цього не відбулося і ви бачите повідомлення про помилку, то потрібно змінити інтерпретатор Python по-замовчуванню на стару версію Python 2.7.
ESP8266_NONOS_SDK використовує застрарілу версію Python, Espressif не збирається надалі підтримувати цю версію SDK, натомість рекомендує користуватися ESP8266_RTOS_SDK


$ python --version
Python 3.6.9
$ which python
/usr/bin/python
$ sudo rm /usr/bin/python
$ sudo ln -s /usr/bin/python2.7 /usr/bin/python
$ python --version
Python 2.7.17

Другий спосіб збирання:


$ make COMPILE=gcc BOOT=new APP=1 SPI_SPEED=40 SPI_MODE=QIO SPI_SIZE_MAP=4

Для прошивки модуля ESP-12F як зазвичай закорочуємо GPIO0 на землю і вводимо наступні команди:


$ cd ../bin
$ esptool.py erase_flash
$ esptool.py --port /dev/ttyUSB0 write_flash --flash_mode qio --flash_size 32m --flash_freq 40m 0x0000 boot_v1.7.bin 0x1000 upgrade/user1.4096.new.4.bin 0x3FB000 blank.bin 0x3FC000 esp_init_data_default_v08.bin 0x3FE000 blank.bin

Карта пам’яті для розміщення коду і налаштувань в SPI Flash описана в документації ESP8266 SDK Getting Started Guide.

Перевіримо роботу прикладу, для цього відкриваємо на Raspberry Pi три термінали і підписуємося в кожному з них на прийом повідомлень від MQTT клієнта на основі ESP8266:


$ mosquitto_sub -d -t /mqtt/topic/0
$ mosquitto_sub -d -t /mqtt/topic/1
$ mosquitto_sub -d -t /mqtt/topic/2

Можливо також перевірити зворотну дію, – опублікувати повідомлення в топіки 0 – 2.
Для цього в одному термінальному вікні можна по черзі ввести команди:


$ mosquitto_pub -d -t /mqtt/topic/0 -m “Hello ESP8266 /0”
$ mosquitto_pub -d -t /mqtt/topic/1 -m “Hello ESP8266 /1”
$ mosquitto_pub -d -t /mqtt/topic/2 -m “Hello ESP8266 /2”

На цьому все, бажаю вдалих експериментів з модулями на основі ESP8266!

Viewed 11042 times by 4234 viewers

Last modified: 1 December 2020

Author

Comments

Write a Reply or Comment