Беспроводной приемопередатчик 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); // вывод данных в монитор } }