Создание простого веб-сервера nodemcu esp8266 в arduino ide

Технические характеристики: ESP32 против ESP8266

ESP32 является преемником ESP8266. Он имеет дополнительное ядро ​​процессора, более быстрый Wi-Fi, больше GPIO и поддерживает Bluetooth 4.2 и Bluetooth с низким энергопотреблением. Кроме того, ESP32 поставляется с сенсорными контактами, которые можно использовать для пробуждения ESP32 из глубокого сна, встроенным датчиком эффекта Холла и встроенным датчиком температуры (последние версии ESP32 больше не поставляются со встроенным датчиком температуры).

Обе платы очень дешевы, но ESP32 стоит немного дороже. В то время как ESP32 может стоить от 6 до 12 долларов, ESP8266 может стоить от 4 до 6 долларов (но это зависит от того, где вы их приобретаете).

В следующей таблице показаны основные различия между чипами ESP8266 и ESP32:

Hantek 2000 — осциллограф 3 в 1
Портативный USB осциллограф, 2 канала, 40 МГц….

Подробнее

Использовать просто чипы ESP32 или ESP8266 сложно и непрактично, особенно при тестировании и создании прототипов. В большинстве случаев вы захотите использовать платы разработки ESP32 и ESP8266. Эти платы поставляются со всеми необходимыми схемами для питания чипа, подключения его к компьютеру, схемой для легкой загрузки кода, контактами для подключения периферийных устройств, встроенными светодиодами питания и управления и другими полезными функциями.

Платы для разработки ESP32 и ESP8266, которые мы используем чаще, — это плата разработки ESP32 DEVKIT DOIT и комплект ESP8266 ESP-12E NodeMCU Kit. Однако есть много других моделей плат для разработки, из которых вы можете выбирать.

Прошивка

В некоторых случаях брикнутые ESP 8266 удается восстановить с использованием инстурмента XTCOM_UTIL. Статья на эту тему.

Но здесь есть такой момент. Прошивки подходящие под эту утилиту неофициальные (специально сделанные) и очень древние. Хотя, можно «лить» и официальные, указав правильные адреса. Я не пробовал, но в статье пример.

У меня была ситуация, когда не мог залить официальную прошивку на купленный на Aliexpress ESP 8266 модуль. Но после того как залил древнюю прошивку через XTCOM_UTIL, залилась и прошивка через официальный ESP8266 Download Tool.

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

Если конвертер USB — RS-232 плохого качества, либо плохое качество соединений, то ESP8266 Download Tool может выдавать ошибку синхронизации. В Интернет рекомедуют снижать скорость до 9600, но это нельзя сделать с помощью этой утилиты. У неё минимальная скорость 115200. В этом случае можно воспользоваться консольной утилитой ESPTool от официального разработчика чипа компании Espressif. Я пробовал прошивать с помощью этой утилиты брикнутый чип, но безуспешно.

Таблицу адресов для заливки лучше брать в официальной документации, поскольку адреса завсят от чипа. Этот вопрос нужно смотреть тщательно, поскольку в Интернет адреса заданы для того чипа, который шил автор статьи. Адреса и схема распайки для программирования есть в ESP8266_SDK_Getting_Started_Guide, и адреса есть также в ESP8266_AT_Instructions_Set.

Сразу отмечу, что у меня нет достоверной информации, что если в ESP8266 Download Tool выставить флаг SpiAutoSet, то действительно производится проверка параметров чипа. Адреса точно никак не проверяются.

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

В Интернете не раз проскакивала информация, что ESP-8266 невозможно вывести из строя кривой прошивкой. Мне удавалось. После этого чип даже при повторном переводе в режим заливки образа не откликается на запросы. Пробовал скорость и 9600 и 115200 использовать и разные другие шаманства со всеми возможными утилитами.

Среда разработки ПО

Давайте поговорим о IDE для ESP8266. Я как и большинство выбрал именно ESPlorer, так как тут очень много удобностей. Я на данной стадии почти не умею ничего программировать для ESP, так только поиграться можно но зная язык Lua, который к стати довольно таки и не сложный, можно писать программы. 

На этом месте я закончу свой рассказ так как далее я буду познавать превращение данной платки ESP-01 в дистанционный переключатель

Всем спасибо за внимание

Ссылки которые помогли в написании этой статьи.

  1. http://narodstream.ru/esp8266-urok-4-proshivaem-esp-01/
  2. http://wiki.amperka.ru
  3. http://www.avislab.com/blog/esp8266-nodemcu-start_ru/
  4. https://arduinoplus.ru/proshivka-nodemcu-esp8266/

Программная часть

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

FTP быстрее HTTP передает файлы, и был специально создан для этого.  Было принято решение реализовать это в проекте. На Wi-Fi модуле запускается FTP сервер, и через этот FTP мы можем обмениваться данными с SD картой памяти.

Библиотека FTP

Автору не удалось найти ни одной Arduino библиотеки FTP, которая бы очень активно разрабатывалась или специально создавалась для ESP8266. Но в сети Интернет был найден проект Дэвида Пайва, который портировал Arduino-версию библиотеки FTP-сервера на ESP8266, но с поддержкой файловой системы SPIFFS (файловая система встроенной Flash-памяти модуля), а не SD карты памяти.

Дальнейшие поиски привели к тому, что была найдена модификация портированной библиотеки с поддержкой SD карты памяти. Однако, при попытке использовать ее в своем проекте автор столкнулся с двумя проблемами. Во-первых, описание этой библиотеки было полностью на корейском языке. Во-вторых, с целью поддержки внесенных изменений в портированную библиотеку FTP требовалось модифицировать существующую библиотеку для работы с SD картами памяти.

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

Программирование Wi-Fi модуля ESP-12E

Wi-Fi модули серии ESP-12E не снабжены встроенным программатором, поэтому нам потребуется внешний адаптер USB-UART TTL для программирования (на микросхеме FT232RL или аналогичный). Сигнальные линии (Rx, Tx, питание) такого адаптера с помощью нескольких проводов необходимо временно подключить к модулю ESP-12E согласно Таблице 2.

Таблица 2. Подключение адаптера USB-UART TTL к
модулю ESP-12E для программирования.
Сигнальные выводы
ESP-12E
Сигнальные выводы
USB-UART TTL адаптера
GND GND
Rx Tx
Tx Rx
GPIO15 GND
GPIO0 GND
VCC VCC

Загрузите скетч проекта с помощью среды Arduino IDE. После программирования модуля ESP-12E провода адаптера USB-UART TTL можно отключить.

Установка Arduino IDE через Boards Manager

  1. Запустить Arduino IDE, далее Файл — Настройки — в поле Additional Boards Manager URLs вставить ссылку на стабильную версию
    http//arduino.esp8266.com/package_esp8266com_index.jsonили для nightly build
    http//arduino.esp8266.com/staging/package_esp8266com_index.json, нажать OK (В это поле вы можете вводить несколько ссылок, разделенных запятой)
  2. Инструменты — Плата — Boards Manager
  3. В Boards Manager в поле фильтра введите esp8266 или вручную пролистайте список и кликните на ESP8266 by ESP8266 Community Forum
  4. Кликните Install и дождитесь окончания загрузки (около 130 Мегабайт). Если загрузка произошла слишком быстро, возможно, что вы уже устанавливали Arduino IDE для ESP8266 и потребуется почистить кэш Boards Manager, иначе у вас останется установленной старая версия. Нужно сначала деинсталлировать старую версию, а потом необходимо удалить файлы кэша. Для Win7 x64 удалите файлы из папки C:\Users\Пользователь\AppData\Roaming\Arduino15 и повторите все, начиная с п.2
  5. Закройте Boards Manager и в меню Инструменты выберите Плата — Generic ESP8266
  6. Установите частоту вашего модуля 80 или 160Mhz, размер флеш памяти и выберите последовательный порт, к которому подключен ваш USB-TTL адаптер

Функции

Каркас модуля ЭСП-01

  • Процессор: 32-битное микропроцессорное ядро RISC L106 на базе Tensilica Xtensa Diamond Standard 106Micro, работающее на частоте 80 МГц
  • Объем памяти:
    • 32 КБ ОЗУ инструкций
    • 32 КБ кэш-памяти команд
    • 80 КБ ОЗУ для пользовательских данных
    • 16 КБ ОЗУ для системных данных ETS
  • Внешняя флэш-память QSPI: поддерживается до 16 МБ (обычно от 512 КБ до 4 МБ)
  • IEEE 802.11 b / g / n Wi-Fi
    • Встроенный , балун , малошумящий усилитель , усилитель мощности и согласующая сеть
    • WEP или WPA / WPA2 аутентификация или открытые сети
  • 17 контактов GPIO
  • SPI
  • I²C (программная реализация)
  • I²S взаимодействует с DMA (общие контакты с GPIO)
  • UART на выделенных контактах, плюс UART только для передачи может быть включен на GPIO2
  • 10-битный АЦП ( АЦП последовательного приближения )

Проверка собранной схемы

Перед тем как переводить ESP-8266 в режим отновления прошивки, проверим работу собранной схемы:

  • Убедимся, что GIO0 отключена от GND. Иначе AT команды отправить в модуль нельзя.
  • Включим питание модуля.
  • Подключим USB-to-RS232 конвертер к ПК.
  • Зайдем в Control Panel -> System -> Device manager -> Ports (COM & LPT).
  • Если устройство Prolific USB-to-Serial Comm Port работает с ошибкой — нужно установить fix.
  • Если USB конвертер работает без ошибок — смоттри на каком COM порту он работает.
  • Запускаем ESPlorer и выставляем в настройках правильный COM порт и скорость. Жмем «Open».
  • Переходим на закладку «AT-based» и жмем кнопку «AT». Отправится команда AT, в ответ должна прийти «ОК». Хначит устрйоство работает нормально. То-же самое можно сделать любой терминальной программой работающей с последовательным портом, вроде PuTTY.
  • Далее жмем кнопку»RST». Отправится команда AT+RST для рестарта модуля.

Отправка команды AT+RST в ESP-8266.

AT+RST
AT+RST

OK
WIFI DISCONNECT

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 1396, room 16 
tail 4
chksum 0x89
load 0x3ffe8000, len 776, room 4 
tail 4
chksum 0xe8
load 0x3ffe8308, len 540, room 4 
tail 8
chksum 0xc0
csum 0xc0

2nd boot version : 1.4(b1)
  SPI Speed      : 40MHz
  SPI Mode       : DIO
  SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000

тn't use rtc mem data
rlЋ‚rlМя
Ai-Thinker Technology Co.,Ltd.

ready
WIFI CONNECTED
WIFI GOT IP
  • Сохраним полученные параметры чипа. Они могут пригодится в дальнейшем.
  • Отправим AT+GMR для получения информации о текущей версии прошивки ESP-8266.

Отправка команды AT+GMR в ESP-8266

Получили следующую информацию о чипе:

  • SPI Speed : 40MHz
  • SPI Mode : DIO
  • SPI Flash Size & Map: 8Mbit(512KB+512KB)
  • AT version:0.40.0.0(Aug 8 2015 14:45:58)
  • SDK version:1.3.0
  • Build:1.3.0.2 Sep 11 2015 11:48:04

Arduino IDE для ESP8266: быстрый старт

1. Подключить USB-TTL к USB

2. Подключить ESP8266 к USB-TTL как обычно. Если вы подключили ESP8266 по схеме без поддержки автозагрузки прошивки (не подключены DTR и RTS), то вручную соедините GPIO0 с землей, передерните питание модуля — все готово для  прошивки

3. Запускаем Arduino IDE

4. В меню Инструменты — Плата — Generic ESP8266 board (в самом низу)

5. В меню Инструменты выбираем порт, к которому подключен наш USB-TTL

6. В меню Инструменты — выбираете частоту, размер флеш памяти вашего модуля

7. В меню Файл — Примеры (Образцы) — ESP8266WiFi — WiFiWebServer

8. В скетче заполняете SSID и пароль вашей WiFi сети

9. Жмем кнопку компиляции и загрузки скетча

10. Ждем окончании процесса прошивки. После прошивки, если модуль подключен по схеме без поддержки автопрошивки, отсоедините GPIO0 от земли и передерните питание модуля без отключения USB-TTL от питания

11. В меню Инструменты — Монитор последовательного порта

12. Выбираем скорость 115200

13. Смотрим что происходит в терминале

14. Когда модуль подключится к сети, то появятся надписи в мониторе «WiFi connected» и «Server started»

15. Ниже будет IP адрес вашего модуля ESP8266, например 192.168.1.248

16. Открываете любой браузер, в строке адреса вбиваете «http://192.168.1.248/gpio/1»

17. Смотрите монитор последовательно порта и если к ESP8266 к GPIO2 у вас подключен светодиод (через резистор, разумеется), то он включится.

18. Profit!

Автором этого проекта адаптации Arduino IDE для ESP8266 является наш соотечественник из Санкт-Петербурга Иван Грохотков.

Задать вопросы автору проекта Ивану Грохоткову aka igrr или сообщить об ошибке в Arduino IDE для ESP8266 можно в специальном разделе на нашем форуме.

Увеличение количества цифровых GPIO входов/выходов

Плата увеличения количества GPIO портов.

Для увеличения количества цифровых входов можно воспользоваться добротной платой расширителя GPIO на 8 Входов/Выходов. Она хорошо документирована, исполнена на высоком техническом уровне. Хотя, ценник не Aliexpress-а. При изготовлении нескольких сотен устройств, себестоимость конечного устройства существенно вырастет.

Посмотрим, что есть на сей счет есть у китайских собратьев. А у них конечно-же что-то есть и недорого.

8-канальный расширитель GPIO на чипе PCF8574 с DIP переключателями для назначения I2C адреса
8-канальный расширитель GPIO на чипе PCF8574 с джамперами для назначения I2C адреса. Эту плату можно каскадировать.

Конструктивно синие модули удобно каскадировать, втыкая один в другой. Адрес устройств удобно задается либо DIP переключателями, либо джамперами. Возможно подключение внутренних pullup резисторов на +5V.

16-ти канальный расширитель GPIO на чипе PCF8575

Старший брат TI PCF8575 позволяет получить 16 GPIO портов за цену в два раза выше. Но реализация платы попроще. никаких DIP переключателей для выбора адреса I2C. Зато 16 каналов в компактном исполнении.

Аналогичный чип от компании Microchip на 16 входов для расширения количества GPIO портов, MCP23017. Есть вариант для шины I2C и более шустрый для SPI (MCP23S17). Китайские продавцы нередко указывают в описании товара чип MCP23S17, однако по фото платы видно, что чип MCP23017

Обращайте на это внимание! Аналогичный чип на 8 портов — MCP23008

MCP23017 плата увеличения GPIO для микроконтроллеров

Цена этого варианта модуля в районе 1,5 USD. Исполнение платы попроще обойдется почти в два раза дешевле. Чип позволяет обеспечить увеличение GPIO на 8+8=16. Как и чип от Texas Instruments помимо входов для подключения устройств есть два выхода прерываний на каждый блок из 8 устройств. Этот чип позволяет работать на частоте до 1,7 МГц и 10 MHz для версии под шину SPI, в отличие от чипа PCF8574 для которого верхний предел 400 кГц. Также возможно подключение внутренних pullup резисторов на +5V. Схема подключения платы к ESP8266 разобрано здесь.

SX1509 модуль для увеличения количества GPIO.

Ещё один 8+8=16-ти канальный расширитель количества GPIO с Aliexpress на чипе SX1509. Библиотека и описание от Sparkfun. Чип дороже, чем ранее представленные. По ТТХ чип очень похож на ранее рассмотренные варианты. Работает на частоте 400 кГц. Есть встроенная поддержка ШИМ (PWM) на выходах.

Чип «заточен» для работы с LED и клавиатурой. В части LED из-за наличия ШИМ позволяет управлять яркостью светодидов, выполнять затухание, моргание и пр. Есть в наличии выход INT для трансляции прерываний микроконтроллеру. Поддерживаются встроенные pull-up, pull-down резисторы на входах.

GPIO expander от Fairchild (ON Semiconductor) FXL6408UMX. Аналогично 8 портов управляемых по шине I2C. Datasheet.

ESP8266 vs ESP32

Вкратце сравню ESP8266 с ESP32.

  ESP8266 ESP32
MCU Xtensa Single-core 32-bit L106 Xtensa Dual-Core 32-bit LX6 with 600 DMIPS
802.11 b/g/n Wi-Fi HT20 HT40
Bluetooth X Bluetooth 4.2 and BLE
Typical Frequency 80 MHz 160 MHz
SRAM X
Flash X
GPIO 17 36
Hardware /Software PWM None / 8 channels None / 16 channels
SPI/I2C/I2S/UART 2/1/2/2 4/2/2/2
ADC 10-bit 12-bit
CAN X
Ethernet MAC Interface X
Touch Sensor X
Temperature Sensor X
Hall effect sensor X
Working Temperature -40ºC to 125ºC -40ºC to 125ºC
Price $ (3$ — $6) $$ ($6 — $12)
Where to buy

Использовать GPIO входы/выходы на этих чипах можно по-разному.

Функциональное назначение выводов чипа ESP8266.

При приобретении ESP32 devkit на Aliexpress нужно обращать внимание на количество PIN-ов. Наиболее распространенный вариант — 30 PIN-овый, такой-же как ESP8266

Он стоит в районе 5 USD. Есть вариант на 36 PIN и 38 PIN. На 38 PIN стоит в районе 8 USD. Отличить легко, PIN-ы опускаюся до нижнего края кнопок.

Здесь уже нужно смотреть, что нужно от платы, поскольку може оказаться выгоднее приобрести расширение на 16 GPIO за 1,5 USD, чем переплачивать за PIN-ы на devkit.

Функциональное назначение выводов чипа ESP32 с 36 PIN-ами

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

У ESP32 можно использовать 10 входов в качестве емкостных (TOUCH). Присоединенный к ним провод будет изменять емкость при поднесении руки. Например, можно реализовать вечные емкостные кнопки, которые могут быть реализованы на печатной плате, без использования механических компонент.

Аналого-цифровой преобразователь АЦП (ADC)

В ESP8266 только один АЦП (ADC), в то время как в ESP32 доступно 18!!! АЦП, причем 12 битных, в отличие от 10-ти битного АЦП ESP8266. Напряжение срабатывания АЦП в ESP32 можно менять от 0 до 4 V.

I2C адресация модуля ADS1115

16-ти битные внешние модули АЦП с чипом ADS1115 4-х канальные и стоят с доставкой в Россию в районе 1,5 USD. Примерно столько же стоит 12-ти разрядный ADS1015. Datasheet здесь.

Чтобы в ESP8266 получить такое-же количество каналов АЦП, как у ESP32 потребуется 4 шт. внешних АЦП и цена только этих модулей получится в районе 6 USD. Сам чип ESP32 распаянный на плате можно приобрести примерно за 7 USD с доставкой в Россию. Схема подключения здесь.

Если есть сомнения по поводу входного напряжения, то целесообразно использовать внешний АЦП, поскольку выход из строя платы на 4 канала обойдется несколько дешевле, чем потеря микроконтроллера. Либо подстраховываться установкой стабилитрона.

  • 4-х канальный 18-ти разрядный АЦП MCP3424 обойдется примерно в 5 USD. Младший одноканальный брат MCP3421 примерно в 2,5 USD.
  • 2-х канальный 24-х разрядный АЦП ADS1232 обойдется примерно в 4 USD. Есть 4-х канальный вариант ADS1234, но платы с этим чипом отсутствуют на Aliexpress. Доступен только сам чип.
  • 24-битный АЦП ADS 1256 будет уже 8-ми канальным, небольшая экономия, но при этом цена в районе 15 USD за качество оцифровки.
  • 24-х битный АЦП для цифровых весов HX711 обойдется меньше, чем в 2 USD.
  • 3-х канальный 24-х битный АЦП AD7793 обойдется примерно в 7 USD. Datasheet здесь.

Помимо АЦП в ESP32 есть два 8-ми битных ЦАП (DAC).

Мультиплексор/демультиплексор аналоговых входов

Помимо увеличения аналоговых входов с помощью АЦП есть вариант расширения мультиплексором. Хорошая статья на эту тему в которой подробно рассмотрен аналоговый мультиплексор/демультиплексор CD4051/74HC4051. Много вариантов от других производителей.

CD4051 — это 8 канальный аналоговый CMOS мультиплексор/демультиплексор. ДЛя увеличения количества аналоговых входов на 7 потребуется 1 аналоговый и 3 цифровых входа.

Функциональная схема работы мультиплексора/демультиплексора CD4051

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

Если приобретать модуль на Aliexpress, то цена будет в районе 0,8 USD за 8 каналов, 16-ти разрядное АЦП ADS1115 — 1,5 USD за 4 канала. Если же приобретать только микросхему CD4051, то цена будет гораздо ниже микросхемы АЦП.

Шаг 2. Суть проекта

Есть много способов использовать ESP866 для коммуникаций. Некоторые могут использовать его для отправки/получения данных онлайн или регулярной загрузки данных. В этом уроке мы покажем, как мы можем общаться с Arduino по беспроводной связи, используя ваш телефон (Android или iPhone). Всё будет сделано в автономном режиме, поэтому не нужно иметь подключение к интернету.

ESP8266 будет служить точкой доступа (режим AP), то есть он будет предоставлять доступ к сети Wi-Fi другим устройствам (станциям) и далее подключать их к проводной сети. Процесс этот довольно прост.

Распиновка ESP

Используйте свой телефон, чтобы отправить любую команду в Arduino, а с помощью ESP8266 все будет работать без проводов.

Последние штрихи

Итак, смотрим что получилось:

https://example.com/ — это ваш сайт заглушка, можно разместить что-то полезное, положив html файлы в conf/nginx/www

https://example.com/manager/rabbit/ — интерфейс управления RabbitMQ, доступ по умолчанию guest пароль guest — пароль нужно сразу же сменить — помните про китайцев! Создание новых пользователей MQTT на вкладке Admin. Если укажете TAG administrator, то этот пользователь сможет логиниться в WEB интерфейс RabbitMQ и управлять другими пользователями. Если нужно только подключение по MQTT то задавайте TAG None. Создайте нового пользователя, которого прописали в конфиге Telegraf, перезапустите Telegraf. Каждому пользователю после создания нужно дать права на доступ к Virtual host (это внутренний термин RabbitMQ, наш единственный Virtual host это «/»), жмите Set permission.

https://example.com/manager/grafana/ — самое интересное — Grafana. По умолчанию там только один источник данных — Prometheus. Из него берутся данные для мониторинга RabbitMQ и VPS. Нужно создать еще один источник данных InfluxDB — туда Telegraf будет складывать данные из всех топиков, полученные по MQTT. Вообще, в Grafana все интуитивно понятно да и в интернете множество инструкций. Смотрите готовые dashboards, импортируйте чужие и создавайте свои.

https://example.com/manager/portainer/ — WEB интерфейс для управления контейнерами. Тоже нужно задать нормальный пароль после первого входа (admin admin). Можно останавливать/перезапускать контейнеры, смотреть логи каждого контейнера и многое другое — смотрите, изучайте. Именно здесь найдете причину в логах, если что-то не работает.

Выбор микроконтроллера

В прошлой версии “Умного чайника” не было датчика температуры, а RGB-светодиод принимал только дискретные значения (логические 0 и 1) для каждого из 3 выводов. В новой версии устройства RGB-светодиод во время процесса подогрева должен плавно изменять цвет по спектру от зелёного до красного, проходя жёлтый и оранжевый цвета. Для этого на плате микроконтроллера нужны 2 пина, подключенных к каналам цифро-аналоговых преобразователей. Для датчика температуры DS18B20 нужен 1 пин, подключенный к каналу аналого-цифрового преобразователя. И если встроенный АЦП в модулях ESP8266 есть, то встроенных ЦАП нет. Поэтому такой вариант для нашего примера не подойдёт. А ESP32 как раз поддерживает два 8-битных канала ЦАП.

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

Различия ESP8266 и ESP32

Чип ESP32 является преемником ESP8266 и превосходит его во всех характеристиках, кроме стоимости. Интересно, что оба чипа представляют собой 32-разрядные микроконтроллеры, таким образом, интуиция здесь не срабатывает.

Влияние RISC-V на выбор микроконтроллера

RISC-V архитектура находит признание благодаря своей открытости, которая позволяет кастомизировать дизайн процессора, и свободе от лицензионных сборов в пользу разработчиков архитектуры. Это увеличивает конкуренцию на рынке и количество различных по характеристикам чипов, поскольку производители могут свободнее подходить к их изменению и улучшению. Архитектура процессора не всегда напрямую влияет на выбор микроконтроллера. Для производителя открытая архитектура позволяет экономить на процессорах и вкладывать в развитие других частей микроконтроллера. Также открытая архитектура способствует расширению семейства процессоров, что опять же позволяет экономить на процессоре, поскольку используется наиболее близкий к потребностям пользователей микроконтроллер. В целом открытая архитектура имеет положительные долгосрочные эффекты для производителей, и, соответственно, пользователей, поскольку открывает возможности свободного развития продуктов и обогащения рынка разнообразием новых устройств.

Установка приложения NODE.JS для генерации данных

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

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

1 curl-o-https//raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

(в команде выше указана последняя версия NVM на момент написания статьи — январь 2021 года, лучше сходить на и взять актуальную версию на момент установки)

Чтобы nvm заработал необходимо заново войти в терминал или выполнить команду 

source /home/ubuntu/.bashrc

1 sourcehomeubuntu.bashrc

Далее установим LTS версию NODEJS

nvm install —lts

Шаг 5. Общаемся с Arduino Uno через смартфон

После подключения отправьте запрос, введя следующий код для клиента TCP:

esp8266: <any AT Commands>

Связь с ESP8266 осуществляется через Attention Command или AT Commands (AT команды). Посмотрите таблицу AT команд выше, прилагаемую для просмотра кодов.

Или включите встроенный светодиод с помощью команды:

LEDON

Или выключите встроенный светодиод с помощью команды:

LEDOFF

Или просто скажите:

HELLO

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

Важно: esp8266, LEDON, LEDOFF и HELLO — пользовательский идентификатор команды. Если вы используете что-то кроме этих, он вернет ErrRead

ErrRead означает, что из отправленного вами сообщения не найдено ни одного идентификатора команды. Сообщение ErrRead кодируется в строке 64.

Получаем домен второго уровня бесплатно

Если у Вас уже есть собственный домен и DNS, тогда вы должны создать DNS запись типа А и вписать туда общедоступный IP-адрес VPS. После этого можете переходить к следующему пункту.

Если у Вас еще нет собственного домена, то идем на Freenom.com (кредитная карта не понадобится) подбираем свободный домен и регистрируем его. Большинство доменов, даже 4-х буквенные бесплатны, кроме премиальных (по мнению авторов сервиса). Регистрация аккаунта происходит в момент регистрации домена, также пусть вас не смущает кнопка Оформить заказ — да, для регистрации бесплатного домена нужно оформить заказ. Еще не забудьте указать, что регистрируете домен на 12 месяцев (по умолчанию регистрируют только на 3).

Регистрация бесплатного домена

В момент регистрации домена (на большом мониторе, а не на маленьком как у меня на скриншоте) вы можете сразу указать общедоступный IP адрес вашей виртуалки для нового доменного имени. Указать его нужно два раза (обычно для каждого WEB сервера создается две DNS записи: первая только с именем домена и вторая www.+имя домена). Если у Вас нет поля для ввода IP адреса при регистрации, то ничего страшного, Вы сможете это сделать после регистрации.

После регистрации домена и аккаунта на freenom нужно залогиниться и перейти в меню Services — My Domains — напротив Вашего домена нажать Manage Domain, выбрать вкладку Manage Freenom DNS, ввести два раза общедоступный IP-адрес в поле Target и сохранить изменения.

Дальше можете подождать и попить кофе пока обновится кэш DNS.

Успешным результатом этого шага станет возможность подключаться по SSH к Вашей VPS не только по общедоступному IP-адресу, но и по доменному имени.

Настройка среды программирования 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.

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-порт, к которому подключена плата.

Как быстро подключить ESP8266

В минимальный набор для подключения и прошивки модуля ESP8266 входит:

2. Убедиться два раза, что питающее напряжение для модуля составляет 3,3 вольта.

Внимание! Допустимый диапазон напряжения питания модуля ESP8266 от 3,0 до 3,6 вольт. Подача повышенного напряжения питания на модуль гарантированно приведет к выходу ESP8266 из строя

Питающее напряжение может быть и существенно ниже 3 вольт, заявленных в документации

Внимание! 

Внимание!

ESP8266 — подключение

Красный — питание 3,3в

Черный — GND

Желтый — на стороне ESP8266 — RX, на стороне USB-TTL — TX

Зеленый  — на стороне ESP8266 — TX, на стороне USB-TTL — RX

Оранжевый — CH_PD (CHIP ENABLE) — должен быть всегда подтянут к питанию

Синий — GPIO0 — подключен через выключатель к земле для включения режима перепрошивки модуля. Для обычного старта модуля GPIO0 можно оставить никуда не подключенным.

Розовый на правой схеме — нестабилизированное питание 5-8 вольт

4. Для старта модуля разорвите цепь GPIO0 — GND и можете подавать питание (причем именно в таком порядке: сначала убеждаемся, что GPIO0 «висит в воздухе», затем подаем питание на VCC и CH_PD)

Внимание! В вышеприведенных, реально работающих, примерах подключения ESP8266 используется подключение выводов ESP8266 «напрямую» к земле и питанию, либо «висячее в воздухе», как у нас никуда не подключен RESET, что является абсолютно неправильным и пригодно только для пары первых экспериментов, хотя и вполне работоспособно на подавляющем большинстве модулей. «Напрямую» к питанию подключается только вывод VCC, остальные выводы: CH_PD, RESET, GPIO0, GPIO2, должны быть подтянуты (pullup) к питанию (VCC) через резистор от 4,7 до 50 кОм

«Напрямую», к минусу (общему проводу) питания подключаем только GND, а GPIO0 подтягиваем (pulldown) тоже через резистор до 10k к GND для перевода модуль в режим загрузки прошивки. Если вы планируете и дальше экспериментировать с ESP8266, то сделайте , впрочем так же как и для любых других микроконтроллеров. Детальное описание pullup и pulldown выходит за рамки данной статьи, но вы сможете легко нагуглить описание правильного подключения портов ввода-вывода. «» подключение позволит вам избежать множества «чудес» и проблем и будет неизбежно необходимым при возникновении затруднений с запуском или перепрошивкой модуля ESP8266.