HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Здравствуйте, коллеги и энтузиасты!</p>
1 <p>Здравствуйте, коллеги и энтузиасты!</p>
2 <p>Последние пару лет практически все прототипирование несложных IoT-устройств я делаю на NodeMCU, хотя зачастую она и великовата по размеру, и дороговата, и избыточна по функционалу. А все потому, что имела неудачный опыт с ESP-01, которая совершенно не поддавалась прошивке. Сейчас пришло время преодолеть этот барьер и освоить другие железки, от которых мне нужно следующее - Wi-Fi и пины для подключения периферии.</p>
2 <p>Последние пару лет практически все прототипирование несложных IoT-устройств я делаю на NodeMCU, хотя зачастую она и великовата по размеру, и дороговата, и избыточна по функционалу. А все потому, что имела неудачный опыт с ESP-01, которая совершенно не поддавалась прошивке. Сейчас пришло время преодолеть этот барьер и освоить другие железки, от которых мне нужно следующее - Wi-Fi и пины для подключения периферии.</p>
3 <p>В этой статье разберем подключение к платформе Интернета вещей наиболее популярных плат с интерфейсом Wi-Fi. Их можно использовать, чтобы управлять своим устройством дистанционно или чтобы снимать показания с сенсоров через интернет.</p>
3 <p>В этой статье разберем подключение к платформе Интернета вещей наиболее популярных плат с интерфейсом Wi-Fi. Их можно использовать, чтобы управлять своим устройством дистанционно или чтобы снимать показания с сенсоров через интернет.</p>
4 <p>Несколько представленных в статье модулей (ESP-01, ESP-07, ESP-12E, ESP-12F) и плат (Goouuu Mini-S1, WeMos D1 mini и NodeMCU V2) базируются на контроллере ESP8266, использование которого позволяет простым и дешевым способом добавить в своё устройство беспроводную связь через Wi-Fi.</p>
4 <p>Несколько представленных в статье модулей (ESP-01, ESP-07, ESP-12E, ESP-12F) и плат (Goouuu Mini-S1, WeMos D1 mini и NodeMCU V2) базируются на контроллере ESP8266, использование которого позволяет простым и дешевым способом добавить в своё устройство беспроводную связь через Wi-Fi.</p>
5 <p>Так выглядит модельный ряд модулей на базе чипа ESP8266.</p>
5 <p>Так выглядит модельный ряд модулей на базе чипа ESP8266.</p>
6 <p>Последняя плата из тех, о которых я расскажу (ESP32 WROOM DevKit v1), построена на контроллере семейства ESP32 - более продвинутой по своим возможностям версии ESP8266.</p>
6 <p>Последняя плата из тех, о которых я расскажу (ESP32 WROOM DevKit v1), построена на контроллере семейства ESP32 - более продвинутой по своим возможностям версии ESP8266.</p>
7 <p>Все представленные модели можно программировать и загружать прошивки через Arduino IDE точно так же, как при работе с Arduino.</p>
7 <p>Все представленные модели можно программировать и загружать прошивки через Arduino IDE точно так же, как при работе с Arduino.</p>
8 <ul><li>ESP-01</li>
8 <ul><li>ESP-01</li>
9 <li>ESP-07</li>
9 <li>ESP-07</li>
10 <li>ESP-12E</li>
10 <li>ESP-12E</li>
11 <li>ESP-12F</li>
11 <li>ESP-12F</li>
12 <li>Goouuu Mini-S1</li>
12 <li>Goouuu Mini-S1</li>
13 <li>WeMos D1 mini</li>
13 <li>WeMos D1 mini</li>
14 <li>NodeMCU V2</li>
14 <li>NodeMCU V2</li>
15 <li>ESP32 WROOM DevKit v1</li>
15 <li>ESP32 WROOM DevKit v1</li>
16 </ul><h2>Настройка среды программирования Arduino IDE</h2>
16 </ul><h2>Настройка среды программирования Arduino IDE</h2>
17 <p>По умолчанию среда IDE настроена только на AVR-платы. Для платформ, представленных ниже, необходимо добавить в менеджере плат дополнительную поддержку.</p>
17 <p>По умолчанию среда IDE настроена только на AVR-платы. Для платформ, представленных ниже, необходимо добавить в менеджере плат дополнительную поддержку.</p>
18 <p>1) Открываем среду программирования Arduino IDE.</p>
18 <p>1) Открываем среду программирования Arduino IDE.</p>
19 <p>2) В пункте меню File (Файл) выбираем Preferences (Настройки). В окне Additional Boards Manager URLs вводим через запятую адреса http://arduino.esp8266.com/stable/package_esp8266com_index.json и https://dl.espressif.com/dl/package_esp32_index.json.</p>
19 <p>2) В пункте меню File (Файл) выбираем Preferences (Настройки). В окне Additional Boards Manager URLs вводим через запятую адреса http://arduino.esp8266.com/stable/package_esp8266com_index.json и https://dl.espressif.com/dl/package_esp32_index.json.</p>
20 http://arduino.esp8266.com/stable/package_esp8266com_index.json, https://dl.espressif.com/dl/package_esp32_index.json<p>3) Нажимаем OK.</p>
20 http://arduino.esp8266.com/stable/package_esp8266com_index.json, https://dl.espressif.com/dl/package_esp32_index.json<p>3) Нажимаем OK.</p>
21 <p>4) В пункте меню Tools (Инструменты) -&gt; Board (Плата) выбираем Boards manager (Менеджер плат).</p>
21 <p>4) В пункте меню Tools (Инструменты) -&gt; Board (Плата) выбираем Boards manager (Менеджер плат).</p>
22 <p>Находим в списке платформы на ESP8266 и нажимаем на кнопку Install (Установить).</p>
22 <p>Находим в списке платформы на ESP8266 и нажимаем на кнопку Install (Установить).</p>
23 <p>6) Надпись INSTALLED сообщает, что дополнения успешно установлены.</p>
23 <p>6) Надпись INSTALLED сообщает, что дополнения успешно установлены.</p>
24 <p>7) Аналогичным образом устанавливаем дополнение для ESP32.</p>
24 <p>7) Аналогичным образом устанавливаем дополнение для ESP32.</p>
25 <p>8) Теперь нам доступны к программированию платформы с модулем ESP8266 и ESP32.</p>
25 <p>8) Теперь нам доступны к программированию платформы с модулем ESP8266 и ESP32.</p>
26 <p>9) Для подключения плат к платформе Интернета вещей используем библиотеку EspMQTTClient. Чтобы ее установить, в пункте меню Tools (Инструменты) выбираем Manage Libraries (Управлять библиотеками). Находим и устанавливаем библиотеку EspMQTTClient. Может появиться сообщение об установке дополнительных библиотек. Выбираем “Install all”.</p>
26 <p>9) Для подключения плат к платформе Интернета вещей используем библиотеку EspMQTTClient. Чтобы ее установить, в пункте меню Tools (Инструменты) выбираем Manage Libraries (Управлять библиотеками). Находим и устанавливаем библиотеку EspMQTTClient. Может появиться сообщение об установке дополнительных библиотек. Выбираем “Install all”.</p>
27 <p>Примечание - Также для работы с платами понадобится установить драйверы CH340 (WeMos и Goouuu) и CP2102 (для остальных). Их отсутствие повлияет на то, найдет ли Arduino IDE COM-порт, к которому подключена плата.</p>
27 <p>Примечание - Также для работы с платами понадобится установить драйверы CH340 (WeMos и Goouuu) и CP2102 (для остальных). Их отсутствие повлияет на то, найдет ли Arduino IDE COM-порт, к которому подключена плата.</p>
28 <h2>Код прошивки</h2>
28 <h2>Код прошивки</h2>
29 <p>Для прошивки всех используемых ниже модулей используем один и тот же код.</p>
29 <p>Для прошивки всех используемых ниже модулей используем один и тот же код.</p>
30 <p>Основные функции:</p>
30 <p>Основные функции:</p>
31 <ol><li>Установка Wi-Fi соединения.</li>
31 <ol><li>Установка Wi-Fi соединения.</li>
32 <li>Подключение к объекту на платформе Rightech IoT Cloud по протоколу MQTT.</li>
32 <li>Подключение к объекту на платформе Rightech IoT Cloud по протоколу MQTT.</li>
33 <li>Отправка рандомных значений по температуре ("base/state/temperature") и влажности ("base/state/humidity") каждые 5 секунд (PUB_DELAY).</li>
33 <li>Отправка рандомных значений по температуре ("base/state/temperature") и влажности ("base/state/humidity") каждые 5 секунд (PUB_DELAY).</li>
34 <li>Получение сообщений о переключении света ("base/relay/led1").</li>
34 <li>Получение сообщений о переключении света ("base/relay/led1").</li>
35 </ol>#include "Arduino.h" #include "EspMQTTClient.h" /* https://github.com/plapointe6/EspMQTTClient */ /* https://github.com/knolleary/pubsubclient */ #define PUB_DELAY (5 * 1000) /* 5 seconds */ EspMQTTClient client( "&lt;wifi-ssid&gt;", "&lt;wifi-password&gt;", "dev.rightech.io", "&lt;ric-mqtt-client-id&gt;" ); void setup() { Serial.begin(9600); } void onConnectionEstablished() { client.subscribe("base/relay/led1", [] (const String &amp;payload) { Serial.println(payload); }); } long last = 0; void publishTemperature() { long now = millis(); if (client.isConnected() &amp;&amp; (now - last &gt; PUB_DELAY)) { client.publish("base/state/temperature", String(random(20, 30))); client.publish("base/state/humidity", String(random(40, 90))); last = now; } } void loop() { client.loop(); publishTemperature(); }<p>Работоспособность кода будем проверять на платформе Rightech IoT Cloud, именно поэтому в качестве адреса MQTT-брокера указан dev.rightech.io. Идентификаторами клиентов служат идентификаторы объектов, созданных на платформе. Под каждую проверку я завела на платформе отдельный объект, именно поэтому во всех скринах кодов, которые будут далее представлены, отличается только строка &lt;ric-mqtt-client-id&gt;.</p>
35 </ol>#include "Arduino.h" #include "EspMQTTClient.h" /* https://github.com/plapointe6/EspMQTTClient */ /* https://github.com/knolleary/pubsubclient */ #define PUB_DELAY (5 * 1000) /* 5 seconds */ EspMQTTClient client( "&lt;wifi-ssid&gt;", "&lt;wifi-password&gt;", "dev.rightech.io", "&lt;ric-mqtt-client-id&gt;" ); void setup() { Serial.begin(9600); } void onConnectionEstablished() { client.subscribe("base/relay/led1", [] (const String &amp;payload) { Serial.println(payload); }); } long last = 0; void publishTemperature() { long now = millis(); if (client.isConnected() &amp;&amp; (now - last &gt; PUB_DELAY)) { client.publish("base/state/temperature", String(random(20, 30))); client.publish("base/state/humidity", String(random(40, 90))); last = now; } } void loop() { client.loop(); publishTemperature(); }<p>Работоспособность кода будем проверять на платформе Rightech IoT Cloud, именно поэтому в качестве адреса MQTT-брокера указан dev.rightech.io. Идентификаторами клиентов служат идентификаторы объектов, созданных на платформе. Под каждую проверку я завела на платформе отдельный объект, именно поэтому во всех скринах кодов, которые будут далее представлены, отличается только строка &lt;ric-mqtt-client-id&gt;.</p>
36 <p>Прим. - Можно подключаться и к одному и тому же объекту, тогда можно использовать один и тот же код для прошивки всех плат без изменений, однако следите, чтобы в таком случае платы не подключались к одному и тому же объекту одновременно, иначе случится коллизия.</p>
36 <p>Прим. - Можно подключаться и к одному и тому же объекту, тогда можно использовать один и тот же код для прошивки всех плат без изменений, однако следите, чтобы в таком случае платы не подключались к одному и тому же объекту одновременно, иначе случится коллизия.</p>
37 <p>Если данная тема вам заинтересовала, полную версию читайте<a>здесь</a>.</p>
37 <p>Если данная тема вам заинтересовала, полную версию читайте<a>здесь</a>.</p>
38  
38