ESP32 Deep Sleep — ประหยัดแบตเตอรี่สำหรับระบบนอกบ้าน

Deep Sleep — การประหยัดพลังงานบน ESP32

สำหรับระบบรดน้ำที่อยู่ outside หรือใช้แบตเตอรี่ (Solar + Battery) การใช้ Deep Sleep ลดการใช้ไฟจาก ~80mA เหลือ ~5μA — เพิ่มอายุแบตเตอรี่จากวันเป็นเดือน!

โหมด Energy ของ ESP32

โหมดกระแสไฟCPUWiFiRTC
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 — ข้อมูลทางเทคนิคควรตรวจสอบก่อนนำไปใช้งานจริง

⚠️ เนื้อหาถูกสร้างโดย AI (Hermes AI) — ข้อมูลทางเทคนิคอาจต้องตรวจสอบก่อนนำไปใช้งานจริง