- วิธีการต่างๆเพื่อลดการใช้พลังงานให้น้อยที่สุด
- ส่วนประกอบที่จำเป็น
- ประเภทของโหมดสลีปใน ESP8266
- ESP8266 การเขียนโปรแกรมโหมด Deep Sleep
- การทดสอบ DeepSleep ใน ESP8266
เนื่องจากการปฏิวัติ IoT กำลังเฟื่องฟูทุกวันจำนวนอุปกรณ์ที่เชื่อมต่อจึงเพิ่มขึ้นอย่างรวดเร็ว ในอนาคตอุปกรณ์ส่วนใหญ่จะเชื่อมต่อกันและจะสื่อสารแบบเรียลไทม์ ปัญหาอย่างหนึ่งที่อุปกรณ์เหล่านี้ประสบคือการใช้พลังงาน ปัจจัยการใช้พลังงานนี้เป็นปัจจัยสำคัญและชี้ขาดอย่างหนึ่งสำหรับอุปกรณ์ IoT และโครงการ IoT ใด ๆ
อย่างที่เราทราบกันดีว่า ESP8266 เป็นหนึ่งในโมดูลที่ได้รับความนิยมมากที่สุดในการสร้างโครงการ IoT ดังนั้นในบทความนี้เราจะเรียนรู้เกี่ยวกับการประหยัดพลังงานในขณะที่ใช้ ESP8266 ในแอปพลิเคชัน IoT ใด ๆ ที่นี่เราอัปโหลดข้อมูลเซ็นเซอร์อุณหภูมิ LM35 ไปยังระบบคลาวด์ ThingSpeak ในช่วงเวลา 15 วินาทีและในช่วง 15 วินาทีนั้นESP8266 จะยังคงอยู่ในโหมด DeepSleepเพื่อประหยัดพลังงาน
วิธีการต่างๆเพื่อลดการใช้พลังงานให้น้อยที่สุด
มีหลายวิธีในการเพิ่มประสิทธิภาพการใช้พลังงานในอุปกรณ์ฝังตัวและอุปกรณ์ IoT การเพิ่มประสิทธิภาพสามารถทำได้บนฮาร์ดแวร์และซอฟต์แวร์ บางครั้งเราไม่สามารถปรับส่วนประกอบฮาร์ดแวร์ให้เหมาะสมเพื่อลดการใช้พลังงานได้ แต่แน่นอนว่าเราสามารถทำได้ในด้านซอฟต์แวร์โดยการเปลี่ยนและเพิ่มประสิทธิภาพคำแนะนำและฟังก์ชันของโค้ด ไม่เพียงแค่นี้นักพัฒนายังสามารถปรับเปลี่ยนความถี่นาฬิกาเพื่อลดการใช้พลังงานของไมโครคอนโทรลเลอร์เราสามารถเขียนเฟิร์มแวร์เพื่อให้ฮาร์ดแวร์เข้าสู่โหมดสลีปเมื่อไม่มีการแลกเปลี่ยนข้อมูลและทำงานที่กำหนดไว้ในช่วงเวลาหนึ่ง ๆ ในโหมดสลีปฮาร์ดแวร์ที่เชื่อมต่อจะใช้พลังงานน้อยลงมากและด้วยเหตุนี้แบตเตอรี่จึงอยู่ได้นาน คุณยังสามารถอ่านการลดการใช้พลังงานในไมโครคอนโทรลเลอร์หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับเทคนิคการใช้พลังงาน
โมดูล ESP8266 เป็นโมดูล Wi-Fi ที่ใช้กันอย่างแพร่หลายมาพร้อมกับคุณสมบัติมากมายในขนาดเล็กที่มีโหมดต่างๆรวมถึงโหมดสลีปและโหมดเหล่านี้สามารถเข้าถึงได้โดยใช้การปรับเปลี่ยนฮาร์ดแวร์และซอฟต์แวร์บางอย่าง หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ ESP8266 คุณสามารถตรวจสอบโครงการที่ใช้ IoT ของเราโดยใช้โมดูล Wi-Fi ESP826 บางส่วนมีดังต่อไปนี้:
- การเชื่อมต่อ ESP8266 NodeMCU กับไมโครคอนโทรลเลอร์ Atmega16 เพื่อส่งอีเมล
- การส่งข้อมูลเซ็นเซอร์อุณหภูมิและความชื้นไปยังฐานข้อมูลแบบเรียลไทม์ของ Firebase โดยใช้ NodeMCU ESP8266
- LED ควบคุม IoT โดยใช้ Google Firebase Console และ ESP8266 NodeMCU
ที่นี่เราจะอธิบายโหมดการนอนหลับที่แตกต่างกันที่มีอยู่ใน ESP8266 และแสดงให้เห็นถึงพวกเขาด้วยการส่งข้อมูลอุณหภูมิที่เซิร์ฟเวอร์ Thingspeakในช่วงเวลาปกติโดยใช้โหมดการนอนหลับลึก
ส่วนประกอบที่จำเป็น
- โมดูล Wi-Fi ESP8266
- เซ็นเซอร์อุณหภูมิ LM35
- สายจัมเปอร์
ประเภทของโหมดสลีปใน ESP8266
โมดูล Esp8266 ทำงานในโหมดต่อไปนี้:
- โหมดแอคทีฟ:ในโหมดนี้ชิปทั้งหมดเปิดอยู่และชิปสามารถรับส่งข้อมูลได้ เห็นได้ชัดว่านี่เป็นโหมดที่ใช้พลังงานมากที่สุด
- โหมดสลีปโมเด็ม:ในโหมดนี้ CPU จะทำงานและวิทยุ Wi-Fi จะปิดใช้งาน โหมดนี้สามารถใช้ในแอปพลิเคชันที่ต้องการให้ CPU ทำงานได้เช่นเดียวกับใน PWM ทำให้วงจรโมเด็ม Wi-Fi ปิดขณะเชื่อมต่อกับ Wi-Fi AP (Access Point) โดยไม่มีการส่งข้อมูลเพื่อเพิ่มประสิทธิภาพการใช้พลังงาน
- โหมด Light-sleep:ในโหมดนี้ CPU และอุปกรณ์ต่อพ่วงทั้งหมดจะหยุดชั่วคราว การปลุกเช่นการขัดจังหวะภายนอกจะปลุกชิป หากไม่มีการส่งข้อมูลสามารถปิดวงจรโมเด็ม Wi-Fi และ CPU ระงับเพื่อประหยัดการใช้พลังงาน
- โหมดดีพสลีป:ในโหมดนี้มีเพียง RTC เท่านั้นที่ทำงานได้และส่วนประกอบอื่น ๆ ทั้งหมดของชิปจะปิดอยู่ โหมดนี้มีประโยชน์เมื่อมีการส่งข้อมูลหลังจากช่วงเวลานาน
เชื่อมต่อเซ็นเซอร์อุณหภูมิ LM35กับขา A0 ของ NodeMCU
เมื่อโมดูล ESP มี HIGH บนขา RST แสดงว่าอยู่ในสถานะทำงาน ทันทีที่ได้รับสัญญาณ LOW บนขา RST ESP จะรีสตาร์ท
ตั้งเวลาโดยใช้โหมดหลับลึกเมื่อตัวจับเวลาสิ้นสุดลงแล้วพิน D0 จะส่งสัญญาณ LOW ไปยังพิน RST และโมดูลจะปลุกโดยการรีสตาร์ท
ตอนนี้ฮาร์ดแวร์พร้อมและได้รับการกำหนดค่าอย่างดี การอ่านอุณหภูมิจะถูกส่งไปที่เซิร์ฟเวอร์ Thingspeak สำหรับสิ่งนี้ให้สร้างบัญชีบน thingspeak.com และสร้างช่องโดยทำตามขั้นตอนด้านล่าง
ตอนนี้คัดลอกคีย์เขียน API ซึ่งจะใช้ในรหัส ESP.
ESP8266 การเขียนโปรแกรมโหมด Deep Sleep
Arduino IDE ที่ใช้งานง่ายจะใช้ในการเขียนโปรแกรมโมดูล ESP8266 ตรวจสอบให้แน่ใจว่าได้ติดตั้งไฟล์บอร์ด ESP8266 ทั้งหมดแล้ว
เริ่มต้นด้วยการรวมไลบรารีที่สำคัญทั้งหมดที่จำเป็น
# รวม
เมื่อรวมไลบรารีทั้งหมดเพื่อเข้าถึงฟังก์ชันแล้วกำหนดคีย์การเขียน API กำหนดค่าชื่อและรหัสผ่าน Wi-Fi ของคุณ จากนั้นประกาศตัวแปรทั้งหมดเพื่อใช้ในการจัดเก็บข้อมูลเพิ่มเติม
สตริง apiWritekey = "*************"; // แทนที่ด้วยคีย์ THINGSPEAK WRITEAPI ของคุณที่นี่ char ssid = "******"; // รหัสผ่านชื่อ wifi SSID ของคุณ= "******"; // wifi pasword
ตอนนี้ให้สร้างฟังก์ชันเพื่อเชื่อมต่อโมดูลกับเครือข่าย Wi-Fi โดยใช้ฟังก์ชัน wifi.begin ()จากนั้นตรวจสอบอย่างต่อเนื่องจนกว่าโมดูลจะไม่เชื่อมต่อกับ Wi-Fi โดยใช้ขณะวนซ้ำ
เป็นโมฆะ connect1 () { WiFi.disconnect (); ล่าช้า (10); WiFi.begin (ssid รหัสผ่าน); ในขณะที่ (WiFi.status ()! = WL_CONNECTED) {
สร้างฟังก์ชันอื่นเพื่อส่งข้อมูลไปยังเซิร์ฟเวอร์ Thingspeak ที่นี่สตริงจะถูกส่งซึ่งมีคีย์การเขียน API หมายเลขฟิลด์และข้อมูลที่ต้องส่ง จากนั้นส่งสตริงนี้โดยใช้ฟังก์ชัน client.print ()
ข้อมูลเป็นโมฆะ () { if (client.connect (เซิร์ฟเวอร์ 80)) { String tsData = apiWritekey; tsData + = "& field1 ="; tsData + = สตริง (tempF); tsData + = "\ r \ n \ r \ n"; client.print ("POST / อัพเดต HTTP / 1.1 \ n"); client.print ("โฮสต์: api.thingspeak.com \ n");
เรียกใช้ฟังก์ชัน connect1 ซึ่งจะเรียกใช้ฟังก์ชันเพื่อเชื่อมต่อ Wi-Fi จากนั้นอ่านค่าอุณหภูมิและแปลงเป็นเซลเซียส
การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); Serial.println ("อุปกรณ์อยู่ในโหมด Wake up"); เชื่อมต่อ 1 (); ค่า int = analogRead (A0); โวลต์ลอย = (ค่า / 1024.0) * 5.0; อุณหภูมิ = โวลต์ * 100.0;
ตอนนี้เรียกใช้ฟังก์ชัน data () เพื่ออัปโหลดข้อมูลบนระบบคลาวด์ thingspeak สุดท้ายฟังก์ชั่นที่สำคัญในการเรียกคือ ESP.deepSleep (); สิ่งนี้จะทำให้โมดูลเข้าสู่โหมดสลีปตามช่วงเวลาที่กำหนดซึ่งมีหน่วยเป็นไมโครวินาที
ข้อมูล(); Serial.println ("หลับลึก 15 วินาที"); ESP.deepSleep (15e6);
ฟังก์ชันลูปจะยังคงว่างเปล่าเนื่องจากงานทั้งหมดจะต้องดำเนินการเพียงครั้งเดียวจากนั้นรีเซ็ตโมดูลหลังจากช่วงเวลาที่กำหนด
วิดีโอที่ใช้งานได้และโค้ดเต็มจะได้รับในตอนท้ายของบทแนะนำ อัปโหลดรหัสในโมดูล ESP8266 นำลวด RST และ D0 เชื่อมต่อก่อนที่จะอัพโหลดโปรแกรมอื่นมันจะให้ข้อผิดพลาด
การทดสอบ DeepSleep ใน ESP8266
หลังจากอัปโหลดโปรแกรมคุณจะเห็นว่าการอ่านอุณหภูมิกำลังอัปโหลดบนระบบคลาวด์ ThingSpeak ทุก ๆ 15 วินาทีจากนั้นโมดูลจะเข้าสู่โหมดหลับลึก
เสร็จสมบูรณ์กวดวิชาเกี่ยวกับการใช้ลึกนอนในโมดูล ESP8266 การนอนหลับลึกเป็นคุณสมบัติที่สำคัญมากและรวมอยู่ในอุปกรณ์ส่วนใหญ่แล้ว คุณสามารถอ้างอิงบทช่วยสอนนี้และใช้วิธีนี้สำหรับโครงการต่างๆ ในกรณีที่มีข้อสงสัยหรือข้อเสนอแนะโปรดเขียนและแสดงความคิดเห็นด้านล่าง นอกจากนี้คุณสามารถเข้าถึงฟอรัมของเรา