Популярные радиомодули nRF24L01+ для двухсторонней передачи данных в системе умного дома можно применять для беспроводных датчиков , управления устройствами (например освещением).Но как nRF24L01+ подключить к компьютеру ?
Возможные варианты подключения:
1. Создать Ethernet шлюз , используя Ethernet шилд и например Arduino.
2. Использовать USB переходник,который обойдется дешевле - всего около 3 $, используя готовую плату USBasp. К сожалению такой вариант имеет некоторые недостатки и не подойдет при большом количестве беспроводных клиентов. Ниже рассмотрим вариант программы для данной схемы.
ВНИМАНИЕ ! ВАЖНОЕ обновление прошивки от 23.10.14 !! Переработан алгоритм приема/отправки - будет более стабильная работа ! Исправления 28.11.14.
Принцип действия
Устройство слушает эфир постоянно, а клиенты с разным интервалом от сотен милисекунд,то нескольких минут отправляет/принимает данные. Для нормальной работы необходимо выбирать: или большое количество клиентов с редким интервалом опроса или маленькое количество клиентов с частым интервалом,что необходимо для управления устройствами в реальном времени.
Теоретическое количество клиентов может быть до 22 (при пакете передачи 32 байта) из-за ограничения ОЗУ м/к в 1024 байт,но на практике проверено только до 3.
Устройство хранит принятые данные от клиентов в своей памяти, а утилита с компьютера запрашивает их в любое удобное время.Исходящие данные аналогично находятся в буфере устройства,если клиент не был включен, то при включении он получит последнюю отправленную команду.
Прошивка USBasp.
Прошивка осуществляется стандартно через другую плату USBasp или Arduino. Подробнее можно посмотреть на страничке USBasp.
Так же возможна прошивка без программаторов,если установлен загрузчик USBaspLoader.
Подключение радиомодуля к плате USBasp.
Подключается радиомодуль согласно рисунку слева,смотрим распиновку радиомодуля на странице nRF24L01+. Питание 3.3 в берем с вывода разъема VTG.
Внимание ! Не забываем переключить перемычку питания JP1 на 3.3 вольта.
Для подключения радиомодуля подойдут готовые монтажные провода с разъемами,например от старых системных блоков - в них обычно имеются такие проводки для подключения USB и audio.
Индикация работы устройства:
Бывший программатор USBasp имеет 2 встроенных светодиодов которые показывают активность:
Светодиод R (дальний от перемычки JP2) -общая активность работы.
Светодиод G (ближний к перемычкеJP2) -мигает при приеме данных.
Настройка и работа с устройством.
Для приема/отправки данных и для настройки нам будет необходима консольная утилита nRF-USB . В архиве проекта имеется исходный код утилиты и откомпилированный вариант утилиты под windows.
При вызове утилиты без параметров будут выведены основные команды.
Команды отправки и приема:
nRF-USB read <номер радиомодуля> - выдает строку данных данного клиента через разделитель - точку с запятой.
nRF-USB write <номер радиомодуля> <массив данных до 4 однобайтовых цифр> - отправка данных.На клиента можно отправить до 4 байт одновременно.Например: nRF-USB write 1 10 7 1 1 - что значит установить на 7 выводе логический уровень 1 на клиенте 1.
Команды настройки:
nRF-USB status - выдает некоторую информацию о устройстве.
nRF-USB setupch <номер канала> - установка канала от 0 до 125. Можно задавать и в виде частоты 2400..2525 мгц. Выбранный канал не должен пересекатся с другими радиоустройствами, например с wi-fi или радиотелефонами.Канал по умолчанию - 25.
nRF-USB setupcount <количество клиентов> - установка максимального количества клиентов,по умолчанию установлен 1 клиент.Не устанавливайте большее количество клиентов,чем на самом деле - иначе будут паузы при передаче данных. Опция не актуальна в новой версии прошивки.
nRF-USB setupspeed <скорость> -установка скорости. Необходимо ввести цифру соотвествующую скорости: 1 -2MBit/s ,2 -1MBit/s , 3 -250kBit/s. По умолчанию установлена скорость 1 мегабит/с.
nRF-USB setupautoack <статус> - установка аппаратного потверждения. Возможные опции: 0 - выключить потверждение, 1 - включить потверждение. По умолчанию включено.
Все опции настроек сохраняются в энергонезависимой памяти. Команды без опций выводит текущие состояния.
Для успешной работы на клиентах должны установлены аналогичные параметры скорости,канала и аппаратного потверждения.
Утилита может использоватся как внешний модуль для системы умного дома и других программ, или исходный код может быть интегрирован в другие программы.
Отладочные команды для опытных пользователей:
nRF-USB readreg <адрес регистра> - выводит данные текущего регистра nRF24L01. Например команда nRF-USB readreg 5 выведет текущий установленный канал из регистра RF_CH радиомодуля.
nRF-USB writereg <адрес регистра> <1 байт данных> - записывает данные в регистр nRF24L01. Например команда nRF-USB writereg 5 95 устанавливает 95 канал в обход команды nRF-USB setupch -соотвественно без сохранения настроек.
Настройка массива принятых данных
Текущую версию утилиты - клиентской программы необходимо перекомпилировать для изменения настроек массива.Массив данных необходимо задать в файле nRF-USB.h исходного кода в таком же порядке, в котором отправляются они на клиенте. Первый байт всегда должен соотсвествовать номеру клиента !
Примеры клиентов для устройства:
Клиент для USB-nRF24L01 - беспроводной датчик влажности(Arduino)
Вариант клиента на Си для м/к avr.
Конструктор прошивки беспроводного клиента на базе nRF24LE1.
Все клиенты должны иметь адрес для отправки 0xF0F0F0F0D2, приема - 0xF0F0F0F0E1 !! Эти настройки уже установлены во всех примерах выше.
Прошивку, программу для чтения и отправки данных можно скачать тут. В архиве имеется исходный код программы и откомпилированный вариант для windows.