- कम कीमत वाली analog quartz clock को ESP8266 module और Arduino sketch से नियंत्रित कर इंटरनेट समय के साथ sync करने वाला प्रोजेक्ट
- NTP server से हर 15 मिनट में समय लेकर सटीकता बनाए रखता है, और Daylight Saving Time का automatic adjustment भी शामिल है
- घड़ी की Lavet stepping motor coil को अलग करके उसे ESP8266 द्वारा नियंत्रित करने लायक modify किया गया है, और EERAM chip का उपयोग कर बिजली कटने पर भी घंटे, मिनट और सेकंड की सुइयों की स्थिति सहेजी जाती है
- शुरुआती सेटअप में ESP8266 द्वारा दी गई web page interface के जरिए घड़ी की सुइयों की स्थिति तय की जाती है, और उसके बाद status page पर SVG या HTML Canvas से घड़ी की स्थिति visualize की जाती है
- कम लागत वाले hardware से accurate network-synchronized clock बनाने का open source उदाहरण, जो embedded IoT control technology के व्यावहारिक उपयोग को दिखाता है
प्रोजेक्ट अवलोकन
- ESP8266 WiFi Analog Clock एक ऐसा सिस्टम है जो WEMOS D1 Mini ESP8266 module और Arduino sketch का उपयोग करके NTP(Network Time Protocol) server से स्थानीय समय अपने-आप प्राप्त कर दिखाता है
- हर 15 मिनट में NTP server से दोबारा connect होकर घड़ी की सटीकता बनाए रखता है
- Daylight Saving Time का automatic adjustment शामिल है
- यह प्रोजेक्ट कम कीमत वाली analog quartz clock पर आधारित है, जिसमें hardware modification और software control को जोड़ा गया है
हार्डवेयर संरचना
- उपयोग की गई घड़ी Walmart से 3.88 डॉलर में खरीदी गई analog quartz clock है
- घड़ी के quartz movement को खोलकर अंदर की Lavet stepping motor coil को quartz oscillator से अलग किया गया, और उसकी हर lead wire पर ESP8266 connection के लिए तार solder किए गए
- अधिकांश movement बिना screw के snap-fit तरीके से assembled होते हैं
- coil की तारें बाल से भी पतली होती हैं, इसलिए संभालते समय बहुत सावधानी चाहिए
- तैयार circuit में EERAM IC और अन्य components को perfboard पर लगाया गया है
सॉफ़्टवेयर का काम करने का तरीका
- AnalogClock.ino sketch में ESP8266 हर सेकंड 10 बार वास्तविक समय और घड़ी पर दिख रहे समय की तुलना करता है
- घड़ी पीछे हो तो सेकंड की सुई को तेज़ी से आगे बढ़ाकर sync किया जाता है
- घड़ी आगे हो तो वास्तविक समय के बराबर आने तक इंतज़ार किया जाता है
- सेकंड की सुई की movement, Lavet motor coil पर bipolar pulse लागू करके कराई जाती है
- motor की विशेषताओं के अनुसार PULSETIME constant को adjust करना पड़ता है, और परीक्षण में 30ms उपयुक्त पाया गया
- कम कीमत वाली घड़ियों में सुइयों की position feedback नहीं होती, इसलिए power cut होने पर position information खो जाती है
- इसे हल करने के लिए Microchip 47L04 Serial EERAM(4Kbit SRAM + EEPROM backup) का उपयोग किया गया
- घंटे, मिनट और सेकंड की सुइयों की स्थिति हर सेकंड save की जाती है और दोबारा power आने पर restore की जाती है
शुरुआती सेटअप और web interface
- sketch पहली बार चलने पर ESP8266 एक सरल web page देता है, जिससे उपयोगकर्ता घड़ी की सुइयों की शुरुआती स्थिति तय कर सके
- उसके बाद ESP8266, EERAM में saved data की मदद से सुइयों की position याद रखता है
- संचालन के दौरान यह status page भी देता है, जिसमें ये तीन display mode supported हैं
- SVG-आधारित clock face graphic display
- HTML Canvas-आधारित clock face display
- text-only status display
लाइसेंस और तकनीकी जानकारी
- प्रोजेक्ट MIT license के तहत जारी किया गया है
- मुख्य language composition है C++ 64.1% , C 35.9%
- GitHub repository पर 252 stars और 2 forks हैं
- संबंधित topic tags: arduino, esp8266, clock, analog-clock, ntp, hardware-construction
महत्व
- कम कीमत वाली घड़ी को Wi‑Fi synchronized smart clock में बदलने का व्यावहारिक उदाहरण
- ESP8266 और Arduino environment का उपयोग करके precise time control और web-based interface implementation का केस
- IoT hardware modification और firmware synchronization technology सीखने के लिए open source reference material
1 टिप्पणियां
Hacker News टिप्पणियाँ
खास तौर पर जो हिस्सा दिलचस्प लगा, वह “SRAM with EEPROM backup” चिप था
यह चिप घड़ी की सुइयों की स्थिति हर बार बदलने पर उसे स्थायी रूप से सेव करने देती है, और सामान्य EEPROM की तरह write endurance खर्च नहीं करती
इसकी कीमत भी 1 डॉलर से कम है, इसलिए यह hobby या छोटे प्रोजेक्ट्स के लिए उपयोगी component है
SRAM और EEPROM एक ही package के अंदर controller के साथ होते हैं, और पास में एक छोटा capacitor (4.7µF) होता है
SRAM बिजली रहने तक डेटा संभालकर रखता है, जबकि EEPROM बिजली बंद होने पर भी डेटा स्थायी रूप से स्टोर करता है, लेकिन उसकी write count सीमित होती है
controller जैसे ही voltage गिरना detect करता है, SRAM की सामग्री तुरंत EEPROM में dump कर देता है
capacitor उसी क्षण EEPROM में डेटा लिखने के लिए power देता है
बिजली वापस आने पर EEPROM का डेटा फिर से SRAM में copy कर दिया जाता है
कमी यह है कि इसकी capacity सिर्फ 4 kilobit है, लेकिन 1 डॉलर में अगर ऐसी समस्या हल हो जाए, तो यह पूरी तरह वाजिब है
खासकर अगर debug logs को ring buffer के रूप में सेव किया जाए, तो development PC से जुड़े बिना भी embedded system के crash logs सुरक्षित रखे जा सकते हैं
product link
लेकिन जहाँ मैं अभी रहता हूँ, वहाँ signal बहुत कमजोर है, इसलिए manual setting बहुत झंझट वाली है
इसलिए मैंने ESP32 और NTP server का उपयोग करके दुनिया भर के atomic clock signals को emulate करने वाला Arduino code खुद बनाया
अलग-अलग देशों के atomic clock broadcast signals का इतिहास और उनके अंतर समझना भी काफी रोचक है
इसका लाल projection brightness रात में बिल्कुल ठीक लगता है, लेकिन Wi-Fi sync नहीं होने से समय NTP या GPS से सेट नहीं किया जा सकता
projector वाला हिस्सा ribbon cable से main unit से जुड़ा है, इसलिए reverse engineering करने पर मज़ेदार हो सकता है
आदर्श रूप से, अगर ceiling पर LED matrix से समय के अलावा दूसरी जानकारी भी दिखाई जा सके तो अच्छा होगा
ऐसे products हैं, लेकिन buyfrixos.com की तरह बहुत महंगे हैं
मेरी build log link
मैं भी ऐसी कई low-cost wall clocks इस्तेमाल करता हूँ, और इनमें समय की गलती लगभग नहीं होती
मुझे लगता है कि इनमें jitter, NTP से भी कम हो सकता है
इन्हें कभी manually set करने की ज़रूरत नहीं पड़ती, और ये NTP clock से भी 1 सेकंड के भीतर मेल खाती हैं
बस oven या microwave clocks को बंद कर देने का मन करता है
एक महीने में करीब 1 मिनट आगे हो जाती हैं, इसलिए अच्छा होता अगर इनमें Wi-Fi sync होता
आजकल products लगातार ज्यादा बंद और restrictive होते जा रहे हैं, इसलिए सरल और hackable चीजें खुद बनाना याद आता है
कभी रोज़ी-रोटी के काम से फुर्सत मिली, तो मैं खुद सरल, विश्वसनीय और hacker-friendly appliances बनाना चाहूँगा
ऐसे projects सच में प्रभावित करते हैं
मैंने यह अपनी बेटी के लिए खरीदी थी, लेकिन इसका अनियमित टिक-टिक पढ़ाई के समय बाधा बनता था, इसलिए अभी यह बंद पड़ी है
फिर भी यह काफी मज़ेदार अनुभव था
लेकिन अगर घर में कई घड़ियाँ हों, तो असर पाने के लिए तय करना होगा कि सिर्फ उसी को मानना है
Gents Turret Movement परिचय
मैंने इसका उपयोग करके tuning fork आधारित electromechanical clock बनाई थी
यह किसी precise time source की बजाय tuning fork और 74xx logic से चलती है
हैरानी होती है कि Accutron अब भी ऐसी घड़ियाँ क्यों नहीं बनाता
resonant frequency का उपयोग करने का तरीका quartz clocks जैसा है, लेकिन देखने में ज्यादा आकर्षक है
नहीं तो spikes की वजह से malfunction हो सकता है या microcontroller को नुकसान पहुँच सकता है
opto-transistor से gate voltage अलग करना, और motor power अलग से देना आदर्श है
इसका GitHub project भी है
पुराने decks या LANC controllers अभी भी काफी बचे हुए हैं, इसलिए उनका उपयोगी पुनःप्रयोग हो सकता है
घड़ी को सही समय पता हो, तब भी अगर वास्तविक drive speed थोड़ा-थोड़ा चूके, तो cumulative error बढ़ सकता है
खासकर अगर PULSETIME constant 1ms भी गलत सेट हो, तो एक ही दिन में फर्क आ सकता है
बेशक, Lavet stepper motor सिद्धांततः स्थिर frequency-based steps बनाए रखती है, लेकिन wear या noise की वजह से bias आ सकता है
हालांकि wall clock के स्तर पर यह गलती शायद नज़रअंदाज़ करने लायक हो
Wikipedia विवरण देखने से समझना आसान है
जब तक कोई step miss नहीं होता, cumulative error नहीं होगा
यानी step count सही रखा जाए, तो वही पर्याप्त है