Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

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

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

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

ESP8266

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

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

Схема для модуля ESP-07

Схема состоит из трех основных блоков: стабилизатор напряжения на 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 припаян к плате, то обозначений выводов не видно) для нормального функционирования:

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-ADJ
1 Поиск в магазине ОтронВ блокнот
VD1 Диод Шоттки
1N5819
1 Поиск в магазине ОтронВ блокнот
R1 Резистор
3 кОм
1 1206Поиск в магазине ОтронВ блокнот
R2, R7-R9 Резистор
10 кОм
4 0805Поиск в магазине ОтронВ блокнот
R3 Резистор
1.8 кОм
1 1206Поиск в магазине ОтронВ блокнот
R4 Резистор
1 кОм
1 0805Поиск в магазине ОтронВ блокнот
R5, R6 Резистор
390 Ом
2 0805Поиск в магазине ОтронВ блокнот
C1 Конденсатор10 мкФ1 на плате керамический 1206Поиск в магазине ОтронВ блокнот
C7 Конденсатор22 мкФ1 танталовый + 2,2 мкФ керамика 1206Поиск в магазине ОтронВ блокнот
C6 Конденсатор100 мкФ1 танталовыйПоиск в магазине ОтронВ блокнот
C2 Конденсатор470 пФ1 1206Поиск в магазине ОтронВ блокнот
C4, C6, C9, C10 Конденсатор100 нФ4 1206Поиск в магазине ОтронВ блокнот
C5, C8 Конденсатор22 пФ2 1206Поиск в магазине ОтронВ блокнот
Z1 Кварцевый резонатор12 МГц1 smdПоиск в магазине ОтронВ блокнот
X1 Разъемmini-USB1 smdПоиск в магазине ОтронВ блокнот
S1, S2 Тактовая кнопка2 smdПоиск в магазине ОтронВ блокнот
Перемычка0 Ом2 резистор 1206Поиск в магазине ОтронВ блокнот
ДисплейILI93411 дополнительноПоиск в магазине ОтронВ блокнот
Модуль датчика давленияBMP1801 дополнительноПоиск в магазине ОтронВ блокнот
Датчик влажностиDHT221 дополнительноПоиск в магазине ОтронВ блокнот
Датчик температурыDS18B201 дополнительноПоиск в магазине ОтронВ блокнот
Добавить все

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

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

Теги:

Опубликована: 0 5
Я собрал 0 2
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 2 чел.

Комментарии (19) | Я собрал (0) | Подписаться

0
smack #
2.4ГГц - даже кусочек провода в несколько см будет излучать не плохо
Ответить
0

[Автор]
Gauss #
Да, так и делают PCB антенны, но иногда этого может быть мало
Ответить
0
Hork112 #
А прошивка по воздуху поддерживается?
Ответить
0

[Автор]
Gauss #
Да, функция OTA в конструкторе
Ответить
0
smack #
Между прочим смотрю картинку модуля (из статьи), на крышке написано - 25Дбм. Модуль, что и в правду на выходе имеет мощность в 316мвт?
Ответить
0

[Автор]
Gauss #
Не знаю что китайцы напихали в этот модуль, но на ESP8266 в даташите указано, что +20 dBm output power in 802.11b mode - для такой мощности нужна точно хорошая антенна, а не кусочек провода
Ответить
0
андрей #
Вот тоже смотрю, ESP-13 есть модули - они совместимы с этими прошивками?
Ответить
0

[Автор]
Gauss #
Вроде как да, но я не пользовался такими
Ответить
0
андрей #
Плата симпатичная, но функционально это тоже самое, что и nodemcu платки? Сейчас они стоят почти соразмерно самим ESPшкам
Ответить
0

[Автор]
Gauss #
Эта конструкция в принципе только ради антенны - мне так удобно было, а функционально то же самое практически
Ответить
0
Григорий #
Не понял как крепятся штырьки разъемов к плате.
Ответить
0

[Автор]
Gauss #
Я брал длинные штырьки, вставлял снизу длинными концами вверх, отрегулировав длину штырьков снизу, аккуратно припаивал сверху их к контактам и надевал еще сверху дополнительно ряды пластика. Так можно устанавливать плату на макетную плату и подключать еще что-то сверху к ней на проводах
Ответить
0
сергей #
А как вывести метеопараметры с датчиков. Я что-то в собранной мной прошивке на вклдке Display не нашёл в параметрах Line ничего.
Ответить
0
Игорь #
Я только делаю первые шаги с esp. Нужно ли перегружать модуль по питанию или reset, после заливки пустого бланка?
Ответить
0
Игорь #
Все разобрался
Ответить
0
Игорь #
Модуль запустился. Вижу меню. Но не реагирует на АТ команды. Настройка сом скорость 115200, стоп бит 2, управление потоком нет. При перегревании питания выходят кракозябры
Ответить
0
Игорь #
Прошил модуль стартовой прошивкой. Не могу управлять по UART. Это от прошики зависит или нет? По приему на гипертерминале получаю какие-то кракозябры.
Ответить
0
Кирилл Эдуардович Ложкин #
А как вы сделали расчет нужного размера сопротивления можете сказать?
Ответить
0
spamroot #
Скажите, как припаять к модулю esp8266wifi внешнюю антенну?
Прикрепленный файл: Безымянный.jpg
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
USB осциллограф DSO-2090 Набор для сборки - LED лампа
вверх