April-2015 | ||
2B-ESP8266 SDK IOT Demo EN | 511.4 KB | 5500 |
4B-ESP8266 AT Command Examples EN | 783.4 KB | 4654 |
2C-ESP8266 SDK Programming Guide EN | 877.9 KB | 4725 |
2A-ESP8266 IOT SDK User Manual EN | 683.0 KB | 3068 |
20A-ESP8266 RTOS SDK Programming Guide CN | 780.0 KB | 1867 |
99A-ESP8266 Flash RW Operation EN | 439.2 KB | 2329 |
4A-ESP8266 AT Instrction Set EN | 901.5 KB | 2794 |
99C-ESP8266 OTA Upgrade EN | 817.2 KB | 2120 |
8F-ESP8266 Interface UART Registers | 36.9 KB | 2386 |
8B-ESP8266 Interface GPIO Registers v0.1 | 32.3 KB | 2480 |
0A-ESP8266 WiFi Specifications EN | 794.3 KB | 2370 |
0B-ESP8266 Hardware User Guide EN | 1.8 MB | 3992 |
0C-ESP8266 WROOM WiFi Module Datasheet EN | 762.4 KB | 2122 |
0D-ESP8266 Pin List | 64.8 KB | 2811 |
esp8266 SDK | ||
AT Demo V0.19 30.10.2014 | 28.7 KB | 2321 |
ESP IoT SDK V0.9.2 24.2014 | 1.1 MB | 1964 |
Patch для SDK 9.2 18.11.2014 | 91.7 KB | 956 |
ESP IoT SDK V0.9.3 21.11.2014 | 1.1 MB | 1482 |
ESP IoT SDK V0.9.3 Patch2 21.11.2014 | 58.5 KB | 1015 |
AT v0.20 28.11.2014 | 5.4 MB | 2098 |
ESP IoT SDK V0.9.4 19.12.2014 | 1.1 MB | 1934 |
ESP IoT SDK V0.9.5 23.01.2015 | 7.2 MB | 3797 |
Патч для SDK 0.9.5 Patch2 | 33.8 KB | 2159 |
ESP IoT SDK V1.0.0 AT v0.22 20.03.2015 | 8.7 MB | 6676 |
ESP IoT SDK V1.0.1 AT v0.23 24.04.2015 | 8.9 MB | 4525 |
ESP IoT SDK V1.1.0 AT v0.24 22.05.2015 | 10.0 MB | 2952 |
AT v0.25 SDK 1.1.2 512k | 520.2 KB | 3415 |
Esp Iot Sdk V1.3.0 15 08 08 | 12.6 MB | 1585 |
esp8266 Документация | ||
ESP8266 UART Reg Release 18.11.2014 | 36.9 KB | 3162 |
ESP8266 AT Instruction Set v0.20 28.11.2014 | 852.4 KB | 3540 |
ESP8266 AT Command Examples v0.3 28.11.2014 | 720.6 KB | 5226 |
Xtensa Instruction Set Architecture (ISA) Reference Manual | 4.8 MB | 3121 |
Tensilica RC-2010.1 Documentation | 93.2 MB | 3120 |
ESP8266 Datasheet — IoT SDK Programming Guide V0.9.5 — 23.01.2015 English | 1.9 MB | 5646 |
ESP8266 AT Instruction Set v0.21 23.01.2015 | 965.2 KB | 7676 |
ESP8266 Espressif IoT SDK Programming Guide V0.9.5 Revised 09.02.2015 | 1.9 MB | 3200 |
ESP8266 AT Instruction Set v0.22 14.03.2015 | 1.1 MB | 3424 |
SP8266 AT Command Examples v0.4 20.03.2015 | 773.0 KB | 7767 |
ESP8266 Datasheet — IoT SDK Programming Guide V1.0.0 — 20.03.2015 English | 2.1 MB | 3768 |
ESP8266 SDK API Guide v1.0.0 20.03.2015 | 776.9 KB | 4583 |
ESP8266 AT Instruction Set v0.22 20.03.2015 v0.2 | 560.4 KB | 8168 |
ESP8266 AT Instruction Set v0.23 24.04.2015 | 901.5 KB | 2229 |
Описание esp_init_data_default — ESP8266_RF_Init.xls | 49.2 KB | 3104 |
Getting Started With The ESPlorer IDE — Rui Santos | 1.1 MB | 133261 |
4A-ESP8266 AT Instruction Set EN v0.40 | 876.4 KB | 2771 |
4A-ESP8266 AT Instruction Set EN v0.25 | 924.6 KB | 2301 |
ESP8266 Datasheet — Specifications V4.1 — 08.09.2014 English | 1.9 MB | 11074 |
ESP8266 Datasheet — Beginners Guide V0.4.1 — 17.09.2014 English | 2.7 MB | 6903 |
ESP8266 Datasheet — AT Instruction Set V0.15 — 04.09.2014 English | 224.3 KB | 3619 |
ESP8266 Datasheet — AT Command Examples V0.1 04.09.2014 English | 207.9 KB | 3286 |
ESP8266 Datasheet — IoT SDK Demo (Light/Plug/Sensor) V0.5 — 24.09.2014 English | 587.3 KB | 1966 |
ESP8266 Datasheet — IoT SDK User Manual V0.8 14.08.2014 English | 1.4 MB | 2209 |
ESP8266 Datasheet — IoT SDK Programming Guide V0.9.1 — 23.09.2014 English | 1.2 MB | 267926 |
ESP8266 Datasheet — IoT SDK Json Naming Guidelines V0.1 — 19.06.2014 English | 454.9 KB | 1292 |
ESP8266 Datasheet — Module Application Design Guide — 20.08.2014 English | 1.3 MB | 6023 |
ESP8266 Datasheet — IoT APK User Guide (Humidityte and Temperature sensors) — 23.09.2014 English | 4.7 MB | 1947 |
ESP8266 Datasheet — IOT Flash Read-Write Guide V0.2 — 15.09.2014 Chinese | 617.4 KB | 1253 |
ESP8266 Datasheet — FAQ V0.2 — 23.09.2014 Chinese | 889.0 KB | 1109 |
ESP8266 PCB Fabrication Requirements | 36.9 KB | 1360 |
ESP8266 PCB Fabrication Requirements Ver. B | 36.9 KB | 1510 |
ESP8266 GPIO Register 05.11.2014.XLS | 32.3 KB | 15961 |
ESP8266 Pin List 05.11.2014.XLSX | 66.1 KB | 5081 |
esp8266 Прошивки | ||
ESP8266 Прошивка v0.9.2 | 231.5 KB | 7057 |
ESP8266 electrodragon v0.9.2.5 (изменяется baudrate, установка IP адреса) | 133.7 KB | 8146 |
ESP8266 Прошивка v0.9.2.2 | 135.3 KB | 10391 |
ESP8266 Cloud Update With XRST XIPR NetIO | 138.7 KB | 2574 |
NodeMcu latest. A lua based firmware for wifi-soc esp8266 | 242.5 KB | 11506 |
Frankenstein ESP8266 Firmware Powered by Antares | 341.3 KB | 4171 |
AT 9.2 Cloud UPGRADE | 269.0 KB | 1899 |
ESP8266 Прошивка AT v0.20 SDK v0.9.3 02.12.2014 | 520.2 KB | 4796 |
ESP8266 Прошивка AT v0.20 SDK v0.9.3 28.11.2014 | 520.2 KB | 3749 |
AT v0.20 SDK 0.9.4 26.12.2014 | 520.2 KB | 3381 |
AT v0.21 SDK 0.9.5 24.01.2015 | 520.2 KB | 22750 |
AT v0.22 SDK 0.9.6b1 15.02.2015 | 520.2 KB | 2719 |
AT v0.22 SDK 1.0.0 20.03.2015 загрузчик v1.2 | 520.2 KB | 16343 |
AT v0.22 SDK 1.0.0 20.03.2015 загрузчик v1.3b | 520.2 KB | 6017 |
AT v0.23 SDK 1.0.1 No Cloud Update 512k | 520.2 KB | 2957 |
AT v0.23 SDK 1.0.1 flash 512k | 524.3 KB | 7349 |
ESP IoT SDK V1.1.2 AT v0.25 12.06.2015 | 11.7 MB | 6155 |
esp8266 Разное | ||
Библиотека Eagle Cad ESP8266 ESP-03 | 8.5 KB | 2355 |
Fritzing ESP8266 WiFi Module | 16.1 KB | 3482 |
esp8266 Утилиты | ||
ESP8266 Flasher | 8.8 MB | 16610 |
XTCOM UTIL | 42.5 KB | 36586 |
ESP8266 Config utility | 187.9 KB | 21699 |
esptool — платформонезависимый open-source загрузчик на Python | 13.6 KB | 6511 |
ESP Flash Download Tools v0.8 | 7.5 MB | 7692 |
FLASH DOWNLOAD TOOLS V0.9.3.1 18.11.2014 | 6.4 MB | 14731 |
luatool latest | 6.1 KB | 3148 |
Flash Download Tool python2.6 Wxpython2.8 Release V0.9.3.1 18.11.2014 | 509.6 KB | 2258 |
IDA Plugin Xtensa v0.2 | 5.0 KB | 1814 |
FLASH DOWNLOAD TOOLS V0.9.6 19.04.2015 | 7.5 MB | 8938 |
Данный модули разработаны китайской компанией Espressif System
Заказывал я модули в январе.
Цена ESP-07 — $3.78, ESP-12 — $4.24. Покупал на премию за обзор статьи. Приехали за 31 день в запаянных пакетиках
Оживление модуля заняло довольно много времени
Для этого нужно подать на него 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)
Модернизировать свою домашнюю метеостанцию с ходу не получилось.
Дальнейший мой путь был, собирать свою прошивку на фирменном SDK, как написано в этой статье . Но это уже другая история. Скажу только, что прошивки собираются без проблем, а вот запустить злополучный BMP180 так и не удалось.
Кот попался, пока возился с макрофотографиями
Оказался довольно пыльным )))
Эта плата имеет имя собственное: Witty. Да уж, остроумия создателям, китайской компании Gizwits, точно не занимать.
Вообще, Gizwits позиционирует себя как провайдер решений для умного дома, что бы это не означало.
Кроме всего прочего, у этой компании есть свое облако для интернета вещей, которое предполагает в том числе и удаленное управление. Соответственно, есть и поддержка некоторого количества беспроводных устройств. В том числе и ESP 8266 в таком нестандартном исполнении.
Для тех, кому лень читать, видеоверсия этого материала:
Самое интересное в конструкции этого модуля то, что он состоит из двух отдельных плат: собственно самой платы-контроллера и вспомогательной, служащей для прошивки и общения с компьютером.
Рассмотрим их отдельно.
Сразу видно, что собран модуль на основе ESP-12. В описании указано, что используется последняя на момент выхода этого материала модель ESP-12F. Так ли это, я сказать не могу, так как визуально различить ESP-12E и ESP-12F затруднительно.
Разведены все выводы у ESP-12, причем разведены c шагом в одну десятую дюйма, что позволит без проблем монтировать его на распространённые макетки. Также на модуле установлены:
— датчик освещенности. Простой фоторезистор, подключенный к аналоговому входу через делитель;
— RGB светодиод формата SMD5050;
— кнопка, судя по всему подключенная к GPIO4.
Неочевидный момент
На ноге Vcc нашего модуля находится не 3.3В, как можно было бы предположить, а 5В. Причем идут они непосредственно от LM1117, что позволяет питать от ноги Vcc существенные нагрузки. Если же нужен 3.3В, взять их можно с ноги CH_PD.
На Нижней стороне платы мы видим:
— microUSB-разъем, использующийся для питания;
— преобразователь 1117, понижающий приходящие с microUSB 5В до рабочих 3.3В;
— обвеску для светодиодов, и датчик освещенности.
Вторая плата
Похоже, она планировалась как Shield для прошивки. На ней виден еще один microUSB-разъем, микросхема ch440 — конвертер USB-UART и кнопки, подписанные как RESET и FLASH.
Таким образом, можно предположить, что по задумке производителя вся проводная коммуникация с этим модулем должна проходить через этот Shield. Странно тогда, почему этот Shield сделан не сквозным, чтобы дать возможность посадить его непосредственно на макетку. Получается, для каждого обновления прошивки модуль придется вынимать со схемы, что не особо удобно.
Еще один сюрприз ждет нас при попытке установить данный модуль в макетку.
Модуль занимает всю ширину бредборда. Соответственно, коммутировать что-то проводами с dupont-разъемами становится затруднительно. А точнее, и вовсе невозможно. Единственное решение, которое приходит мне в голову, это соединить несколько макеток параллельно и подключать модуль сразу к обоим.
Загорелся светодиод — значит, модуль работает. Удобно, не нужны никакие дополнительные блоки питания, ведь 500 миллиампер, которые выдает usb-порт, модулю должно хватить.
После запуска модуля я рассчитывал увидеть новую сеть, которую по умолчанию создают все 8266 на стандартной прошивке, но этого не произошло, новых сетей в радиусе видимости не обнаружено. Странно…
Подключившись к модулю по проводу с помощью утилиты ESPlorer (я по привычке использую его для общения с платой), получил в консоль что-то невразумительное.
Похоже — прошивка нестандартная.
Ну что ж, подключаться к китайскому облаку я не собираюсь, поэтому прошью модуль чем-то более подходящим. Например, NodeMCU.
Для этого снова собираем бутерброд из двух плат и подключаем его уже через microUSB-порт нижнего модуля.
Порадовало, что прошивка прошла успешно, без каких-либо проблем. Главное — вовремя нажать кнопку FLASH.
Помогите объяснить
Во время первых запусков(примерно 2-3 часа экспериментов) модуль существенно грелся. Экран чипа через минуту после старта был по ощущениям примерно 39-40 градусов и температура продолжала расти(через 20 мнут непрерывной работы дохолида до уровня «едва могу прикоснуться»). Стало интеесно, что будет, поэтому я оставил модуль поджариваться и занялся другими делами. Через некоторое время я потрогал модуль — он был комнатной температуры(что типично доя ESP-12) и с тех пор не греется.
У кого есть идеи, с чем это может быть связано — напишите, пожалуйста в комментариях.
Теперь черед датчика освещенности.
Как и следовало ожидать, этот датчик подключен к единственному аналоговому входу ESP-8266 — adc pin. Показания меняются в соответствии с изменениями освещенности. Вот только светочувствительный резистор, который используется в этом модуле, меняет свои параметры в весьма широком диапазоне. Поэтому при подключении его к ESP-8266 через простейший делитель, как сделано в этом модуле, датчик будет показывать освещенность лишь в узком диапазоне. Чуть темнее — 0, чуть ярче — максимум.
Недостатки:
1. Размер. Все-таки, хотелось бы иметь хоть один ряд отверстий в breadboard свободным.
2. Требуется демонтаж с макетки для каждой прошивки(или подключение по Tx, Rx, что убивает идею удобного подключения)
3. Светодиод запараллелен с тремя GPIO Выходами. Либо не использовать их, либо светомузыка.
Для кого она:
Я бы рекомендовал эту плату тем, кто только планирует знакомство с ESP-8266, хочет вообще понять, нужен ли ему этот контроллер. Таким образом, порог вхождения становится минимальным. Никаких шаманств с подключением, питанием и прочими капризами ESP-8266, которые у многих отбивают охоту продолжать знакомство с контроллером.
Также она будет полезна как часть набора для быстрого прототипирования(зачем, собственно, брал её я) или для устройств разового применения(сделал-поработал-разобрал)
Ссылка на магазин, где я его брал (не реклама):
ru.aliexpress.com/item/Free-Shipping-SMD-Resistor-0805-51R-5-resistor-smd-resistor-51R-5000pcs-reel-in-stock-if/1882818309.html
Еэспэшники — вливайтесь в ряды блинкеров!
Сегодня мы за 5 минут настроим управление ESP8266 с вашего смартфона (iOS или Android) с помощью нового облачного сервиса Blink. Видео и подробности под катом.
Установите приложение Blynk на смартфон
Зарегистрируйтесь в приложении и создайте новый проект.
Создание нового проекта в Blynk
Введите название проекта, например ESP8266. В поле Hardware Model выберите ESP8266. (надеюсь, что вы заметите впечатляющий список поддерживаемого оборудования) Автоматически сгенерированный Auth Token отправьте на свой почтовый ящик.
Проект Blynk
После нажатия на кнопку Create вам станет доступно пустое поле для проектирования UI вашей панели управления ESP8266.
Пустой проект Blynk
Жмете на плюсик вверху справа — появится панель инструментов Widget Box для добавления виджетов на вашу панель управления. Стоит заметить, что список виджетов еще будет пополняться.
Виджеты Blynk
Для пробы выберем тип виджета Button — этот виджет сразу добавится на вашу панель. Отредактируйте его одним прикосновением. Название можно не заполнять, чуть правее можно выбрать цвет индикатора, в поле OUTPUT PIN выберите справа Digital, а слева любой свободный пин GPIO. Ниже переключите тип кнопки на Switch.
Blynk button
На моей отладочной плате к светодиодам разведено 10 GPIO — я все их подключу к панели Blynk.
Blynk
Все, интерфейс готов, пока отложите смартфон в сторонку.
Если вы еще не знакомы с Arduino IDE для ESP8266 — почитайте здесь и здесь. Установите Arduino IDE, как описано здесь.
Далее установите библиотеку Blynk в Arduino IDE. В этом вам поможет официальная инструкция. Также можете взять библиотеку самую последнюю версию прямо из репозитария и установить вручную. Далее выбираем пример ESP8266_Standalone и прописываем в нем Auth Token, который мы получили по почте, SSID и пароль вашей WiFi сети. Компилируем и заливаем скетч в ESP8266.
ESP8266 Blynk
Вот, собственно, и все.
Возвращаемся к нашему приложению на смартфоне, жмем маленький треугольничек, похожий на кнопку Play, в верхнем правом углу и переходим из режима редактирования проекта в режим управления ESP8266 и жмем созданные нами кнопочки и мигаем светодиодами, как на видео в начале статьи.
Замечания
1. Стоит отметить, что еще есть возможность использовать ESP8266 в качестве WiFi шилда для ардуино.
2. Облачный сервер Blynk — open source и может быть развернут в вашей локальной сети
P.S. Blynk на Kickstarter неплохо отработал — собрал почти 50k
Команда Blynk:
Не могу не сообщить, что создал этот суперклассный дизайн интерфейса Vitalii Kramar
Большое еспэшное СПАСИБО вам!
Обсуждение Blynk на нашем форуме
Обсуждение Arduino IDE для ESP8266 на нашем форуме
//////////////////////////////////////////////
// RemoteXY include library //
// use library version 2.2.2 or up //
// use ANDROID app version 3.4.1 or up //
//////////////////////////////////////////////
/* определение режима соединения и подключение библиотеки RemoteXY */
#define REMOTEXY_MODE__ESP8266POINT_HARDSERIAL
#include «RemoteXY.h»;
/* настройки соединения */
#define REMOTEXY_SERIAL Serial
#define REMOTEXY_SERIAL_SPEED 115200
#define REMOTEXY_WIFI_SSID «RemoteXY»
#define REMOTEXY_WIFI_PASSWORD «12345678»
#define REMOTEXY_SERVER_PORT 6377
/* конфигурация интерфейса */
unsigned char RemoteXY_CONF[] =
{ 3,33,57,1,4,5,4,128,5,11
,57,7,2,2,0,68,11,28,8,2
,79,78,0,79,70,70,0,2,0,68
,29,28,8,2,79,78,0,79,70,70
,0,67,4,22,20,20,6,4,11,67
,4,22,38,20,6,4,11,67,4,22
,52,20,6,4,11,130,1,3,3,61
,26,5,129,0,5,5,57,5,0,208
,151,208,176,208,180,208,176,208,189,208
,189,208,176,209,143,32,209,130,208,181
,208,188,208,191,208,181,209,128,208,176
,209,130,209,131,209,128,208,176,0,129
,0,43,20,7,6,0,194,176,67,0
,129,0,5,31,55,5,0,208,162,208
,181,208,186,209,131,209,137,209,143,209
,143,32,209,130,208,181,208,188,208,191
,208,181,209,128,208,176,209,130,209,131
,209,128,208,176,0,130,1,3,30,61
,30,5,129,0,44,38,7,6,0,194
,176,67,0,129,0,5,46,50,5,0
,208,162,208,181,208,186,209,131,209,137
,209,143,209,143,32,208,178,208,187,208
,176,208,182,208,189,208,190,209,129,209
,130,209,140,0,129,0,44,52,5,6
,0,37,0,129,0,68,4,26,6,0
,208,160,208,181,208,187,208,181,32,226
,132,150,51,0,129,0,68,23,26,6
,0,208,160,208,181,208,187,208,181,32
,226,132,150,52,0,130,1,66,3,32
,36,5,129,0,68,47,29,5,12,208
,163,208,188,208,189,209,139,208,185,32
,208,180,208,190,208,188,0 };
/* структура определяет все переменные вашего интерфейса управления */
struct {
/* input variable */
signed char slider_setTemp; /* =0..100 положение слайдера */
unsigned char switch_relay3; /* =1 если переключатель включен и =0 если отключен */
unsigned char switch_relay4; /* =1 если переключатель включен и =0 если отключен */
/* output variable */
char text_setTemp[11]; /* =строка оканчивающаяся нулем UNICODE */
char text_valTemp[11]; /* =строка оканчивающаяся нулем UNICODE */
char text_valHum[11]; /* =строка оканчивающаяся нулем UNICODE */
/* other variable */
unsigned char connect_flag; /* =1 if wire connected, else =0 */
} RemoteXY;
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
#include «DHT.h»
#define PIN_RELAY_COLD 7
#define PIN_RELAY_HOT 6
#define PIN_RELAY_3 5
#define PIN_RELAY_4 4
#define PIN_DHT 8
DHT dht(PIN_DHT, DHT11);
void setup()
{
RemoteXY_Init ();
// TODO you setup code
pinMode (PIN_RELAY_COLD, OUTPUT);
pinMode (PIN_RELAY_HOT, OUTPUT);
pinMode (PIN_RELAY_3, OUTPUT);
pinMode (PIN_RELAY_4, OUTPUT);
}
void loop()
{
RemoteXY_Handler ();
// TODO you loop code
// используйте структуру RemoteXY для передачи данных
///////////////////////////////
// Логика задачи умный дом //
///////////////////////////////
// получаем значение установленной температуры от 10 до 40 град.ц.
int setTemp = RemoteXY.slider_setTemp/100.0*30.0+10.0;
// передаем установленную температуру обратно на смартфон
itoa (setTemp, RemoteXY.text_setTemp, 10);
// опрашиваем датчик DHT11
int valTemp = dht.readTemperature();
int valHum = dht.readHumidity();
// отправляем значения температуры и влажности в интерфейс
itoa (valTemp, RemoteXY.text_valTemp, 10);
itoa (valHum, RemoteXY.text_valHum, 10);
// логика управления по заданной температуре
digitalWrite(PIN_RELAY_COLD, (valTemp>setTemp)?HIGH:LOW);
digitalWrite(PIN_RELAY_HOT, (valTemp<settemp )?HIGH:LOW);
// устанавливаем реле 3 и 4 в соответствии с выключателями интерфейса
digitalWrite(PIN_RELAY_3, (RemoteXY.switch_relay3==0)?LOW:HIGH);
digitalWrite(PIN_RELAY_4, (RemoteXY.switch_relay4==0)?LOW:HIGH);
}
Будучи поклонником системы управления «умным домом» Home Assistant я недавно открыл для себя интересный инструмент, тесно с HA интегрированный и ранее на Хабре не освещенный — ESP Home (ранее ESPhomeYAML).
ESP Home представляет собой набор библиотек и инструментов, генерирующих прошивку для микроконтроллеров ESP8266 и ESP32 из созданного пользователем конфиг файла в формате YAML. Это значительно упрощает написание прошивок малого и среднего уровня сложности в особенности для тех, кто не силен в программировании под Arduino и сильно сокращает количество строк кода/конфигурации для тех, кто силен.
Для удобства настройки поддерживается обновление прошивки по воздуху.
ESP Home поддерживает устройства на базе ESP8266 и ESP32, очень популярных среди любителей домашней автоматизации и прочих самоделкиных, а также несколько десятков сенсоров и различную периферию — дисплеи, сетевые карты и т.д. Для обмена данными с запрограммированным устройством поддерживаются MQTT, UART, I2C, SPI и API, интегрированное с Home Assistant.
Ниже короткий пример установки ESP Home и простой настройки устройства на примере выключателя Sonoff T1, который представляет из себя ESP8266 с одним реле, одной кнопкой и одним управляемым светодиодом. В примере будут шаги установки одновременно для чистого Python и Docker.
Python 2.7 (из-за зависимостей Platformio)
pip2 install esphome
Docker из готового образа
docker pull esphome/esphome
ESP Home включает в себя визард, который помогает создать начальный конфигурационный файл.
Эти же шаги можно проделать в WEB интерфейсе ESP Home, про который написано в конце статьи.
Для начала нужно указать:
Результатом работы визарда будет файл switch.yaml в текущей папке примерно такого вида:
esphome:
name: switch
platform: ESP8266
board: esp01_1m
wifi:
ssid: 'wifi_ap'
password: 'wifi_password'
# Enable logging
logger:
# Enable Home Assistant API
api:
password: 'api_password'
ota:
password: 'api_password'
Этого достаточно, чтобы скомпилировать прошивку и дальнейшие изменения производить по воздуху.
Теперь, если подключить контроллер к компьютеру по USB (NodeMCU) или через программатор можно заливать прошивку.
Python:
esphome switch.yaml run
ESP Home проверит, что в файле конфигурации нет ошибок, скомпилирует и загрузит прошивку. Кроме того в текущей папке появится новая папка с именем вашего устройства и проектом platformio внутри.
Если программатор/устройство не подключены к компьютеру можно выполнить команду:
esphome switch.yaml compile
и скомпилированный файл прошивки появится в папке switch/.pioenvs/switch/firmware.bin
Docker
На Linux или MacOS можно добавить в —device=/dev/ttyUSB0 Docker-команду — адрес устройства программатора или серийного порта.
docker run --rm -v "${PWD}":/config --device=/dev/ttyUSB0 -it esphome/esphome switch.yaml compile
Аналогично команде esphome в результате запуска контейнера появится папка switch/.pioenvs/switch/firmware.bin
Бинарный файл прошивки можно загрузить на контроллер через Arduino IDE.
После этого устройство можно отключить от USB и дальнейшие обновления прошивки будут проходить автоматически по воздуху.
Дальше можно добавлять необходимые компоненты:
# Настройка сенсоров
binary_sensor:
# Считывание нажатий кнопки
- platform: gpio
pin:
number: GPIO0
mode: INPUT_PULLUP
inverted: True
name: "Switch button"
# Автоматизация, для управления реле по нажатию кнопки
on_press:
- switch.toggle: relay_1
# Сенсор, отчитывающийся о статусе утройства
- platform: status
name: "Switch Status"
switch:
# Управление реле
- platform: gpio
name: "Switch Relay 1"
pin: GPIO12
id: relay_1
output:
# Регистрация синего светодиода, как диммируемого выхода
- platform: esp8266_pwm
id: blue_led
pin: GPIO13
inverted: True
light:
# Превращаем выход в "лампочку", которой можно управлять
- platform: monochromatic
name: "Switch Blue LED"
output: blue_led
id: blue_led_light # ID для того, чтобы обращаться к диоду в командах автоматизации
Чтобы в итоге получить:
esphome:
name: switch
platform: ESP8266
board: esp01_1m
# Павило автоматизации, влючающее синий светодиод после запуска устройства.
on_boot:
# Минимальный приоритет
priority: -10
then:
- light.turn_on: blue_led_light
wifi:
ssid: 'wifi_ap'
password: 'wifi_password'
# Модуль логирования
logger:
# Активация Home Assistant API
api:
password: 'api_password'
# Активация прошивки по воздуху
ota:
password: 'api_password'
# Активация web сервера
# Ест довольно много ресурсов и лучше отключать его после финальной настройки
web_server:
port: 80
# Активация MQTT
mqtt:
broker: 10.0.0.2
username: mqt_user
password: mqtt_password
# Настройка сенсоров
binary_sensor:
# Считывание нажатий кнопки
- platform: gpio
pin:
number: GPIO0
mode: INPUT_PULLUP
inverted: True
name: "Switch button"
# Автоматизация, для управления реле по нажатию кнопки
on_press:
- switch.toggle: relay_1
# Сенсор, отчитывающийся о статусе утройства
- platform: status
name: "Switch Status"
switch:
# Управление реле
- platform: gpio
name: "Switch Relay 1"
pin: GPIO12
id: relay_1
output:
# Регистрация синего светодиода, как диммируемого выхода
- platform: esp8266_pwm
id: blue_led
pin: GPIO13
inverted: True
light:
# Превращаем выход в "лампочку", которой можно управлять
- platform: monochromatic
name: "Switch Blue LED"
output: blue_led
id: blue_led_light # ID для того, чтобы обращаться к диоду в командах автоматизации
Те же действия можно проделать через WEB интерфейс, который работает на Linux и MacOS.
Python
Нужно установить дополнительные зависимости:
pip2 install tornado esptool
и запустить ESP Home такой командой:
esphome config/ dashboard
Docker
В документации написано, что для работы индикаторов статуса нужно подключить контейнер к сети host такой командой:
docker run --rm --net=host -v "${PWD}":/config -it esphome/esphome
У меня она не заработала и я использовал:
docker run --rm --net=bridge -p 6052:6052 -v "${PWD}":/config -it esphome/esphome
После этого можно зайти на 127.0.0.1:6052 и работать в удобном интерфейсе:
Приятной работы.
Всем привет!
Хочу рассказать о библиотеке MicroPyServer написанной на Python, которая позволяет взаимодействовать с устройствами ESP8266 и ESP32 посредством простого HTTP сервера.
MicroPyServer это простой HTTP сервер предназначенный для проектов написанных на Micropython.
Основная концепция работы с библиотекой — это перехватывание запросов к устройству при помощи создания роутов (route) и функций обработчиков (handler).
Основные действия с библиотекой:
Создание сервера
srv = MicroPyServer()
По умолчанию сервер работает на 80-ом порту.
Добавление роута, который будет обрабатывать запросы по заданному урлу
def do_something(request):
pass()
srv.add_route("/url_path", do_something)
По умолчанию обрабатываются GET запросы.
Отправка данных клиенту
def do_something(request):
srv.send("OK")
По умолчанию отправляется код ответа 200 и Content-Type: text/plain.
Запуск сервера
srv.start()
Исходники MicroPyServer можно скачать тут https://github.com/troublegum/micropyserver
Конструктор — srv = MicroPyServer(host=»0.0.0.0″, port=80)
Запустить сервер — srv.start()
Добавление роута — srv.add_route(path, handler, method=»GET»)
Отправить ответ — srv.send(response, status=200, content_type=»Content-Type: text/plain», extra_headers=[])
Отправить 404-ю ошибку — srv.not_found()
Отправить 500-ю ошибку — srv.internal_error(error)
Рассмотрим несколько небольших примеров работы с библиотекой MicroPyServer.
Классический пример hello world.
from micropyserver import MicroPyServer
import esp
import network
''' Код подключения к WiFi '''
wlan_id = "Your WiFi"
wlan_pass = "Your WiFi password"
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if wlan.isconnected() == False:
wlan.connect(wlan_id, wlan_pass)
while wlan.isconnected() == False:
time.sleep(1)
print('Device IP:', wlan.ifconfig()[0])
def show_message(request):
''' request handler '''
server.send("HELLO WORLD!")
server = MicroPyServer()
''' add request handler '''
server.add_route("/", show_message)
''' start server '''
server.start()
Набрав у браузере адрес http://IP_вашего_устройства/ вы получите сообщение «HELLO WORLD!»
В данном примере настроим обработку двух урлов которые будут делать: «включение» (/on) и «выключение» (/off) светодиода подключенного к выходу D7 ESP8266.
from machine import Pin
from micropyserver import MicroPyServer
''' Тут должен быть код подключения к WiFi '''
def do_on(request):
''' on request handler '''
pin.value(1)
server.send("ON")
def do_off(request):
''' off request handler '''
pin.value(0)
server.send("OFF")
pin = machine.Pin(13, machine.Pin.OUT)
server = MicroPyServer()
''' add request handlers '''
server.add_route("/on", do_on)
server.add_route("/off", do_off)
''' start server '''
server.start()
В итоге набрав у браузере адрес http://IP_вашего_устройства/on вы включите подключенный к выходу D7 светодиод и в браузере выведется сообщение «ON». Соответственно набрав у браузере адрес http://IP_вашего_устройства/off вы выключите светодиод.
В данном примере показано как получить данные с датчика влажности и температуры DHT22 в виде JSON.
import json
import dht
from machine import Pin
from micropyserver import MicroPyServer
''' Тут должен быть код подключения к WiFi '''
def show_data(request):
''' request handler '''
d = dht.DHT22(machine.Pin(4))
d.measure()
data = {"temperature": d.temperature(), "humidity": d.humidity()}
json_str = json.dumps(data)
server.send(json_str, content_type="Content-Type: application/json")
server = MicroPyServer()
''' add request handler '''
server.add_route("/data", show_data)
''' start server '''
server.start()
Набрав у браузере адрес http://IP_вашего_устройства/data получим JSON строку с данными
Данная библиотека используется в нескольких моих устройствах, которые работают в режиме 24/7 уже более полугода. На данный момент никаких проблем с сервером я не обнаружил и надеюсь, что в будущем код сервера будет работать также без проблем как и сейчас.
Основные многоплатформенные инструменты для любого разработчика ESP8266 от автора luatool, включая LUA для NodeMCU и MicroPython. Также поддерживаются AT-команды.
Требуется установленная JAVA (SE версии 7 и выше).
Windows (x86, x86-64)
Linux (x86, x86-64, ARM soft и hard float)
Solaris (x86, x86-64)
Mac OS X (x86, x86-64, PPC, PPC64)
Для пожертвований с помощью кредитной / дебетовой карты, электронного кошелька или интернет-банкинга (в некоторых странах) нажмите кнопку PayPal для пожертвований.
В настоящее время в процессе — поддержка MicroPython.