สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ข้างนอกเริ่มหนาวแล้ว แต่บางครั้งฉันก็ต้องการอากาศบริสุทธิ์ในห้องของฉัน ฉันเลยเปิดหน้าต่าง ออกจากห้อง ปิดประตูแล้วอยากกลับมาอีกใน 5-10 นาที และหลังจากนั้นสองสามชั่วโมง ฉันจำได้ว่าหน้าต่างเปิดอยู่… บางทีคุณอาจรู้จักเรื่องนี้หรือมีบุตร ซึ่งให้ประสบการณ์นี้แก่คุณ
วิธีแก้ปัญหาของฉันคือ Open Window Detector แบตเตอรี่มีอายุการใช้งานนานกว่าหนึ่งปี ดังนั้นเพียงแค่วางในฤดูใบไม้ร่วงและถอดออกในฤดูใบไม้ผลิ
ขั้นตอนที่ 1: รายการชิ้นส่วน
- กระดาน Digispark จากอีเบย์
- หูฟังเก่า.
- ปุ่มเล็ก ๆ สำหรับรีเซ็ต
- คอนเนคเตอร์สำหรับลำโพง - ไม่เช่นนั้นจะไม่สามารถตั้งโปรแกรมบอร์ดใหม่ได้
- ลวด.
- สำหรับแหล่งจ่ายไฟคุณต้องการ:
กล่องแบตเตอรี่ AAA พร้อมสวิตช์เปิด/ปิด คุณสามารถใช้แบตเตอรี่ที่เสื่อมสภาพได้ เนื่องจากโมดูลจะทำงานที่ 2.4 โวลต์
หรือ
แบตเตอรี่ lipo เก่า (ความจุถึง 30% ก็เพียงพอสำหรับจุดประสงค์นี้) และหากคุณยังไม่มี ให้ใช้ที่ชาร์จสำหรับแบตเตอรี่ lipo จาก eBay
หรือ
ที่ใส่เซลล์เหรียญ CR2032
และ
1A ไดโอด 1N4001 หรือเทียบเท่า - หรืออะไรก็ตามที่คุณมีในขนาดนี้- สำหรับการป้องกันขั้วย้อนกลับ
ขั้นตอนที่ 2: การเขียนโปรแกรม Digispark Board
การติดตั้งไดรเวอร์
คุณต้องติดตั้งไดรเวอร์ Digispark ก่อนจึงจะสามารถตั้งโปรแกรมบอร์ดได้ ดาวน์โหลดได้ที่นี่ เปิดและเรียกใช้ " InstallDrivers.exe"
การติดตั้ง Arduino IDE
ติดตั้งบอร์ด Digispark สำหรับ Arduino IDE ตามที่อธิบายไว้ใน
ฉันแนะนำให้ใช้เป็น URL บอร์ด Digispark ใน Arduino File/Preferences https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json ใหม่แทน https://digistump.com/package_digistump_index.json และติดตั้ง Digistump AVR Boards เวอร์ชัน 1.6.8.
เนื่องจากเราต้องการประหยัดพลังงาน นาฬิกาของบอร์ดจึงเปลี่ยนเป็น 1 MHz ในการตั้งค่าของเรา () คุณอาจเลือก Digispark (1mhz - No USB) เป็นบอร์ดในเมนูเครื่องมือ
รวบรวมและอัปโหลดโปรแกรมไปยังบอร์ด
ใน Arduino IDE ให้สร้างภาพร่างใหม่ด้วยไฟล์/ใหม่ และตั้งชื่อเช่น " OpenWindowAlarm " คัดลอกโค้ดจาก OpenWindowAlarm.ino
หรือ
ดาวน์โหลดและแยกที่เก็บ เปิดภาพร่างด้วยไฟล์ -> เปิด… และเลือกโฟลเดอร์ " OpenWindowAlarm"
รวบรวมและอัปโหลด โปรดทราบว่าการอัปโหลดนั้นจะไม่ทำงานหากเชื่อมต่อลำโพง หากทุกอย่างทำงานได้ดี ไฟ LED ในตัวของ Digispark จะกะพริบ 5 ครั้ง (สำหรับการหน่วงเวลาปลุก 5 นาที) จากนั้นจะเริ่มกะพริบหลังจาก 8 วินาทีโดยมีช่วงเวลา 24 วินาทีเพื่อส่งสัญญาณการอ่านอุณหภูมิแต่ละครั้ง
ขั้นตอนที่ 3: ลดพลังงาน
บอร์ด Digispark ของเราใช้ 5mA ที่ 3, 0 โวลต์ แบตเตอรี่ AAA 2 ก้อน (1000mAh) ใช้งานได้ 8 วัน แต่สามารถลดการใช้พลังงานลงเหลือ 26 µA ใน 3 ขั้นตอน
- การปิดใช้งาน LED เพาเวอร์โดยการทำลายลวดทองแดงที่เชื่อมต่อ LED เพาเวอร์กับไดโอดด้วยมีดหรือถอด / ปิดการใช้งานตัวต้านทาน 102 ตัวช่วยประหยัด 1.3 mA
- การถอดตัวควบคุมแรงดันไฟฟ้า VIN จะช่วยประหยัด 1.2 mA
-
การถอดตัวต้านทาน USB Pullup (ทำเครื่องหมาย 152) จาก 5 โวลต์ (VCC) จะบันทึก 2.5 mA ที่เหลือ ปลดโดยการทำลายลวดทองแดงที่ด้านข้างของตัวต้านทานที่ชี้ไปที่ ATTiny สิ่งนี้จะปิดการใช้งานอินเทอร์เฟซ USB และในทางกลับกันสามารถตั้งโปรแกรมบอร์ด Digispark ผ่าน USB หากต้องการเปิดใช้งานอีกครั้ง แต่ยังคงประหยัดพลังงาน ให้เชื่อมต่อตัวต้านทาน (ทำเครื่องหมาย 152) กับ USB 5 โวลต์โดยตรงที่ด้านนอกของไดโอด
ด้านที่ถูกต้องของไดโอดสามารถพบได้โดยใช้เครื่องทดสอบความต่อเนื่อง ด้านหนึ่งของไดโอดนี้เชื่อมต่อกับพิน 8 ของ ATtiny (VCC) อีกด้านเชื่อมต่อกับ USB 5 โวลต์
ตอนนี้ตัวต้านทาน USB pullup จะเปิดใช้งานก็ต่อเมื่อบอร์ด Digispark เชื่อมต่อกับ USB เช่น ระหว่างการเขียนโปรแกรมและบอร์ดใช้ 26 µA ระหว่างการนอนหลับ
หากคุณตั้งโปรแกรมฟิวส์ใหม่ คุณจะใช้พลังงาน 6 µA
ในการตั้งโปรแกรมฟิวส์ใหม่ คุณต้องมี ISP (ซึ่งสร้างได้ด้วย Arduino) และอะแดปเตอร์เชื่อมต่อ สำหรับการเขียนโปรแกรมซ้ำ คุณสามารถใช้สคริปต์นี้ได้
ขั้นตอนที่ 4: รีเซ็ตปุ่ม
หากคุณไม่ต้องการถอดไฟเพื่อรีเซ็ตการเตือน ให้เชื่อมต่อปุ่มรีเซ็ตระหว่าง PB5 และกราวด์ ฉันทำสิ่งนี้โดยเชื่อมต่อพื้นผิวทองแดง VIN ที่ไม่ได้เชื่อมต่อกับ PB5 และบัดกรีปุ่มรีเซ็ตโดยตรงกับรูพิน VIN และพื้นผิวขนาดใหญ่ของตัวควบคุมแรงดันไฟฟ้า VIN ที่ถูกถอดออก
หากคุณต้องการยกเลิกการรอการเชื่อมต่อ USB 5 วินาทีหลังจากรีเซ็ต คุณสามารถเปลี่ยนเคอร์เนลไมโครนิวเคลียสบน ATtiny85 เรียกใช้สคริปต์ "0_Burn_upgrade-t85_recommended.cmd" จากนั้นโหลดแอปพลิเคชัน OpenWindowAlarm อีกครั้งด้วย Arduino IDE
ขั้นตอนที่ 5: ลำโพง
ฉันถอดชุดหูฟังเก่าและต่อขั้วต่อตัวผู้เข้ากับสายเคเบิล
ขั้นตอนที่ 6: การใช้งาน
หากต้องการใช้บอร์ด ให้วางบอร์ดไว้บนขอบหน้าต่างและเชื่อมต่อกับแบตเตอรี่ หากอุณหภูมิบนธรณีประตูต่ำกว่าอุณหภูมิที่ตั้งเดิมของบอร์ด จะใช้เวลาเพิ่มอีก 5 นาทีเพื่อปรับใช้ค่าเริ่มต้นใหม่อย่างชาญฉลาด
จากนั้นคุณจะตื่นตระหนกหากคุณเปิดหน้าต่างทิ้งไว้นานกว่าห้านาที
ปฏิบัติการภายใน
- ตรวจพบหน้าต่างที่เปิดอยู่หลังจาก TEMPERATURE_COMPARE_AMOUNT * TEMPERATURE_SAMPLE_SECONDS (48) วินาทีของการอ่านอุณหภูมิที่มีค่า TEMPERATURE_DELTA_THRESHOLD_DEGREE (2) ต่ำกว่าอุณหภูมิ TEMPERATURE_COMPARE_DISTANCE * TEMPERATURE_SAMPLE_SECONDS (192 วินาที)
- การหน่วงเวลาจะดำเนินการโดยการนอนหลับ 3 ครั้งที่ `SLEEP_MODE_PWR_DOWN` เป็นระยะเวลา 8 วินาทีเพื่อลดการใช้พลังงาน
- การตรวจจับหน้าต่างที่เปิดอยู่จะแสดงด้วยการกะพริบที่ยาวขึ้น 20ms และคลิกสั้นๆ ทุกๆ 24 วินาที ดังนั้น เซ็นเซอร์ภายในจึงมีเวลา 3 นาทีในการปรับให้เข้ากับอุณหภูมิภายนอก เพื่อให้สามารถจับภาพการเปลี่ยนแปลงของอุณหภูมิได้เพียงเล็กน้อย ยิ่งอุณหภูมิเปลี่ยนแปลงมากเท่าใด ค่าเซ็นเซอร์ที่เร็วขึ้นก็จะเปลี่ยนแปลงและตรวจจับหน้าต่างที่เปิดอยู่
-
`OPEN_WINDOW_ALARM_DELAY_MINUTES` (5) นาทีหลังจากการตรวจพบหน้าต่างที่เปิดอยู่ การเตือนจะถูกเปิดใช้งาน
สัญญาณเตือนจะไม่เริ่มหรือสัญญาณเตือนที่เปิดใช้งานจะหยุดลงหากอุณหภูมิปัจจุบันสูงกว่าอุณหภูมิที่วัดได้ต่ำสุด (+ 1) เช่น ปิดหน้าต่างแล้ว
- นาฬิกาปลุกเริ่มต้นเป็นเวลา 10 นาที หลังจากนี้จะเปิดใช้งานเป็นระยะเวลา 10 วินาทีโดยเพิ่มขึ้นจาก 24 วินาทีเป็น 5 นาที
- ทุกๆ VCC_MONITORING_DELAY_MIN (60) นาที จะมีการวัดแรงดันแบตเตอรี่ ขึ้นอยู่กับประเภทแบตเตอรี่ที่ตรวจพบขณะเปิดเครื่อง (ดู VCC_VOLTAGE_LIPO_DETECTION (3.6 โวลต์)) แรงดันแบตเตอรี่ต่ำกว่า VCC_VOLTAGE_LOWER_LIMIT_MILLIVOLT_LIPO (3550) หรือ VCC_VOLTAGE_LOWER_LIMIT_MILLIVOLT_STANDARD มิลลิโวลต์จะแสดงโดยส่งเสียงบี๊บและไฟ LED กะพริบทุก 24 วินาที เฉพาะเสียงบี๊บ (ไม่ใช่เสียงแฟลช) เท่านั้นที่ยาวกว่าเสียงบี๊บสำหรับการตรวจจับหน้าต่างที่เปิดอยู่
- หลังจากเปิดเครื่องแล้ว เวลาในการตั้งค่าที่ไม่ใช้งานคือ 5 นาที หากกระดานเริ่มเย็นลงในช่วงเวลาที่ตกตะกอน ระบบจะเพิ่มนาทีที่ 4:15 (หรือ 8:30) เพื่อหลีกเลี่ยงสัญญาณเตือนที่ผิดพลาดหลังจากเปิดเครื่อง