WiFi модуль ESP8266 ESP07 для домашней автоматизации. ESP8266 "Witty Cloud" - самый удачный на данный момент WiFi-модуль для самоделок и "умного дома"

Модуль на чипсете ESP8266 - это простой и дешёвый способ добавить в своё устройство функции беспроводной связи через Wi-Fi.

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

В семействе модулей ESP8266 есть много разновидностей. Представленный модуль - ESP-01. У него антенна WiFi встроена на плату, а на ножки дополнительно выведены 2 GPIO-порта свободного назначения.

Взаимодействие

Управляющее устройство общается с ESP8266 через UART (Serial-порт) с помощью набора AT-команд . Поэтому работа с модулем тривиальна для любой платы с UART-интерфейсом: используйте Arduino , Raspberry Pi , что душе угодно.

Работа над приёмом и передачей данных выглядит, как взаимодействие с сырым TCP-сокетом или с serial-портом компьютера.

Более того, модуль можно перепрошивать. Программировать и загружать прошивки можно через Arduino IDE, точно так же, как при работе с Arduino. Реакция на AT-команды - это просто функция штатной прошивки, устанавливаемой на заводе. А вы можете написать свою собственную, если того требует проект. Поскольку на модуле есть 2 порта ввода-вывода общего назначения, вы можете обойтись вовсе без управляющей платы: просто подключите периферию непосредственно к ним.

Для того, чтобы среда Arduino IDE научилась прошивать ESP8266 достаточно добавить директорию с конфигурацией платформы в папку со своими скетчами.

Для физического соединения при прошивке вам понадобится USB-UART преобразователь или плата Arduino/Iskra, настроенная в режим USB-моста.

Питание

Родное напряжение модуля - 3,3 вольта. Его пины не толерантны к 5 вольтам . Если вы подадите напряжение выше, чем 3,3 вольта на пин питания, коммуникации или ввода-вывода, модуль выйдет из строя.

Поэтому для передачи данных на модуль с 5-вольтовых управляющих плат используйте , чтобы перевести напряжение в допустимый диапазон. Делитель из двух резисторов одинакового номинала (например, 10 кОм) подойдёт.

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

Питайте модуль ровными 3,3 вольтами. Их можно получить с отдельного регулятора напряжения .

Модуль потребляет в пике 220 мА. Регулятора напряжения, используемого на пятивольтовых платах Arduino для пина 3.3V, может оказаться недостаточно. Обратите внимание на характеристики своей платы. Например, Arduino Uno и Arduino Leonardo могут выдать не более 50 мА с пина 3.3V, поэтому с ними нужно обязательно использовать внешний регулятор; а Iskra Neo может выдать до 800 мА, поэтому с ней можно питать ESP8266 прямо от платы.

Распиновка

Из-за расположения ножек вплотную в 2 ряда, модуль нельзя установить на breadboard’е. Используйте макетную плату под пайку или провода с разъёмами «мама» для подключения к пинам модуля.

Была тепло встречена хабра-сообществом. Не смотря на то, что содержала мало конкретной информации. Тому была веская причина - NDA, подписанное нами для получения SDK от производителя решения, компании Espressif . Именно поэтому мы просто рассказали, «вот, есть такое решение». Чтобы заинтересованные имели возможность обратить внимание.

На днях мы (проект COOLRF, не забудьте подписаться на наше ВКонтакт-сообщество , если вы еще не состоите в нём) получили разрешение производителя чипа на публикацию в наших статьях информации, ранее попадавшей под условия соглашения о неразглашении. Всех, кого интересовали подробности - welcome под кат.

Типовые сценарии использования

ESP8266 создан для использования в умных розетках, mesh-сетях, IP-камерах, беспроводных сенсорах, носимой электронике и так далее. Одним словом, ESP8266 появился на свет, чтобы стать мозгом грядущего «Интернета вещей».

Предусмотрено два варианта использования чипа: 1) в виде моста UART-WIFI, когда модуль на базе ESP8266 подключается к существующему решению на базе любого другого микроконтроллера и управляется AT-командами, обеспечивая связь решения с инфраструктурой Wi-Fi; 2) реализуя новое решение, использующее сам чип ESP8266 в качестве управляющего микроконтроллера.

Первый сценарий был кратко описан в нашей прошлой статье. Реализуется он с помощью любого из недорогих китайских ESP8266-модулей. Хорошо подходит любителям ардуино и тем, у кого уже есть в руках готовая схематика и отлаженная прошивка на базе чего-то своего, горячо любимого.

Второй вариант сценария предусматривает написание индивидуальной прошивки для управления чипом «изнутри». В данный момент прошивка должна быть написана для фирменного компилятора. С чем, в основном, и связаны требования к неразглашению информации вокруг этого решения. В обозримом будущем производитель планирует перейти на использование GCC и эти ограничения будут сняты.

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

Ключевые характеристики

Чип ESP8266 является одним из самых высокоинтегрированных решений для работы с WiFi. Внутри чипа уместилась куча всего того, что в конкурирующих решениях часто является частью внешней обвязки:

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

Управляет всем этим интегрированным хозяйством расширенная версия 32-битного процессора Tensilica’s L106 Diamond series. Что же интересного внутри?

  • 802.11 b/g/n protocol
  • Wi-Fi Direct (P2P), soft-AP
  • Integrated TCP/IP protocol stack
  • Integrated TR switch, balun, LNA, power amplifier and matching network
  • Integrated PLL, regulators, and power management units
  • +20.5dBm output power in 802.11b mode
  • Supports antenna diversity
  • Power down leakage current of < 10uA
  • SDIO 2.0, SPI, UART
  • STBC, 1x1 MIMO, 2x1 MIMO
  • A-MPDU & A-MSDU aggregation & 0.4μs guard interval
  • Wake up and transmit packets in < 22ms
  • Standby power consumption of < 1.0mW (DTIM3)

Ultra Low Power Technology

Энергопотребление - одна из самых важных характеристик решения, претендующего стать мозгом миллиардов устройств Интернета вещей. С чем связана популярность BLE и различных собственных реализаций радиоинтерфейсов? Ведь в конечном счете все устройства на базе этих реализаций все равно стремятся попасть в обычный Wi-Fi с помощью специальных устройств-мостов.

Секрет прост - сложно создать устройство, подключенное к WiFi, достаточное время работающее на автономном питании. Потребители не готовы менять батареи в датчиках каждые два-три месяца. Поэтому «выход в сеть» приходилось обеспечивать мостами, подключенным к постоянному электричеству. ESP8266 должен решить эту проблему. Теперь Wi-Fi можно использовать даже в автономных датчиках, работающих на небольших батареях. Благодаря использованию продвинутых механизмов управления энергопотреблением решения.

Если бегло посмотреть на характеристики потребления чипа, можно остаться в неведении. 215mA в режиме передачи - ничего особенного? Да, но стоит вчитаться в даташит и начинаешь понимать перспективы решения. ESP8266 потребляет около 60uA в режиме глубокого сна (с работающими часами реального времени) и меньше 1.0mA (DTIM=3) или меньше 0.5mA (DTIM=10) в режиме поддержания связи с точкой доступа Wi-Fi.


Миниатюрные WiFi модули ESP8266 довольно привлекательны для систем умного дома и домашней автоматизации. Их еще называют «убийцами NRF24L01».
Я себе заказал более поздние модификации ESP07 и ESP12, которые отличаются меньшими размерами и большим числом выведенных GPIO, что не требует «хаков» для использования в них дополнительных портов ввода/вывода.

Данный модули разработаны китайской компанией

Технические характеристики:

  • WI-FI: 802.11 b/g/n с WEP, WPA, WPA2.
  • Режимы работы: Клиент (STA), Точка доступа (AP), Клиент+Точка доступа (STA+AP).
  • Напряжение питания 1.7..3.6 В.
  • Потребляемый ток: до 215мА в зависимости от режима работы.
  • Количество GPIO: 16.
  • Flash память размером 512кб.
  • RAM данных 80 кб
  • RAM инструкций - 32 кб.
Про модификации модулей ESP8266

Заказывал я модули в январе.
Цена - $3.78, - $4.24. Покупал на премию за обзор статьи. Приехали за 31 день в запаянных пакетиках







ESP8266 ESP-07




ESP8266 ESP-12




Оживление модуля заняло довольно много времени
Для этого нужно подать на него 3.3В. Причем стабилизаторы у преобразователей USB/UART не тянут данный модуль по току, поэтому питание нужно внешнее.

RXD, TXD и GND подсоединяются через к компьютеру.

В результате собрал на макетке такую схему

Здесь сразу столкнулся со следующей сложностью - шаг дырочек у ESP07 - 2мм, а не 2.5 как у штырьковых разъемов, применяемых в Ардуино и прочих местах.
Пришлось к макетке паять на проволочках





Сразу вывел кнопку RESET и перемычку GPIO0 на землю, переводящую модуль в режим загрузки прошивки. А питание на модуль завел через

После этого запустил программу CollTerm и на скорости 9600 получил приглашение модуля.
Команда AT+GMR выдала 0020000904 (Версия SDK - 0020, в версия AT - 0904)


Для тех, кому лень, как мне, разбираться с АТ командами, есть , позволяющая все это настроить.

Прошивку делал . Так как данная программа работает только с COM1-COM6, пришлось в диспетчере устройств изменить свой COM33 от USB/UART конвертера на COM6.

Далее прошивка не представляет труда: открываем порт и коннектимся. Скорость выбирается автоматически. Главное, не забыть посадить GPIO0 на землю (у меня для этого есть специальная перемычка). Скорость выбирается автоматически. Иногда коннект не устанавливался. Помогало нажатие кнопки RESET во время коннекта.



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


У меня получилось запустить модуль давления/температуры BMP180, подключенный к GPIO2 и GPIO0

Для этого я загрузил файл bmp180.lua из готовых модулей, идущих вместе с прошивкой с GITHUB
И затем файл init.lau, выполняемый при загрузке ESP8266
tmr.alarm(1, 5000, 1, function() print("ip: ",wifi.sta.getip()) bmp180 = require("bmp180") bmp180.init(4, 3) tmr.stop(1) -- alarm stop end)

Запуск программы без задержки таймера приводил к неизменной ошибке.
После рестарата, код
bmp180.read(OSS) t = bmp180.getTemperature() p = bmp180.getPressure() -- temperature in degrees Celsius and Farenheit print("Temperature: "..(t/10).." C") -- pressure in differents units print("Pressure: "..(p * 75 / 10000).." mmHg")

Выдавал в консоль текущее давление и температуру.

А вот запустить выдачу данных параметров в режиме веб-сервера мне не удалось. Все дело в нехватки памяти. Отдельно веб сервер и BMP180 работали, а вместе вываливались в
PANIC: unprotected error in call to Lua API (error loading module "bmp180" from file "bmp180.lua": not enough memory)
Или просто на консоль валились обрывки кода LUA.

Модернизировать с ходу не получилось.

Дальнейший мой путь был, собирать свою прошивку на фирменном SDK, как . Но это уже другая история. Скажу только, что прошивки собираются без проблем, а вот запустить злополучный BMP180 так и не удалось.

Выводы

  • Модули ESP8266 - это очень дешевое решения для построение сети умного дома и прочей домашней автоматизации с использованием WiFi
  • Данные модули вполне годятся для замены NRF24L01+ в связке с Arduino и прочими «народными» контроллерами.
  • Для работы в качестве самостоятельного контроллера ESP8266 имеет маловато ресурсов и довольно сырые прошивки
  • Программирование ESP-модулей довольно трудоемкий процесс, который может отпугнуть новичков
  • В целом ESP8266 имеют большие перспективы. Буду ждать развитие прошивок и средств разработки, а пока, буду применять их в связке с другими контроллерами (кроме )))

Разные варианты реализации модуля ESP8266 обозревались тут не раз, и заслуженно. Этот мелкий, с монету, чип с WiF на борту может работать и точкой доступа, и клиентом и программируется как угодно - и продаётся за считанные доллары.

Не успели мы привыкнуть к мысли, что всякие интересные поделки можно сделать на грошовой Arduino, Attiny или STM - как и устройства с WiFi и мощными процессорами на 80 мегагерц стали им конкурентами по цене. (Чёрт, у меня процессор в первом собственном компьютере был немногим быстрее , какой же я старый).

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

За что мы «любим» разные варианты ESP8266:

  • Они питаются от 3.3 вольт, а не от более привычных пяти
  • Им в пике надо ток до 320mA, что не под силу обычным преобразователям USB-TTL
  • Шаг между выходами платы обычно составляет не стандартные 2,54 мм, а 2 мм ровно - что делает пайку затейливым приключением
  • Есть только одна версия платы с шагом между контактами 2,54 мм («ESP8266-01»), но у неё минимум полезных контактов
  • В режим программирования чип переводится замыканием контактов, что требовало сноровки. Либо припаивания кнопки
  • С Reset та же беда - либо отключать питание, либо кнопку паять
И тут китайпром выдал «ESP8266-12E» под названием «Witty Cloud»:

Плата представляет собой «бутерброд» из двух. На верхнем слое (слева на обоих фото) сам чип ESP8266, под ним - разъём питания MicroUSB и регулятор напряжения AMS1117-3.3, задача которого - превратить 5 вольт в 3.3. По datasheet регулятору по зубам токи до 0.8А, так что для питания чипа этого хватает с лихвой. Там же - кнопка Reset для перезагрузки.
Чтобы было чем занять пустующие углы платы, китаец впихнул туда RGB LED и фоторезистор, о них - позже.

На нижнем слое «бутерброда» (на фото справа) расположился полноценный MicroUSB, чип CH340G и кнопки «Flash» (режим прошивки) и «Reset».

«Бутербродность» даёт бóльшую свободу действий. Вы можете подключить «бутерброд» к компьютеру в нижний (полноценный) разъём USB, перепрограммировать его - и затем встроить в вашу поделку только верхнюю часть, сэкономив на размерах корпуса.

Более того, низ «бутерброда» можно использовать для программирования самодельных модулей. Я сам паял завалявшиеся модули ESP8266-12 и ESP8266-07 на не очень удачные платы-адаптеры за $0,22 и приделывал «на соплях» регуляторы AMS1117 - оба работали безо всяких проблем и оказались стопроцентно совместимы по разъёмам и кнопкам:

Ладно, хватит нахваливать модуль, давайте сделаем что-нибудь полезное. На странице продавца рекламируется какой-то SDK и даже какое-то китайское «облако» для устройств на базе ESP8266 и Android, правда информации о них на английском (почти) нет. Раз так, махнём на них, запустим Arduino IDE 1.6 и полезем в настройки.

В окно «Additional URLs» вставим строку https://arduino.esp8266.com/package_esp8266com_index.json Затем откроем «Boards manager» и введём в строку поиска «ESP8266». Нажмём Install и приготовимся ждать, пока скачается аж 130 мегабайт пакетов:

Подключим «бутерброд» к компьютеру в нижний (полноценный) разъём MicroUSB. Windows должна определить конвертер USB-TTL «CH340G» и присвоить ему виртуальный порт. Именно этот порт мы и укажем в настройках Arduino IDE. Остальные настройки такие:

Закинем в память элементарный код

#include const char* ssid = "??? имя вашей точки WiFi ???"; const char* password = "??? пароль???"; WiFiServer server(80); void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } server.begin(); Serial.print("IP-адрес нашего модуля: "); Serial.println(WiFi.localIP()); } void loop() { WiFiClient client = server.available(); if (!client) { return; } while(!client.available()){ delay(1); } client.flush(); String s = "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nhello from esp8266!\n"; client.print(s); delay(1); }

Обратите внимание - в процессе прошивки кнопку Flash жать не нужно - плата обо всём позаботится сама.

После того, как новая программа залита в ESP8266, его можно отключить от компьютера и запитать хоть от павербанка. Нижнюю часть «бутерброда» можно отсоединить, она уже не нужна.

Либо с помощь Arduino serial monitor (скорость порта - 115200), либо в вебинтерфейсе роутера подсматриваем IP-адрес, который заполучил в домашней WiFi-сети наш ESP8266. Открываем этот адрес в браузере компьютера или телефона:

Наше устройство подключилось к домашней сети, подняло веб-сервер и нам отвечает.

Убедились в работоспособности устройства? Едем дальше. Для того, чтобы оно сгодилось на что-то полезное в быту, интересно «подружить» его, например, с реле. Правда, классические реле на 5 вольт по определению отпадают - слишком велик риск, что напряжения 3.3 вольта не хватит, чтобы электромагнит смог сдёрнуть якорь. Поэтому берём твердотельное реле Omron за $1.90 . По даташиту имеющегося у нас напряжения ему хватит для чёткого срабатывания:

Подключаем «плюс» и «минус» к контактам VCC и GND верхнего слоя «бутерброда», а третий, сигнальный, провод - к, например, контакту GPIO 2. В качестве программы можно взять скетч WiFiWebServer, который прилагается к библиотеке Ардуино, или же воспользоваться программой коллеги Sav13 с samopal.pro/wifi-power-esp8266/

Я для теста взял простую галогеновую лампочку на 20Вт и вдоволь ей «нащёлкался»:

Срабатывание происходит за долю секунды после подачи команды. Чтобы проверить надёжность, я вставил в код простенький счётчик и набросал простой bat-файл, который с паузой в секунду включал и выключал лампочку. До кучи открыл пару дополнительных окон, из которых начал бомбардировать IP-адрес модуля бесконечной командой ping. Через несколько часов счётчик включений-выключений превысил 19 тыс., но всё работало - что вселяет некоторую уверенность в надёжности устройства.

Если вы дочитали досюда, но в голове крутится мысль «что-то это всё сложно», у меня для вас заготовлено приятное

Помните, я упоминал, что китайский производитель «на сдачу» поставил на плату RGB-светодиод и фоторезистор? С ними можно поэкспериментировать, даже если у вас нет никаких иных датчиков и прочей периферии.

В этом варианте сделать над собой усилие и запустить Arduino IDE вам потребуется ровно один раз .


Экран приложения - это пустое поле, на котором можно, как на приборной доске, разместить элементы. Для начала попробуйте «zeRGBa» и «gauge»:

В настройках «зебры» укажите, что трёхцветный светодиод на плате подключён к пинам 12 (зелёный), 13 (синий) и 15 (красный):

В настройках «gauge» укажите, что фоторезистор на плате подключён к аналоговому входу «adc0»:

Активируйте то, что вы наваяли, нажав на кнопку в правом верхнем углу. Вы увидите, что жёлтый индикатор меняет показания в зависимости от освещённости, а RGB LED на «бутерброде» меняет цвет, когда вы тыкаете по «зебре»:

Практика показала, что эта штуковина очень нравится детям. Одно дело - играть на планшете в чужие игры, другое - это сделать и раскрасить «пульт» самому и управлять чем-то осязаемым. Достаточно взять на себя подготовительную часть в Arduino, а затем показать, как этим пользоваться, выдать несколько светодиодов, кнопок или деталек типа аналогового датчика температуры LM35 - у вас немедленно отберут «игрушку» и чадо будет занято надолго. За уши не оторвёте, проверено.

Для быстрого создания прототипов Blynk также оказался очень удобен - проще набросать кнопки и переключатели там, чем городить собственный вебинтерфейс. Сэкономленное время можно с большей пользой потратить на сборку очередной поделки.

Резюме

По цене немногим выше 200 рублей вы получаете очень мощное и вполне самостоятельное устройство, на котором можно программировать всякие полезности для дома - и управлять ими по WiFi.

«Бутерброд» оказался на диво удачным. Он менее чем на доллар дороже «голого» ESP8266-12 , но экономит вам кучу времени и хлопот. Ворох проводов и макетка - не нужны.

Ход с предустановкой на плату LED и фотодатчика - очень удачный. Даже если у вас кроме модуля и кабеля MicroUSB ничего нет, вы всё равно можете хоть что-то для начала испробовать и получить удовольствие от покупки. Если они не нужны на готовом изделии - просто отпаяйте или срежьте.

По такой цене «бутерброд» - явный конкурент Arduino Nano, и делает очень ненужными модули Bluetooth (типа HC-05) и тем более - радиомодули NRF24L01+.

Спохватился - чуть традицию не нарушил:



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: