NRF24L01 - Arduino
![NRF24L01 - Arduino NRF24L01 - Arduino](http://istarik.ru/uploads/images/00/00/01/2015/11/18/bddcd3.png)
Радиомодули nRF24L01+ позволяют передавать данные на частоте 2,4ГГц.
Общие характеристики для всех модулей:
Напряжение питания — от 1,9 до 3,6v, рекомендуемое
Входы толерантны к напряжению до 5v, то есть можно подключать к микроконтроллеру, работающему от 5v.
Взаимодействует с микроконтроллером по шине SPI.
Возможные скорости обмена данными — 250kbps, 1Mbps и 2Mbps.
Количество каналов — 126, с шагом 1мгц. Если установлена скорость передачи 2MBPS, то используется ширина двух каналов.
Энергопотребление около 0,9мкА в режиме power-down, до 11,3мА при передаче, и до 13,5мА при приёме.
Стоимость колеблется от 50 до 200р.
Версии модулей
![nRF24L01+ nRF24L01+](http://istarik.ru/uploads/images/00/00/01/2015/11/18/7a67d3.jpg)
Дальность до 100м на открытом пространстве и до 30м в помещении (дальность указана для минимальной скорости передачи данных — 250kbps).
Размер 29мм на 15мм.
![](http://istarik.ru/uploads/images/00/00/01/2015/11/18/aca484.jpg)
Версия мини. Наследует характеристики предыдущего модуля.
Размер 18мм на 12мм.
![](http://istarik.ru/uploads/images/00/00/01/2015/11/18/ba97d1.jpg)
С внешней антенной.
Дальность до 200м на открытом пространстве и до 50м в помещении.
![](http://istarik.ru/uploads/images/00/00/01/2015/11/18/067c39.jpg)
С внешней антенной и усилителем.
Дальность до 1000м на открытом пространстве.
Размер 45мм на 16мм.
Для модулей кроме мини, существует «переходник» со стабилизатором на 3.3v.
![](http://istarik.ru/uploads/images/00/00/01/2015/11/18/5a230c.jpg)
Так же стоит отметить существование модуля nRF24LE1, способного работать автономно (без ардуины). Однако для работы с этим модулем необходим программатор и соответствующие навыки.
![](http://istarik.ru/uploads/images/00/00/01/2015/11/18/7df0a3.png)
Подключение к ардуине
SCK — D13
MOSI — D11
MISO — D12
CSN — D10
CE/SS — D9
SCK — D52
MOSI — D51
MISO — D50
CSN — D53
CE/SS — D49
Для СЕ и CSN можно использовать любые пины (меняется в скетче RF24 radio(9,10);).
![](http://istarik.ru/uploads/images/00/00/01/2015/11/18/6be3cd.png)
Для улучшения качества связи, рекомендуется припаять конденсатор ~100мкф между плюсом и минусом модуля.
Программирование
Пример №1
Итак, нам понадобится библиотека RF24, две ардуины, два модуля и один светодиод.
Первая ардуина будет по очереди отправлять два числа — 255 и 155:
#include <SPI.h>
#include <RF24.h>
RF24 radio(9, 10); // можно использовать любые
const uint32_t pipe = 123456789; // адрес
byte massiv[1];
void setup()
{
Serial.begin(57600);
radio.begin();
radio.setDataRate(RF24_250KBPS); // скорость обмена данными RF24_1MBPS или RF24_2MBPS
radio.openWritingPipe(pipe); // открыть канал на отправку
}
void loop()
{
massiv[0] = 255;
radio.write(massiv, 1);
delay(500);
massiv[0] = 155;
radio.write(massiv, 1);
delay(500);
}
Вторая ардуина будет принимать числа (255 и 155) и включать/выключать светодиод подключенный к D6:
#include <SPI.h>
#include <RF24.h>
RF24 radio(9, 10);
const uint32_t pipe = 123456789;
byte massiv[4];
void setup()
{
pinMode(6, OUTPUT);
Serial.begin(57600);
radio.begin();
radio.setDataRate(RF24_250KBPS); // RF24_1MBPS или RF24_2MBPS
radio.openReadingPipe(1,pipe); // открыть канал на приём
radio.startListening(); // приём
}
void loop()
{
if(radio.available())
{
radio.read(massiv, 1);
if(massiv[0] == 255)
{
Serial.println(massiv[0]);
digitalWrite(6, HIGH);
}
if(massiv[0] == 155)
{
Serial.println(massiv[0]);
digitalWrite(6, LOW);
}
}
}
Пример №2
Первая ардуина будет посылать значения температуры и влажности второй ардуине. Потребуется библиотека stDHT.
Отправка:
#include <SPI.h>
#include <RF24.h>
RF24 radio(9, 10);
#include "stDHT.h"
DHT sens(DHT22);
const uint32_t pipe = 123456789;
byte massiv[2];
void setup()
{
Serial.begin(57600);
radio.begin();
radio.setDataRate(RF24_250KBPS);
radio.openWritingPipe(pipe);
}
void loop()
{
int t = sens.readTemperature(2); // чтение датчика на пине 2
int h = sens.readHumidity(2);
massiv[0] = t;
massiv[1] = h;
radio.write(massiv, 2);
delay(2000);
}
Приём:
#include <SPI.h>
#include <RF24.h>
RF24 radio(9, 10);
const uint32_t pipe = 123456789;
byte massiv[2];
void setup()
{
pinMode(6, OUTPUT);
Serial.begin(57600);
radio.begin();
radio.setDataRate(RF24_250KBPS);
radio.openReadingPipe(1,pipe);
radio.startListening();
}
void loop()
{
if(radio.available())
{
radio.read(massiv, 2);
int t = massiv[0];
int h = massiv[1];
Serial.println(t);
Serial.println(h);
}
}
Здесь показаны простые примеры, «чтоб заработало», а вот для вдумчивого изучения рекомендую обратится к примерам из библиотеки.
Купить nRF24L01
Вступайте в Telegram-группу Arduino
![](http://istarik.ru/uploads/images/00/00/01/2018/06/12/db2560.png)
![](http://istarik.ru/uploads/images/thnd.png)
- +256
- stD
78137
Поддержать автора
Комментарии (5)
" collect2.exe: error: ld returned 5 exit status
Ошибка компиляции. "
После исправления компилляция без ошибок.