Не смотря на огромные возможности ESP8266 этот чип не всегда подходит для всех задач, например в плане энергоэкономных датчиков. При использовании модуля "RF24 хаб" в конструкторе прошивки ESP8266 возможно использование датчиков и других устройств на базе nRF24LE1 или nRF24LO1+Arduino(или любой другой микроконтроллер). ESP8266 выступает в качестве хаба, который принимает данные с таких устройств с возможностью передачи данных на сервера, а так же отображение данных на главной странице модуля. Возможна и передача команд для управления GPIO, ШИМ на удаленных датчиках/устройствах.
Подключение nRF24L01 к ESP8266:
SCK pin: 14
MISO pin: 12
MOSI pin: 13
CSN pin и CE pin выводы задаются в настройках прошивки, можно назначить на любые свободные.
Не забываем про 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 с более широкими возможностями и поддержкой автоматической структуры пакета.