ESP32 Mini Gateway
Trung cấp10/5/2026

ESP32 Mini Gateway

Xây dựng IoT Gateway với ESP32: nhận dữ liệu từ cảm biến GPIO, BLE node, hoặc nRF24L01 node rồi gửi lên MQTT broker.

ESP32MQTTBLEnRF24L01GatewayIoTArduino
0 lượt thích0 người đã làm2 giờ5 bước7 linh kiện
← Quay lại dự án
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 }
}