Недорогое и доступное средство для беспроводной связи устройств и проектов. Имеет низкое энергопотребление, что хорошо сказывается на автономных устройствах (которые питаются от ограниченных источников энергии). Могут использоваться в построении роботов, систем умного дома, погодных станций и прочих проектов. За счет высокой скорости передачи, также позволяет передавать помимо текстовой информации еще и графическую или аудио. Имеет 126 независимых каналов, что позволит связать несколько независимых устройств.
Назначение выводов датчиков
Пример В примере тестируется отправка данных о количестве секунд с момента запуска контроллера. И прием вторым устройством отправленных данных. (Для тестирования примеров использовались контроллеры Smart UNO)
Что нужно | Кол-во, шт |
---|---|
Контроллер | 2 |
Беспроводной приемопередатчик NRF24L01+ 2,4GHz | 2 |
Провода папа-мама | 14 |
Конденсатор 1мкФ | 2 |
Провода папа-папа | 4 |
Подключение:
Скетч для Передатчика:
//Подключение библиотек
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
const uint64_t pipe = 0xF0F1F2F30001; // идентификатор передачи (нужен одинаковый на принимающем и передающем устройствах)
// создание объекта radioModule
RF24 radioModule(9, 10); // параметры - пины подключения CE, CSN
void setup(){
// Инициализация Serial -монитора для отладки
Serial.begin(9600);
radioModule.begin(); // Инициализация модуля
delay(2); // Задержка для того, чтобы модуль подумал
radioModule.setChannel(0); // установка канала передачи данных (0-125)
// выбор скорости: RF24_250KBPS, RF24_1MBPS или RF24_2MBPS
// чем меньше скорость, тем выше чувствительность приемника
radioModule.setDataRate(RF24_1MBPS);
// мощность передатчика, RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM,
radioModule.setPALevel(RF24_PA_HIGH);
radioModule.openWritingPipe(pipe); // открытие трубы на передачу данных
}
void loop()
{
int data = millis()/ 1000; // количество секунд со старта платы
radioModule.write(&data, sizeof(data)); // отправка данных с указанием размера пакета в битах
Serial.print("data: "); // вывод заголовка в монитор
Serial.println(data); // вывод данных в монитор
delay(5); //задержка в 5 мс
}
Подключение:
Скетч для приёмника:
//Подключение библиотек
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
const uint64_t pipe = 0xF0F1F2F30001; // идентификатор передачи (нужен одинаковый на принимающем и передающем устройствах)
// создание объекта radioModule
RF24 radioModule(9, 10); // параметры - пины подключения CE, CSN
void setup(){
// Инициализация Serial -монитора для отладки
Serial.begin(9600);
radioModule.begin(); // Инициализация модуля
delay(2); // Задержка для того, чтобы модуль подумал
radioModule.setChannel(0); // установка канала передачи данных (0-125)
// выбор скорости: RF24_250KBPS, RF24_1MBPS или RF24_2MBPS
// чем меньше скорость, тем выше чувствительность приемника
radioModule.setDataRate(RF24_1MBPS);
// мощность передатчика, RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM,
radioModule.setPALevel(RF24_PA_HIGH);
radioModule.openReadingPipe(1,pipe); // открытие трубы №1 с идентификатором "pipe"
radioModule.startListening(); // включение режима прослушки
}
void loop()
{
int data; //переменная для принимаемых данных
if (radioModule.available()) { // проверка, доступны ли какие-либо данные в буфере
radioModule.read(&data, sizeof(data)); // чтение данных, размер данных
Serial.print("data: "); // вывод заголовка в монитор
Serial.println(data); // вывод данных в монитор
}
}