Введение. С чего начать знакомство с ESP8266?

Что такое ESP8266?

Повсеместное распространение и широкая доступность Wi-Fi сетей делают интересным для разработчика возможность реализации в своих проектах функции беспроводного доступа как в локальную, так и глобальную сеть. Наличие на рынке большого числа недорогих решений позволяющих интегрировать Wi-Fi делает концепцию IoT (Internet of thing, Интернета вещей) легко реализуемой даже для начинающих. Одним из «прорывов» последних лет в области беспроводных решений стало появление микроконтроллера ESP8266EX от компании Espressif Systems. Недорогой чип с минимумом внешних компонентов позволяет получить полноценное Wi-Fi решение и имеет следующие характеристики:
— поддержка WiFi протоколов 802.11 b/g/n с WEP, WPA, WPA2;
— поддержка режимов работы: клиент (STA), точка доступа (AP), клиент+точка доступа (STA+AP);
— напряжение питания 1.7..3.6 В;
— потребляемый ток: до 300 мА в зависимости от режима работы.

Легендарный чип ESP8266EX от Espressif Systems совершивший переворот в доступности Wi-Fi интерфейсов

Легендарный чип ESP8266EX от Espressif Systems совершивший переворот в доступности Wi-Fi интерфейсов

Однако если «рядовой» инженер или разработчик-энтузиаст попытается просто «в лоб» взять этот чип и реализовать на нем Wi-Fi интерфейс, то можно быть уверенным, что его ждет пара-тройка недель увлекательного прочтения datasheet-ов, изучения особенностей SDK, копания в примерах кода и инструментах разработки. Даже такое простое действие как заливка программы в ESP8266 потребует решение серьезных вопросов. Такое приключение убьет желание освоить этот прекрасный микроконтроллер у кого угодно. Разумеется, разобраться во всем вышесказанном надо если разработчик собирается заниматься с ESP8266 профессионально, использовать его в коммерческих продуктах. Однако если речь идет о «тест-драйве», желании использовать Wi-Fi в радиолюбительстве, быстром прототипировании устройств (актуально для стартапов), да и просто расширении кругозора, то необходимо более доступное решение.

С чего начать знакомство с ESP8266?

К счастью китайской радиоэлектронной промышленностью был оперативно освоен выпуск модулей на основе ESP8266. Это целая линейка недорогих модулей ESP с маркировкой от 01 до 12. Причем чуть ли не каждый месяц стабильно появляются новые модификации, такие как ESP-12E (выведены дополнительные выводы), ESP-13 (аналог WROOM-02), ESP-14 (flash память увеличена до 4 Мб) и т.д. Ситуация здесь уже лучше – подключив к соответствующим выводам питание (важно! питание строго +3,3В) и используя USB-UART переходник можно начать полноценно работать с ESP8266. Также необходимо сделать дополнительную обвязку в виде пары переключателей для ресета модуля и для его прошивки, 5-6 резисторов и пары конденсаторов для стабильного функционирования ESP8266 (чип очень чувствителен к качеству питания). Работа не сложная но требует определенного навыка и понимания принципов работы ESP8266. Неоспоримым преимущество такого подхода является то, что после отладки модуль можно стационарно устанавливать в изделие требующее Wi-Fi интерфейс. Основная сложность для разработчика остается в необходимости разобраться во всем многообразии модулей ESP и выбрать наиболее подходящий.

Линейка модулей ESP на базе чипа ESP8266

Линейка модулей ESP на базе чипа ESP8266

Однако по нашему мнению начинать знакомство с ESP8266 необходимо с отладочных плат (development board). Как правило, они избавляют от массы второстепенных задач не относящихся непосредственно к изучению ESP8266 (один только нестандартный шаг распиновки модуля в 2 мм отнимет у вас 2-3 часа времени), уменьшают вероятность повреждения модуля по неосторожности (стандартное напряжение +5В выведет ваш ESP8266 из строя) и стоят не намного дороже аналогичных модулей (так на данный момент модуль ESP-07 c платой переходника был приобретен за 1,97$, а отладочная плата NodeMCU LoLin v.3 за 2,65$).

Итак, чем же удобны отладочные платы ESP8266 (на примере NodeMCU LoLin v.3):
— наличие встроенного интерфейса USB-UART реализованного на хорошо известных преобразователях CP2102 или CH340G. Подключение к ПК происходит при помощи обычного кабеля microUSB;
— встроенный преобразователь напряжения +3,3 В, а само питание берется непосредственно от USB порта ПК;
— все доступные на ESP8266 выводы выведены на две гребенки со стандартным шагом 2,54 мм;
— на отладочной плате имеется 4 Мб flash памяти, а использование прошивки NodeMCU позволит реализовать встроенную файловую систему spiffs;
— встроенные микрокнопки reset и flash для перезагрузки и перепрошивки модуля.

На рынке представлено огромное количество различных отладочных плат, однако мы на своем опыте убедились в удобстве проекта NodeMCU. Весь дальнейший учебный курс будет рассмотрен именно не базе отладочной платы NodeMCU LoLin v.3 и прошивки Lua NodeMCU.

Что же такое NodeMCU?

Под этим проектом объединены прошивка Lua NodeMCU с открытым исходным кодом и отладочная плата NodeMCU, которые позволяют Вам прототипировать разработки для IoT (Интернета вещей) при помощи нескольких строк на скриптовом языке программирования Lua.

Проект NodeMCU от китайских товарищей

Проект NodeMCU от китайских товарищей

Какие особенности есть в NodeMCU позволяющие считать его одним из наиболее успешных проектов для быстрой разработки устройств IoT на базе чипа ESP8266?

  • Ардуино-подобное устройство ввода/вывода. Продвинутое API для аппаратного ввода/вывода, которое позволяет существенно уменьшить число действий по настройке и работе с оборудованием. Программный код, схожий с используемым в среде Ардуино, но обладающий интерактивностью Lua скриптов.
  • Сетевое API в стиле Nodejs. Событийно-ориентированный API-интерфейс для сетевых приложений, облегчающий разработчикам написание программного кода в стиле Nodejs и работающего на микроконтроллере размером 5×5 мм.
  • Самая низкая стоимость реализации Wi-Fi проектов. На отладочной плате установлен микроконтроллер ESP8266 с интегрированным Wi-Fi, стоимостью менее 2$, позволяющий проводить прототипирование разработок с беспроводным соединением. NodeMCU можно считать лучше платформой для разработки приложений IoT с самой низкой стоимостью.

Отладочная плата NodeMCU

Оригинальная отладочная плата NodeMCU

Оригинальная отладочная плата NodeMCU

Отладочная плата NodeMCU на базе ESP8266 имеет 11 GPIO (порты ввода/вывода общего назначения), десять из которых могут работать как PWM (ШИМ – широтно-импульсная модуляция), еще два как UART, еще два как IIC/TWI (I2C), четыре используются для SPI и один для аналогового входя (АЦП). Использование прошивки NodeMCU позволит задействовать весь этот потенциал для скорейшей разработки устройств IoT. Используемый Wi-Fi модуль сертифицирован FCC и снабжен встроенной антенной (выполнена в виде печатных проводников). Наличие встроенного USB-TTL преобразователя позволяет подключать отладочную плату к компьютеру через micro-USB разъем.

Программный код для NodeMCU

Далее представлено несколько фрагментов программного кода на скриптовом языке Lua, демонстрирующие как легко и просто можно выполнить те или иные действия с отладочной платой NodeMCU

подсоединение ESP8266 к беспроводной сети

Подсоединение ESP8266 к беспроводной WiFi сети

конфигурирование портов ввода/вывода ESP8266 в стиле Ардуино

Конфигурирование портов ввода/вывода ESP8266 в стиле Ардуино

Запуск HTTP клиента на ESP8266

Запуск HTTP клиента на ESP8266

Запуск HTTP сервера на ESP8266

Запуск HTTP сервера на ESP8266

Управление PWM (ШИМ – широтно-импульсной модуляцией) на ESP8266

Управление PWM (ШИМ – широтно-импульсной модуляцией) на ESP8266

Классический пример – мигаем светодиодом на ESP8266

Классический пример – мигаем светодиодом на ESP8266

Начальная загрузка ESP8266

Начальная загрузка ESP8266

Настройка встроенных таймеров ESP8266 для циклического выполнения команд

Настройка встроенных таймеров ESP8266 для циклического выполнения команд

Telnet сервер ESP8266 на Lua

Telnet сервер ESP8266 на Lua

Работа ESP8266 с датчиком DS18B20

Работа ESP8266 с датчиком DS18B20

Итак, приступим к первому занятию – Как подключить отладочную плату NodeMCU ESP8266 к компьютеру?