Радіомодуль 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);
  radio.setDataRate(RF24_250KBPS);
  radio.setPALevel(RF24_PA_LOW);
  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

  • Модель NRF24L01
  • Код: ID-402
  • Наявність Є в наявності
  • 54.65грн.


<< Проекти << Усі товари >> Статті, уроки >>