Разработка умных устройств на примере контроллера теплого пола на esp8266

Introduction¶

The Wi-Fi library for ESP8266 has been developed based on ESP8266 SDK, using the naming conventions and overall functionality philosophy of the Arduino WiFi library. Over time, the wealth of Wi-Fi features ported from ESP8266 SDK to esp8266 /
Arduino outgrew Arduino WiFi library and it became apparent that we would need to provide separate documentation on what is new and extra.

This documentation will walk you through several classes, methods and properties of the ESP8266WiFi library. If you are new to C++ and Arduino, don’t worry. We will start from general concepts and then move to detailed description of members of each particular class including usage examples.

The scope of functionality offered by the ESP8266WiFi library is quite extensive and therefore this description has been broken up into separate documents marked with :arrow_right:.

Quick Start

Hopefully, you are already familiar how to load the Blink.ino sketch to an ESP8266 module and get the LED blinking. If not, please use this tutorial by Adafruit or another great tutorial developed by Sparkfun.

To hook up the ESP module to Wi-Fi (like hooking up a mobile phone to a hot spot), you need only a couple of lines of code:

#include<ESP8266WiFi.h>

voidsetup()
{
Serial.begin(115200);
Serial.println();

WiFi.begin("network-name","pass-to-network");

Serial.print("Connecting");
while(WiFi.status()!=WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println();

Serial.print("Connected, IP address: ");
Serial.println(WiFi.localIP());
}

voidloop(){}

In the line replace and with the name and password of the Wi-Fi network you would like to connect to. Then, upload this sketch to ESP module and open the serial monitor. You should see something like:

How does it work? In the first line of the sketch, we are including the ESP8266WiFi library. This library provides ESP8266 specific Wi-Fi routines that we are calling to connect to the network.

The actual connection to Wi-Fi is initialized by calling:

WiFi.begin("network-name","pass-to-network");

The connection process can take couple of seconds and we are checking for whether this has completed in the following loop:

while(WiFi.status()!=WL_CONNECTED)
{
delay(500);
Serial.print(".");
}

The loop will keep looping as long as is other than . The loop will exit only if the status changes to .

The last line will then print out the IP address assigned to the ESP module by DHCP:

Serial.println(WiFi.localIP());

If you don’t see the last line but just more and more dots , then likely name or password to the Wi-Fi network is entered incorrectly in the sketch. Verify the name and password by connecting from scratch to this Wi-Fi network with a PC or a mobile phone.

Note: if connection is established, and then lost for some reason, ESP will automatically reconnect to the last used access point once it is again back on-line. This will be done automatically by Wi-Fi library, without any user intervention.

That’s all you need to connect ESP8266 to Wi-Fi. In the following chapters we will explain what cool things can be done by the ESP once it’s connected.

RTC

Подключение внешнего кварцевого резонатора к ESP32

По одним статьям RTC в ESP32 — это не Real Time Clock, а ядро низкого энергопотребления. Однако, по другим все-же Real Time Clock, но плохого качества (+-5%), который не стоит использовать в бизнес-приложениях.

Возможно, проблема неточности встроенного RTC может быть решена добавлением внешнего кварцевого резонатора. Я нашел упоминание о схеме подключения карцевого резонатора к контактам RTC_GPIO8/RTC_GPIO9. Но непонятно как запитывать встроенный RTC от батарейки. Отдельного входа RTC VBAT нет.

В общем, не факт, что удастся сэкономить на входе. Особенно, если нужен data logger, а не только RTC. В data logger RTC уже встроен и SPI выводы на чтение/запись придется отдать :-(. Хотя в data logger RTC нередко подключается на шину I2C.

Как все это еще улучшить?

Улучшать можно бесконечно (в тех пределах, которые позволит оперативка, конечно)

Alertmanager-bot — telegram бот для отправки PUSH уведомлений в Telegram
 

cAdvisor — мониторинг ресурсов занятых каждым контейнером
 
Можно прикрутить на алармы amixr чтобы получать уведомления в виде звонков на телефон и SMS.
 
Добавить в prometheus мониторинг и статистику nginx
 
Добавить в prometheus мониторинг influx

 
Добавить в prometheus мониторинг чего-нибудь еще 🙂
 
Добавить контейнер Loki для просмотра логов в Grafana
 
Добавить контейнер с сервером OpenVPN, чтобы ходить в интернет через облако Oracle
 
Можно сделать стартовые скрипты создания пользователей, брать пароли из защищенного хранилища…
 
и много чего еще — было бы желание 🙂
 
 
 
 
Эта статья написана специально для пользователей мобильного приложения IoT Manager (telegraf ожидает сообщения MQTT в JSON формате)
Обсуждение этой статьи у нас на форуме

Обсуждение этой статьи в telegram канале Дмитрия Борисенко 
 
Спасибо, что дочитали до конца.

Начало работы с Termite

В оригинальной статье о прошивке ESP8266 была рекомендована PuTTY; и, если она у вас она есть, и вы хотите её использовать, она здесь будет отлично работать. Тем не менее, Termite в этом плане более удобное приложение и будет использоваться далее в этой статье. Termite бесплатен и для личного, и для коммерческого использования.

В последующих этапах предполагается, что модуль ESP-01 запрограммирован так же, как обычно, поставщиком. Если вы (или кто-то еще) внесли изменения в стандартные настройки программы, вам необходимо будет поэкспериментировать, чтобы определить текущие настройки вашего модуля ESP-01.

После проверки своей схемы программирования ESP-01, как описано выше, включите её. Запустите на своем компьютере Termite и нажмите кнопку Settings (Настройки); вы должны увидеть окно, похожее на приведенное ниже. Убедитесь, что COM порт, к которому подключен USB-TTL конвертер, правильно выбран в окне настроек последовательного порта. Выставьте все остальные параметры, как показано в окне настроек последовательного порта ниже, и нажмите OK, чтобы закрыть окно настроек последовательного порта.

Настройки последовательного порта

На этом этапе курсор должен мигать в нижней части окна Termite; если нет, кликните на нижней части окна Termite, чтобы поместить туда курсор. Введите и нажмите Enter на клавиатуре; если всё хорошо, ESP-01 ответит в окне Termite. Если это произойдет, можете вздохнуть с облегчением, потому что вы только что преодолели главное препятствие.

Затем введите и нажмите Enter. ESP-01 должен ответить чем-то очень похожим, что показано на рисунке ниже.

Отклик модуля ESP-01

Команда говорит ESP8266 сообщить о версии набора AT-команд, который он содержит, какой SDK (Software Development Kit) был загружен в него, какая компания собрала модуль ESP, и когда SDK был загружен в модуль. Наконец, как обычно, ESP8266 завершает свой ответ с помощью .

Если ESP-01 ответил правильно, то можно закончить с Termite (если вы не хотите еще поэкспериментировать). Далее он понадобится снова для подтверждения успешной прошивки.

Компоненты умного дома

Теперь я хотел бы подробнее остановится на компонентной схеме умного дома. Все компоненты уместились в следующей схеме:

Компоненты умного дома

Слева-направо: сначала идет ваше устройство на ESP8266, далее это прошивка ESP Easy (ее ставим на ESP8266), прошивку подключаем к MQTT-брокеру (например WQTT.ru или свой брокер на своем сервере), веб-сервис WQTT.ru уже имеет подключение к Алисе (на своем брокере это подключение придется сделать самостоятельно, что в общем несложно, потому что это наша привычная работа программиста), далее сервер логики Node RED, который подключен к MQTT-брокеру и управляет всем умным домом. И в конце можно поставить Homebridge для связи умного дома с Homekit.

Как вы наверное догадались, homebridge с голосовыми помощниками не обязательные компоненты. Главное это MQTT-брокер и Node RED. Эти два сервера вам обеспечат практический полный функционал и доступ к настройке любой логики.

Думаю общая картинка умного дома уже появилась и можно переходить к самим компонентам в отдельности. В этой статье рассмотрим MQTT-брокер и само устройство. В следующих статьях будем рассматривать настройку прошивки ESP Easy и Node RED. Этого будет достаточно, чтобы запустить простейший вариант умного дома.

В качестве устройства у нас будет светодиод, который встроен в ESP8266 и сидит на пине GPIO2. Этот светодиод будет имитировать освещение в гостиной например. Также подключим кнопку, которая будет включать этот светодиод. И еще в нашем устройстве будут два датчика: DHT11 и BMP085 (влажности и барометр с термометром). 

В логику (которая будет хранится в Node RED) заложим управление кнопкой и светодиодом, оповещение по телеграму о резком похолодании в комнате и вывод значений датчиков в Homekit и Алису.

Элементы платы

Мозг платформы

Troyka Wi-Fi основан на модуле ESP-12 с чипом ESP8266EX от Espressif.

Чип ESP8266EX

Чип ESP8266 — выполнен по технологии SoC (англ. System-on-a-Chip — система на кристалле). В основе кристалла входит процессор семейства Xtensa — 32-х битный Tensilica L106 с частой 80 МГц с ультранизким энергопотреблением, радиочастотный трансивер с физическим уровнем WiFi IEEE 802.11 b/g/ и блоки памяти SRAM. Мощности процессорного ядра хватает для работы сложных пользовательских приложений и цифровой сигнальной обработки.

Программное приложение пользователя должно храниться на внешней микросхеме Flash-памяти и загружаться в через один из доступных интерфейсов (SPI, UART, SDIO и др.) каждый раз в момент включения питания системы.

Чип ESP8266 не содержит в себе Flash-память и многих других компонентов для пользовательского старта. Микросхема является основой на базе которой выпускаются модули с необходимой периферией, например ESP-12.

Модуль ESP-12

Рядом с кожухом расположен индикаторный светодиод и миниатюрная антенна из дорожки на верхнем слое печатной платы в виде змейки. Металлический кожух экранирует компоненты модуля и тем самым улучшает электромагнитные свойства.

По периметру платы расположены 22 пина через которые модуль ESP-12 взаимодействует с внешним миром. В нашем случае коммуникация с компонентами и модулями на платформе Troyka Wi-Fi.

Troyka контакты

Первая группа

  • Сигнальный (TX) — цифровой выход Wi-Fi модуля. Используется для передачи данных в микроконтроллер. Подключите к пину RX микроконтроллера.
  • Питание (V) — соедините с рабочим напряжением микроконтроллера.
  • Земля (G) — соедините с пином GND микроконтроллера.

Вторая группа

  • Сигнальный (P) — используйте для перевода модуля в режим сна. Подключите к любому цифровому пину микроконтроллера.
  • Сигнальный (RX) — цифровой вход Wi-Fi модуля. Используется для приёма данных из микроконтроллера. Подключите к пину TX микроконтроллера.

Дополнительные контакты

Через Troyka-контакты вы можете получить доступ к , , , и пину модуля ESP-12. Для этого достаточно капнуть припой на контактные площадки с обратной стороны устройства.

Обратите внимание, на плате версии и ниже, шёлк на контактах и перепутан местами.

Светодиодная индикация

Имя светодиода Назначение
RX и TX Мигают при обмене данными между Wi-Fi модулем и управляющим устройством.
POWER Горит, если на модуль подано питание

Кнопка служит для перевода модуля в режим прошивки:

  1. Зажмите кнопку ;
  2. Нажмите и отпустите кнопку ;
  3. Отпустите кнопку

Стабилизатор напряжения

Стабилизатор MC33275ST-3.3T3G с выходом 3,3 вольта, обеспечивает питание модуля ESP-12. Максимальный выходной ток составляет 300 мА.

На плате так же присутствует необходимая обвязка для сопряжения устройств с разными питающими напряжениями.

В нашем случае это может быть управляющая плата Arduino с 5 вольтовой логикой и Wi-Fi модуль с 3,3 вольтовой логикой.

Подключение ESP8266 через Arduino

Если у вас под рукой не оказалось USB-TTL конвертера на 3,3в, но есть Arduino со встроенным USB-TTL конвертером, то можно использовать такую схему подключения

ESP8266 подключение через Arduino

На что обратить внимание:

1. Arduino Reset подключен к GND (синий провод) чтобы не запускался микроконтроллер на Arduino, в данном виде мы используем Arduino как прозрачный USB-TTL конвертер

2. RX и TX подключены не «на перекрест», а прямо — RX — RX (зеленый), TX — TX (желтый)

3. Все остальное подключено так же, как и в предыдущих примерах

Внимание! В этой схеме также требуется согласовывать уровни TTL 5 вольт Arduino и 3.3 вольта на ESP8266, однако неплохо работает и так. Внимание! На Arduino может быть установлен стабилизатор питания, который не выдержит ток, требуемый для ESP8266, поэтому прежде, чем производить подключение сверьтесь с даташитом на тот стабилизатор, который установлен именно у вас

Не подключайте другие энергопотребляющие компоненты одновременно с ESP8266 в связи с риском выхода из строя встроенного в Arduino стабилизатора питания

Внимание! На Arduino может быть установлен стабилизатор питания, который не выдержит ток, требуемый для ESP8266, поэтому прежде, чем производить подключение сверьтесь с даташитом на тот стабилизатор, который установлен именно у вас. Не подключайте другие энергопотребляющие компоненты одновременно с ESP8266 в связи с риском выхода из строя встроенного в Arduino стабилизатора питания

Шаг 3. Схема соединения

Мы можем соединить Ардуино и WiFi модуль двумя способами — первый с резисторами и второй вариант без резисторов. Остановимся на обеих схемах.

Вариант 1

Соединяем контакты, как описано на прилагаемой таблице контактов ниже:

Следуйте этим шагам:

  • подключите красный провод к VIN (3,3 В) к питанию + 3,3 В от микроконтроллера;
  • подключите черный провод к земле;
  • подключите зеленый провод к TX модуля Wifi и микроконтроллера;
  • подключите желтый провод к RX модуля Wi-Fi и микроконтроллера.

Важно! ESP8266 строго питается только до 3,3 В, при больших значениях можно испортить модуль. Не используйте напряжения более 3,3 В!. Подключите VIN к 3,3 В для включения питания, а также контакт ENABLE для включения модуля

Подключите VIN к 3,3 В для включения питания, а также контакт ENABLE для включения модуля.

TX подключен к RX, что означает, что все, что мы хотим передать в ESP8266, получит Arduino UNO. И наоборот для RX в TX. Создав эту схему, мы теперь готовы запустить WiFi с Arduino UNO.

Вариант 2

Соедините контакты, соответственно этой таблице контактов ниже:

Следуй этим шагам:

  • подключите оба контакта ECC VCC / 3.3V / Power Pin и Enable (красные провода) к резистору 10 кОм, а затем к выводу питания Uno + 3.3V;
  • соедините контакт заземления / заземления ESP (черный провод) с выводом заземления / заземления Arduino Uno;
  • подключите TX ESP (зеленый провод) к контакту 3 Uno;
  • подключите RSP (синий провод) ESP к резистору 1 кОм, затем к контакту 2 Uno;
  • подключите RX (синий провод) ESP к резистору 1 кОм, затем к выводу GND заземления Uno.

О схеме

Вывод питания ESP на ESP11 имеет маркировку VIN, однако для некоторых версий это может быть 3,3 В или Power или VCC. Вам также нужно будет включить вывод ESP CH_EN или Enable, чтобы он работал.

Как мы уже обсуждали, — не используйте напряжение на ESP больше чем 3.3 В. ESP8266 строго использует 3,3 В. Более того, это разрушит модуль. Так как Arduino имеет 5 В, нам пришлось поставить делитель напряжения — это резисторы.

TX ESP подключен к RX Arduino Uno, что означает, что все, что мы хотим передать (TX) в ESP, получит (RX) от Uno, и наоборот. Создав эту схему, мы теперь готовы запустить WIFI с Arduino UNO.

Внимание! Если вы подключите последовательный отладчик через USB-кабель или откроете COM-порт, связь между ESP и Arduino будет нарушена и не сможет работать. Поэтому, прежде чем прошивать Uno, сначала удалите Rx / Tx из ESP.

Бизнес-логика в коде приложения

В первой части статьи я уже описывал бизнес-логику приложения. Напомню, что под бизнес-логикой я понимаю обработку событий с периферии и с облака. При обработке происходит или управление периферией, или передача атрибутов Capability в облако. 

Считывание показаний температуры с датчика

В отличие от примера для ESP8266, в этом примере добавляются события от настоящего датчика. Это взаимодействие организовано в виде передачи сообщений через очередь (FreeRTOS Queue) между двумя тасками/потоками: основным таском с управлением и мониторингом остальной периферии и таском, считывающим данные с датчика температуры. В основном таске создаётся очередь temperature_events_q, а также запускается таск, считывающий температуру.

В основном таске внутри бесконечного цикла на каждой итерации происходит попытка получить значение температуры из очереди и записать в переменную temperature_value. Если значение переменной temperature_value поменялось, то новое значение температуры отправляется в облако и отображается в UI приложения:

Подробнее о работе с тасками и очередями вы можете прочитать в 3 и 4 главе книги «Mastering the FreeRTOS Real Time Kernel», рекомендуемой на странице с ресурсами в документации FreeRTOS.

Светодиодная индикация

Помимо нового источника событий в коде бизнес-логики меняется управление RGB светодиодом при установке значения температуры подогрева “чайника” в коллбэке Thermostat Heating Setpoint Capability, а также в начале и завершении процесса подогрева. 

Варианты программирования

От поставщика многие (возможно, все) модули ESP8266 загружаются с прошивкой «AT» и могут программироваться через простую программу консоли. Если вы используете модуль в первую очередь для использования его Wi-Fi возможностей и управления им с помощью другого микроконтроллера, это может быть всё, что вам нужно.

Более сложный вариант доступен от NodeLua, который предлагает прошивку с открытым исходным кодом на основе языка программирования Lua. NodeLua всё еще находится в разработке, но уже содержит обширные возможности. Другие варианты включают в себя Python, BASIC и Arduino IDE, которая представлена в данной статье.

Программатор ESP-Prog

Особенности:

  • Подключение к ПК: USB.
  • Варианты питания: USB (по умолчанию).
Отладочная плата Описание Интерфейсы Управление и индикация Поддерживаемые продукты
ESP-Prog Программатор ESP-Progодин из инструментов разработки и отладки Espressif, включающий функционал автоматической загрузки прошивки, последовательный порт и онлайн-отладку JTAG. Функции автоматической загрузки прошивки и последовательной связи с ESP-Prog поддерживают платформы ESP8266 и ESP32, а онлайн-отладка JTAG поддерживается индикаторов только платформой ESP32. В качестве чипа контроллера USB Bridge в ESP-Prog используется FT2232HL. I/O, USB, соединительные разъемы наиболее популярных стандартов Сенсорные датчики, светодиоды, RGB выход, поддержка 7-сегментных ,

Описание ESP8266 NodeMcu v3

Технические характеристики модуля:

  • Поддерживает Wi-Fi протокол 802.11 b/g/n;
  • Поддерживаемые режимы Wi-Fi – точка доступа, клиент;
  • Входное напряжение 3,7В – 20 В;
  • Рабочее напряжение 3В-3,6В;
  • Максимальный ток 220мА;
  • Встроенный стек TCP/IP;
  • Диапазон рабочих температур от -40С до 125С;
  • 80 МГц, 32-битный процессор;
  • Время пробуждения и отправки пакетов 22мс;
  • Встроенные TR переключатель и PLL;
  • Наличие усилителей мощности, регуляторов, систем управления питанием.

Отличия от других модификаций

Платы поколения V1 и V2 легко отличить – они обладают различным размером. Также второе поколение оснащено улучшенной модификацией чипа ESP-12 и 4 Мб флэш-памяти. Первая версия, устаревшая, выполнена в виде яркой желтой платформы. Использовать ее неудобно, так как она покрывает собой 10 выходов макетной платы. Плата второго поколения сделана с исправлением этого недостатка – она стала более узкой, выходы хорошо подходят к контактам платы. Платы V3 внешне ничем не отличаются от V2, они обладают более надежным USB-выходом. Выпускает плату V3 фирма LoLin, из отличий от предыдущей платы можно отметить то, что один из двух зарезервированных выходов используется для дополнительной земли, а второй – для подачи USB питания. Также плата отличается большим размером, чем предыдущие виды.

Где купить модули NodeMCU и ESP8266

Сегодня на рынке доступно множество достаточно недорогих модификаций плат на базе ESP8266. Мы сделали небольшую подборку наиболее интересных вариантов:

Питание модуля NodeMcu

Подавать питание на модуль можно несколькими способами:

  • Подавать 5-18 В через контакт Vin;
  • 5В через USB-разъем или контакт VUSB;
  • 3,3В через вывод 3V.

Преимущества NodeMcu v3

  • Наличие интерфейса UART-USB с разъемом micro USB позволяет легко подключить плату к компьютеру.
  • Наличие флэш-памяти на 4 Мбайт.
  • Возможность обновлять прошивку через USB.
  • Возможность создавать скрипты на LUA и сохранять их в файловой системе.

Недостатки модуля NodeMcu

Основным недостатком является возможность исполнять только LUA скрипты, расположенные в оперативной памяти. Этого типа памяти мало, объем составляет всего 20 Кбайт, поэтому написание больших скриптов вызывает ряд трудностей. В первую очередь, весь алгоритм придется разделять на линейные блоки. Эти блоки необходимо записать в отдельные файлы системы. Все эти модули исполняются при помощи оператора dofile.

При написании нужно соблюдать правило – при обмене данными между модулями нужно пользоваться глобальными переменными, а при вычислении внутри модулей – локальными

Также важно в конце каждого написанного скрипта вызывать функцию collectgarbage (сборщик мусора)

ESP-07

Особенности этого модуля — керамическая антенна и разъем для внешней антенны, металлический экран.

Подключение к IoT

Аппаратная часть

Работа с этим модулем, к сожалению, прошла не слишком гладко. Ни один из возможных вариантов подключения не сработал, и я, уже отчаявшись, решила удалять его описание из статьи. Но тут мне дали новый модуль и сказали попробовать еще раз — о чудо, он заработал с первого раза! В чем было дело и как сломался первый модуль, который я мучила, — неизвестно, но скорее всего он был убит нещадной статикой. Мораль этого лирического отступления такова — если у вас что-то не заработало по инструкции, написанной ниже, не вините инструкцию — сначала прозвоните и проверьте все контакты, а потом попробуйте на другом модуле.

1) Собираем схему

ESP-07

USB-Serial

VCC

VCC

CH_PD (рекомендуется через резистор)

VCC

TX

RX

RX

TX

GND

GND

GPIO 15 (рекомендуется через резистор)

GND

GPIO 0 — сначала не подключен, но будет использоваться для перевода в режим программирования далее, поэтому к нему уже подведен провод

все остальные контакты не подключены

RTS, CTS — не подключены

На фото этого и следующего модуля уже можно заметить резисторы. После неведомой поломки уже решила перестраховаться и поставила килоомники, хотя и без них все должно работать.

2) Переводим в режим программирования (необходимо каждый раз выполнять перед прошивкой модуля)

2.1) Отключаем питание от модуля2.2. Подключаем пин GPIO 0  к GND

2.2) Подключаем пин GPIO 0  к GND

ESP-07

USB-Serial

VCC

VCC

CH_PD

VCC

TX

RX

RX

TX

GND

GND

GPIO 15 

GND

GPIO 0

GND

все остальные контакты не подключены

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) Видим появление данных на платформе.

Одноядерные модули с 802.11b/g/n 2,4 ГГц Wi-Fi

Внешний вид, описание и характеристики модулей представлены в таблице 3.

Таблица 3. Одноядерные модули с 802.11b/g/n 2,4 ГГц Wi-Fi

Модуль

Описание

Чип

Размеры, мм

Pins

Flash, Мбайт

PSRAM, Mбайт

Антенна

Отладочное средство

ESP-WROOM-02

ESP-WROOM-02 модуль на базе ESP8266EХ. Имеет широкий температурный диапазон: –40…+85 °C (–40…+125 °C, доступен по индивидуальному заказу)

ESP8266EХ

18×20×3

18

2

N / A

Антенна PCB,

2 дБи

ESP-Launcher

ESP-WROOM-02D

ESP-WROOM-02D — модуль на базе ESP8266EХ, имеет оптимизированную радиочастотную характеристику. Температурный диапазон: –40…+85 °C

ESP8266EХ

18×20×3,2

18

2

N / A

Антенна PCB,

2 дБи

ESP8266-DevKitC

ESP-WROOM-02U

ESP-WROOM-02U — модуль на основе ESP8266EХ, с оптимизированной работой радиоканала. Для подключения антенны имеет разъем U.FL. Температурный диапазон: –40…+85 °C

ESP8266E×

18×14.3×3.2

18

2

N/A

Антенна IPEX

ESP8266-DevKitC

ESP-WROOM-S2

ESP-WROOM-S2 может работать как slave SDIO/SPI, при этом скорость SPI составляет до 8 Мбит/с. Модуль имеет широкий температурный диапазон: –40…+125 °C. Доступен по индивидуальному заказу

ESP8266EХ

16×23×3

20

2

N/A

Антенна PCB,

2 дБи

N/A

Особенности

Маломощные, высокоинтегрированные решения Wi-Fi на чипсете ESP8266EX, интегрирующем 32-разрядный одноядерный микроконтроллер Tensilica L106 (MCU), обеспечивающий сверхнизкое энергопотребление, 16-разрядный RSIC, поддержка тактовой частоты до 160 МГц. Дизайн с минимумом внешних компонентов (до 7).

До +19,5 дБм на выходе антенны обеспечивает хорошие условия ведения связи в сложной помеховой обстановке. Потребляемый ток в режиме сна составляет менее 20 мкА, что делает эти модули пригодными для использования в устройствах с батарейным питанием и в носимых решениях.

Периферийные устройства могут подключаться через UART, GPIO, I2C, I2S, SDIO, PWM, ADC и SPI.

Благодаря интегрированной операционной системе реального времени (RTOS) и функциональному стеку Wi-Fi около 80% вычислительной мощности контроллера чипсета ESP8266EX доступно для программирования и разработки пользовательских приложений.

Модули сертифицированы, в том числе в модификациях со встроенными антенными и специализированными программными стеками.

Литература:

  • Банк документации. www.esp-adf.readthedocs.io/
  • Банк документации. www.github.com/espressif/esp-adf/
  • ESP8266EX Datasheet.
  • ESP8266EX Hardware Reference.
  • ESP32 Datasheet.
  • ESP32 Hardware Reference.
  • ESP32-WROVER Datasheet
  • Отладочная плата ESP32-LyraT для модулей ESP32-WROVER компании Espressif. Голосовые интеллектуальные приложения. Журнал «Беспроводные технологии» №2”18.
  • ESP32-PICO-D4 Datasheet.
  • Примеры приложений API-функций ESP-ADF.
  • JTAG Debugging
  • Форум esp32.com – место, где ведется обсуждение, и находятся ресурсы сообщества ESP32

Скачать статью в PDF

ESP32 WROOM DevKit v1

Подключение периферии

  • Цифровые входы/выходы: 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 А

Подключение к IoT

1) Выбираем плату: Tools (Инструменты) -> Board(Плата) DOIT ESP32 DEVKIT V1.

2) Вставляем подготовленный код.

3) Задаем данные для подключения Wi-Fi и идентификатор своего объекта на платформе.

4) Компилируем и загружаем скетч на плату.

5) Видим появление данных на платформе.

Где купить

Надеюсь, что данная инструкция станет полезной для всех, кто начнет работать с представленными модулями или их аналогами, поможет в выборе, а также сократит время на поиски алгоритмов подключения.

ESP-07

Особенности этого модуля — керамическая антенна и разъем для внешней антенны, металлический экран.

Подключение к IoT

Аппаратная часть

Работа с этим модулем, к сожалению, прошла не слишком гладко. Ни один из возможных вариантов подключения не сработал, и я, уже отчаявшись, решила удалять его описание из статьи. Но тут мне дали новый модуль и сказали попробовать еще раз — о чудо, он заработал с первого раза! В чем было дело и как сломался первый модуль, который я мучила, — неизвестно, но скорее всего он был убит нещадной статикой. Мораль этого лирического отступления такова — если у вас что-то не заработало по инструкции, написанной ниже, не вините инструкцию — сначала прозвоните и проверьте все контакты, а потом попробуйте на другом модуле.

1) Собираем схему

ESP-07

USB-Serial

VCC

VCC

CH_PD (рекомендуется через резистор)

VCC

TX

RX

RX

TX

GND

GND

GPIO 15 (рекомендуется через резистор)

GND

GPIO 0 — сначала не подключен, но будет использоваться для перевода в режим программирования далее, поэтому к нему уже подведен провод

все остальные контакты не подключены

RTS, CTS — не подключены

На фото этого и следующего модуля уже можно заметить резисторы. После неведомой поломки уже решила перестраховаться и поставила килоомники, хотя и без них все должно работать.

2) Переводим в режим программирования (необходимо каждый раз выполнять перед прошивкой модуля)

2.1) Отключаем питание от модуля2.2. Подключаем пин GPIO 0  к GND

2.2) Подключаем пин GPIO 0  к GND

ESP-07

USB-Serial

VCC

VCC

CH_PD

VCC

TX

RX

RX

TX

GND

GND

GPIO 15 

GND

GPIO 0

GND

все остальные контакты не подключены

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) Видим появление данных на платформе.

В Китае

Arduino IDE

Для использования совместно с ESP8266 рекомендуется использовать Arduino IDE версии 1.6.5. Если у вас более ранняя версия, то можете попробовать и её или обновить IDE до версии 1.6.5.

  • Как только у вас будет установлена подходящая версия Arduino IDE, запустите программу, перейдите в меню File (Файл) → Preferences (Настройки) и найдите в диалоговом окне поле ввода Additional Board Manager URLs (Дополнительные ссылки для Менеджера плат)

    http://arduino.esp8266.com/stable/package_esp8266com_index.json

    . Введите следующий URL точно, как он написан, и нажмите OK:

  • Затем нажмите Tools (Инструменты) → Board Manager (Менеджер плат) и прокрутите список вниз, чтобы найти «esp8266 by ESP8266 Community«. Выберите эту запись и нажмите кнопку Install (Установка); загрузка и установка начнутся и будут продолжаться несколько минут. Пока дополнение устанавливается, взгляните на поддерживаемые платформы. В дополнение к базовому модулю ESP826 обеспечивается поддержка NodeMCU, Huzzah и SweetPea. К тому моменту, когда вы будете читать данную статью, этот список возможно расширится.
  • Когда установка закончится, нажмите кнопку Close (Закрыть).
  • Теперь нажмите Tools (Инструменты), перейдите в список плат и выберите «Generic ESP8266 Module«.
  • Снова нажмите Tools (Инструменты) и убедитесь, что выбран Generic ESP8266 Module.
  • Нажмите File (Файл), Examples (Примеры) и прокрутите список вниз, пока не дойдете до ESP8266WiFi, а затем выберите WiFiScan. После этого должно будет открыться новое окно IDE со кодом примера WiFiScan.

Снова подключите схему к компьютеру и убедитесь, что на ESP-01 горит красный светодиод. Нажмите Tools (Инструменты), Port (Порт) и выберите порт, к которому подключен ESP-01. Наконец, вы готовы запрограммировать ESP-01.

Нажмите и удерживайте кнопку Reset, а затем нажмите и удерживайте кнопку Flash. Отпустите кнопку Reset и, удерживая нажатой кнопку Flash, нажмите кнопку со стрелкой Загрузка в Arduino IDE. Скетч должен скомпилироваться и загрузиться примерно за минуту, и когда компилирование будет завершено, отпустите кнопку Flash. Скомпилированный код будет отправлен в ESP-01; когда отправка будет завершена, на ESP-01 замигает синий светодиод.

Чтобы посмотреть результаты всех этих нажатий и выбираний, нажмите Tools (Инструменты), Serial Monitor (Монитор порта) и установите скорость передачи в правом нижнем углу окна монитора порта на 115200. Если у вас более ранняя версия ESP-01 (возможно на синей печатной плате), скорость передачи данных, скорее всего, равна 9600.

ESP-01 должен сканировать Wi-Fi сети и сообщать о результатах в окне монитора порта, как показано на примере ниже.

Результаты сканирования Wi-Fi сетей модулем ESP-01

Среди сообщений вы должны увидеть свою собственную сеть и все остальные сети, которые сумел поймать ESP-01

Числа в скобках показывают уровень сигнала сети (обратите внимание, что эти числа отрицательные; следовательно, уровень сигнала -41 выше, чем -92)