Hướng dẫn chi tiết
Bài 4: Mode NRF — Nhận dữ liệu từ nRF24L01 Node
Kết nối module nRF24L01 vào ESP32 gateway và Arduino Nano node, nạp code hai bên, xem dữ liệu độ ẩm đất truyền qua 2.4GHz.
Cập nhật 10/05/2026
Tổng quan
Arduino Nano + nRF24L01 (Node)
→ Truyền 2.4GHz → ESP32 + nRF24L01 (Gateway)
→ MQTT → Dashboard
Quan trọng: Gắn tụ 100uF gần chân VCC/GND của mỗi module nRF24L01 để ổn định nguồn. Thiếu tụ là nguyên nhân số 1 gây lỗi.
Bước 1 — Kết nối nRF24L01 vào Gateway (ESP32)
nRF24L01 ESP32 ───────────── ────── VCC ──────► 3.3V (KHÔNG dùng 5V!) GND ──────► GND CE ──────► GPIO 4 CSN ──────► GPIO 5 SCK ──────► GPIO 18 MOSI ──────► GPIO 23 MISO ──────► GPIO 19 [Tụ 100uF giữa VCC và GND, gắn sát module]
Bước 2 — Kết nối nRF24L01 vào Node (Arduino Nano)
nRF24L01 Arduino Nano ───────────── ──────────── VCC ──────► 3.3V GND ──────► GND CE ──────► D9 CSN ──────► D10 SCK ──────► D13 MOSI ──────► D11 MISO ──────► D12 [Tụ 100uF giữa VCC và GND]
Dùng ESP32 thay Nano? Đổi CE_PIN=4, CSN_PIN=5 trong code node.
Bước 3 — Nạp code cho NRF Sensor Node
Mở examples/nrf_sensor_node/nrf_sensor_node.ino, chọn board phù hợp rồi Upload.
Serial Monitor node (115200):
[NRF] Ready. Sending to gateway... [NRF] Sent — Soil: 45% Temp: 29.1°C Batt: 87%
Nếu thấy [NRF] Init FAILED!: kiểm tra nguồn 3.3V và tụ điện.
Bước 4 — Cấu hình và nạp code Gateway
Trong config.h:
#define GATEWAY_MODE MODE_NRF
- Board: ESP32 Dev Module
- Partition: Default 4MB (không cần Huge APP)
- Nhấn Upload
Bước 5 — Serial Monitor Gateway (115200)
[NRF] nRF24L01 ready. Channel=76 [BOOT] Gateway ready [NRF] Received from nrf_soil_01 | soil_temp | v1=45.0 | v2=29.1 | batt=87% [MQTT] Published to .../devices/nrf_soil_01/telemetry
Payload MQTT
{
"gateway_id": "gw_edu_001",
"mode": "nrf",
"source_id": "nrf_soil_01",
"source_type": "soil_temp",
"metrics": { "soil_moisture": 45.0, "temperature": 29.1, "battery": 87 }
}