[Разработка для интернета вещей, Интернет вещей, DIY или Сделай сам, Электроника для начинающих] Дружимся с ESP

Автор Сообщение
news_bot ®

Стаж: 6 лет 7 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
26-Июн-2021 11:33

Здравствуйте, коллеги и энтузиасты!Последние пару лет практически все прототипирование несложных IoT-устройств я делаю на NodeMCU, хотя зачастую она и великовата по размеру, и дороговата, и избыточна по функционалу. А все потому, что имела неудачный опыт с ESP-01, которая совершенно не поддавалась прошивке. Сейчас пришло время преодолеть этот барьер и освоить другие железки, от которых мне нужно следующее - Wi-Fi и пины для подключения периферии.В этой статье разберем подключение к платформе Интернета вещей наиболее популярных плат с интерфейсом Wi-Fi. Их можно использовать, чтобы управлять своим устройством дистанционно или чтобы снимать показания с сенсоров через интернет.
Несколько представленных в статье модулей (ESP-01, ESP-07, ESP-12E, ESP-12F) и плат (Goouuu Mini-S1, WeMos D1 mini и NodeMCU V2) базируются на контроллере ESP8266, использование которого позволяет простым и дешевым способом добавить в своё устройство беспроводную связь через Wi-Fi. Так выглядит модельный ряд модулей на базе чипа ESP8266. 
Последняя плата из тех, о которых я расскажу (ESP32 WROOM DevKit v1), построена на контроллере семейства ESP32 - более продвинутой по своим возможностям версии ESP8266. Все представленные модели можно программировать и загружать прошивки через Arduino IDE точно так же, как при работе с Arduino.
Настройка среды программирования Arduino IDEПо умолчанию среда IDE настроена только на AVR-платы. Для платформ, представленных ниже, необходимо добавить в менеджере плат дополнительную поддержку.1) Открываем среду программирования Arduino IDE.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.
http://arduino.esp8266.com/stable/package_esp8266com_index.json, https://dl.espressif.com/dl/package_esp32_index.json

3) Нажимаем OK.4) В пункте меню Tools (Инструменты) -> Board (Плата) выбираем Boards manager (Менеджер плат).Находим в списке платформы на ESP8266 и нажимаем на кнопку Install (Установить).
6) Надпись INSTALLED сообщает, что дополнения успешно установлены.
7) Аналогичным образом устанавливаем дополнение для ESP32.
8) Теперь нам доступны к программированию платформы с модулем ESP8266 и ESP32.9) Для подключения плат к платформе Интернета вещей используем библиотеку EspMQTTClient. Чтобы ее установить, в пункте меню Tools (Инструменты) выбираем Manage Libraries (Управлять библиотеками). Находим и устанавливаем библиотеку EspMQTTClient. Может появиться сообщение об установке дополнительных библиотек. Выбираем “Install all”.
Примечание - Также для работы с платами понадобится установить драйверы CH340 (WeMos и Goouuu) и CP2102 (для остальных). Их отсутствие повлияет на то, найдет ли Arduino IDE COM-порт, к которому подключена плата.Код прошивкиДля прошивки всех используемых ниже модулей используем один и тот же код.Основные функции:
  • Установка Wi-Fi соединения
  • Подключение к объекту на платформе Rightech IoT Cloud по протоколу MQTT
  • Отправка рандомных значений по температуре ("base/state/temperature") и влажности ("base/state/humidity") каждые 5 секунд (PUB_DELAY)
  • Получение сообщений о переключении света ("base/relay/led1")
#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(
  "<wifi-ssid>",
  "<wifi-password>",
  "dev.rightech.io",
  "<ric-mqtt-client-id>"
);
void setup() {
  Serial.begin(9600);
}
void onConnectionEstablished() {
  client.subscribe("base/relay/led1", [] (const String &payload)  {
    Serial.println(payload);
  });
}
long last = 0;
void publishTemperature() {
  long now = millis();
  if (client.isConnected() && (now - last > 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();
}
Работоспособность кода будем проверять на платформе Rightech IoT Cloud, именно поэтому в качестве адреса MQTT-брокера указан dev.rightech.io. Идентификаторами клиентов служат идентификаторы объектов, созданных на платформе. Под каждую проверку я завела на платформе отдельный объект, именно поэтому во всех скринах кодов, которые будут далее представлены, отличается только строка <ric-mqtt-client-id>. Прим. - Можно подключаться и к одному и тому же объекту, тогда можно использовать один и тот же код для прошивки всех плат без изменений, однако следите, чтобы в таком случае платы не подключались к одному и тому же объекту одновременно, иначе случится коллизия.Модули на базе ESP8266Для работы с модулями на базе ESP8266 есть два варианта:
  • Работа с AT командами (в стандартной прошивке Wi-Fi модуль общается с управляющей платой через «AT-команды» по протоколу UART);
  • Wi-Fi модуль как самостоятельный контроллер (все представленные модули очень умные: внутри чипа прячется целый микроконтроллер, который можно программировать на языке C++ через Arduino IDE).
В статье будем рассматривать второй вариант - прошивка модулей в виде самостоятельного полноценного устройства. Здесь также есть два варианта прошивки с точки зрения железа:
  • Через плату Arduino;
  • ЧерезUSB-Serial адаптер.
Рассмотрим второй вариант - использовать адаптер на базе чипа CP2102 (например, такой https://www.chipdip.ru/product/cp2102-usb-uart-board-type-a?frommarket=https%3A%2F%2Fmarket.yandex.ru%2Fsearch%3Frs%3DeJwzSvKS4xKzLI&ymclid=16146772489486451735000001). Обязательно обратите внимание на то, чтобы адаптер позволял выдавать выходное напряжение 3.3 В, не больше!1. ESP-01ESP-01 - самый популярный модуль на ESP8266. PCB антенна обеспечивает дальность до 400 м на открытом пространстве. Внешний вид
ПитаниеРодное напряжение модуля — 3,3 В. Его пины не толерантны к 5 В. Если вы подадите напряжение выше, чем 3,3 В на пин питания, коммуникации или ввода-вывода, модуль выйдет из строя.Подключение периферии2 порта ввода-вывода общего назначенияРаспиновка
Подключение к IoTАппаратная часть
1) Собираем схемуESP-01USB-SerialVCCVCCCH_PDVCCTXRXRXTXGNDGNDGPIO 0 - сначала не подключен, но будет использоваться для перевода в режим программирования далее, поэтому к нему уже подведен проводRST, GPIO 2 - не подключеныRTS, CTS - не подключены
2) Переводим в режим программирования (необходимо каждый раз выполнять перед прошивкой модуля)2.1) Отключаем питание от модуля2.2) Подключаем пин GPIO 0  к GNDESP-01USB-SerialVCCVCCCH_PDVCCTXRXRXTXGNDGNDGPIO 0GNDRST, GPIO 2 - не подключеныRTS, CTS - не подключены 2.3) Подключаем модуль к питанию
2.4) Железо готово, приступаем к программной части.Программная часть1) Выбираем плату: Tools (Инструменты) -> Board(Плата) Generic ESP8266 Module.2) Вставляем подготовленный код.3) Задаем данные для подключения Wi-Fi и идентификатор своего объекта на платформе.4) Компилируем и загружаем скетч на плату.
5) Для обычной работы модуля (не для режима прошивки) пин GPIO 0 должен быть свободен, поэтому отключаем его от GND.
6) Переподключаем питание ESP-01 (например, вытаскиваем и вставляем обратно адаптер).7) Видим появление данных на платформе.
Средняя цена~ 100 рублейГде купитьПрим. - Здесь и далее даны ссылки на магазины, из которых я либо заказывала сама, либо мне их рекомендовали. Это не реклама, а просто желание помочь быстрее найти нужную железку. Вы можете заказывать в любых других понравившихся магазинах =)В РоссииВ Китае2. ESP-07Особенности этого модуля - керамическая антенна и разъем для внешней антенны, металлический экран.Внешний вид
Питание3 - 3,6 ВПодключение периферии
  • 9 портов ввода-вывода общего назначения
  • 1 аналоговый вход
Распиновка
Подключение к IoTАппаратная частьРабота с этим модулем, к сожалению, прошла не слишком гладко. Ни один из возможных вариантов подключения не сработал, и я, уже отчаявшись, решила удалять его описание из статьи. Но тут мне дали новый модуль и сказали попробовать еще раз - о чудо, он заработал с первого раза! В чем было дело и как сломался первый модуль, который я мучила, - неизвестно, но скорее всего он был убит нещадной статикой. Мораль этого лирического отступления такова - если у вас что-то не заработало по инструкции, написанной ниже, не вините инструкцию - сначала прозвоните и проверьте все контакты, а потом попробуйте на другом модуле.
1) Собираем схемуESP-07USB-SerialVCCVCCCH_PD (рекомендуется через резистор)VCCTXRXRXTXGNDGNDGPIO 15 (рекомендуется через резистор)GNDGPIO 0 - сначала не подключен, но будет использоваться для перевода в режим программирования далее, поэтому к нему уже подведен проводвсе остальные контакты не подключеныRTS, CTS - не подключеныНа фото этого и следующего модуля уже можно заметить резисторы. После неведомой поломки уже решила перестраховаться и поставила килоомники, хотя и без них все должно работать.
2) Переводим в режим программирования (необходимо каждый раз выполнять перед прошивкой модуля)2.1) Отключаем питание от модуля2.2. Подключаем пин GPIO 0  к GND2.2) Подключаем пин GPIO 0  к GNDESP-07USB-SerialVCCVCCCH_PDVCCTXRXRXTXGNDGNDGPIO 15 GNDGPIO 0GNDвсе остальные контакты не подключеныRTS, CTS - не подключены2.3) Подключаем модуль к питанию2.4) Железо готово, приступаем к программной части.Программная часть1) Выбираем плату: Tools (Инструменты) -> Board(Плата) Generic ESP8266 Module.2) Вставляем подготовленный код.3) Задаем данные для подключения Wi-Fi и идентификатор своего объекта на платформе.4) Компилируем и загружаем скетч на плату.
5) Для обычной работы модуля (не для режима прошивки) пин GPIO 0 должен быть свободен, поэтому отключаем его от GND.6) Переподключаем питание ESP-07 (например, вытаскиваем и вставляем обратно адаптер).7) Видим появление данных на платформе.
Средняя цена~ 160 рублейГде купитьВ РоссииВ Китае3. ESP-12EВнешний вид
Питание3 - 3,6 ВПодключение периферии
  • 17 портов ввода-вывода общего назначения
  • 1 аналоговый вход
Распиновка
Подключение к IoTАппаратная и программная часть абсолютно такая же, как и в двух вариантах выше.
1) Выбираем плату: Tools (Инструменты) -> Board(Плата) Generic ESP8266 Module.2) Вставляем подготовленный код.3) Задаем данные для подключения Wi-Fi и идентификатор своего объекта на платформе.4) Компилируем и загружаем скетч на плату.
5) Для обычной работы модуля (не для режима прошивки) пин GPIO 0 должен быть свободен, поэтому отключаем его от GND.6) Переподключаем питание ESP-12 (например, вытаскиваем и вставляем обратно адаптер).7) Видим появление данных на платформе.
Средняя цена~ 170 рублейГде купитьВ РоссииВ Китае4. ESP-12F на Wi-Fi Troyka-модульВнешний вид
Разберемся с этим модулем на примере его распайки на Wi-Fi Troyka-модуль производства Амперки. Хоть он и дороже, но взаимодействовать с ним гораздо приятнее. Уже есть ножки, распаянные со со стандартным шагом 2,54 мм, дополнительные защиты, регуляторы напряжения, которые помогают избежать неожиданного поведения и поломок при первых опытах. К слову, когда у меня в далекие времена не получалось подружиться с ESP-01, а время уже поджимало, я взяла этот модуль, и все дальше пошло гладко.ПитаниеРабочее напряжение ESP8266 — 3,3 вольта. Но на Troyka-модуле предусмотрен стабилизатор уровня напряжения, поэтому он работает и от 5 В.Подключение периферии5 портов ввода-вывода общего назначенияМаксимальный ток с пина: 12 мАРаспиновка
Подключение к IoTАппаратная частьОпять же подключаем через адаптер. На сайте Амперки есть прекрасная схемка. 
1) Собираем схемуTroykaUSB-SerialVCCVCCTXRXRXTXGNDGNDвсе остальные контакты не подключеныRTS, CTS - не подключены
2) Переводим в режим программирования (необходимо каждый раз выполнять перед прошивкой модуля)2.1) Зажимаем кнопку PROG2.2) Нажимаем и отпускаем кнопку RESET2.3) Отпускаем кнопку PROGПрограммная часть1) Выбираем плату: Tools (Инструменты) -> Board(Плата) Generic ESP8266 Module.2) Вставляем подготовленный код.3) Задаем данные для подключения Wi-Fi и идентификатор своего объекта на платформе.4) Компилируем и загружаем скетч на плату.
5) Переподключаем питание (например, вытаскиваем и вставляем обратно адаптер).6) Видим появление данных на платформе.
Текущая цена~ 850 рублейГде купитьВ РоссииПлаты на базе ESP8266Если с модулями приходилось немного повозиться, то все представленные ниже платы можно сразу подключать к USB-порту компьютера.1. Goouuu Mini-S1Внешний вид
Питание5 В (Крайне не рекомендуется запитывать через вывод 3V3. Входящее напряжение будет поступать на чип ESP8266 напрямую, минуя все защиты от перенапряжения и короткого замыкания.)Подключение периферии
  • 11 цифровых входов/выходов
  • 1 аналоговый вход
Выходы питания 3.3 В и 5 В.Распиновка
Подключение к IoT1) Выбираем плату: Tools (Инструменты) -> Board(Плата) Wemos D1 R1 (или Generic ESP8266 Module, так тоже работает).2) Вставляем подготовленный код.3) Задаем данные для подключения Wi-Fi и идентификатор своего объекта на платформе.4) Компилируем и загружаем скетч на плату.
5) Видим появление данных на платформе.
Средняя цена~ 300 рублейГде купитьВ РоссииВ Китае2. WeMos D1 miniВнешний вид
Питание5 ВПодключение периферии
  • 11 цифровых входов-выходов
  • 1 аналоговый вход
Выходы питания 3.3 В и 5 В.Распиновка
Подключение к IoT1) Выбираем плату: Tools (Инструменты) -> Board(Плата) Wemos D1 R1 (или Generic ESP8266 Module).2) Вставляем подготовленный код.3) Задаем данные для подключения Wi-Fi и идентификатор своего объекта на платформе.4) Компилируем и загружаем скетч на плату.
5) Видим появление данных на платформе.
Средняя цена~ 220 рублейГде купитьВ РоссииВ Китае3. NodeMCU V2Внешний вид
Питание5 - 10 ВПодключение периферии
  • 11 портов ввода-вывода общего назначения
  • 1 аналоговый вход
Максимальный выходной ток пина 3V3: 600 мАРаспиновка
Подключение к IoT1) Выбираем плату: Tools (Инструменты) -> Board(Плата) NodeMCU 1.0 (или Generic ESP8266 Module).2) Вставляем подготовленный код.3) Задаем данные для подключения Wi-Fi и идентификатор своего объекта на платформе.4) Компилируем и загружаем скетч на плату.
5) Видим появление данных на платформе.
Средняя цена~ 240 рублейГде купитьВ России В КитаеПлата на базе ESP32ESP32 WROOM DevKit v1Внешний вид
Питание5 - 14 ВПодключение периферии
  • Цифровые входы/выходы: 21 пин 1–5, 12–19, 21–23, 25–27, 32 и 33Контакты ввода-вывода общего назначения. Пины могут быть настроены на вход или на выход. Логический уровень единицы — 3,3 В, нуля — 0 В. Максимальный ток выхода — 12 мА.
  • Цифровые входы: 4 пина 34–36 и 39Контакты ввода общего назначения. Могут быть настроены только на вход.
  • ШИМ: все пины ввода-выводаПозволяет выводить аналоговые значения в виде ШИМ-сигнала с разрядность 16 бит. Максимальное количество каналов 16.
  • АЦП: 15 пинов 2, 4, 12–15, 25–27, 32–36 и 39Позволяет представить аналоговое напряжение в цифровом виде с разрядностью 12 бит.
  • ЦАП: пины 25(DAC1) и 26(DAC2)Аналоговый выход цифро-аналогового преобразователя, который позволяет формировать 8-битные уровни напряжения.
Максимальный выходной ток пина 3V3: 1 АРаспиновка
Подключение к IoT1) Выбираем плату: Tools (Инструменты) -> Board(Плата) DOIT ESP32 DEVKIT V1.2) Вставляем подготовленный код.3) Задаем данные для подключения Wi-Fi и идентификатор своего объекта на платформе.4) Компилируем и загружаем скетч на плату.
5) Видим появление данных на платформе.
Средняя цена~ 520 рублейГде купитьВ РоссииВ Китае Надеюсь, что данная инструкция станет полезной для всех, кто начнет работать с представленными модулями или их аналогами, поможет в выборе, а также сократит время на поиски алгоритмов подключения.Ссылка на видеоинструкцию >>> https://youtu.be/7XzaUGr3-BA
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_razrabotka_dlja_interneta_veschej (Разработка для интернета вещей), #_internet_veschej (Интернет вещей), #_diy_ili_sdelaj_sam (DIY или Сделай сам), #_elektronika_dlja_nachinajuschih (Электроника для начинающих), #_esp8266, #_esp, #_esp01, #_esp07, #_esp12, #_nodemcu, #_diy, #_arduino, #_wifi, #_arduino_ide, #_razrabotka_dlja_interneta_veschej (
Разработка для интернета вещей
)
, #_internet_veschej (
Интернет вещей
)
, #_diy_ili_sdelaj_sam (
DIY или Сделай сам
)
, #_elektronika_dlja_nachinajuschih (
Электроника для начинающих
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 21-Сен 14:56
Часовой пояс: UTC + 5