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 6: Xử lý lỗi thường gặp

Tổng hợp các lỗi phổ biến khi upload code, kết nối WiFi/MQTT, scan BLE, và giao tiếp nRF24L01 — kèm cách khắc phục từng bước.

Cập nhật 10/05/2026

Lỗi khi Upload Code

LỗiNguyên nhânCách sửa
Failed to connect to ESP32 ESP32 không vào chế độ download Nhấn giữ nút BOOT trên ESP32 trong khi nhấn Upload
Sketch too big (Mode BLE) Partition scheme quá nhỏ cho BLE library Tools → Partition Scheme → Huge APP (3MB No OTA)
undefined reference to ... Library chưa cài hoặc sai phiên bản Cài đủ: PubSubClient, ArduinoJson v7, RF24
Không thấy Port trong menu Chưa cài driver USB-Serial Cài driver CP2102 (silabs.com) hoặc CH340 (wch-ic.com)

Lỗi WiFi

Triệu chứngCách kiểm tra
Connection failed liên tục① SSID/Password đúng chưa (phân biệt hoa/thường) ② WiFi có phải 2.4GHz không (ESP32 không kết nối 5GHz) ③ Thử hotspot điện thoại
Kết nối nhưng bị ngắt thường xuyênThêm WiFi.setSleep(false) sau WiFi.mode(WIFI_STA) trong wifi_manager.cpp

Lỗi MQTT

State codeÝ nghĩaCách sửa
-4Timeout, broker không phản hồiKiểm tra MQTT_HOST và kết nối mạng
-2Lỗi mạngĐảm bảo WiFi đã kết nối trước
4Sai username/passwordKiểm tra MQTT_USERNAME, MQTT_PASSWORD
Publish failedPayload quá lớnTăng buffer trong mqtt_manager.cpp: mqttClient.setBufferSize(1024)

Lỗi BLE

  • No IoTLabs nodes found: Kiểm tra node đang chạy và thấy log [BLE] Advertising: IOTL:TH:... | Đặt 2 ESP32 cách nhau <2m
  • Invalid payload format: Tên BLE phải đúng format IOTL:TH:n01:285:68:92 — đủ 6 phần cách bằng dấu :
  • Sketch too big khi upload gateway BLE: Đổi Partition → Huge APP

Lỗi nRF24L01

  • Init FAILED: Checklist theo thứ tự: ① Nguồn 3.3V chưa? ② Tụ 100uF đã gắn chưa? ③ CE=GPIO4, CSN=GPIO5 đúng chưa? ④ SCK/MOSI/MISO đúng chưa? ⑤ Thử module khác
  • Không nhận được data: Gateway và node phải dùng cùng address="GW001", channel=76, RF24_250KBPS và struct NrfSensorPayload giống nhau
  • Data không ổn định: Tăng tụ lên 470uF, rút ngắn dây SPI (<10cm), thêm radio.setRetries(5, 15)

Debug chung

  • Mở Serial Monitor (115200) — tất cả log có tag: [WIFI] [MQTT] [GPIO] [BLE] [NRF]
  • Kiểm tra free_heap trong MQTT status payload — nếu <50KB thì gateway có thể thiếu RAM
  • Nhấn nút RESET/EN trên ESP32 nếu gateway bị treo
  • Dùng MQTTX subscribe topic gateway để xác nhận broker nhận được data