Обзор возможностей BLE модуля JDY-10 на базе TLSR8266 с прошивкой поддерживающий mesh сети.
Дома есть несколько источников декоративного освещения из светодиодных гирлянд хочется включать их по расписанию или событиям таким как на пример закат солнца.
Возможно конечно на ум придет фраза “вот так, с помощью нехитрых приспособлений буханку хлеба можно превратить в троллейбус… Но зачем?”. На самом деле проект просто just a fun
После изучения темы, из методов решения задачи появились следующие:
ZigBee
Нет возможности управлять устройством напрямую, для работы устройства необходим координатор что усложняет отладку, скорее всего придется прошивать контролер нетривиальным способом.
WiFi
Самое распространенное решение в этом сегменте ESP8266. Контролер даже не требует никаких доработок можно взять любое из готовых решений к примеру ESPHome. Но увы WiFi это не про работу от батареек.
BLE
Существует множество различных контроллеров, дорогих и дешевых, уже готовых к работе и не совсем. Простая и доступная отладка с любого устройства имеющего bluetooth и консоль. Есть возможность использовать батарейки как источник питания.
В итоге выбор пал на BLE контролер TLSR8266 а конкретнее на версию JDY-10. Его можно приобрести по цене 2-3$ вместе с доставкой и уже относительно готовой к эксплуатации прошивкой. Прошивка из коробки умеет подавать ток на 4 вывода, а так же поддерживает 5 управляющих кнопок, то есть 4 для управления каждым выводом и пятая с функцией включить/выключить всё. Есть 3 режима работы, стандартный описанный выше, режим управления RGB светодиодами и режим Low Energy когда контролер постоянно находится в спячке и передает в сеть только команды нажатия кнопок. Размер платы 18.7mm на 13mm.
И так начнем, для первичной настройки нам понадобиться подключить контролер к компьютеру так как AT команды он воспринимает только через выводы RX-TX, для этого можно использовать либо UART адаптер, либо Arduino. Для выполнения AT команд к контроллеру не должно быть активных bluetooth соединений, иначе он преходить в режим прозрачной передачи и команды не выполнятся.
По неизвестной причине при скорости обмена выше 19200 контролер выдает мусор.
Установить изменить скорость общения контролера с внешним миром можно командой:
AT+BAUD3
После её выполнения и перезагрузки всё нормализуется.
Важный аспект, что для работы в MESH сети у всех устройств должно быть одинаковые имена и идентификатор сети, а для работы с конкретным устройством используется short address. Задаем настройки исходя из данного принципа:
AT+NETIDC0C1C2C3C4C5
- Имя сети 123456789ABC
AT+NAMEStar Light
- Имя устройства Star Light
AT+MADDR01
- Короткий адрес устройства 01
На этом настройка завершена, переходим установке контролера в источник освещения, им является обыкновенная китайская светодиодная гирлянда.
Бывают культурные варианты с платой, бывают просто с припаянными проводами и резистором прямо к выключателю, но в любом случае кроме корпуса и контактов элементов питания нам ничего не пригодится.
Припаиваем питание через резистор, чтобы не спалить контролер. Плюс светодиодов подключаем к пину E5, к B0 подключим кнопку. В итоге получим следующую картину:
И в собранном виде
Как же теперь управлять данным девайсом? Весьма просто, подключиться к контролеру через bluetooth любым терминалом, передать следующую управляющую последовательность в HEX формате:
FB-01-E7-F1-01
И сказать ёлочка гори, ну или можно не говорить...
Давайте разберем, что это значит
FB
- Говорит о том, что это команда для управления
01
- Короткий адрес нашего светильника
E7
- Команда управления GPIO
F1
- Номер вывода
01
- Включить, в случае выключения будет 00
Всё вполне понятно, кроме как скоре всего короткого адреса, в чем собственно его суть. Напомню, что как выше отмечал одна из особенностей конкретной реализации контролера это возможность работы в MESH сетях, то есть каждый пакет передаётся как широковещательный. В итоге если в нашей сети несколько устройств мы можем передать команда абсолютно на любое, а уже исходя из короткого адреса команда будет обработана конкретным девайсом. Так же предусмотрена возможность короткий адрес на FF в таком случае команду обработают все устройства находящиеся в сети. Таким способом мы получаем возможность управлять группами светильников. По этому же принципу обрабатывается нажатие кнопок, то есть кнопка нажатая на одном из светильников включает их все, данное поведение работает по умолчанию, в случае если необходима иная логика её можно настроить AT командами.
Конечно же управлять освещением через терминал как-то не юзерфредли, поэтому для этого разработал плагин под Home Assistant, получив тем самым работу по событиям и расписанию
Если решите повторить то плагин и документацию к контроллеру можете найти по ссылке https://github.com/svmironov/blemesh
Код строго не судите, это первое приложение написанное мной на Python.