Hệ thống giám sát và điều khiển năng lượng mặt trời với ESP32
Trung cấp11/6/2026

Hệ thống giám sát và điều khiển năng lượng mặt trời với ESP32

Xây dựng mô hình DC điện áp thấp dùng ESP32 để đo điện áp, dòng điện, công suất năng lượng mặt trời, giám sát pin và điều khiển tải DC qua MQTT.

ESP32Solar EnergyMQTTINA219IoTDC PowerEnergy Monitoring
0 lượt thích0 người đã làm2 giờ6 bước9 linh kiện
← Quay lại dự án
Hướng dẫn chi tiết

Phần 4: Lập trình ESP32 đo năng lượng và gửi dữ liệu MQTT

Cài thư viện, cấu hình Wi-Fi, MQTT topic, đọc INA219, đọc pin qua ADC, gửi telemetry và nhận lệnh điều khiển tải DC.

Cập nhật 11/06/2026

Phần 4: Lập trình ESP32 để đo và gửi dữ liệu MQTT

Firmware của ESP32 có bốn nhiệm vụ chính: kết nối Wi-Fi, đọc INA219, đọc điện áp pin qua ADC và gửi dữ liệu lên MQTT. Ngoài ra ESP32 cũng nhận lệnh điều khiển tải từ MQTT.

Thư viện cần cài

Thư việnMục đích
WiFiKết nối ESP32 vào mạng Wi-Fi ở chế độ STA.
PubSubClientKết nối MQTT broker, publish telemetry và subscribe lệnh điều khiển.
WireGiao tiếp I2C.
Adafruit INA219Đọc điện áp, dòng điện và công suất từ INA219.

Topic MQTT

TopicChiều dữ liệuÝ nghĩa
iotlabs/solar01/telemetryESP32 gửi lênDữ liệu điện áp, dòng, công suất, điện áp pin, trạng thái tải.
iotlabs/solar01/statusESP32 gửi lênTrạng thái ONLINE hoặc OFFLINE.
iotlabs/solar01/cmd/loadDashboard gửi xuốngLệnh ON, OFF hoặc AUTO.
iotlabs/solar01/alertESP32 gửi lênCảnh báo pin yếu hoặc không cho bật tải.

Payload telemetry mẫu

{
  "pv_voltage": 12.60,
  "pv_current_ma": 320.0,
  "pv_power_mw": 4032.0,
  "battery_voltage": 12.10,
  "load": true,
  "mode": "AUTO"
}

Logic bảo vệ pin

Khi ở chế độ AUTO, ESP32 sẽ tắt tải nếu điện áp pin thấp hơn ngưỡng LOAD_OFF_VOLTAGE. Tải chỉ được bật lại khi điện áp pin cao hơn LOAD_ON_VOLTAGE. Cách dùng hai ngưỡng khác nhau gọi là hysteresis, giúp tránh relay bật tắt liên tục khi điện áp dao động.

Tham sốVai trò
LOAD_OFF_VOLTAGENgưỡng tắt tải khi pin yếu.
LOAD_ON_VOLTAGENgưỡng cho phép bật lại tải khi pin phục hồi.
BATTERY_CALIBRATIONHệ số hiệu chỉnh điện áp pin sau khi so sánh với đồng hồ đo.

⚠️ Ngưỡng pin trong code chỉ là ví dụ cho mô hình 12V. Với pin lithium, LiFePO4 hoặc ắc quy chì, cần đặt ngưỡng theo datasheet pin, BMS và bộ sạc đang dùng.

Code firmware

Code mẫu nằm trong phần Code mẫu của project. Trước khi nạp, cần thay Wi-Fi, MQTT host, username, password và kiểm tra mức active của relay.

✅ Sau khi nạp code, mở Serial Monitor ở 115200 baud để kiểm tra ESP32 kết nối Wi-Fi, MQTT và đọc dữ liệu cảm biến.