Радиомодуль nRF24L01 (2,4 ГГц, SPI)

nRF24L01 — компактный радиопередатчик‑приёмник для беспроводного обмена данными между микроконтроллерами на частоте 2,4…2,5 ГГц. Управление по интерфейсу SPI. Подходит для Arduino, ESP32, STM32 и др.

Характеристики

  • Диапазон частот: 2,4…2,5 ГГц
  • Интерфейс: SPI
  • Дальность: до 100 м (на открытом пространстве), в помещении до 30 м
  • Питание: 1,9…3,6 В (логические уровни — 3,3 В)
  • Размеры платы: 15 × 29 мм

Преимущества

  • Низкое энергопотребление, высокая скорость обмена
  • Библиотека RF24 (TMRh20) и расширения для сетей (RF24Network, RF24Mesh)
  • Гибкая настройка скорости (250 кбит/с, 1 Мбит/с, 2 Мбит/с) и мощности

Подключение к Arduino UNO

  • VCC → 3.3V (обязательно! не 5 В)
  • GND → GND
  • CE → D7 (можно любой свободный)
  • CSN (CS) → D8 (можно любой свободный)
  • SCK → D13
  • MOSI → D11
  • MISO → D12

Совет по питанию: для стабильной работы поставьте электролитический конденсатор 10–47 мкФ между VCC и GND модуля (особенно для дальнобойных версий с усилителем и антенной). Используйте чистые 3,3 В от стабилизатора.

Пример скетча (передатчик)

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

RF24 radio(7, 8); // CE, CSN
const byte address[6] = "1Node"; // адрес трубы

unsigned long counter = 0;

void setup() {
  Serial.begin(115200);
  if (!radio.begin()) {
    Serial.println("Ошибка инициализации nRF24L01");
    while (1);
  }
  radio.setChannel(108);             // канал (2.4 ГГц + 108 МГц ≈ 2.508 ГГц), при помехах подберите
  radio.setDataRate(RF24_250KBPS);   // ниже скорость — дальше связь/выше помехоустойчивость
  radio.setPALevel(RF24_PA_LOW);     // мощность: MIN/LOW/HIGH/MAX (подбирайте под задачу)
  radio.openWritingPipe(address);
  radio.stopListening();             // режим передачи
}

void loop() {
  counter++;
  struct Payload {
    unsigned long id;
    float value;
  } data = { counter, 23.5 + (counter % 100) / 10.0 };

  bool ok = radio.write(&data, sizeof(data));
  Serial.print("TX #"); Serial.print(counter);
  Serial.print(" | value="); Serial.print(data.value, 1);
  Serial.println(ok ? " | OK" : " | FAIL");

  delay(500);
}

Пример скетча (приёмник)

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

RF24 radio(7, 8); // CE, CSN
const byte address[6] = "1Node"; // тот же адрес, что у передатчика

void setup() {
  Serial.begin(115200);
  if (!radio.begin()) {
    Serial.println("Ошибка инициализации nRF24L01");
    while (1);
  }
  radio.setChannel(108);
  radio.setDataRate(RF24_250KBPS);
  radio.setPALevel(RF24_PA_LOW);
  radio.openReadingPipe(1, address);
  radio.startListening();            // режим приёма
}

void loop() {
  if (radio.available()) {
    struct Payload {
      unsigned long id;
      float value;
    } data;

    while (radio.available()) {
      radio.read(&data, sizeof(data));
    }

    Serial.print("RX #"); Serial.print(data.id);
    Serial.print(" | value="); Serial.println(data.value, 1);
  }
}

Примечания

Адрес трубы (pipe) должен совпадать на передатчике и приёмнике. Можно использовать разные адреса для разных пар устройств.

Для мультиузловых сетей используйте библиотеки RF24Network / RF24Mesh (поверх RF24), чтобы строить иерархические/mesh‑топологии без практического ограничения количества узлов.

На ESP32/STM32 пины SPI могут отличаться — используйте аппаратный SPI (HSPI/VSPI для ESP32) и назначьте CE/CSN на свободные GPIO.

Написать отзыв

Примечание: HTML разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо

Радиомодуль nRF24L01 (2,4 ГГц, SPI)

  • Модель NRF24L01
  • Код: ID-402
  • Наличие Есть в наличии
  • 54.65грн.


<< Проекты << Все товары >> Статьи, уроки >>