WiFi ESP8266 — новый шаг в проектировании домашних устройств с беспроводным интерфейсом

На сегодняшний день стоимость Wi-Fi модулей стремится к копейкам благодаря разработке ESP8266. Это позволяет разрабатывать домашние устройства на уровне технологии Wi-Fi. А что это нам дает? На самом деле очень многое – практически тоже, что и сама сеть интернет в дополнение ко всему. Таким образом, делая какое либо устройство, теперь оно будет иметь выход в сеть и интернет (если в сети он присутствует), а значит устройство теоретически доступно и любому другому устройству, находящемуся в сети или подключенному к интернету. Ещё лет пять назад нам с вами и мечтать не приходилось о таком уровне домашних устройств.

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

Так вот, при выборе модуля WiFi ESP8266 выбор склонился к модели ESP-07 с возможностью подключения внешней антенны для получения лучшего сигнала приобретенной в китайском интернет-магазине GearBest. В таком случае нам понадобится сама антенна (я не стал мелочиться, но подойдет любая другая с разъемом RP-SMA на WiFi частоты), коннектор для подключения антенны к модулю и при необходимости удлинитель для антенны. Плюс необходимые датчики.

Для работы с модулем ESP-07 была изготовлена печатная плата по схеме:

Схема состоит из 3-х основных блоков: стабилизатор напряжения на 3,3 вольта VR1 с необходимыми элементами (регулируемый вариант стабилизатора можно заменить на ams1117 3v3 с исключением резисторов R1 и R3), блок, необходимый для программирования модуля WiFi изготовлен на основе преобразователя интерфейсов USB-UART CH340G с необходимой обвязкой микросхемы (CH340G можно заменить на любые другие микросхемы соответствующего функционала с изменением обвязки для заменяемой микросхемы), непосредственно сам модуль WiFi так же с необходимыми элементами для его функционирования и программирования. Для входа в режим программирования необходимо нажать кнопку S2 Prog и перезагрузить модуль или выключить и включить питания с нажатой кнопкой S2 Prog. Далее при помощи софта на ПК загрузить прошивку в модуль WiFi. По окончании прошивки снова перезагрузить модуль, но без нажатой кнопки S2 Prog – так модуль будет работать в основном режиме. При применении внешней антенны плата предусматривает место для крепления кронштейна антенны. Сам кронштейн может быть самой простой конфигурации. Для подключения к компьютеру используется разъем mini-USB.

Для подключения антенны к ESP-07 используется кабель IPX to RP-SMA. Так как антенну я выбрал для себя на 18 дБ GDI-8218, устройство в сборе с датчиками выглядит достаточно угрожающе. Конечно, при использовании нескольких датчиков приходится соединять все на макетной плате, если использовать для контроля за погодными параметрами всего один датчик BMP280 (измеряет температуру, давление и влажность), то схема выглядит более красиво. Кроме того, плата для ESP8266 делалась как универсальный инструмент, поэтому если ее отредактировать, предусмотрев установку датчиков прямо на плате, то схема приобретет более компактный и эстетический вид.

Использование антенны в таком виде не всегда удобно, поэтому для удобства можно использовать удлинитель RP-SMA male to female для антенны для того, чтобы закрепить ее в удобном месте или же просто вынести ее относительно всей схемы.

Альтернативой такой плате могут быть заводские nodemcu платы или платы переходники на PLS/PBS контакты. Последние имеют лишь пару резисторов, необходимых для включения модуля и место для стабилизатора напряжения (нет в комплекте). Из-за своей совсем минимальности такие платы мне использовать было не удобно (если лишь не в составе другого устройства, оборудованного разъемом для такой платы).

Для подключения к модулю датчиков можно использовать все свободные GPIO модуля. Для получения показаний необходимых нам параметров датчики можно использовать любые в любой конфигурации, о чем пойдет речь ниже. Мною были использованы датчики DS18B20 в формате метрового зонда (удобно контролировать температуру на улице либо какой-нибудь жидкости, потому что он считается водонепроницаемым), BMP180 для контроля атмосферного давления и AM2302 для контроля влажности в помещении. Не забывайте про необходимую обвязку датчиков, если используете их не в виде модулей со всем необходимым: DS18B20 подключается с подтягивающим резистором к плюсу питания (резистор 10 кОм между выводом 1-wire и плюсом питания), аналогично для AM2302 (DHT22), датчики, работающие по шине I2C тоже должны иметь подтягивающие резисторы на контактах SCL и SDA.

Но для достижения результата необходимо написать прошивку, что бы устройство работало именно так, как нам необходимо. С заготовленными идеями при поиске SDK для ESP8266 был найден онлайн конструктор прошивок (или онлайн компилятор), причем не требующий знаний в программировании (в своем большинстве функций)! Для получения доступа к сборке прошивок необходима регистрация, иначе это меню отсутствует вовсе. Без регистрации можно скачать лишь прошивки «быстрого старта».

Все, что нам необходимо, это расставить галочки с необходимыми функциями и скомпилировать прошивку для модуля ESP8266, скачать ее (здесь необходимо учитывать, что память модуля не безграничная и выбирать необходимые функции, потому что весь функционал онлайн компилятора все равно не поместится в одном устройстве).

Далее прошить модуль при помощи программы nodemcu-flasher (настройки программы ниже на скриншотах) (подключаем устройство по USB к ПК). При прошивке ничего не должно быть подключено к выводам UART модуля (GPIO1, GPIO3), иначе модуль может не прошиться. Если же к этим выводам что-то планируется подключать, то на время прошивки стоит это отключить. После прошивки перезагружаем модуль или выключаем и включаем питание – в зависимости от настроек модуль подключится к сети или создаст свою точку доступа. Устройство готово к настройкам и использованию!

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

Установить настройки для модуля ESP-07 (как показывает практика установка размера флэш памяти не влияет на используемый образец, видимо, верное значение устанавливается автоматически):

Указать путь к файлу прошивки:

Указать COM порт установленный при подключении для данного модуля и нажать кнопку Flash (если все сделано верно, то пойдет загрузка прошивки в модуль):

Дождаться завершения прошивки:

Перед компилирование прошивки удобно задать настройки по умолчанию на странице онлайн компилятора, где нужно ввести имя точки доступа и пароль WiFi роутера (раздел «Системные» в конце списка выбора функционала перед сборкой прошивки). Кроме этого можно задать статический IP адрес для устройства. Для этого в системных функциях необходимо поставить галку напротив «Настройки по умолчанию» и нажатием на шестеренку вызвать меню, куда и вносятся эти данные при необходимости. В таком случае после включения устройства WiFi оно автоматически подключится к роутеру. После включения открываем браузер и в строку адреса вписываем IP адрес устройства, по которому он зарегистрировался в сети.  Попадаем в меню WiFi устройства, где можно не лишь в районе сети наблюдать за параметрами датчиков, но и сконфигурировать остальные функции, которые выбрали перед сборкой прошивки.

Если же не произвести настройки по умолчанию перед сборкой прошивки, то при первом включении (после прошивки необходимо 3 раза с интервалом в 1 секунду нажать кнопку resrt на модуле) будет создана точка доступа hamessmart по адресу 192.168.4.1. Используя телефон или ноутбук, необходимо подключиться подключиться к точке доступа и через браузер зайти на этот адрес, произвести настройки, перенастроить при необходимости в Station mode в настройках Main (логин для входа в меню esp8266, пароль 0000), так же введя имя точки доступа WiFi роутера и пароль.

Сначала нужно ввести настройки в меню Main (поле Config содержит ссылки для настроек и конфигурации выбранных функций).

Для входа в меню потребуется ввести логин и пароль esp8266 – 0000. Здесь можно управлять настройками безопасности, времени, подключения к сети. Для сохранения введенных настроек нужно нажать кнопку Set.

Возвращаемся в главное меню и переходим по ссылке Hardware. Здесь включаем и конфигурируем датчики, которые будут подключены к модулю (наличие различных датчиков в этом меню обусловлено их выбором при сборке прошивки — если перед компилированием что-то не выбрать, эти функции не будут доступны в самой прошивке). Для датчиков, работающих по шине I2C нужно задать общие для всех устройств GPIO. Почему общих? По шине I2C можно подключить несколько устройств параллельно. Каждое такое устройство имеет свой адрес и как лишь ведущее устройство передает этот адрес, то ведомое устройство с этим адресом будет знать, что сейчас будет происходить обмен данными именно с ним, остальные устройства на шине при этом бездействуют. Для подключения датчиков влажности DHT11/22 используется отдельно отведенная ножка модуля, которая задается в настройках этого меню. Для включения датчика DS18B20 нужно так же задать отдельный вывод GPIO, далее, не забыв сохранить введенные настройки, перейти в главное меню и перейти по ссылке 1-wire.

В этом меню нажать Clear & Scan list, после чего должен появиться ID датчика DS18B20. И лишь после этого датчик температуры заработает.

Для подключения аналоговых датчиков можно использовать АЦП (единственный вывод ADC модуля WiFi). Это встроенный АЦП модуля разрядностью 10 бит (1023 отсчета) с опорным напряжением 1,024 В. Если датчик имеет на выходе уровень напряжения более этого значения, необходимо использовать делитель напряжения на резисторах с известным коэффициентом деления. Полученное значение от АЦП будет отличаться от действительного в этот коэффициент раз. Множество аналоговых датчиков есть в продаже в виде модулей на основе LM393. Принцип работы таких модулей заключается в том, что подстроечным резистором задается опорное напряжение для компаратора (LM393), а как лишь воздействие на датчик увеличит напряжение на входе компаратора, сделав его больше, чем опорное, то на выходе этого модуля будет сформирована логическая единица. Таким образом, можно регулировать порог срабатывания датчика (а точнее модуля этого датчика) и фиксировать достижение этого порога просто при помощи GPIO ESP8266, настроенных на вход. Для этого переходим в главное меню и нажимаем ссылку GPIO. В этом меню задаем номер вывода и режим работы для него, сохраняем. Показания будут типа «0» или «1» — порог достигнут или нет, действие произошло или нет.

Теперь, чтобы вывести показания датчиков в интернет, переходим по ссылке Servers или DDNS в зависимости от выбранного способа вывода в интернет. Изначально я планировал использовать для этой цели сервис narodmon.ru, который прямо на карте отображает показания датчиков всех пользователей, использующих этот сервис. Кроме этого, этот сервис имеет приложения и виджеты для мобильных устройств и ПК, что весьма удобно. Регистрируемся в этом сервисе (он полностью бесплатный) с использованием ID (смотри скриншот ниже — ссылка Servers поля Config).

Сервис narodmon (народный мониторинг) хранит показания датчиков до 1 года и позволяет составлять метрики датчиков за период помимо остального функционала.

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

Конечно, онлайн компилятор дает ещё множество других функций: подключение различных дисплеев, отправка email или sms (необходим gsm модуль для отправки sms без интернет сервисов), выполнение настраиваемых логических операций, управление различной периферией с помощью GPIO и ШИМ, запись контролируемых параметров на SD карту памяти и многое другое. Если одного модуля мало, то можно сделать их несколько, работать будут они как одно целое в районе общей сети благодаря функциям виртуальных датчиков и виртуальных GPIO (одно устройство получает показания датчиков от другого GET запросом). Если же просто не хватает портов ввода вывода, то есть функции подключения расширителей портов. Часть функционала доступна лишь в Pro режиме прошивки, который активируется на главной странице по ссылке GET PRO. Для активации необходимо ввести код, который не является бесплатным, но и стоит он лишь символическую сумму, который можно получить в личном кабинете сайта онлайн компилятора. 

Для настроек важно не перепутать GPIO модуля (если ESP-07 припаян к плате, то обозначений выводов не видно) для нормального функционирования:

В дополнение ко всему но оставшиеся выводы модуля можно подключит дисплей, на который будем выводить значения погодных датчиков. Конструктор поддерживает дисплеи ILI9341 — TFT LCD 240х320, работающие по SPI интерфейсу.

При сборке прошивки задаем как каким GPIO будут подключаться выводы CS и DC дисплея (меню настроек вызывается на сайте конструктор при выборе функций нажатием шестеренки напротив нужной нам функции). Остальные вывод необходимо подключить следующим образом: MOSI — GPIO13, SCK — GPIO14, reset и LED подключаем к плюсу питания vcc, и соответственно vcc и gnd к плюсу и минусу источника питания (питание берем от модуля WiFi 3,3 вольта).

Далее из главного меню веб интерфейса переходим по ссылке Display. 

Здесь включаем TFT, при необходимости поворачиваем дисплей на 90 градусов и задаем в каких строках (Line 0, Line2…) какую информацию будем выводить. С включенной функцией Время и NTP в системных функциях конструктора с NTP сервера берется информация о времени через интернет, что превращает наше устройство в точные часы, которые не нужно настраивать. Выводим текущее время на дисплей и ещё несколько метео параметров для заполнения дисплея. Для этого в поле Select line выбираем строку, рядом выбираем параметр, который будем выводить на эту строку, ниже при необходимости выбираем центрирование данных, размер шрифта и цвет шрифта. Жмем Set и настройка сохраняется. Шрифт лишь типа simple font. Выбор заготовленных параметров достаточно невелик, но достаточен, но при помощи конструктора строк на дисплей можно выводить любые параметры в любой конфигурации.

К статье прилагается файл печатной платы для модуля ESP-07, прошивка с пустым бланком, прошивка с различным функционалом для ESP-07, некоторая документация, драйвер для программирования по USB для микросхемы CH340G, программа для прошивки ESP8266.

Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

IC1
ESP8266 модульESP-071
IC2
ИС USB интерфейсаCH340G1
VR1
Линейный регуляторAMS1117-ADJ1
VD1
Диод Шоттки1N58191
R1
Резистор3 кОм1
1206R2, R7-R9
Резистор10 кОм4
0805R3
Резистор1.8 кОм1
1206R4
Резистор1 кОм1
0805R5, R6
Резистор390 Ом2
0805C1
Конденсатор10 мкФ1
на плате керамический 1206C7
Конденсатор22 мкФ1
танталовый + 2,2 мкФ керамика 1206C6
Конденсатор100 мкФ1
танталовыйC2
Конденсатор470 пФ1
1206C4, C6, C9, C10
Конденсатор100 нФ4
1206C5, C8
Конденсатор22 пФ2
1206Z1
Кварцевый резонатор12 МГц1
smdX1
Разъемmini-USB1
smdS1, S2
Тактовая кнопка2
smd
Перемычка0 Ом2
резистор 1206
ДисплейILI93411
дополнительно
Модуль датчика давленияBMP1801
дополнительно
Датчик влажностиDHT221
дополнительно
Датчик температурыDS18B201
дополнительноДобавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.