NRF24L01+ на Arduino: электронный кодовый замок с беспроводным управлением

NRF24L01+ на Arduino — дешёвый радиомодуль 2.4 ГГц для беспроводного управления. Дальность до 100 м (открыто), 30 м в помещении. Скорость до 2 Мбит/с, 128 каналов. Подключение по SPI, питание 3.3В. Проект: кодовый замок на клавиатуре 4×4 (передатчик) + реле (приёмник). Ввод кода ABCD открывает замок на 5 сек. Карманный пульт без ключа. Расширение: несколько пультов, голос, домофон. Стабильная связь, низкое потребление.

NRF24L01+ Arduino кодовый замок беспроводной реле клавиатура

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

Частота 2.4 ГГц ISM. Модуляция GFSK. Скорость 250 кбит/с – 2 Мбит/с. Каналы 128. Дальность 100 м открыто, 30 м помещение. Мощность +0 дБм. Питание 1.9–3.6В, ток 13 мА передача. SPI интерфейс. 1 приёмник + 6 передатчиков на канал. Поддержка ACK, авторетрансмит.

Компоненты

  • 2 Arduino Nano
  • 2 NRF24L01+ (с антенной для дальности)
  • Клавиатура 4×4
  • Реле модуль
  • Замок/сирена

Подключение передатчика (пульт)

  • NRF24: VCC 3.3V, GND, CE D9, CSN D10, SCK D13, MOSI D11, MISO D12
  • Клавиатура 4×4: ряды D2–D5, столбцы D6–D8

Подключение приёмника (замок)

  • NRF24 аналогично
  • Реле IN → D8
NRF24L01 беспроводной радиомодуль Arduino

Библиотека RF24

Установка из Менеджера библиотек. Примеры GettingStarted.

Скетч передатчика

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

RF24 radio(9,10);
const byte address[6] = "00001";

const byte rows = 4, cols = 4;
char keys[rows][cols] = {{'1','2','3','A'},{'4','5','6','B'},{'7','8','9','C'},{'*','0','#','D'}};
byte rowPins[rows] = {2,3,4,5};
byte colPins[cols] = {6,7,8,A0};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols);

String code = "";
const String correct = "ABCD";

void setup() {
  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_MAX);
  radio.stopListening();
}

void loop() {
  char key = keypad.getKey();
  if (key) {
    if (key == '#') {
      if (code == correct) radio.write("OPEN", 5);
      code = "";
    } else if (key == '*') code = "";
    else code += key;
  }
}
Настраивает клавиатуру 4×4 для ввода кода и модуль RF24 для передачи данных.
Накопляет нажатия клавиш в строку code.
При нажатии # проверяет, совпадает ли введённый код с правильным («ABCD»).
Если код верный, отправляет по радиоканалу RF24 команду «OPEN».
Клавиша * очищает текущий ввод, а все остальные клавиши добавляют символы в код.

Скетч приёмника

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

RF24 radio(9,10);
const byte address[6] = "00001";

void setup() {
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_MAX);
  radio.startListening();
  pinMode(8, OUTPUT);
}

void loop() {
  if (radio.available()) {
    char text[5] = "";
    radio.read(&text, sizeof(text));
    if (strcmp(text,"OPEN")==0) {
      digitalWrite(8, HIGH);
      delay(5000);
      digitalWrite(8, LOW);
    }
  }
}
Настраивает приёмник NRF24 на пине 9/10 с адресом «00001».
В цикле проверяет наличие новых данных через radio.available().
Если приходит сообщение «OPEN», включает пин 8 на 5 секунд (например, для реле), затем выключает.
Таким образом, приёмник реагирует на команду от передатчика, отправляющего «OPEN».

Настройка

Адрес трубы одинаковый. PA_MAX для дальности. ACK для надёжности.

Расширение

Несколько пультов (разные адреса). Голос домофон. Wi-Fi ESP8266. LCD статус. Кнопка внутри открытия.

Заключение

NRF24L01+ — надёжный радиомодуль для Arduino. Беспроводный кодовый замок: клавиатура + реле. Дальность, стабильность, простота.

FAQ — NRF24L01+ кодовый замок

Нет связи между модулями?

Проверьте адрес трубы одинаковый. Питание 3.3В стабильное, конденсатор 10 мкФ. PA_MAX для мощности.

Дальность малая?

Модуль с внешней антенной — до 1 км. PA_MAX, открытое пространство. Избегайте помех 2.4 ГГц (Wi-Fi).

Клавиатура не работает?

Пины rows/cols правильные. Библиотека Keypad. Pull-up резисторы если нужно.

Реле не срабатывает?

Проверьте radio.available() и strcmp(text,»OPEN»). Задержка delay(5000) для открытия.

Несколько пультов?

Разные адреса труб. Приёмник openReadingPipe для каждого.

Голос по NRF24?

Да, поток аудио 1–2 Мбит/с. Микрофон + динамик, буфер.

ESP8266 с NRF24?

Да, библиотека RF24 работает. Wi-Fi + радио для гибрида.

📁 Скачать примеры