Решил в качестве подарка для мамы сделать подсветку на кухню. Она, как и я, обладатель яблочной продукции, поэтому решил сразу закинуть ленту в Homekit.
Список покупок:
- LED Лента,в моем случае 1 метр (120 светодиодов).
- Металлический профиль для LED ленты.
- Транзистор (У меня IRF520 на плате) AliExpress
- Преобразователь с 12v на 5v. AliExpress
- Контроллер на базе ESP 8266 (ESP-01, Wemos D1 mini, nodeMCU и т.д.)
- Источник питания на 12v (Мощность считайте исходя из длинны вашей ленты и кол-ва светодиодов на ней, у меня был на 3А)
- Коннекторы, проводки мама-мама, припой, термоусадку, успокоительное не учитываю.
Если вы схему подключили к сети, и до сих пор живы, то мы заканчиваем с аппаратной частью и переходим к программной.
MQTT Сервер.
Для начала нам необходим MQTT сервер. Так как у меня есть RaspberryPi,я поднял MQTT сервер на ней. Если у вас нету такой возможности, то на просторах интернета сможете найти бесплатные MQTT брокеры.
Для счастливых обладателей RaspberryPi оставлю ссылку на статью как установить MQTT сервер.
Если все прошло успешно, на вашей малине будет поднят MQTT сервер.
Прошивка для ESP8266 (ArduinoIDE)
Устройств на базе ESP8266 очень много, перечислять не буду. После того, как вы выбрали микроконтроллер, вам необходимо его прошить. Если ваша плата имеет microUSB разъём, то вы спокойно подключаете ее к компьютеру и переходите к следующему шагу.
Если у вас ESP-01, то вам будет необходимо купить USB-TTL конвертер (Удобный девайс для перепрошивки).
Скачиваем Arduino IDE с официального сайта, и устанавливаем его. После установки открываем.
Вверху нажимаем "Файл" ==> "Настройки"
В Графе "Дополнительные ссылки для менеджера плат" вставляем данную ссылку:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Нажимаем "ОК". Далее вверху нажимаем "Скетч" ==> "Подключить библиотеку" ==> "Управлять библиотеками".
У вас откроется Менеджер библиотек. Нам необходимо установить две библиотеки.
- esp8266 by esp8266 community.
- PubSubClient.
После установки библиотек, можете закрыть Менеджер библиотек.
Скетч для микроконтроллера
У меня в качестве микроконтроллера выступает Wemos D1 mini.
Необходимо определиться с управляющим выходом.
Заходим в гугл и набираем: " <Название вашего микроконтроллера> PWM "
На Wemos D1 mini. PWM поддерживают:
TX / RX / D1 / D2 / D3 / D4 / D5 / D6 / D7.
Я выбрал D6. Просто потому, что могу.
После того, как мы выбрали выход, переходим к скетчу.
Копируем и вставляем код в ArduinoIDE. Ссылка на код
Заходим в "Инструменты ==> "Плата" (Выбираем ВАШУ плату), Далее выбираем COM порт.
Узнать, к какому COM порту подключен ваш микроконтроллер, можно в диспетчере устройств.
Нажимаем на иконку "Мой компьютер" правой кнопкой мыши и нажимаем "свойства".Слева в столбце нажимаем "Диспетчер устройств" и находим USB-Serial CH340 (COM *** )
Теперь в данной прошивке нам нужно изменить следующие строки:
const char *ssid = "Название WIFI";
const char *password = "Пароль WIFI";
const char *mqtt_server = "192.168.**.***"; IP вашей RaspberryPi или MQTT брокера.
Вверху нажимаем "Загрузка". Ожидаем компиляции скетча и его загрузки в плату.
Отлично, теперь у нас есть MQTT сервер и микроконтроллер, подключенный к нему. Осталось все подключить в HomeKit.
Добавляем ленту в HomeKit через Homebridge.
Если у вас не установлен HomeBridge, эта статья для вас или уже можете скачать готовые образы от наших авторов.
Если у вас установлен Homebridge, подключаемся по SSH к raspberry, а если у Вас нет доступа по SSH, то можете ознакомиться с инструкцией.
Устанавливаем плагин для Homebridge.
sudo npm install -g homebridge-mqtt-dimmer
После установки плагина, заходим в конфигурационный файл homebridge.
sudo nano ~/.homebridge/config.json
Копируем и вставляем в "аксессуары".
{ "accessory": "mqtt-dimmer", "name": "Led Strip", "url": "mqtt://IP_adress_MQTT:1883", "username": "admin", "password": "admin", "caption": "Sprut", "onValue": "100", "offValue": "0", "topics": { "statusGet": "ESP03/led", "statusSet": "ESP03/led" } }
Сохраняем и выходим. Далее можете перезагрузить Homebridge, и у вас должно появиться новое устройство "LED Strip"
Демонстрация работы.
Надеюсь для кого-то данная статья оказалась полезной, и помогла в реализации чего-либо.
Прошивка для ESP будет дорабатываться (Поддержка AM2320 и датчика движения).
Жду ваших предложений и адекватную критику.
Отличная статья, спасибо за проделанную работу)
А где н-мост?
Я думал свои прошивки уже никто и не пишет, автор явно не ищет легких путей 😃Интересный, развивающий проект 👍
За неимением альтернатив, приходится...
В прошивке https://github.com/arendst/Sonoff-Tasmota">Sonoff-Tasmota кстати все уже давно реализовано (ну это так, для информации), туда же можно добавить и датчики движения и управление светодиодными лентами и много чего еще.. Если повесить мосфеты на каждый из каналов RGB светодиодной ленты, то с помощью ШИМ можно управлять оттенками и яркостью ленты. Но твой "олдскульный" вариант мне даже немного импонирует, не стандартный подход. 👍
Я с Tasmota на "вы". Сейчас ради интереса накатил последнюю версию к себе на ненужную ESP, впечатления прямо скажем не очень, может я что-то не так делаю, но логика работы мне не понятна от слова совсем... Буду рад если на форуме появится статья про эту прошивку.
Автор, большое спасибо за статью!
Большая просьба, внесите корректировку в код, чтобы все работало. А так не компилируется.
А у вас лента на 100% яркости димируется?? Просто ШИМ ESP8266 3.3в, а IRF520 для полного открытия надо 5в и выходит что лента не может светится на 100% или я что то путаю.
Вопрос интересный, к сожалению дома мультиметра не имею,да и лабораторного блока питания нету.
Обязательно проверю скоро. Но,даже если и так,яркости ей не занимать,комнату 3 на 3 освещяет как нефиг.
спаибо за схематику. никак н едоходили руки, но не проще ли накатить прошивку от MaxiKulkin? даже моста не надо будет, вообще.
А можешь ее скинуть? Гляну, установлю
https://sprut.ai/client/article/207">https://sprut.ai/client/articl... статья. examples/led Вам туда )))
У самого подошло время для такого же проекта. Сорри что направил не в том направлении. Репозитарий тот же, а нужная прошивка компилируется из каталога examples\sonoff_basic_pwm
после чего коннектимся к сетке sonoff_dimmer_xxx и там соединяемся со своей сетью. далее добавляем аксессуар, но пароль не как обычно а 190-11-978
сигнал берем с GPIO 13
удачи!
ЗЫ Кстати если мощность 5А мало - можно заменить транзистор на более мощный, например 530
ЗЫЫ еще можно прикрутить сенсорную кнопку. на GPIO 14 + земля - внешняя кнопка.
не компилируется
Автор, большое спасибо за статью!
Большая просьба, внесите корректировку в код, чтобы все работало. А так не компилируется.
Есть ли такой или похожий проект для Home Assistant?