Обзор возможностей 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.
Комментарии (9)
DSarovsky
05.05.2022 20:52+1Автор, может вы подскажете, а как под эти дешевые китайские модули на TLSR82XX программировать? На оф.сайте Telink есть страшный SDK, но завести хоть что-то решительно невозможно. А ведь судя по описанию, там плюшек немало, GPIO, таймеры, ШИМ, UART и прочее.
Kill_Voice Автор
06.05.2022 09:42Я долго пытался с этим разобраться, но увы тщетно, SDK реально очень мутный но к сожалению это всё, что есть, вероятно такая расплата за дешевизну. Вы правы, фактически это полноценный MCU причем для прошивки которого даже не нужен программатор, можно делать это через UART, а при наличии опции в прошивке и через OTA. Можете попробовать поштурмить тему и семплы тут https://esp8266.ru/forum/threads/ble-modul-jdy-10-na-chipe-tlsr8266.4654/post-80805. Кстати говоря на этом форуме выкладывали даже исходник прошивки датчика xiaomi clear glass который так же на контроллере TLSR8266.
PaulFirs
05.05.2022 21:29А что у нее с потреблением? Есть ощущение что esp подошла бы. Там тоже есть ble (если wi-fi не включать то все норм будет с потреблением).
Kill_Voice Автор
05.05.2022 21:38Не замерял, но вышло более чем я ожидал, потому как аккумуляторы сажаются в ноль примерно за 6-7 дней, в итоге по прошествию времени всё равно пришлось прикрутить внешнее питание. Возможно и подошла бы, но в esp всё же назначение ble скорее для "холодной" настройки устройства, нежели для постоянной работы, да и размеры платы больше
PaulFirs
06.05.2022 10:27Может не внимательно прочитал, но если у вас питание света от тех же батареек то понятно что кушать будет много.
А по поводу ble в esp тут уж как настроите такое и будет назначение.
Tutanhomon
05.05.2022 23:06+2А этот модуль точно как меш работает? Т.е. сигнал словил ближайший модуль, и если внутренний адрес в пакете не его - шлет дальше? Или просто бродкастом отправляете, а реагирует тот, с которым адрес совпал?
Kill_Voice Автор
06.05.2022 09:15Сложно сказать без сниффера как оно работает, но к примеру если сравнивать с BLE датчиками сообщения которых можно читать даже без подключения тут так не выйдет, так же в протоколе предусмотрено специально два варианта отправки, на конкретный адрес и как бродкаст. То есть к примеру контролер можно использовать просто для передачи данных цепляя за RX-TX к одноплатнику или ардуине при изготовлении более серьёзных девайсов
Jury_78
Дальность связи 10-15 м ?
Kill_Voice Автор
В приделах обычной квартиры 42 кв. м. работает без сбоев. О конкретной дальности уточнить не могу, но одна из фишек MESH сетей как раз в том, что каждое из устройств дальность расширяет.