ESP32 Mini Gateway - BLE Sensor Node
Cơ bản10/5/2026

ESP32 Mini Gateway - BLE Sensor Node

Xây dựng BLE Sensor Node với ESP32-C3: đọc dữ liệu cảm biến và gửi qua BLE Advertising đến ESP32 Mini Gateway.

ESP32-C3BLEBluetoothsensor nodeIoTArduinomock mode
0 lượt thích0 người đã làm1 giờ5 bước4 linh kiện
← Quay lại dự án
Hướng dẫn chi tiết

Bài 3: Real Mode — Đọc cảm biến thật

Kết nối DHT22 vào Header 1 (GPIO 4) và door sensor vào Header 2 (GPIO 5), bỏ comment DHT22 trong code, chuyển SENSOR_MODE sang real.

Cập nhật 10/05/2026

Kết nối phần cứng

Header 1 — Temperature Sensor (DHT22)

ESP32-C3      DHT22
─────────     ──────
3.3V ──────►  VCC
GPIO4 ─────►  DATA
GND  ──────►  GND

Thêm điện trở 10kΩ giữa VCC và DATA nếu module không có sẵn.

Header 2 — Door Sensor

ESP32-C3      Door Sensor
─────────     ───────────
3.3V ──────►  VCC
GPIO5 ─────►  OUT
GND  ──────►  GND

Không có door sensor? Dùng button: 1 chân → GPIO5, chân kia → GND. Nhấn = cửa mở.

Cài thư viện DHT

  • Arduino IDE: Tools → Manage Libraries → cài DHT sensor library by Adafruit + Adafruit Unified Sensor
  • PlatformIO: đã có trong platformio.ini, tự động cài

Cấu hình Real Mode

Bước 1 — Trong src/config.h:

#define SENSOR_MODE "real"

Bước 2 — Trong src/real_sensors.cpp, bỏ comment DHT22:

#include <DHT.h>
#define DHT_TYPE DHT22
DHT dht(TEMP_SENSOR_PIN, DHT_TYPE);

Và bỏ comment dht.begin() trong realSensorsSetup().

Và thay dòng placeholder trong readTemperatureSensor():

float t = dht.readTemperature();
if (isnan(t)) {
    LOG("[ERROR][REAL][TemperatureSensor]", "failed to read sensor on GPIO4");
    t = 0.0f;
}

Log khi chạy Real Mode

[REAL][TemperatureSensor] reading from GPIO4
[REAL][TemperatureSensor] temperature=28.4°C
[BLE][Advertising] payload=IOTLABS|node_001|real|TemperatureSensor|temperature=28.4|unit=C
[BLE][Advertising] advertise success

[REAL][DoorSensor] reading from GPIO5
[REAL][DoorSensor] door_open=true
[BLE][Advertising] payload=IOTLABS|node_001|real|DoorSensor|door_open=true
[BLE][Advertising] advertise success