Беспроводной приемопередатчик NRF24L01+ 2,4GHz
Описание
Недорогое и доступное средство для беспроводной связи устройств и проектов. Имеет низкое энергопотребление, что хорошо сказывается на автономных устройствах (которые питаются от ограниченных источников энергии). Могут использоваться в построении роботов, систем умного дома, погодных станций и прочих проектов. За счет высокой скорости передачи, также позволяет передавать помимо текстовой информации еще и графическую или аудио. Имеет 126 независимых каналов, что позволит связать несколько независимых устройств.
Технические характеристики
- Напряжение питания: 3,3 В
- Скорость передачи данных: 250Кб/с — 2Мб/с
- Входы толерантны к 5 В
- Независимых каналов: 126
- Дальность связи в прямой видимости: 100 м
Плюсы использования
- Позволяют обеспечить недорогую беспроводную связь
- Имеют 126 независимых каналов связи
- Низкое энергопотребление
- Позволяет работать с прерываниями (будить устройство по команде)
Минусы использования
- Очень чувствительны в питании
- Сложны в подключении
Физические размеры
- Модуль (Д х Ш х В): 29 х 16 х 14 мм
Библиотека для работы с модулем
Примеры подключения и использования
Назначение выводов датчиков
- GND – земля
- VCC – питание
- CE - включение радиотракта микросхемы высоким уровнем
- SCN - Chip Select Not, активный низкий уровень. Если установлен низкий уровень, то модуль отвечает на SPI команды
- SCK - такт шины SPI
- MOSI - передача данных от микроконтроллера к устройству
- MISO - передача данных от устройства в микроконтроллер
- IRQ - выход сигнала для запроса прерывания при отправке и получении пакета
Пример В примере тестируется отправка данных о количестве секунд с момента запуска контроллера. И прием вторым устройством отправленных данных. (Для тестирования примеров использовались контроллеры 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); // вывод данных в монитор
}
}