Рисунок 1


Сегодня на рынке можно встретить кучу всевозможных радио-пультов. Одним из наиболее популярных является модель на базе IC2262/2272 (рисунок 2). Решение вполне себе пригодное, но только на тот случай, если не нужна обратная связь, шифрование (или адресация) и аналоговый режим.



Рисунок 2


Мне захотелось сделать улучшенный прототип такого брелока, который будет иметь в себе те преимущества, которых нет в имеющихся решениях.


Для создания прототипа я использую Базовое устройство M5Stack BASIC (купить можно здесь) с предустановленным Модулем LORA и подключенными по I2C часами реального времени (т. к. Wi-Fi с NTP ввязывать здесь будет лишним).


При первом включении устройство предлагает выбрать выбрать тип соединения с клиентским устройством – асинхронное или синхронное. Если будет выбрано синхронное, то устройство будет ожидать от ведомого устройства контрольное значение, затем сигнализировать (треугольный значок с восклицательным знаком).


Далее предлагается выбрать тип – цифровой (HIGH и LOW) или аналоговый (-127...+127). В цифровом режиме при обращении к ведомому устройству поочерёдно будет передаваться HIGH или LOW, а при аналоговом счётчик, увеличенный на единицу. Если будет выбран аналоговый тип, то устройство запросит минимальное и максимальное значение, в пределах которых будет работать счётчик.


Далее устройство спросит – будет ли использоваться ключ? (или адрес называйте как хотите). Если выбрать закрытый замок, то устройство будет ожидать ключ от ведомого устройства. В демонстрационных целях ведомым устройством выступает Arduino Nano с Модулем Ra-01. При включение Arduino высылает ключ. Это видно на видео.


Далее Вы можете выбрать иконку для ведомого устройства (рисунок 3).



Рисунок 3


После того, как Вы выберете иконку, Вам будет предложено выбрать единицы измерения или уточняющие слова, такие как: "power", "red", "green", "blue", "cold", "warm", "$" ,"%", "oC", "uV", "mV", "V", "uA", "mA", "A", "uW", "mW", "W" ,"m/s", "km/H", "ug", "mg", "g", "kg", "mL", "L", "rpm", "dBm", " ". Это важно!


После того, как все шаги будут пройдены – необходимо сохранить данную конфигурацию путём нажатия на кнопку A (или C для отмены).


Устройство перезагрузится и Вы увидите часы, дату и время, заряд аккумулятора, индикатор уровня сигнала, выбранную ранее иконку ведомого устройства, порядковый номер устройства справа от иконки (начинается с нуля), значение по-умолчанию и единицу измерения.


Для того, чтобы обратиться к ведомому устройству необходимо нажать клавишу A. Чтобы сменить ведомое устройство необходимо нажать клавишу B.
Для перезагрузки устройства нажмите клавишу C.


Если Вы желаете удалить устройство из списка, то нажмите C затем B, вместо иконки ведомого устройства будет отображена корзина и порядковый номер. Выберите клавишей B удаляемое устройство и нажмите клавишу A (или C для отмены).


Настройка часов реального времени осуществляется путём нажатия на клавишу С после перезагрузки устройства. Обращаться к часам, минутам, году, месяцу и дню можно с помощью клавиши B, а изменять значение с помощью клавиши C. Для сохранения нажмите клавишу A.


Давайте посмотрим, что получилось (YouTube). На данном видео Arduino дублирует полученную команду, а M5Stack находит в ней контрольное значение и сигнализирует об этом.


Исходный код доступен на GitHub


Надеюсь, что данный проект, в скором времени, получит оценку общественности и уйдёт с полки прототипов. Спасибо большое за уделённое время.