Deep Sleep — การประหยัดพลังงานบน ESP32
สำหรับระบบรดน้ำที่อยู่ outside หรือใช้แบตเตอรี่ (Solar + Battery) การใช้ Deep Sleep ลดการใช้ไฟจาก ~80mA เหลือ ~5μA — เพิ่มอายุแบตเตอรี่จากวันเป็นเดือน!
โหมด Energy ของ ESP32
| โหมด | กระแสไฟ | CPU | WiFi | RTC |
|---|---|---|---|---|
| Active (WiFi on) | ~80-200mA | ✅ | ✅ | ✅ |
| Modem Sleep | ~5mA | ✅ | ❌ | ✅ |
| Light Sleep | ~0.5mA | หยุด | ❌ | ✅ |
| Deep Sleep | ~5μA | หยุด | ❌ | ✅ |
| Hibernation | ~2.5μA | หยุด | ❌ | ❌ |
Source Code — Deep Sleep + Timer Wake Up
#include <esp_sleep.h>
const int RELAY_VALVE = 26;
const int MOISTURE_PIN = 34;
const uS_TO_S_FACTOR = 1000000;
const int TIME_TO_SLEEP = 3600; // 1 ชั่วโมง
RTC_DATA_ATTR int bootCount = 0;
void setup() {
Serial.begin(115200);
bootCount++;
Serial.println("🔄 Boot #" + String(bootCount));
pinMode(RELAY_VALVE, OUTPUT);
digitalWrite(RELAY_VALVE, HIGH);
// อ่านค่าเซ็นเซอร์
int moisture = analogRead(MOISTURE_PIN);
int moistPct = map(moisture, 2800, 1200, 0, 100);
moistPct = constrain(moistPct, 0, 100);
Serial.print("ความชื้น: "); Serial.print(moistPct); Serial.println("%");
if (moistPct < 30) {
Serial.println("💧 รดน้ำ 30 วินาที");
digitalWrite(RELAY_VALVE, LOW);
delay(30000);
digitalWrite(RELAY_VALVE, HIGH);
}
// เข้า Deep Sleep
Serial.println("😴 Deep Sleep " + String(TIME_TO_SLEEP) + " วินาที");
esp_deep_sleep(TIME_TO_SLEEP * uS_TO_S_FACTOR);
}
void loop() {} // ไม่ได้ใช้
การเชื่อมต่อ RTC External Wake Up
// ใช้ DS3231 Alarm เพื่อปลุก ESP32 ตามเวลา
// ESP32 Pin: GPIO26 = EXT0 Wakeup Source
void setupWakePin() {
pinMode(26, INPUT_PULLUP);
esp_sleep_enable_ext0_wakeup(GPIO_NUM_26, LOW);
// ESP32 จะตื่นเมื่อ GPIO26 เป็น LOW
}
การออกแบบระบบ Solar + Battery
[Solar Panel 12V 20W] ── [Solar Charge Controller] ── [Battery 12V 7Ah]
│
[Buck 12V→5V]
│
[ESP32 + Sensors]
Tip: ใช้ RTC_DATA_ATTR ในการเก็บค่านับระหว่าง Deep Sleep เพราะ RAM ปกติจะถูกล้างทุกครั้งที่ตื่น — ตัวแปรที่ประกาศด้วย RTC_DATA_ATTR จะถูกเก็บไว้ใน RTC Memory
💰 ราคาประมาณการ
| อุปกรณ์ | ราคา |
|---|---|
| ESP8266 NodeMCU | ~80-150 บาท |
| ESP32 | ~150-280 บาท |
| ESP32-CAM | ~250-400 บาท |
| Buck Converter 3.3V | ~30-50 บาท |
| Battery Holder 18650 | ~20-50 บาท |
🔋 ทางเลือกใช้แบตเตอรี่
ESP32 กินไฟ ~80mA (WiFi on) — ใช้ แบต Li-ion 18650 (~60-120 บาท/ก้อน) จ่ายไฟ 3.7V → Buck Boost 3.3V ใช้กับ ESP32 ได้ 5-10 ชม. ต่อการชาร์จ
ใช้ Deep Sleep (ดูบทความที่เกี่ยวข้อง) — กระแสลดเหลือ ~5μA ทำให้แบต 18650 อยู่ได้หลายเดือน!
🔋 แนะนำ: ใช้ Power Bank 5V 10000mAh (~200 บาท) ต่อ USB เข้า ESP32 ผ่านขา 5V → 3.3V Regulator ใช้ได้ 3-5 วันต่อการชาร์จ 1 ครั้ง (ถ้าไม่ Deep Sleep)
⚠️ หมายเหตุ: เนื้อหานี้ค้นคว้าและเรียบเรียงโดย Hermes AI — ข้อมูลทางเทคนิคควรตรวจสอบก่อนนำไปใช้งานจริง