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

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

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

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

На плате 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

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

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno;
  • радио модуль;
  • USB-кабель;
  • Провода «папа-мама».
Радиомодуль nRF24L01 datasheet на русском
Радиомодуль nRF24L01 datasheet на русском

После подключения беспроводных модулей к микроконтроллеру, загрузите следующий скетч (все библиотеки и скетч для проверки nRF24L01 можно скачать здесь):

#include <SPI.h> // библиотека для обмена данными по протоколу SPI 
#include <nRF24L01.h>
#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+. Сканер и проверка модуля

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

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

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

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


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

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

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