यह फाइनल बटन है
पूरे इतिहास में, महान कलाकारों की हमेशा अपनी अलग कलात्मक अवधि और श्रृंखला रही है: क्लॉड मोनेट की जल-लिली, विन्सेंट वैन गॉग की सूरजमुखी श्रृंखला, पाब्लो पिकासो अपनी नीली अवधि के साथ और बहुत कुछ। हाल ही में, मैंने खुद को बटन के साथ प्रोजेक्ट बनाने के लिए तैयार किया है: मॉड्यूलर कुंजी मॉड्यूल , एम्बेडेड वर्कशॉप के लिए मैक्रो पैड और अब, मैग्नम ओपस, कीपैड श्रृंखला की अंतिम परियोजना - उन सभी पर शासन करने के लिए एक बटन, उन्हें खोजने के लिए एक बटन . उन सभी को लाने के लिए एक बटन, और आरजीबी के साथ उन्हें बाइंड करें।
टूटा नहीं? इसे ठीक मत करो।
मुद्दा यह है: इतने सारे कार्यक्रम और इतने सारे कार्य हो सकते हैं जो वे कर सकते हैं। आपके पास फोटोशॉप के लिए बटनों का एक समूह हो सकता है, कुछ आउटलुक के लिए, कुछ गेमिंग के लिए, लेकिन अंततः वे स्थिर हैं । और इस दिन और उम्र में, आपके पास कुछ ऐसा होना चाहिए जो संदर्भ-जागरूक हो।
वहाँ बहुत सारे मैक्रो पैड हैं... सभी आकार और आकारों में। कुछ ऐसे भी हैं जो मॉड्यूलर हैं । दिन के अंत में, वे सभी एक जैसे हैं। इसलिए लक्ष्य स्पष्ट है: एक मैक्रो पैड बनाएं जिसमें एक बटन (आरजीबी के साथ) हो जो संदर्भ-जागरूक हो और उन सभी को बदल देगा।
मुझे यह अच्छी तरह से याद है जब 2011 में रेज़र ने घोषणा की थी कि उनके अगले रेज़र ब्लेड लैपटॉप में अतिरिक्त कुंजियाँ होंगी जिन्हें वर्तमान में चल रहे गेम के आधार पर विशेष कार्यक्षमता के लिए मैप किया जा सकता है। फिर, उस पर छोटे एलसीडी के साथ स्ट्रीमडेक और ऑप्टिमस कीबोर्ड , फ्लक्स कीबोर्ड , थपोल के पॉलीकेबी जैसे कई अन्य स्क्रीन-ऑन-ए-की प्रोजेक्ट हैं जो सभी अद्भुत हैं।
कुछ समान खोजने के लिए इंटरनेट को खंगालते हुए, मुझे कुछ विकल्प मिले हैं, लेकिन वे बहुत महंगे थे और इसे अपने आप हैक करने का मज़ा बर्बाद कर देंगे। हालांकि, रुचि रखने वालों के लिए, एलसीडी-माउंटेड-बटन के कुछ विकल्प हैं जो ज्यादातर एनकेके नामक कंपनी द्वारा उत्पादित किए जाते हैं। सावधान रहें, इनकी कीमत 50 डॉलर से अधिक हो सकती है।
मैं तुम्हें दुनिया दिखा सकता हूं
ऐसा लगता है कि इलेक्ट्रॉनिक्स और हार्डवेयर के लिए एक जादुई भूमि है जो इतनी सस्ती है, इसका उपयोग न करना अपराध है। इसे अलीएक्सप्रेस कहा जाता है। वहीं, कुछ भी संभव है।
मैंने अपनी दृष्टि एक बहुत विशिष्ट उत्पाद पर रखी है जो पहली बार में वास्तविक नहीं लगता था, लेकिन इस परियोजना के लिए केंद्र बिंदु साबित हुआ: एक 0.42" मोनोक्रोम डिस्प्ले। इसकी कीमत प्रति स्क्रीन 1 डॉलर है। आपने इसे सही पढ़ा है। एक अमेरिकी डॉलर। इस तरह के कई चमत्कार हैं।
हालाँकि, गैर-मानक कनेक्टर्स के साथ प्रोटोटाइप घटक एक पूरी तरह से अलग बात है। इस मामले में, आपके पास एक कठिन समय होगा क्योंकि ये 0.42 "स्क्रीन 0.65 पिच के साथ 16-पिन कनेक्टर के साथ आते हैं। मैं इसे प्लग करने के लिए इस तरह के कनेक्टर के साथ एक ऑफ-द-शेल्फ पीसीबी खोजने में विफल रहा हूं। स्क्रीन का परीक्षण करने के लिए एक ब्रेडबोर्ड। इसलिए, मैंने इन 16 पिनों को बाल-पतले तारों को मैन्युअल रूप से टांका लगाने का सहारा लिया। और यह काम कर गया !
ऐसे अद्वितीय एसएमडी घटकों के साथ समस्या यह है कि वे अक्सर पैरों के निशान की कमी रखते हैं। यह मेरे साथ कई बार पहले ही हो चुका है, मुख्य रूप से USB-C घटकों के आसपास (जो प्रत्येक माउसर पर 2.5$ तक की कीमतों तक पहुंच सकते हैं , हालांकि सस्ते विकल्प उपलब्ध हैं, लेकिन स्टॉक में कभी नहीं)। आप आमतौर पर किसी न किसी माप के साथ पिक्सेलेटेड स्कीमैटिक्स के साथ रह जाते हैं। कुल मिलाकर, पैरों के निशान मैन्युअल रूप से बनाना सबसे बुरा अनुभव नहीं है, लेकिन आपको हर उस भगवान से प्रार्थना करने की ज़रूरत है जो मनुष्य को जानता है कि अंतिम पीसीबी घटक से मेल खाएगा। यह आमतौर पर … ठीक है।
अंतिम उत्पाद
वहां से, अंतिम पीसीबी बनाना कठिन नहीं था। अपनी पिछली परियोजनाओं के विपरीत, जहाँ मैंने VUSB बिट-बैंग्ड USB प्रोटोकॉल ( TinyPad , ATTiny85USB नमूना ) के साथ ATTiny85 का उपयोग किया था, मैंने थोड़ा अधिक जटिल नियंत्रक का उपयोग करने का निर्णय लिया है - ATmega32u4 एक बाहरी 16MHz क्रिस्टल के साथ, जो एक 8 है -बिट माइक्रो कंट्रोलर आमतौर पर Arduino Pro Micro के साथ उपयोग किया जाता है । इस नियंत्रक का उपयोग करना मेरी अपेक्षा से बहुत आसान साबित हुआ, ICSP पोर्ट के माध्यम से टांका लगाना और प्रोग्रामिंग करना एक हवा थी। अंत में, मैंने गैर-मानक 0.65 मिमी पिच का समर्थन करने और सभी उपयुक्त पिनों को VCC और GND से जोड़ने के लिए OLED स्क्रीन के लिए एक एडेप्टर PCB बनाया है।
सब कुछ ज़िप करें, इसे जेएलसीपीसीबी को भेजें और बाद में हांगकांग की एक छोटी यात्रा, मेरे पास सभी घटक तैयार हैं।
घर वापस, मैं सब कुछ एक साथ मिलाने के लिए बैठ गया। यह पता लगाने के बाद कि मैंने रिबन केबल के लिए OLED एडॉप्टर पर गलत पदचिह्न का उपयोग किया है और 32u4 बग़ल में टांका लगाने के बाद, मेरा अगला प्रयास अधिक फलदायी था।
घटक गुणवत्ता
मेरे आश्चर्य से बहुत अधिक, मुझे इस बिंदु पर पता चला है कि मुझे एक ही OLED स्क्रीन के दो अलग-अलग प्रकार भेजे गए थे। एक सही चमक के साथ और एक जिसे आपको स्क्रीन पर प्रदर्शित होने वाली चीज़ों को देखने के लिए जितना संभव हो उतना कठिन बनाने की आवश्यकता है। आपकी माइलेज भिन्न हो सकती है।
इससे निपटने के लिए, मैंने अपने द्वारा ऑर्डर किए गए सभी स्क्रीन का परीक्षण किया और पता लगाया कि कौन से खराब थे और कौन से काम कर रहे थे। इसने बहुत सारे हैंड सोल्डरिंग के साथ बहुत परीक्षण किया ।
एक बार जब मैंने स्क्रीन के वर्किंग बैच को बंद कर दिया, तो मैंने सब कुछ एक साथ मिला दिया और कोड लिखना शुरू कर दिया।
सॉफ़्टवेयर
जब सभी घटकों को मिलाप किया गया था, तो मैंने Arduino बूटलोडर को डिवाइस पर फ्लैश करने के लिए ICSP पोर्ट का उपयोग किया। इस तरह, बाद के सभी सॉफ़्टवेयर फ्लैश मालिकाना ICSP कनेक्टर के बजाय USB का उपयोग करके किए जा सकते हैं।
सॉफ्टवेयर बहुत सीधा है। पीसी की तरफ, एक पायथन स्क्रिप्ट है जो लगातार सबसे ऊपरी विंडो की निगरानी करती है और प्रत्येक परिवर्तन पर नियंत्रक को डेटा भेजती है।
ऐसा करने के लिए, MSDN के माध्यम से एक संक्षिप्त साहसिक कार्य आपको कुछ Win32API फ़ंक्शंस के कॉम्बो तक ले जाएगा जो काम को बहुत अच्छी तरह से करता है। पायथन के win32api पुस्तकालयों का उपयोग करते हुए, यह स्निपेट आपको न केवल विंडो से संबंधित प्रक्रिया देगा, बल्कि फाइन-ग्रेन फ़िल्टरिंग के लिए इसका शीर्षक भी देगा।
def getCurrentWindow():
# Get the currently foreground window
activeWindow = GetForegroundWindow()
# Get the TID, PID of the window
tid, pid = GetWindowThreadProcessId(activeWindow)
# Get the process handle
proc = OpenProcess(PROCESS_QUERY_INFORMATION, False, pid)
# Get the process image name
fullpath = GetModuleFileNameEx(proc, 0)
# Grab the window title
title = GetWindowText(activeWindow)
# Don't forget to close tha handle to prevent resource leakage
CloseHandle(proc)
return {"proc": path.basename(fullpath),
"title": title}
आखिरकार, पीसी और डिवाइस के बीच डेटा संचार का सबसे आसान रूप नियमित सीरियल-ओवर-यूएसबी प्रोटोकॉल बन गया। अरे, अगर फ्लिपर जीरो इसका इस्तेमाल करता है , तो क्यों नहीं।
क्योंकि धारावाहिक संचार धीमा और त्रुटि प्रवण है, कुछ बड़े डेटा लेनदेन, जैसे कि स्क्रीन छवियां, को विखंडू में भेजने की आवश्यकता होती है। डेटा को 64-बाइट चंक्स में विभाजित करने से कोई भी सिंक्रनाइज़ेशन समस्या हल हो जाती है।
प्रयोज्यता के दृष्टिकोण से, SSD1306 लाइब्रेरी का उपयोग करना कॉन्फ़िगर करना काफी आसान था और इसे पूरी तरह से बांधना और लगातार खींचे गए डिजिटल पिन 12 (32u4 डेटाशीट पर PD6) पर डिटेक्ट बटन दबाना बाकी है। और वोइला!
आप मेरे GitHub पेज पर सभी स्रोतों, बीओएम और स्कीमैटिक्स की जांच कर सकते हैं ।
इसे कार्रवाई में देखें
लिंक
वनबीटीएन —https://github.com/gili-yankovitch/onebtn
ट्विटर - @GiliYankovitch
लिंक्डइन - @YankovitchGil