สารบัญ:

ESP-01 Motion Sensor พร้อม Deep Sleep: 5 ขั้นตอน
ESP-01 Motion Sensor พร้อม Deep Sleep: 5 ขั้นตอน

วีดีโอ: ESP-01 Motion Sensor พร้อม Deep Sleep: 5 ขั้นตอน

วีดีโอ: ESP-01 Motion Sensor พร้อม Deep Sleep: 5 ขั้นตอน
วีดีโอ: ESP8266 01 DEEP SLEEP 2024, พฤศจิกายน
Anonim
Image
Image

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

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

ฉันมีปัญหาเดียวกันในการทำให้เซ็นเซอร์ PIR ทำงานเพื่อกระตุ้นการนอนหลับลึกของ ESP-01 หลายเส้นทางจนมีเส้นทางที่ได้ผล

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

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

คุณจะเห็นหลายวงจรที่ใช้ GPIO16 เชื่อมต่อกับ ESP8266 Reset เนื่องจาก GPIO16 เป็นสัญญาณปลุก นี่เป็นเรื่องจริง แต่เป็นสัญญาณปลุกจากการนอนหลับตามกำหนดเวลา เราสามารถละเว้น PIN นี้ได้ ซึ่งถือว่าดีเพราะไม่มีใน ESP-01

โดยพื้นฐานแล้ว ทั้งหมดที่เราต้องการคือรับสัญญาณจาก PIR เพื่อทริกเกอร์พินรีเซ็ต ESP-01 ความยากแรกที่คุณจะคาดเดาได้ก็คือการรีเซ็ตจะทำงานบนสัญญาณ LOW และ PIR จะส่งสัญญาณ HIGH เมื่อถูกทริกเกอร์ รีเซ็ตยังต้องสูงหรือลอยเมื่อบูต ดังนั้นเพื่อให้สั้นนี้หลังจากลองใช้วงจรที่แตกต่างกันฉันจึงตัดสินใจใช้ทรานซิสเตอร์ NPN ที่มีตัวต้านทานแบบดึงขึ้นเพื่อให้ RESET pin สูงในระหว่างการบู๊ต เอาต์พุตจาก PIR มีน้อย แต่มีกระแสเบสเพียงพอในการเปิดทรานซิสเตอร์

ดังที่คุณเห็นในแผนภาพวงจรด้านล่าง ESP-01 ถูกปลุกให้ตื่นจากการนอนหลับลึกทุกครั้งที่ PIR ตรวจจับการเคลื่อนไหว

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

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

การตอบสนองที่ง่ายมากของฉันต่อพฤติกรรมนี้คือการเพิ่มตัวเก็บประจุเข้ากับเส้นแบ่งระหว่างเอาต์พุต PIR และฐานทรานซิสเตอร์ สิ่งนี้ทำให้ทรานซิสเตอร์เปิดขึ้นในขณะที่ตัวเก็บประจุกำลังชาร์จเท่านั้น เมื่อชาร์จแล้วจะไม่มีกระแสไฟเพิ่มขึ้นและทรานซิสเตอร์ก็ดับลง ตัวต้านทาน 5k ช่วยให้กระแสไหลลงสู่กราวด์ ฉันทดสอบสิ่งนี้ด้วย LED แทน ESP-01 และสามารถเห็นแฟลช LED เปิดอยู่ครู่หนึ่งก่อนที่จะปิด ชีพจรเล็ก ๆ นี้เพียงพอที่จะดึงพินรีเซ็ตลงกับพื้นชั่วขณะและนานพอที่จะกระตุ้นการรีเซ็ตออกจากโหมดสลีป

ขั้นตอนที่ 1: ESP-01 Deep Sleep Module

ESP-01 Deep Sleep Module
ESP-01 Deep Sleep Module
ESP-01 Deep Sleep Module
ESP-01 Deep Sleep Module

โมดูลการนอนหลับลึกใช้แรงดันไฟฟ้าที่ใช้งานได้สองระดับ ก้อนแบตเตอรี่สุ่ม 5v+ สำหรับ PIR และบอร์ดควบคุม 3.3 โวลต์สำหรับ ESP-01 ฉันยังรวมไดโอดเข้ากับวงจรเพื่อป้องกันชิ้นส่วนที่เสียหายจากแรงดันย้อนกลับ ใช้พลังงานพิเศษเล็กน้อยและทำให้แรงดันไฟของก้อนแบตเตอรี่ลดลง 0.7 โวลต์ คุณสามารถปล่อยไดโอดออกจากวงจรได้หากคุณแน่ใจว่าจะไม่ย้อนกลับสายของแบตเตอรี่ เพิ่มสวิตช์เพื่อความสะดวก

โมดูลนี้เป็นการอัปเดตเล็กน้อยสำหรับเลย์เอาต์นอนลึกดั้งเดิมของฉัน ในการกำหนดค่าแบบไม่หลับลึก PIR จะเชื่อมต่อโดยตรงกับพิน RX ของ ESP-01 ฉันใช้พิน RX ของ ESP-01 เป็นพินอินพุตสำหรับ PIR ด้วยเหตุผลบางประการ GPIO0 ไม่ทำงานเนื่องจากการบูต PIN เอาต์พุต PIR จะต่ำ ทำให้ ESP-01 เข้าสู่โหมดแฟลช ฉันไม่ได้ใช้ GPIO2 เพราะฉันไม่สามารถใช้ LED ในตัวสำหรับฟีดแบ็คได้ พิน RX และ TX มักถูกอธิบายว่าเป็นพิน IO พิเศษ แต่ประสบการณ์ของฉันคือ RX เป็นพิน INPUT พิเศษ และ TX เป็นพิน OUTPUT พิเศษ

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

นี่คือรายการชิ้นส่วนสำหรับโมดูลการนอนหลับลึก ESP-01:

บอร์ดต้นแบบ PCB 1 - 5 x 7 ซม.

ขั้วต่อ 1 - 2 ขา

ส่วนหัวหญิง 2 - 1 x 3

1 - AMS1117 - 3.3 แผงวงจรควบคุมแรงดันไฟฟ้า

1 - 1 x 3 หมุดหัวมุมขวาชาย

หมุดหัวปลั๊กตัวเมีย 1 - 1 x 3

ขาเสียบปลั๊กตัวเมีย 1 - 1 x 4 ตัว

เฮดเดอร์ตัวเมีย 1 - 2 x 4 ตัว

ตัวเก็บประจุ 1 - 1uf

1 - เซนเซอร์ตรวจจับความเคลื่อนไหว PIR HC-SR501

1 - 2N2222 ทรานซิสเตอร์

ตัวต้านทาน 1 - 10k

1 - ตัวต้านทาน 4.7k

ตัวต้านทาน 1 - 1k

1 - 1N4148 ไดโอด

1 - สลับ SS12D00G4 SPDT

1 - ESP-01

1 - 4AA แบตเตอรี่ Pack

โปรดทราบว่าในวิดีโอ แผงวงจรใช้อะแดปเตอร์เขียงหั่นขนม ESP-01 แทนส่วนหัว 2 x 4 แม้ว่าอะแดปเตอร์นี้จะบัดกรีได้ง่ายกว่า แต่ส่วนหัว 2 x 4 ก็ใช้งานได้ดีและเข้ากันได้ดีกว่า

ขั้นตอนที่ 2: รหัส ESP-01 Deep Sleep

รหัส Deep Sleep ทำหน้าที่สองอย่าง ส่งข้อความอีเมล (ผ่าน gmail เป็นค่าเริ่มต้น) และส่งคำขอเว็บ http ไปยังโมดูลออด ESP-01 ที่เกี่ยวข้องเพื่อเรียกเสียงกริ่ง

เมื่อเปิดใช้งาน โมดูลนี้จะมีตัวเลือกการแจ้งเตือนสองตัวเลือก และอาจมีประโยชน์อย่างยิ่งเมื่อคุณไม่สนใจข้อความอีเมล

คุณจะต้องอัปเดตโค้ดหกบรรทัดด้วยค่าเฉพาะของคุณเพื่อให้ร่างทำงาน:

const ถ่าน* ssid = "xxxxx"; // รหัสผ่าน WiFi SSIDconst char* ของคุณ = "xxxx"; // สตริงรหัสผ่าน WiFi ของคุณ Senders_Login = "xxxxx"; // ผู้ให้บริการอีเมลของคุณเข้าสู่ระบบ String Senders_Password = "xxxx"; // รหัสผ่านผู้ให้บริการอีเมลของคุณ

ถึง = "xxxxxx"; จาก = "xxxxxx"; // โดยทั่วไป Gmail ต้องการให้เหมือนกับ Senders_Login และอาจแทนที่

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

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

ฉันใช้ฟังก์ชันกะพริบเป็นตัวบ่งชี้กิจกรรมด้วยโมดูล ESP-01

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

หากคุณเลือกที่จะมีโมดูล Buzzer มากกว่าหนึ่งโมดูล เพียงเพิ่มการเรียกพิเศษของไคลเอนต์ http (ทำซ้ำสามบรรทัดของรหัส แต่เปลี่ยนที่อยู่ IP ที่ใช้และกำหนดตัวแปร httpCode เป็น int เพียงครั้งเดียวเท่านั้น!

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

ขั้นตอนที่ 3: โมดูล Buzzer ESP-01

โมดูลออด ESP-01
โมดูลออด ESP-01
โมดูลออด ESP-01
โมดูลออด ESP-01
โมดูลออด ESP-01
โมดูลออด ESP-01

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

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

ออดเชื่อมต่อกับขั้วต่อ USB 5v และมีบอร์ดควบคุม 3.3v อีกอันที่ให้พลังงานแก่ ESP-01

โมดูลออดจะทำงานโดยใช้ TX, GPIO0 หรือ GPIO2 สำหรับเอาต์พุต ในการกำหนดค่าของฉัน ฉันใช้ GPIO0 (ในรูปของโมดูล ลวดเชื่อมต่อกับ GPIO2 แต่ฉันได้ย้ายมันไปแล้ว) ในขณะที่ GPIO0 ไม่ทำงานสำหรับโมดูล deep sleep (เป็น INPUT) แต่ก็ใช้ได้ดีกับเลย์เอาต์นี้เป็น OUTPUT มันไม่ได้ถูกดึงไปที่พื้นในการบู๊ตซึ่งจะทำให้เกิดปัญหา ฉันเคยใช้ GPIO2 แต่หลังจากนั้นฉันก็ไม่สามารถใช้ LED ออนบอร์ดสำหรับข้อเสนอแนะใดๆ ได้ แต่ด้วยการใช้ GPIO0 สำหรับ OUTPUT ฉันสามารถใช้ LED บนบอร์ดได้

ฉันลองใช้ทรานซิสเตอร์ NPN เพื่อจ่ายไฟให้กับออดในวงจรเมื่อ ESP-01 ใส่สัญญาณ HIGH บนพิน GPIO0 แต่ผลลัพธ์ไม่สอดคล้องกันอย่างมาก ออดดูเหมือนต้องการส่งเสียงตลอดเวลา แม้จะใช้พลังงานเพียงเล็กน้อยก็ตาม ดังนั้นฉันจึงใช้ N channel MOSFET (2n7000) แทนและผลลัพธ์ก็ยอดเยี่ยม พิน IO ขับเกทตามต้องการ

ในขณะที่เราต้องการเพียงสองพินจากตัวเชื่อมต่อ USB Vcc(+) และ Gnd(-) ฉันใช้ส่วนหัว 5 พินเพื่อเชื่อมต่อกับบอร์ด PCB เพื่อความเสถียรเป็นพิเศษและสำหรับการบัดกรีก่อนที่จะเชื่อมต่อ USB กับตัวควบคุม บอร์ดควบคุม 3.3v ของฉันมาพร้อมกับพินที่ติดตั้งไว้ล่วงหน้าและในใจของฉันกลับหัวกลับหาง ดังนั้นในการใส่ตัวควบคุมลงในหมุดส่วนหัวคุณจะเห็นว่าแผงวงจรซ่อนอยู่ แต่ที่แย่กว่านั้นคือ vcc และ gnd บนตัวควบคุมจะกลับด้านจาก vcc และ gnd บนขั้วต่อ USB ดังนั้นสายไฟจึงข้ามไป

โปรดทราบว่า + พลังงานสำหรับออดที่ใช้งานอยู่นั้นมาจาก 5v ของ USB นอกจากนี้ ส่วนหัวของซ็อกเก็ตตัวเมีย 4 พินยังทำงานได้ดีกับตำแหน่งพินของออด

ESP-01 Buzzer รายการชิ้นส่วนโมดูล:

1 - 5 x 7 บอร์ด PCB

1 - ขั้วต่อ USB ขนาดเล็กพร้อมหัวพิน (7 พิน)

ส่วนหัวหญิง 2 - 1 x 3

1 - AMS1117-3.3 v บอร์ดควบคุมแรงดันไฟฟ้า

เฮดเดอร์ตัวเมีย 1 - 2 x 4 ตัว

ปลั๊กตัวเมีย 2 - 1 x 4 ตัว

1 - 2N7000 N-channel MOSFET

ตัวต้านทาน 1 - 10 โอห์ม

1 - 5v แอ็คทีฟ Buzzer

ขั้นตอนที่ 4: รหัสโมดูล Buzzer ESP-01

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

โปรดทราบว่า ESP-01 ได้รับการกำหนดค่าด้วยที่อยู่ IP แบบฮาร์ดโค้ด สิ่งนี้จำเป็นเพื่อให้โมดูล Deep Sleep เชื่อมต่อกับที่อยู่ Buzzer

เช่นเดียวกับโมดูลก่อนหน้า คุณจะต้องอัปเดตโค้ดสองบรรทัดด้วยค่าเฉพาะของคุณ:

//SSID และรหัสผ่านของเราเตอร์ WiFiconst char* ssid = "xxxxxxx";

รหัสผ่าน const char* = "xxxxxxxx";

หากคุณมีโมดูลออดหลายโมดูล แต่ละโมดูลควรโหลดด้วยที่อยู่ IP เฉพาะของตัวเอง

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

สำหรับเว็บเซิร์ฟเวอร์ คุณจะต้องเพิ่มโค้ดดังนี้:

server.on("/buzz2", buzz2);

ขั้นตอนที่ 5: ความคิดสุดท้าย

นี่เป็นคำสั่งแรกของฉัน ดังนั้นฉันอาจพลาดสิ่งที่ใช้ได้จริงที่ฉันควรจะรวมไว้ บอร์ดควบคุม AMS1117-3.3 ที่ฉันใช้มีไฟ LED ขนาดเล็กที่สว่างขึ้นเมื่อเปิดเครื่อง สำหรับโมดูลการนอนหลับลึกฉันไม่ต้องการให้สิ่งนี้เปิดอยู่และสิ้นเปลืองพลังงานโดยไม่จำเป็น ดังนั้นฉันจึงยกเลิกการขายสิ่งที่ฉันทำได้จากด้านหนึ่งของกระดานบนกระดานแล้วใช้มีดอรรถประโยชน์เพื่อตัดเส้นติดตาม ง่ายกว่าที่ฉันคิดและป้องกันไม่ให้ไฟ LED สว่างขึ้น ฉันไม่สามารถระบุได้ว่ากำลังดึงคืออะไรเมื่อ ESP-01 อยู่ในโหมดหลับลึก แต่ฉันอาจมีคำตอบในอีกไม่กี่สัปดาห์ข้างหน้า เพื่อนร่วมงานของฉันใช้เซ็นเซอร์ (ไม่ได้อยู่ในโหมดสลีป) และพบว่าแบตเตอรี่หมด (5AA) ในเวลาประมาณหนึ่งสัปดาห์ ฉันคิดว่าการตั้งค่านี้ควรให้เวลาหนึ่งเดือนหรือมากกว่านั้น เราจะได้เห็น

โมดูลการนอนหลับลึกมีราคาประมาณ $8 CDN ในชิ้นส่วน (ไม่รวมแบตเตอรี่!) และโมดูลเสียงกริ่ง $ 5

แนะนำ: