Обзор радио модуля NRF24L01+PA+LNA

Радиомодуль NRF24L01+PA+LNA

Радиомодуль NRF24L01+PA+LNA  отличается от NRF24L01+, повышенной чувствительностью приемника и увеличенной мощностью передатчика, что позволило передавать данные со скоростью передачи до 250Kb на расстояние до 1000 метров.

Технические параметры

► Напряжение питания: 3В … 3.6В
► Потребляемый ток при мощности 0dBm: 45 мА
► Потребляемый ток при передачи 2 Мбит: 115 мА
► Максимальная выходная мощность: +20dBm
► Частота: 2.4 ГГц
► Коэффициент усиления антенны (макс.): 2dBi
► Скорость передачи: 2MB (открытое пространство): 520 м.
► Скорость передачи: 1 MB (открытое пространство): 750 м.
► Скорость передачи: 250 Kb (открытое пространство): 1000 м.
► Размеры: 46мм x 17мм x 12мм (длина антенны 115 мм)
► Интерфейс: SPI

Общие сведения

В версии NRF24L01+ используется встроенная антенна,  это позволило уменьшить габариты модуля. Однако из-за маленькой антенны диапазон передачи тоже не значительный и составляет всего 100 метров, при прямой видимости, а в помещении, особенно через стены, будет еще меньше.
NRF24L01+PA+LNA установлен разъем SMA с внешней антенной. Реальное различие заключается в том, что он оснащен специальным чипом RFaxis RFX2401C (в корпусе QFN), который объединяет схемы коммутации PA и LNA (передачи и приема). Этот микросхема со вместо а антенной расширяет диапазон  модуля и позволяет достичь значительно большего диапазона передачи около 1000 м.
«PA» означает усилитель мощности (Power Amplifier), он просто увеличивает мощность сигнала, передаваемого от чипа nRF24L01+. В то время как «LNA» означает усилитель с низким уровнем шума (Low-Noise Amplifier). Работа LNA состоит в том, чтобы принять чрезвычайно слабый и неопределенный сигнал от антенны (обычно порядка микровольт или ниже -100 дБм) и усилить его до более полезного уровня (обычно от 0,5 до 1 В).
Усилитель (LNA) и усилитель мощности (PA) соединяются с антенной посредством дуплексера, который отделяет два сигнала и предотвращает перегрузку чувствительного входа LNA относительно мощного PA. Принципиальная схема NRF24L01+PA+LNA, показана на рисунке ниже.

Блок схема радиомодуля NRF24L01+PA+LNA

Подключение NRF24L01+PA+LNA

Необходимые детали:
►  Arduino UNO R3 x 2 шт.
►  Провод DuPont, 2,54 мм, 20 см x 2 шт.
►  Кабель USB 2.0 A-B x 2 шт.
►  Радиомодуль nRF24L01+PA+LNA+ x 2 шт.
►  Адаптер для nRF24L01+  x 2 шт.

Подключение:
Для начала подключаем вывод VCC и GND к выводам Arduino +3.3V и GND. Выводы  CSN и CE могут быть подключены к любому цифровому выводу на Arduino, в нашем случае подключены к цифровым выводам 9 и 10. Теперь остались контакты, которые используются для связи SPI, для Arduino UNO, это контакты 13 (SCK), 12 (MISO) и 11 (MOSI), схема подключения приведена на рисунке ниже:

Подключение радиомодуля NRF24L01+PA+LNA к Arduino

Таблица подключений, для различных плат Arduino

Таблица подключений, для различных плат Arduino

Установка библиотеки:
В данном примере используется популярная библиотека RF24, она проста в использовании. Загрузить последнюю версию библиотеки можно с RF24 GitHub или с моего сайта.
Для установи, откройте Arduino IDE, перейдите в Скетч —>  Подключить Библиотеку —>  Добавить. ZIP Библиотеку…, а затем выберите файл RF24.zip, который вы только что загрузили.

Программа для передатчика:
В примере, мы просто отправим традиционное сообщение «Hello World» от передатчика к получателю.

/*
  Тестирование производилось на Arduino IDE 1.6.11
  Дата тестирования 28.10.2016г.
*/

#include <SPI.h>                        // Подключаем библиотеку SPI
#include <nRF24L01.h>                   // Подключаем библиотеку nRF24L01 
#include <RF24.h>                       // Подключаем библиотеку RF24 

RF24 radio(9,10);                       // Указываем номера выводов nRF24L01+ (CE, CSN)

const byte address[6] = "00001";  

void setup()
{
  radio.begin();                        // Инициируем работу nRF24L01+
  radio.openWritingPipe(address);
  radio.stopListening();
}
void loop()
{
  const char text[] = "Hello World";
  radio.write(&text, sizeof(text));
  delay(1000);
}

  Скачать скетч master

Скетч как обычно начинается с подключения библиотек.

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

Затем необходимо указать вывода к которым подключены сигналы CE и CSN.

RF24 radio(9, 8);

Далее создаем массив байтов, который будет представлять адрес канала.

const byte address[6] = "00001";

Затем инициализируем модуль и устанавливаем адрес передатчика.

radio.begin (), 
radio.openWritingPipe(address);

Теперь, следующей функцией устанавливаем модуль как передатчик

radio.stopListening();

Далее в void loop(), мы создаем массив символов, которым мы присваиваем сообщение «Hello World» и отправляем это сообщение получателю. Первый аргумент —  это само сообщение, а второй аргумент — количество байтов в сообщении.

const char text[] = "Hello World";
radio.write(&text, sizeof(text));

С помощью этого метода вы можете отправлять до 32 байтов за раз, это максимальный размер одного пакета, который может обрабатывать nRF24L01 +.

Программа для приемника:

/*
Тестирование производилось на Arduino IDE 1.6.11
Дата тестирования 28.10.2016г.
*/

#include <SPI.h>                      // Подключаем библиотеку SPI
#include <nRF24L01.h>                 // Подключаем библиотеку nRF24L01 
#include <RF24.h>                     // Подключаем библиотеку 

RF24 radio(9,10);                     // Указываем номера выводов nRF24L01+ (CE, CSN)

const byte address[6] = "00001";

void setup()
{
  while (!Serial);
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.startListening  ();
}

void loop()
{
  //Read the data if available in buffer
  if (radio.available())
  {
    char text[32] = {0};
    radio.read(&text, sizeof(text));
    Serial.println(text);
  }
}

  Скачать скетч slave

Скетч slave похож на скетч master, за исключением некоторых изменений. В начале функции настройки мы запускаем последовательную связь.

Serial.begin(9600);

Затем, используя функцию, мы устанавливаем тот же адрес, что и передатчик, и таким образом мы включаем связь между передатчиком и приемником.

radio.setReadingPipe ()
radio.openReadingPipe(0, address);

Первый аргумент — это номер потока, в примере создали адрес под номером 0 (можно создать до 6 потоков, которые отвечают на разные адреса). Второй аргумент — это адрес, на который поток будет реагировать на сбор данных.
Следующим шагом будет установка модуля в качестве приемника и начало приема данных. Для этого мы используем следующую функцию и ждем получения данных.

radio.startListening ()

Далее проверяем, были ли получены какие то данные.

if (radio.available())
  {
    char text[32] = {0};
    radio.read(&text, sizeof(text));
    Serial.println(text);
  }

Если данные получены, то создается массив из 32 символа, заполненных нулями (позже программа будет заполнять его полученными данными). Для чтения данных используется метод.

radio.read (& text, sizeof (text))

Затем, просто печатаем полученное сообщение на последовательном мониторе.

NRF24L01+PA+LNA

Подключение радиомодуля NRF24L01+PA+LNA к Arduino

Ссылки
  Библиотека RF24
  Документация к NRF24L01+

Купить на Aliexpress
  Контроллер Arduino UNO R3
  Провода DuPont, 2,54 мм, 20 см
  Датчик радио модуля NRF24L01+
  Датчик радио модуля NRF24L01+PA+LNA 
  Адаптер для NRF24L01+

Купить в Самаре и области
  Купить контроллер Arduino UNO R3
  Купить провода DuPont, 2,54 мм, 20 см
  Купить радио модуля NRF24L01+
  Купить радио модуля NRF24L01+PA+LNA
  Купить адаптер для NRF24L01+

Читайте также:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *