Arduino Open Window Detector - สำหรับฤดูหนาว: 6 ขั้นตอน
Arduino Open Window Detector - สำหรับฤดูหนาว: 6 ขั้นตอน
Anonim
Arduino Open Window Detector - สำหรับ Winter
Arduino Open Window Detector - สำหรับ Winter

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

วิธีแก้ปัญหาของฉันคือ Open Window Detector แบตเตอรี่มีอายุการใช้งานนานกว่าหนึ่งปี ดังนั้นเพียงแค่วางในฤดูใบไม้ร่วงและถอดออกในฤดูใบไม้ผลิ

ขั้นตอนที่ 1: รายการชิ้นส่วน

ส่วนรายการ
ส่วนรายการ
ส่วนรายการ
ส่วนรายการ
ส่วนรายการ
ส่วนรายการ
ส่วนรายการ
ส่วนรายการ
  1. กระดาน Digispark จากอีเบย์
  2. หูฟังเก่า.
  3. ปุ่มเล็ก ๆ สำหรับรีเซ็ต
  4. คอนเนคเตอร์สำหรับลำโพง - ไม่เช่นนั้นจะไม่สามารถตั้งโปรแกรมบอร์ดใหม่ได้
  5. ลวด.
  6. สำหรับแหล่งจ่ายไฟคุณต้องการ:

กล่องแบตเตอรี่ AAA พร้อมสวิตช์เปิด/ปิด คุณสามารถใช้แบตเตอรี่ที่เสื่อมสภาพได้ เนื่องจากโมดูลจะทำงานที่ 2.4 โวลต์

หรือ

แบตเตอรี่ lipo เก่า (ความจุถึง 30% ก็เพียงพอสำหรับจุดประสงค์นี้) และหากคุณยังไม่มี ให้ใช้ที่ชาร์จสำหรับแบตเตอรี่ lipo จาก eBay

หรือ

ที่ใส่เซลล์เหรียญ CR2032

และ

1A ไดโอด 1N4001 หรือเทียบเท่า - หรืออะไรก็ตามที่คุณมีในขนาดนี้- สำหรับการป้องกันขั้วย้อนกลับ

ขั้นตอนที่ 2: การเขียนโปรแกรม Digispark Board

การเขียนโปรแกรม Digispark Board
การเขียนโปรแกรม Digispark Board
การเขียนโปรแกรม Digispark Board
การเขียนโปรแกรม 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 ขั้นตอน

  1. การปิดใช้งาน LED เพาเวอร์โดยการทำลายลวดทองแดงที่เชื่อมต่อ LED เพาเวอร์กับไดโอดด้วยมีดหรือถอด / ปิดการใช้งานตัวต้านทาน 102 ตัวช่วยประหยัด 1.3 mA
  2. การถอดตัวควบคุมแรงดันไฟฟ้า VIN จะช่วยประหยัด 1.2 mA
  3. การถอดตัวต้านทาน 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) เพื่อหลีกเลี่ยงสัญญาณเตือนที่ผิดพลาดหลังจากเปิดเครื่อง