- ผู้เขียนสร้าง PCB ที่ใช้ ATtiny85 ซึ่งเมื่อมีไฟเข้าจะกดปุ่มแทนสามครั้ง เพื่อปรับโคมไฟกลางคืนที่เปิดขึ้นมาพร้อมความสว่างระดับ 3 ให้ลดลงเป็นระดับ 1
- แหล่งจ่ายไฟแบบลดแรงดันด้วยคาปาซิเตอร์จ่ายกระแสได้เพียงไม่กี่ mA จึงเลือกใช้ ATtiny85 แทน ESP8266 หรือ Raspberry Pi Zero เพราะใช้กระแสน้อยกว่า 1mA ที่ 1MHz และลดลงถึงระดับ μA เมื่ออยู่ในโหมดประหยัดพลังงาน
- วงจรสร้างโดยมี HT7333 สำหรับลด 8.3V เป็น 3.3V และ 2N3904 สำหรับชอร์ตปุ่มลงกราวด์เป็นหลัก จากนั้นออกแบบและผลิตด้วย EasyEDA และ JLCPCB
- โปรแกรมชิปด้วย GPIO ของ Raspberry Pi 3 และ avrdude เมื่อ Home Assistant เปิดโคมไฟกลางคืน ระบบจะรอสักครู่แล้วกดปุ่มสามครั้งเพื่อสลับเป็น ความสว่างต่ำสุด โดยอัตโนมัติ
- ไฟล์ออกแบบและโค้ด C เผยแพร่ภายใต้ ไลเซนส์ MIT แต่ใช้ได้เฉพาะกับอุปกรณ์ที่มีแรงดันภายใน 4~12V และอินพุตปุ่มถูกชอร์ตลงกราวด์เท่านั้น อุปกรณ์ไฟบ้านเชิงพาณิชย์ที่ไม่มีหม้อแปลงต้องระมัดระวังเป็นพิเศษ
การกดปุ่มสามครั้งที่ต้องทำซ้ำทุกวัน
- Home Assistant ถูกตั้งค่าให้เปิดโคมไฟกลางคืนผ่านปลั๊กติดผนัง Zigbee เมื่อโทรศัพท์มือถือเข้าสู่โหมดโฟกัสสำหรับการนอน
- โคมไฟกลางคืนราคาถูกมีสวิตช์สำหรับกำหนดว่าจะเปิดอัตโนมัติหรือไม่ และมีปุ่มเปลี่ยนระดับความสว่าง แต่ทุกครั้งที่เปิดเครื่องจะเริ่มที่ ความสว่างระดับ 3
- กดปุ่มหนึ่งครั้งจะเป็นระดับ 4 กดอีกครั้งเป็นระดับ 5 และครั้งที่สามจะเป็นระดับ 1
- เพื่อให้ได้ความสว่างต่ำสุดที่ต้องการ จึงต้องกดปุ่มสามครั้งทุกคืน
- ลองเปิดดูภายในแล้ว แต่ไม่เห็นชื่อชิปและไม่มีตัวต้านทานปรับค่าได้สำหรับการปรับแต่ง
- วิธีที่พบออนไลน์ซึ่งบอกว่ากดปุ่มค้างไว้ประมาณ 10 วินาทีเพื่อเปลี่ยนค่าความสว่างเริ่มต้นใน EEPROM ก็ใช้ไม่ได้กับผลิตภัณฑ์นี้
ไมโครคอนโทรลเลอร์ที่เหมาะกับพลังงานจำกัด
- ทางออกที่เหมาะที่สุดคือใช้ ไมโครคอนโทรลเลอร์ เพื่อสร้างอินพุตปุ่มโดยอัตโนมัติ
- โคมไฟกลางคืนลดแรงดันไฟบ้านด้วยคาปาซิเตอร์แทนหม้อแปลง ดังนั้นภาคจ่ายไฟจึงจ่ายได้เพียงไม่กี่ mA
- ESP8266 ใน Wemos D1 Mini ต้องใช้กระแสหลายร้อย mA ระหว่างบูตและเปิดฟังก์ชันไร้สาย
- Raspberry Pi Zero เป็นคอมพิวเตอร์ Linux เต็มรูปแบบที่ต้องบูตระบบปฏิบัติการ
- อุปกรณ์ทั้งสองต้องมีแหล่งจ่ายไฟแยก หรือต้องมีคาปาซิเตอร์เก็บประจุขนาดใหญ่และวงจรเพิ่มเติมเพื่อรับช่วงกระแสตอนบูต
- ตัวเลือกสุดท้ายคือ ATtiny85 ซึ่งอยู่ในตระกูล AVR เช่นเดียวกับ Arduino รุ่นคลาสสิก และสามารถเขียนโค้ดด้วย Arduino IDE ได้
- เมื่อทำงานที่ 1MHz ใช้กระแสน้อยกว่า 1mA
- ในโหมดประหยัดพลังงานจะลดลงถึงระดับ μA ใกล้เคียงกับนาฬิกาควอตซ์
- LED ของโคมไฟกลางคืนใช้พลังงานมากกว่า ATtiny85 หลายพันเท่า
วงจรที่จำลองการกดปุ่มจริง
- รางไฟภายในโคมไฟกลางคืนมีแรงดัน 8.3V และ ATtiny85 ต้องการ 3.3V จึงใช้ เรกูเลเตอร์แรงดัน HT7333
- ทรานซิสเตอร์ 2N3904 ชอร์ตสายสัญญาณปุ่มลงกราวด์เพื่อจำลองการกดปุ่มจริง
- อุปกรณ์รอบข้างทำหน้าที่จำกัดกระแส ป้องกันอินพุตผิดพลาด และทำให้ไฟเลี้ยงเสถียร
- ตัวต้านทาน 1kΩ ระหว่าง ATtiny85 กับทรานซิสเตอร์จำกัดกระแสขับที่ไหลเข้าสู่ทรานซิสเตอร์
- ตัวต้านทาน 10kΩ คงให้ทรานซิสเตอร์อยู่ในสถานะปิดระหว่างเปิดเครื่อง เพื่อป้องกันอินพุตปุ่มที่ไม่ตั้งใจ
- คาปาซิเตอร์ขนาดเล็ก 3 ตัวช่วยกรองไฟเลี้ยงที่จ่ายให้เรกูเลเตอร์แรงดันและชิป
- เฮดเดอร์ 3 พินเชื่อมต่อกับไฟเลี้ยง กราวด์ และสายสัญญาณปุ่ม
- ออกแบบเป็นบอร์ดแยกต่างหากเพื่อใช้เป็นอุปกรณ์อเนกประสงค์ที่กดปุ่มแทนตามจำนวนครั้งที่กำหนด และเพื่อเรียนรู้กระบวนการผลิต PCB
ออกแบบวงจรและบอร์ดใน EasyEDA
- ใน EasyEDA เริ่มจากเขียนผังวงจรโดยระบุชิ้นส่วนและความสัมพันธ์การเชื่อมต่อ
- จุดเชื่อมต่อที่มีชื่อเดียวกัน เช่น
GND,3V3จะถูกเราเตอร์เชื่อมเข้าหากัน - หากระบุชิ้นส่วนที่จะใช้จริง ก็สามารถนำไปใช้จัดวาง PCB และทำรายการวัสดุได้
- จุดเชื่อมต่อที่มีชื่อเดียวกัน เช่น
- ในขั้นตอนแก้ไข PCB สามารถกำหนดตำแหน่งชิ้นส่วน เส้นทางการเดินลาย รูปร่างบอร์ด และองค์ประกอบที่พิมพ์บนบอร์ดได้เอง
- พิมพ์โลโก้โอเพนซอร์สฮาร์ดแวร์และชื่อผู้ใช้ไว้บนบอร์ด
- วงจรเรียบง่ายจึงทำเป็น บอร์ดหน้าเดียว และไม่จำเป็นต้องปรับแก้การเดินลายที่ซับซ้อนหรือความยาวและรูปทรงของเส้นสัญญาณ
การผลิตกับ JLCPCB และการประกอบชิ้นส่วน
- สั่งผลิตบอร์ดกับ JLCPCB โดยเลือกชิ้นส่วนจริงและเลือกว่าจะให้ประกอบให้หรือไม่
- แม้จำนวนสั่งขั้นต่ำคือ 5 แผ่น แต่ต้องใช้จริงเพียง 1 แผ่น จึงบัดกรีชิ้นส่วนส่วนใหญ่เอง
- ตัวต้านทานและคาปาซิเตอร์ที่มีขนาดเล็กมากมีค่าใช้จ่ายเพิ่มไม่มาก จึงใช้บริการประกอบของ JLCPCB
- ได้รับบอร์ดภายใน 4 วัน หลังสั่งซื้อ
การโปรแกรม ATtiny85 และการตรวจสอบล่วงหน้า
- ATtiny85 เปล่าไม่มี bootloader จึงไม่สามารถต่อ USB โดยตรงแบบ Arduino ได้ และต้องใช้โปรแกรมเมอร์แยกต่างหาก
- โปรแกรมด้วย GPIO ของ Raspberry Pi 3 และ avrdude
- ต่อเฮดเดอร์ของ Pi กับชิปด้วยสายจัมเปอร์ 6 เส้น แล้วรันคำสั่งเดียว
- ก่อนเชื่อมต่อเข้ากับโคมไฟกลางคืนโดยตรง ได้ต่อ LED ที่พินเอาต์พุตเพื่อตรวจสอบการทำงานก่อน
- พฤติกรรมสุดท้ายคือกะพริบสามครั้งแล้วหยุดค้างต่อไป
- ในวิดีโอทดสอบมีการแก้จำนวนครั้งที่ต้องการทีหลัง จึงกะพริบสี่ครั้ง
ขั้นตอนติดตั้งและความปลอดภัยกับไฟบ้าน
- บัดกรีบอร์ดที่เสร็จแล้วเข้าไปภายในโคมไฟกลางคืน โดยทำงานได้ยากเพราะชิ้นส่วนและพื้นที่มีขนาดเล็กมาก
- คาปาซิเตอร์ขนาดใหญ่บนบอร์ดเดิมถูกติดตั้งสลับขั้ว และยืนยันได้ด้วย การตรวจด้วยมัลติมิเตอร์
- เนื่องจากโคมไฟกลางคืนไม่มีหม้อแปลง เมื่อติดตั้ง PCB เพิ่มเข้าไป วงจรทั้งหมดจะเชื่อมต่อกับไฟบ้าน
- ต้องแฟลช ATtiny85 ก่อนใส่เข้าไปในอุปกรณ์
- หลังติดตั้งแล้ว ห้ามเชื่อมต่อสาย USB หรือ Raspberry Pi กลับเข้าไปอีก
ระบบอัตโนมัติก่อนนอนและการทำงานสุดท้าย
- เมื่อนาฬิกาส่งสถานะเข้านอนไปยังโทรศัพท์ โทรศัพท์จะแจ้ง Home Assistant และ Home Assistant จะเปิดโคมไฟกลางคืนผ่านปลั๊ก Zigbee
- PCB ที่ได้รับไฟจะ รอสักครู่ เพื่อไม่ให้โคมไฟกลางคืนทำงานผิดพลาด จากนั้นกดปุ่มสามครั้งเพื่อเปลี่ยนเป็นความสว่างระดับ 1
- เห็นเงาของสายไฟภายในหลังแผ่นกระจายแสง แต่ไม่ปรากฏบนผนังห้อง จึงไม่มีปัญหาในการใช้งานจริง
ทรัพยากรโอเพนซอร์สและเงื่อนไขการใช้งาน
- เผยแพร่ทรัพยากรต่อไปนี้ที่ tymscar/button-presser ภายใต้ ไลเซนส์ MIT
- ไฟล์ Gerber สำหรับผลิตบอร์ดแบบเดียวกัน
- รายการวัสดุและผังวงจร
- โค้ด C สั้น ๆ ที่รันบน ATtiny85
- ก่อนนำไปใช้ต้องทำการตรวจสอบด้วยมัลติมิเตอร์ 2 อย่างตามที่ระบุใน README
- วงจรนี้ทำงานได้เฉพาะกับอุปกรณ์ที่ภายในมี รางไฟ 4~12V และเมื่อกดปุ่ม สัญญาณจะถูกชอร์ตลงกราวด์
- อุปกรณ์ราคาถูกหลายรุ่นเข้าเงื่อนไขนี้ แต่ไม่ได้ใช้ได้กับทุกผลิตภัณฑ์ และอุปกรณ์ที่ทำงานด้วยไฟบ้านต้องตรวจสอบแนวทางความปลอดภัยก่อนลงมือ
ยังไม่มีความคิดเห็น