- हमेशा brightness level 3 पर चालू होने वाली night light को level 1 पर लाने के लिए, power मिलते ही बटन को तीन बार अपने-आप दबा देने वाला ATtiny85-आधारित PCB बनाया गया
- capacitor dropper power supply केवल कुछ mA ही दे सकती है, इसलिए ESP8266 या Raspberry Pi Zero की जगह ATtiny85 चुना गया, जो 1MHz पर 1mA से कम power लेता है और sleep mode में μA स्तर तक गिर जाता है
- 8.3V को 3.3V में घटाने वाले HT7333 और button को ground से short करने वाले 2N3904 के आसपास circuit बनाया गया, और EasyEDA और JLCPCB से इसे डिज़ाइन व निर्मित किया गया
- Raspberry Pi 3 के GPIO और avrdude से chip को program किया गया; Home Assistant जब night light चालू करता है, तो यह थोड़ी देर रुककर बटन को तीन बार दबाता है और अपने-आप सबसे कम brightness पर स्विच कर देता है
- design files और C code को MIT लाइसेंस के तहत जारी किया गया है, लेकिन यह केवल उन devices पर लागू होता है जिनमें internal voltage 4~12V हो और button input ground से short होता हो; transformer के बिना चलने वाले mains-powered devices पर विशेष सावधानी ज़रूरी है
हर दिन दोहराए जाने वाले तीन button presses
- Home Assistant को इस तरह सेट किया गया था कि जब फ़ोन sleep focus mode में जाए, तो Zigbee wall plug के ज़रिए night light चालू हो जाए
- इस low-cost night light में auto-on behavior तय करने वाला switch और brightness level बदलने वाला button है, लेकिन power on होते ही यह हमेशा brightness level 3 से शुरू होती है
- button एक बार दबाने पर level 4, फिर level 5, और तीसरी बार level 1 हो जाता है
- मनचाही सबसे कम brightness पाने के लिए हर रात button तीन बार दबाना पड़ता था
- अंदर खोलकर देखा, लेकिन chip का नाम दिखाई नहीं दिया और कोई adjustment potentiometer भी नहीं था
- ऑनलाइन मिला यह तरीका भी इस product पर काम नहीं किया कि button को लगभग 10 सेकंड दबाकर EEPROM की default brightness बदली जा सके
सीमित power के हिसाब से चुना गया microcontroller
- button input को अपने-आप generate करने के लिए microcontroller सबसे उपयुक्त समाधान था
- night light में transformer की जगह capacitor से mains voltage घटाया जाता है, इसलिए power section से केवल कुछ mA ही मिल सकते हैं
- Wemos D1 Mini का ESP8266 boot होते समय और wireless enable करते समय सैकड़ों mA चाहता है
- Raspberry Pi Zero एक पूरा Linux computer है जिसे operating system boot करना पड़ता है
- इन दोनों devices के लिए अलग power supply या boot के समय को सहने वाला बड़ा storage capacitor और अतिरिक्त circuitry चाहिए होता
- अंत में चुना गया ATtiny85 classic Arduino की तरह AVR family का chip है और इसका code Arduino IDE में लिखा जा सकता है
- 1MHz पर इसकी current consumption 1mA से कम है
- sleep state में यह quartz clock जैसे μA स्तर तक गिर जाता है
- night light की LED, ATtiny85 की तुलना में हज़ारों गुना अधिक power इस्तेमाल करती है
असली button press को दोहराने वाला circuit
- night light की internal power rail 8.3V है और ATtiny85 को 3.3V चाहिए, इसलिए HT7333 voltage regulator इस्तेमाल किया गया
- 2N3904 transistor button signal line को ground से short करके असली button press जैसा behavior बनाता है
- आसपास के parts current limiting, गलत input से बचाव, और power stabilization का काम करते हैं
- ATtiny85 और transistor के बीच 1kΩ resistor, transistor में जाने वाली drive current को सीमित करता है
- 10kΩ resistor power on के दौरान transistor को off रखता है ताकि अनचाहा button input न बने
- 3 छोटे capacitors voltage regulator और chip को दी जाने वाली power को smooth करते हैं
- 3-pin header power, ground, और button signal line से जुड़ता है
- इसे तय संख्या में button अपने-आप दबाने वाले एक general-purpose device की तरह इस्तेमाल करने और PCB fabrication process सीखने के लिए अलग board के रूप में डिज़ाइन किया गया
EasyEDA में circuit और board design
- EasyEDA में पहले parts और connections को schematic के रूप में बनाया गया
GND,3V3जैसे एक ही नाम वाले connection points को router आपस में जोड़ देता है- असल में इस्तेमाल होने वाले parts चुनने पर PCB placement और bill of materials बनाने में मदद मिलती है
- PCB editing चरण में part placement, routing path, board shape, और printed elements को सीधे तय किया जा सकता है
- board पर open-source hardware logo और user name print किया गया
- circuit सरल होने के कारण इसे single-sided board के रूप में बनाया गया, और किसी complex routing या trace length/shape tuning की ज़रूरत नहीं पड़ी
JLCPCB fabrication और part assembly
- JLCPCB में असली parts और assembly का विकल्प चुनकर board order किया गया
- minimum order quantity 5 boards थी, लेकिन ज़रूरत केवल 1 board की थी, इसलिए ज़्यादातर parts हाथ से solder किए गए
- बहुत छोटे resistors और capacitors के लिए अतिरिक्त लागत कम होने के कारण JLCPCB की assembly service ली गई
- order के 4 दिन बाद board मिल गया
ATtiny85 programming और पहले से verification
- खाली ATtiny85 में bootloader नहीं होता, इसलिए इसे Arduino की तरह सीधे USB से नहीं जोड़ा जा सकता; इसके लिए अलग programmer चाहिए
- Raspberry Pi 3 के GPIO और avrdude से इसे program किया गया
- Pi header और chip को 6 jumper wires से जोड़ने के बाद एक command चलाया गया
- night light से तुरंत जोड़ने के बजाय output pin पर LED लगाकर पहले behavior verify किया गया
- final behavior तीन बार blink करने के बाद स्थायी रूप से रुक जाने का है
- test video में ज़रूरी count बाद में बदले जाने के कारण यह चार बार blink करता है
installation process और mains safety
- तैयार board को night light के अंदर solder किया गया, लेकिन parts और जगह बहुत छोटी होने के कारण काम मुश्किल था
- मौजूदा board का बड़ा capacitor उलटी polarity में लगा हुआ था, और multimeter जांच से इसकी पुष्टि की गई
- night light में transformer न होने के कारण अतिरिक्त PCB लगाने पर पूरा circuit mains power से जुड़ जाता है
- ATtiny85 को device में डालने से पहले flash करना होगा
- installation के बाद USB cable या Raspberry Pi को दोबारा नहीं जोड़ना चाहिए
sleep automation और अंतिम behavior
- जब घड़ी sleep state की जानकारी फ़ोन को देती है, तो फ़ोन Home Assistant को बताता है और Home Assistant Zigbee plug के ज़रिए night light चालू करता है
- power मिलते ही PCB, night light के गलत behavior से बचाने के लिए थोड़ी देर रुकता है, फिर button को तीन बार दबाकर brightness को level 1 पर ले आता है
- diffuser के पीछे internal wiring की shadow दिखाई देती है, लेकिन कमरे की दीवार पर नज़र नहीं आती, इसलिए वास्तविक उपयोग में कोई समस्या नहीं हुई
open source materials और लागू होने की शर्तें
- tymscar/button-presser पर निम्न सामग्री MIT लाइसेंस के तहत जारी की गई है
- वही board बनवाने के लिए Gerber files
- bill of materials और schematic
- ATtiny85 पर चलने वाला छोटा C code
- लागू करने से पहले README में बताए गए दो multimeter checks करना ज़रूरी है
- यह circuit केवल उन devices में काम करता है जिनमें internal 4~12V power rail हो और button दबाने पर signal ground से short होता हो
- कई low-cost devices इस शर्त को पूरा करते हैं, लेकिन सभी products पर यह लागू नहीं होता; mains power से चलने वाले devices पर काम शुरू करने से पहले safety guidelines ज़रूर देखें
अभी कोई टिप्पणी नहीं है.