NRF24 хаб (обновлено: 18 Feb 2018, 09:33:34)

ESP8266 в качестве хаба для получения данных и управления устройствами на базе nRF24LO1 и nRF24LE1. Поддержка до 5 клиентов и до 10 метрик. Совместим с конструктором прошивки nRF24LE1.

Не смотря на огромные возможности ESP8266 этот чип не всегда подходит для всех задач, например в плане энергоэкономных датчиков.  При использовании модуля "RF24 хаб" в конструкторе прошивки ESP8266 возможно использование датчиков и других устройств на базе nRF24LE1 или nRF24LO1+Arduino(или любой другой микроконтроллер). ESP8266 выступает в качестве хаба, который принимает данные с таких устройств с возможностью передачи данных на сервера, а так же отображение данных на главной странице модуля. Возможна и передача команд для управления GPIO, ШИМ на удаленных датчиках/устройствах.

Подключение nRF24L01 к ESP8266:

SCK:  GPIO 14, MISO: GPIO:12, MOSI: GPIO 13 , CSN и CE выводы задаются в настройках прошивки, можно назначить на любые свободные. Параллельная работа с другими SPI устройствами не поддерживается

Не забываем про GND и VDD. Питание 3.3в.


Настройка опций в прошивке:

Для настройки передачи/приема данных главной странице необходимо зайти в настройки NRF24. Вы попадете на страницу настроек клиентов, где доступны настройки:

Enable NRF24 - включить передачу выбранного модуля.

Data structure -  указывается структура входящих данных с клиентов nRF24L01 /nRF24LE1. Необходимо указать в каком порядке идут данные и каково их назначение:

T - температура, 2 байта int. значение умножено на 10. Не float данные !!

H- влажность, 2 байта int. значение умножено на 10. Не float данные !!

L - Long данные, 4 байта, например разнообразные счетчики передач или счетчики импульсов. 4 байтовая переменная.

С - аналогично L.

А - АЦП , 2 байта.

B - простое однобайтовое значение.

G - для передачи значений чтения/состояния GPIO.

1..9 - указывает количество пропускаемых байт в структуре,эти данные не будут нигде отображаться. Актуально, если нужно пропустить несколько байт в пакете. Аналогично не выводятся данные, если названия переменных указать в нижнем регистре.

Пример:

Если ваша прошивка или конструктор nRF24LE1 прошивки  например имеет такую структуру данных:

typedef struct{

unsigned char identifier;// номер передатчика. Неизменяемые данные

int Analog6; //Аналоговый вход 6

unsigned long count;// счетчик передач для контроля качества канала.

int temperature_Sensor; //передаём температуру.

int Humidity_Sensor;// передаём влажность

 }

- это значит, что необходимо ввести 4 буквы: ALTH . Первый байт - номер передатчика пропускаем. Конструктор прошивки для nRF24LE1 уже выдает необходимую текстовую строку структуры.


Error timeout - тут указывается время таймаута, при котором считается , что связь с модулем NRF утеряна. При ошибке значения из модуля не будут передаваться на сервера и выводится на главной.

Для настройки передачи данных необходимо перейти на вкладку Radio setup , где необходимо указать GPIO для подключения модуля nRF24L01, указать скорость , канал.


В данный момент некоторые  настройки не изменяются:

Адреса отправки- 0xF0F0F0F0E1, приема- 0xF0F0F0F0D2

AutoAck выключен.

Dynamic Payloads выключен.

Необходимо учитывать эти параметры при сборке прошивки в конструкторе nRF24LE1 или при программировании своих устройств.


Список метрик, передаваемые на сервера:

nrfXtY - температура.

nrfXhY - влажность.

nrfXaY - АЦП.

nrfXgY - состояние GPIO.

nrfXcY - Счетчик импульсов (передачи или прерывания)

nrfXbY - Любой другой байт передачи.

Где X - номер клиента. Y - номер метрики клиента.

В данный момент передача метрик реализована на MajorDoMo, flymon.net, narodmon.ru, а так же на MQTT.

Аналогичные метрики выводятся и на вкладке /sensors .

Отправка данных на радиомодули:

http://IP_adress/nrfwrite?chselect=1&val1=11&val2=2&val3=0

Что значит отправить данные val1..val3 на клиента номер 1. Данные для команды зависят от функционала клиента.

Чтение сырых данных:

Сырые данные с радиомодулей можно прочесть по адресу /nrfsrc.

Чтение данных в конструкторе кода

Данные можно считать из массива clientNRF[Y][X] , где Y -это номер клиента считая от нуля. X - номер байта клиента считая от нуля, первый байт - номер клиента, далее - данные передаваемые с клиента в сыром виде.


Планы и идеи проекта:

Реализовать автоматическое назначение структуры пакета ( не нужно будет указывать структуру данных).

Реализовать новый конструктор прошивки nRF24LE1 с более широкими возможностями и поддержкой автоматической структуры пакета.