Корзина пуста
Описание
Беспроводной трансивер (приемопередатчик) для Arduino, STM32 проектов работающий на частоте 2.4ГГц – 2,5ГГц.
Характеристики:
- Частота передачи/приема: 2.4ГГц;
- Расстояние передачи/приема: до 1км
- Скорость передачи: 250kbps, 1Mbps и 2Mbps;
- Модуляция: GFSK;
- Чувствительность приемника: -82 dBm;
- Максимальная выходная мощность: 0 dBm;
- Коэффициент усиления антенны: 2dBm;
- Количество каналов: 126;
- Интерфейс: SPI;
- Напряжение питания:
Ток, потребляемый в режиме передачи данных: до 15 мА.
Ток, потребляемый в режиме приёма данных: до 21 мА.
Ток, потребляемый в режиме ожидания: до 8 мА.
Минимальное напряжение 1,9В
Номинальное напряжение: 3.3В.
Максимальное напряжение: 3,7В.
Рабочая температура: -40 - +85
Примечание
Подключение NRF2401 к Arduino UNO, Arduino Nano, Arduino Mega.
NRF24L01 |
Arduino |
GND |
GND |
VCC |
+3.3V |
CE |
9 |
CSN |
10 |
MOSI |
11 |
MISO |
12 |
SCK |
13 |
Прошивка для приемника
#include "nRF24L01.h" |
#include "RF24.h" |
|
RF24 radio(9,10); // "создать" модуль на пинах 9 и 10 Для Уно |
//RF24 radio(9,53); // для Меги |
|
byte address[][6] = {"1Node","2Node","3Node","4Node","5Node","6Node"}; //возможные номера труб |
|
void setup(){ |
Serial.begin(9600); //открываем порт для связи с ПК |
radio.begin(); //активировать модуль |
radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл |
radio.setRetries(0,15); //(время между попыткой достучаться, число попыток) |
radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал |
radio.setPayloadSize(32); //размер пакета, в байтах |
|
radio.openReadingPipe(1,address[0]); //хотим слушать трубу 0 |
radio.setChannel(0x60); //выбираем канал (в котором нет шумов!) |
|
radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX |
radio.setDataRate (RF24_1MBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS |
//должна быть одинакова на приёмнике и передатчике! |
//при самой низкой скорости имеем самую высокую чувствительность и дальность!! |
// ВНИМАНИЕ!!! enableAckPayload НЕ РАБОТАЕТ НА СКОРОСТИ 250 kbps! |
|
radio.powerUp(); //начать работу |
radio.startListening(); //начинаем слушать эфир, мы приёмный модуль |
} |
|
void loop(void) { |
|
byte pipeNo, gotByte; |
while( radio.available(&pipeNo)){ // слушаем эфир со всех труб |
radio.read( &gotByte, 1 ); // чиатем входящий сигнал |
radio.writeAckPayload(pipeNo,&gotByte, 1 ); // отправляем обратно то что приняли |
Serial.print("Recieved: "); Serial.println(gotByte); |
} |
} |
Прошивка для передатчика
#include "nRF24L01.h" |
#include "RF24.h" |
|
RF24 radio(9,10); // "создать" модуль на пинах 9 и 10 Для Уно |
//RF24 radio(9,53); // для Меги |
|
byte address[][6] = {"1Node","2Node","3Node","4Node","5Node","6Node"}; //возможные номера труб |
|
byte counter; |
|
void setup(){ |
Serial.begin(9600); //открываем порт для связи с ПК |
|
radio.begin(); //активировать модуль |
radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл |
radio.setRetries(0,15); //(время между попыткой достучаться, число попыток) |
radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал |
radio.setPayloadSize(32); //размер пакета, в байтах |
|
radio.openWritingPipe(address[0]); //мы - труба 0, открываем канал для передачи данных |
radio.setChannel(0x60); //выбираем канал (в котором нет шумов!) |
|
radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX |
radio.setDataRate (RF24_1MBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS |
//должна быть одинакова на приёмнике и передатчике! |
//при самой низкой скорости имеем самую высокую чувствительность и дальность!! |
// ВНИМАНИЕ!!! enableAckPayload НЕ РАБОТАЕТ НА СКОРОСТИ 250 kbps! |
|
radio.powerUp(); //начать работу |
radio.stopListening(); //не слушаем радиоэфир, мы передатчик |
} |
|
void loop(void) { |
byte gotByte; |
Serial.print("Sending... ");Serial.println(counter); |
|
unsigned long last_time = micros(); //запоминаем время отправки |
|
if ( radio.write(&counter,1) ){ //отправляем значение counter |
if(!radio.available()){ //если получаем пустой ответ |
Serial.print("Empty, "); Serial.print(" Time: "); Serial.print(micros()-last_time); Serial.println(" microseconds"); Serial.println(); |
}else{ |
while(radio.available() ){ // если в ответе что-то есть |
radio.read( &gotByte, 1 ); // читаем |
Serial.print("Anser: "); Serial.print(gotByte); Serial.print(" Time: "); Serial.print(micros()-last_time); Serial.println(" microseconds"); Serial.println(); |
counter++; |
} |
} |
|
}else{ Serial.println("Fail"); } |
|
delay(1000); |
|
} |
Пример использования модуля NRF24 на канале Alexgyver
Пример использования модуля на канале Электроника в объективе
Пульт управления на базе nrf24 на канале Electronoobs
Полезные ссылки:
Datasheet
Библиотека NRF2401
Основной чип:
NRF24L01P+
Габариты (Д х Ш х В):
46мм х 17мм х 13мм и 110мм х 10мм х 10мм
Вес:
13г.
Сообщения не найдены