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
