Миниатюрные WiFi модули ESP8266 довольно привлекательны для систем умного дома и домашней автоматизации. Их еще называют «убийцами NRF24L01».
Здесь уже был обзор этого модуля
Я себе заказал более поздние модификации ESP07 и ESP12, которые отличаются меньшими размерами и большим числом выведенных GPIO, что не требует «хаков» для использования в них дополнительных портов ввода/вывода.
Данный модули разработаны китайской компанией
Espressif System
Технические характеристики:
- 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
можно прочитать здесь
Заказывал я модули в январе.
Цена
ESP-07 — $3.78,
ESP-12 — $4.24. Покупал на премию за обзор статьи. Приехали за 31 день в запаянных пакетиках
ESP8266 ESP-07
ESP8266 ESP-12
Оживление модуля заняло довольно много времени
Для этого нужно подать на него 3.3В. Причем стабилизаторы у преобразователей USB/UART не тянут данный модуль по току, поэтому питание нужно внешнее.
Далее нужно посадить GPIO15 на землю, а CH_PD и GPIO0 подтянуть к VCC через резистор. В некоторых источниках еще указывается, что нужно подтянуть к VCC и GPIO2, но у меня все заработало и без этого.
RXD, TXD и GND подсоединяются через
переходник USB/UART к компьютеру.
В результате собрал на макетке такую схему
Здесь сразу столкнулся со следующей сложностью — шаг дырочек у ESP07 — 2мм, а не 2.5 как у штырьковых разъемов, применяемых в Ардуино и прочих местах.
Пришлось к макетке паять на проволочках
Сразу вывел кнопку RESET и перемычку GPIO0 на землю, переводящую модуль в режим загрузки прошивки. А питание на модуль завел через
линейный стабилизатор LM1117-N-3.3
После этого запустил программу CollTerm и на скорости 9600 получил приглашение модуля.
Команда AT+GMR выдала 0020000904 (Версия SDK — 0020, в версия AT — 0904)
Далее побаловавшись с AT командами запустил модуль как точку доступа и подключился к своей.
Для тех, кому лень, как мне, разбираться с АТ командами, есть
программа ESP8266_config, позволяющая все это настроить.
Далее интересно было попробовать модуль в режиме самостоятельного контроля. Для этого решил прошить его NodeMCU со встроенным интерпретатором LUA.
Я загрузил ModeMCU с
GITHUB вместе с примерами и модулями на LUA
Прошивку делал
утилитой XTCOM_UTIL. Так как данная программа работает только с COM1-COM6, пришлось в диспетчере устройств изменить свой COM33 от USB/UART конвертера на COM6.
Далее прошивка не представляет труда: открываем порт и коннектимся. Скорость выбирается автоматически. Главное, не забыть посадить GPIO0 на землю (у меня для этого есть специальная перемычка). Скорость выбирается автоматически. Иногда коннект не устанавливался. Помогало нажатие кнопки RESET во время коннекта.
Далее выбираем файл с прошивкой
nodemcu-firmware-master\pre_build\latest\nodemcu_latest.bin
Теперь можно подключиться к модулю
при помощи ESPlorer
В данной программе можно загружать в 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 имеют большие перспективы. Буду ждать развитие прошивок и средств разработки, а пока, буду применять их в связке с другими контроллерами (кроме проектов с WiFi розетками и выключателями )))
Полезные ссылки и литература
Дальнейшее развитие событий по моему использованию ESP8266 буду
публиковать в своем блоге
Кот попался, пока возился с макрофотографиями
Оказался довольно пыльным )))
Насколько я понял, лучше брать модель 07, чем 12
1) Антенна керамическая против дорожки на плате + разъем для внешней
2) Два светодиода индикации против одного
3) Цена
Что хотелось бы узнать:
1) Цвета светодиодов и что показывают
2) Дальность стабильной двусторонней связи.
1. Красный светодиод питание. Синий — обмен по UART, может быть в других прошивках что нибудь еще
2. Дальность проверить смог только в квартире через две стены на максимальном расстоянии.
Уровень сигнала на картинке.
NTF24L01 на внутренней антенне терял пакеты при таких условиях
Интересно очень. Какой модуль дальнобойней.
Везде предлагают только прошивать модуль через Ардуино.
Хочу использовать его для подключения Ардуино к телефону (программа Remote XY).
Что-то поиск по интернету мне нужного не выдает.
COMPILING YOUR OWN PROGRAMS FOR THE ESP8266
Примерно так
это что-то типа ардуиноязыка и по этому проще писать, но ЛУА сам по себе ресурсоемкий т.к. это все же интерпретатор.
Уже поставил Eclipse c SDK от производителя.
Осталось посадить GPIO0 на DTR чтобы автоматом прошивка заливалась
Еще бы загрузчик как в Ардуине ставить, чтобы пином не дергать при прошивке. Отладка была бы удобнее, а рабочую прошивку потом без загрузчика заливать
Попробовал собрать из примера BMP180 через i2c функции и DH1750.
Не работает. Не видит модулей, хотя на NodeMCU работали.
С отладкой туго. Вот пока жду новых мыслей.
Пошивка ХомесСмарт, подключаю барометр, термометр, гигрометр.
Ничего не доделаешь. Да и платной ее в любое время сделают
А с применениями, у меня дома куча устройств на NRF24 работает.
Управление вентиляторами, сейчас систему полива разрабатываю.
Планирую потихоньку заменять их на ESP
Купил 4 шт. Только два завелись. Остальные выдают инфу о себе, но не работают.
helloword_rx
helloword_tx
А чего ради плату травили и паяли? Зачем столько дырочек и где датчики? :-)
Там по этой ссылке прошивка без исходников. Не понятно что с ней дальше делать
Только непонятно, захотят люди делиться исходниками или будут деньги зарабатывать
Насчёт Wifi этого модуля, имеются проблемы с keenetic giga, когда wifi в режиме bgn, то модуль ваще не цепляется, и вся есть ложится, переключаещь только на bg, вроде норм работает. Кто какую антенну посоветует под эти модули?
У меня Zyxel Keenetic без giga. Модуль отлично цепляется на «N». Там в отчете это видно.
Если будет таких много, посажу на старый DIR300, чтобы работе других меньше мешали.
Только цена c GSM немного другая получается
(ссылку пофиксил)
Так же раньше делал, потом заметил, что вручную вводится номер порта
А домашняя автоматизация — хобби
Пылесосить кота это жестоко )))
Жалостью берет. Рука не поднимается
Любимое место на моем компьютере
А механически все целы.
Вот только что он с виндой не делает, например переворот рабочего стола на 90 градусов )))
Cntrl + Alt + стрелка — поворот экрана в одну из сторон
Являюсь разработчиком прошивки с homes-smart.ru и рассмотрю все предложения по доработке на форуме, но к сожалению всем не угодить…
А кто ищет, тот всегда найдет — фришных прошивок с открытым кодом не на базе NodeMCU уже достаточно на гитхабе, ссылки уже публиковались в прошлой теме.
http://esp8266.ru/forum/ и
ветка на arduino.ru
Может разработчики где то еще тусуются?
В абзаце про прошивку предложение «Скорость выбирается автоматически.» — 2 раза.
И чуть дальше слово «рестарата».
www.dessy.ru/catalog-pdc408050.html
github.com/SCKStef/ESP8266_Relay_Board
github.com/mharizanov/ESP8266_Relay_Board
Сам термостат:
www.herz-armaturen.at//katalog.php?prodID=75&catID=240&lng=eng
— отсутствие семьи ( детей, жены, собаки...)?
— отсутствие постоянной работы?
И работа есть, и на спорт три раза в неделю времени хватает.
Зато нет телевизора!
nodemcu-firmware-master\pre_build\latest\nodemcu_latest.bin
А где собсна бинарый файл? Или его нужно собирать самому? Если да, то чем?
Disable modules you won't be using to reduce firmware size and free up some RAM. The ESP8266 is quite limited in available RAM and running out of memory can cause a system panic. The default configuration is designed to run on all ESP modules including the 512 KB modules like ESP-01 and only includes general purpose interface modules which require at most two GPIO pins.
Edit app/include/user_modules.h and comment-out the #define statement for modules you don't need. Example:
…
#define LUA_USE_MODULES_MQTT
// #define LUA_USE_MODULES_COAP
// #define LUA_USE_MODULES_U8G
…
Наверное вопрос уже звучал, но не подскажете, можно ли подключать каналы управления модуля (ESP 12) напрямую к двигателям игрушки? Или всегда только через реле?
Я просто даже не знаю характеристики этих двигателей. Двигатели обычные маленькие,
какие всегда используются в дешевых моделях с питанием 3-4,5 В.
Поэтому лучше всего подключать небольшие двигатели через транзисторные (MOSFET) ключи нужной мощности. На затвор (базу) ставить ограничивающий резистор, а параллельно двигателю диод в обратной полярности, чтобы гасить самоиндукцию.
Подключение двигателя напрямую с высокой долей вероятности сожжет выход
Вообще, конечно вопросов еще много, пока только собираю информацию.
Я то вообще не электронщик, так просто увлекаюсь. Раньше только на ардуино делал разные вещи. Но все хочу сделать пару вещей на ESP. Но постоянно что-то не получается.
Очень своеобразный модуль (ESP), но возможностей с ним намного больше.