Модуль nRF24L01: характеристики, описание

Модуль nRF24L01: характеристики, описание, распиновка

Описание и характеристики nRF24L01 ► будет интересно узнать тем, кто желает установить беспроводную радио связь между устройствами или платами Arduino.

Рассмотрим сегодня радио модуль для Ардуино nRF24L01, который часто используется в различных проектах. Предоставим распиновку и схему подключения беспроводного радиомодуля nRF24L01+ к Arduino UNO или Arduino Mega, характеристики и описание модуля на русском. На странице вы можете скачать все необходимые (работающие) библиотеки для работы с модулем и загрузить скетч для тестирования модуля.

Характеристики модуля nRF24L01 Arduino

На плате nRF24L01 встроен демодулятор, синтезатор частот и усилитель сигнала. Дальность действия модуля Arduino nRF24L01+ до 30 метров, а в версии с усилителем и антенной до 1000 метров в прямой видимости. Модуль может использовать 127 каналов связи, отличающихся частотой сигнала — от 2,4 ГГц до 2,483 ГГц. Скорость беспроводного соединения можно настраивать: 250kbps, 1Mbps или 2Mbps.

Дальность действия модуля сравнима с блютуз модулем HC-05/06, но с помощью nRF24L01 можно создать многоканальную связь. Т.е. можно объединить в общую сеть до 7 устройств, которые могут одновременно принимать и отправлять сигнал.

Распиновка радио модуля nRF24L01+

Подключение nrf24l01 к Arduino MEGA 2560 (Arduino UNO)
Подключение nrf24l01 к Arduino MEGA 2560 (Arduino UNO)

Кроме сложной схемы подключения nrf24l01 к Arduino NANO и MEGA2560, плата требовательна к питанию (так утверждается на многих форумах и сайтах). Поэтому необходимо припаять к портам питания модуля (GND и VCC) конденсатор до 10мкФ — это снизит помехи. Если вы несколько раз проверили подключение и загрузили скетч с этой страницы, но модуль отказывается работать — то все дело в питании.

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

Чтобы снизить помехи можно использовать керамический конденсатор
Чтобы снизить помехи можно использовать керамический конденсатор

Схема подключения nRF24L01 к Ардуино




Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • радио модуль;
  • провода «папа-мама».

Модуль работает по интерфейсу SPI, соответственно подключать модуль nRF24L01 следует к определенным портам микроконтроллера (не забывайте, что у Arduino Mega интерфейс SPI находится на других портах). Для наладки связи между двумя Ардуино, потребуется, как минимум два беспроводных радио модуля. Одну плату нужно настроить, как приемник сигнала (receiver), а вторую, как передатчик (transmitter).

Радиомодуль nRF24L01 datasheet на русском
Радиомодуль nRF24L01 datasheet на русском

После подключения беспроводных модулей к микроконтроллеру, загрузите скетч.

Скетч для проверки радио модуля nRF24L01

#include <SPI.h>      // библиотека для обмена данными по протоколу SPI 
#include <nRF24L01.h> // библиотека для nRF24L01+
#include <RF24.h>     // библиотека для радио модуля

RF24 radio(9,10);  // Для MEGA2560 замените на RF24 radio(9,53);
const uint8_t num_channels = 128;
uint8_t values[num_channels];

int serial_putc( char c, FILE * ) {
  Serial.write( c );
  return c;
}

void printf_begin(void) {
  fdevopen( &serial_putc, 0 );
}

void setup(void)
{
  Serial.begin(9600);
  printf_begin();
  radio.begin();
  radio.setAutoAck(false);
  radio.startListening(); // включаем прием сигнала

  radio.printDetails(); // если правильно соединили, то увидите настройки модуля
  delay(10000); // задержка на 10 секунд

  radio.stopListening(); // выключаем прием сигнала
  int i = 0; // вывод заголовков всех 127 каналов
  while ( i < num_channels )  {
    printf("%x",i>>4);
    ++i;
  }
  printf("\n\r");
  i = 0;
  while ( i < num_channels ) {
    printf("%x",i&0xf);
    ++i;
  }
  printf("\n\r");
}

const int num_reps = 100;

void loop(void) 
{
  memset(values, 0, sizeof(values));
  int rep_counter = num_reps;
  while (rep_counter--) {
    int i = num_channels;
    while (i--) {
      radio.setChannel(i);
      radio.startListening(); // включаем прием сигнала
      delayMicroseconds(128);
      radio.stopListening(); // выключаем прием сигнала
      if ( radio.testCarrier() )
        ++values[i];
    }
  }
  int i = 0;
  while ( i < num_channels ) {
    printf("%x", min(0xf, values[i] & 0xf));
    ++i;
  }
  printf("\n\r");
}

Пояснения к коду:

  1. Скетч выводит на последовательный порт информацию о модуле nRF24L01+;
  2. Далее выводится информация о всех частотах на которых работает модуль и информацию об их загруженности, выбирайте частоту для работы без помех;
Вывод информации о характеристиках модуля nRF24L01+ на мониторе
Вывод характеристик nRF24L01+. Сканер и проверка модуля

Ардуино nRF24L01 сканирование радио частот

Если скетч успешно загрузился на Arduino NANO или UNO, но вы не видите похожую информацию на мониторе последовательного порта, то еще раз проверьте соединение платы с микроконтроллером (возможно где-то просто нет контакта). Возможно у вас модуль от другого производителя, тогда советуем вам ознакомиться с информацией на форуме: forum.amperka.ru/threads/nrf24l01-побеждаем-модуль.3205/.

Сканирование каналов связи на помехи и вывод информации
nRF24L01. Сканирование радио каналов связи на помехи

Через 10 секунд после получения информации о характеристиках nRF24L01+ вы получите информацию о помехах на всех 127 каналах связи.  Первые две строчки — это имена каналов, состоящие из двух символов на первой и второй строке (выделены красным квадратом). Далее идет информация о помехах. На скриншоте видно, что с 4 по 22  канал лучше не использовать для соединения устройств по радиосигналу.

Если оба модуля работают, то можно переходить к следующему эксперименту — соединение Ардуино по беспроводной связи и передачу данных через радиосигнал.

1 Star2 Stars3 Stars4 Stars5 Stars (7 votes, average: 5,00 out of 5)
Загрузка...

Похожие записи по теме:

8 комментариев для “Пример: Модуль nRF24L01: характеристики, описание”

  1. Здравствуйте!
    Подскажите, пожалуйста, в Вашем примере в возвращаемых модулем данных видно, что уровень сигнала на максимуме
    «PA Power =PA_HIGH»

    В моем случае выдается строка:
    «PA Power = PA_MIN»

    Пытался программно поменять на значение МАХ, но ничего не выходит (см. предыдущий комментарий)

    От чего зависит это значение? Зашито производителем?

    1. Здравствуйте, Сергей. С вашими вопросами по настройке модуля nRF24L01 будем разбираться чуть позже, пока совсем нет времени.

  2. Добрый вечер. Правильно я понял, что имея два модуля, можно собрать многоканальный блок управления? И ещё, поддеживает модуль ШИМ модулицию, передовать ШИМ на расстоянии? Спасибо большое .

    1. Все верно, можно собрать блок с дистанционным управлением. Минус данных радио модулей в небольшом радиусе действий, но в квартире или в небольшом доме nRF24 будет достаточно.

      Передавать ШИМ через модуль nRF24 можно в виде данных.

  3. Добрый день. Подскажите, пожалуйста, по его документации у него 125 каналов, а объединяться могут только 6? Если стоит задача сделать 100 устройств, которые способны общаться между собой, то это нельзя реализовать с использованием NRF24L01?

    1. Можно, причем на одной трубе по следующему алгоритму:

      Приемник включаете в режим передатчика, который посылает с небольшим интервалом поочередно числа от 1 до 100. После отправки одного числа, он переходит в режим прослушки.

      Передатчики работают в режиме приемника изначально, когда первый приемник получил число «1», он переключается в режим передатчика и отправляет нужные данные, затем снова переключается в режим приемника. Число «1» получают все модули NRF24L01, но срабатывает только первый передатчик. И так поочередно опрашиваете все модули.

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

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