เปิด Deep Sleep แล้วทำไมแบตยังหมดเร็ว

เปิด Deep Sleep แล้วทำไมแบตยังหมดเร็ว - Image 1
14/07/2025•Admin Team•
ESP32IoTTutorial

พออยากให้อุปกรณ์เซนเซอร์อยู่กับแบตได้นานขึ้น สิ่งแรกที่มักนึกถึงก็คือให้บอร์ดหลับระหว่างรออ่านค่ารอบใหม่ เพราะถ้างานไม่ได้ต้องส่งข้อมูลตลอดเวลา การเปิดทุกส่วนทำงานค้างไว้ก็ดูสิ้นเปลืองอยู่เหมือนกัน

แต่เมื่อเปิด Deep Sleep แล้ว เราอาจยังไม่ได้ผลอย่างที่คาด เพราะคำว่าชิปหลับไม่ได้หมายความว่าทุกอย่างบนบอร์ดหยุดกินไฟพร้อมกัน ทั้งวงจรจ่ายไฟ ไฟแสดงสถานะ และอุปกรณ์ที่ต่อเพิ่มยังมีส่วนอยู่ในพลังงานที่แบตต้องจ่าย ซึ่งต้องดูรวมกับช่วงที่บอร์ดตื่นขึ้นมาทำงานด้วย

บทนี้จึงอยากแยกสิ่งที่ต้องตรวจให้เห็นก่อนว่าไฟกำลังถูกใช้ตรงไหน โดยยังไม่ใส่ตัวเลขอายุแบตหรือผลวัดของบอร์ดรุ่นใด เพราะค่าพวกนั้นต้องมาจากชุดอุปกรณ์และเงื่อนไขที่ทดลองจริงครับ

ชิปหลับแล้ว แต่บนบอร์ดยังมีอะไรต่ออยู่

บอร์ดพัฒนาที่หยิบมาทดลองมักมีมากกว่าตัว ESP32 อย่างวงจรรับไฟจาก USB ตัวแปลงแรงดัน และไฟแสดงสถานะที่ช่วยให้ใช้งานบนโต๊ะได้ง่าย ส่วนประกอบเหล่านี้อาจมีพฤติกรรมต่างกันไปในแต่ละรุ่น จึงต้องดูวงจรของบอร์ดที่ใช้อยู่ ไม่ใช้ชื่อชิปอย่างเดียวเป็นคำตอบของทั้งชุด

ถ้ามีเซนเซอร์ หน้าจอ หรือโมดูลอื่นรับไฟจากรางเดียวกัน ก็ต้องดูต่อว่าอุปกรณ์เหล่านั้นถูกสั่งให้เข้าโหมดประหยัดหรือยัง บางตัวมีวิธีหลับของมันเอง ขณะที่บางตัวต้องออกแบบวงจรตัดไฟเพิ่ม การให้ ESP32 หลับโดยยังปล่อยส่วนอื่นทำงานจึงอาจลดได้เพียงบางส่วนของการใช้พลังงาน

ส่วนประกอบบนบอร์ดและเซนเซอร์ที่ต้องตรวจการใช้ไฟแยกจากโหมดหลับของชิป

ลองจดรายการส่วนที่ได้รับไฟจากแบตไว้ก่อน แล้วค่อยตรวจว่าแต่ละส่วนอยู่ในสถานะใดระหว่างที่ชิปหลับ วิธีนี้ช่วยให้การหาสาเหตุแคบลง แทนการเริ่มจากเปลี่ยนแบตก้อนใหญ่ขึ้นโดยยังไม่รู้ว่ากำลังเลี้ยงอะไรอยู่ตลอดเวลา

มองหนึ่งรอบการทำงานให้ครบก่อน

ถึงกระแสช่วงหลับจะลดลงมากแล้ว บอร์ดก็ยังต้องตื่นมาทำงานตามรอบที่ตั้งไว้ ในช่วงนั้นมีทั้งการเริ่มระบบ เตรียมอุปกรณ์ อ่านค่า และเชื่อมต่อเพื่อส่งข้อมูล ซึ่งใช้เวลาและพลังงานต่างจากช่วงหลับ

ถ้างานอ่านเซนเซอร์ใช้เวลาสั้น แต่การเชื่อมเครือข่ายใช้เวลานานกว่ามาก การปรับเฉพาะคำสั่งเข้า Deep Sleep ก็อาจไม่ใช่จุดที่ช่วยได้มากที่สุด เราต้องแยกว่าเวลาตื่นหมดไปกับขั้นตอนไหน และมีงานใดที่ทำซ้ำทุกครั้งโดยไม่จำเป็นหรือเปล่า

ลำดับบูต เชื่อมต่อ อ่านค่า ส่งข้อมูล และหลับ เป็นแผนภาพแนวคิดไม่ใช่กราฟวัดกระแส

ในภาพเป็นเพียงลำดับการทำงาน ไม่ใช่กราฟที่วัดกระแสจริง สิ่งที่อยากให้เห็นคือช่วงตื่นหลายช่วงต้องถูกนับเข้าไปในรอบเดียวกับช่วงหลับด้วย พลังงานเฉลี่ยจึงขึ้นกับทั้งปริมาณที่ใช้และระยะเวลาของแต่ละช่วง

เมื่อรู้จังหวะแล้ว ค่อยกลับไปดูว่าต้องอ่านและส่งบ่อยเพียงใด เช่น ข้อมูลที่เปลี่ยนช้าอาจยอมรอได้มากกว่างานแจ้งเหตุ แต่การลดรอบส่งก็ต้องไม่ทำให้ข้อมูลตอบคำถามของงานไม่ได้ เป้าหมายจึงเป็นการประหยัดโดยยังรักษาหน้าที่ของอุปกรณ์ไว้

Light Sleep กับ Deep Sleep มีสิ่งที่ต้องเตรียมต่างกัน

โหมดหลับของ ESP32 มีรายละเอียดตามรุ่นและความสามารถที่เปิดใช้ โดยทั่วไป Deep Sleep จะปิดส่วนทำงานจำนวนมาก และเมื่อตื่นต้องเตรียมให้แอปกลับมาทำงานตามเส้นทางที่ออกแบบไว้ จึงไม่ควรคิดว่าโปรแกรมจะเดินต่อจากจุดเดิมเหมือนการหน่วงเวลา

ส่วน Light Sleep และการจัดการพลังงานอัตโนมัติก็มีเงื่อนไขของมันเอง ถ้างานยังต้องรักษาการเชื่อมต่อหรือรอตอบสนองบางอย่าง เราควรตรวจเอกสารของชิปและ framework ที่ใช้ก่อนเลือกโหมด เพื่อให้ความสามารถที่ต้องใช้ยังอยู่ตามที่ตั้งใจ

ประเด็นนี้มีผลกับการเก็บสถานะด้วย เพราะข้อมูลบางอย่างอาจต้องจำข้ามการตื่น เช่น ลำดับข้อมูลหรือค่าที่ตั้งไว้ แต่ไม่จำเป็นต้องเขียนทุกอย่างลง flash ทุกครั้ง ลองแยกว่าข้อมูลไหนสร้างใหม่ได้ ข้อมูลไหนต้องเก็บ และวิธีเก็บที่เลือกเหมาะกับรอบทำงานหรือไม่

วิธีปลุกต้องเหมาะกับสิ่งที่รออยู่

งานที่ตื่นมาอ่านค่าตามเวลาอาจใช้ตัวตั้งเวลาเป็นหลัก ขณะที่อุปกรณ์รับปุ่มหรือสัญญาณจากภายนอกอาจต้องใช้แหล่งปลุกอีกแบบ ซึ่งขาที่ใช้และการรองรับขึ้นกับรุ่นชิปด้วย จึงควรตรวจจากเอกสารของรุ่นจริงก่อนต่อสาย

ถ้าใช้สัญญาณภายนอก ต้องดูด้วยว่าระดับสัญญาณระหว่างรออยู่ในสภาพใด เพราะขาที่ลอยหรือสัญญาณที่ค้างอยู่ในเงื่อนไขปลุกอาจทำให้ตื่นซ้ำได้ การตรวจวงจรรอบขาปลุกจึงสำคัญพอๆ กับการเลือกคำสั่งในโค้ด

เมื่อตื่นขึ้นมาแล้ว แอปก็ควรรู้ว่าตื่นเพราะอะไร เพื่อทำงานเฉพาะที่ต้องทำและกลับไปหลับตามเงื่อนไขที่กำหนด หากทุกเหตุปลุกพาไปเชื่อมเครือข่ายเต็มชุดเหมือนกันทั้งหมด เราอาจใช้พลังงานกับงานที่ไม่จำเป็นต่อเหตุนั้นอยู่

ก่อนคิดอายุแบต ลองเตรียมการวัดให้ตรงกัน

การวัดควรเริ่มจากระบุว่ากำลังวัดที่ทางเข้าของบอร์ดหรือเฉพาะส่วนชิป เพราะตำแหน่งนี้ทำให้สิ่งที่นับรวมต่างกันได้ รวมถึงต้องดูว่าเครื่องมือที่ใช้ตามช่วงกระแสสั้นๆ ตอนตื่นได้เพียงใด การเห็นค่าเฉลี่ยบนหน้าจอหนึ่งค่าอาจยังอธิบายจังหวะทั้งหมดไม่ได้

จดรุ่นบอร์ด เซนเซอร์ที่ต่อ แรงดันที่ป้อน และรอบตื่นไว้คู่กับผล เพื่อให้กลับมาทดลองซ้ำได้ หากจะตัดไฟ LED หรือเปลี่ยนวงจรบางส่วนก็ควรเปรียบเทียบทีละอย่าง จะได้รู้ว่าผลต่างมาจากสิ่งใดจริง

อีกจุดที่ควรตรวจคือระหว่างวัดยังมีสาย USB หรืออุปกรณ์อื่นจ่ายไฟกลับเข้ามาหรือไม่ เพราะถ้าบอร์ดรับพลังงานจากมากกว่าหนึ่งทาง กระแสที่อ่านจากแบตอาจไม่ได้แทนสิ่งที่ระบบใช้ทั้งหมด การต่อเครื่องมือสำหรับดู log จึงต้องดูวงจรร่วมด้วย ไม่ให้เส้นทางที่เพิ่มมาช่วยการตรวจกลับเปลี่ยนเงื่อนไขที่กำลังวัดอยู่

นอกจากรอบที่ส่งข้อมูลสำเร็จ ควรดูรอบที่หาเครือข่ายไม่เจอด้วย เพราะถ้าอุปกรณ์ตื่นแล้วพยายามเชื่อมต่อไม่จบ ก็อาจค้างอยู่ในช่วงที่ใช้พลังงานสูงกว่าที่วางไว้ ลองกำหนดเวลาทำงานสูงสุดของรอบและวิธีกลับไปหลับเมื่อยังส่งไม่ได้ เพื่อให้งบพลังงานไม่ขึ้นกับการที่เครือข่ายต้องพร้อมตลอดเวลาครับ

เมื่อได้พลังงานของรอบทำงานแล้ว จึงค่อยใช้ร่วมกับข้อมูลแบตและวงจรจ่ายไฟเพื่อประมาณเวลาที่ใช้งานได้ และยังควรทดสอบระยะยาวตามสภาพใช้งานจริง เพราะความจุที่ระบุไว้ไม่ได้หมายความว่าจะนำมาใช้ได้เต็มตามตัวเลขในทุกเงื่อนไข

สรุป

การใช้ Deep Sleep ให้แบตอยู่กับงานได้นานขึ้นต้องดูทั้งอุปกรณ์ที่ยังรับไฟและงานที่เกิดขึ้นทุกครั้งเมื่อตื่น เริ่มจากแยกส่วนประกอบกับรอบทำงานให้ชัด แล้ววัดจากตำแหน่งและเงื่อนไขเดียวกัน ก่อนเลือกว่าจะลดไฟค้าง ลดเวลาตื่น หรือปรับความถี่การส่งข้อมูล วิธีนี้จะช่วยให้การประหยัดตรงกับส่วนที่ใช้พลังงานจริง และยังทำหน้าที่ของอุปกรณ์ได้ครบครับ

Command Eng Logo
CMD yourNgineers
เลขประจำตัวผู้เสียภาษี0805564000814
บทความ
ติดต่อบริษัท คอมมานด์ เอ็นจ์ จำกัด
81/36 เพอร์เฟค พาร์คบางนาตำบลบางเสาธง อำเภอบางเสาธงจังหวัดสมุทรปราการ 10570
team@commandeng.in.th+66 89 393 5191
Facebook Page | Command EngLine | Command Eng Official
© Copyright 2022-2026 Command Eng Co., Ltd.v1.0.4 · 0d556ab · 2026-11-03 15:23