विषयसूची:

एक बेहतर रास्पबेरी पाई पावर बटन बनाएं: 4 कदम
एक बेहतर रास्पबेरी पाई पावर बटन बनाएं: 4 कदम

वीडियो: एक बेहतर रास्पबेरी पाई पावर बटन बनाएं: 4 कदम

वीडियो: एक बेहतर रास्पबेरी पाई पावर बटन बनाएं: 4 कदम
वीडियो: Raspberry Pi 4: Add Power Button (The Easy Way) 2024, नवंबर
Anonim
Image
Image

रास्पबेरी पावर-ऑफ या शटडाउन बटन बनाना बहुत आसान है। वेब पर इस तरह के बहुत सारे प्रोजेक्ट हैं और कुछ इंस्ट्रक्शंस पर यहां हैं, लेकिन उनमें से कोई भी (जो मैं देख सकता हूं) आपको यह नहीं बताता कि आपका पाई वास्तव में कब बंद हो गया है और इसलिए बिजली खींचना सुरक्षित है। वास्तव में वे यह भी नहीं मानते कि बटन-प्रेस देखा गया है।

ऐसी परियोजनाएं भी हैं, जो बंद हो चुकी पाई को फिर से शुरू करने के लिए हैं, लेकिन न ही ये आपको कोई दृश्य प्रतिक्रिया देते हैं।

लेकिन ऐसे बटन की जरूरत किसे है? यदि आप मेरी तरह थोड़े बेवकूफ हैं, या यहां तक कि सिर्फ एक महत्वाकांक्षी बेवकूफ हैं, तो आप हमेशा स्थानीय या नेटवर्क पर अपने पीआई में लॉग इन कर सकते हैं और टाइप कर सकते हैं sudo shutdown -h now । लेकिन अगर आप गैर-तकनीकी उपयोगकर्ताओं के लिए कोई प्रोजेक्ट बना रहे हैं, तो वह काम नहीं करेगा। सच है, आप लगभग हमेशा पावर कॉर्ड खींचकर दूर हो सकते हैं, लेकिन ध्यान दें, मैंने लगभग हमेशा कहा था! हर किसी की किस्मत देर-सबेर खत्म हो जाती है। मेरे पास पिछले हफ्ते ही एक एसडी कार्ड मर गया था, हालांकि मुझे कभी नहीं पता चलेगा कि यह वास्तव में अचानक बिजली की कमी के कारण था या नहीं।

मेरे मामले में मुझे एक पीआई में एक पावर बटन जोड़ने की ज़रूरत थी, जिसे हम रिकॉर्डिंग के लिए मिडी अनुक्रमक के रूप में उपयोग करते हैं और चर्च में भजन और गाने बजाते हैं, जब हमारे पास लाइव पियानोवादक उपलब्ध नहीं होता है। मैं हमेशा शटडाउन कमांड टाइप कर सकता हूं लेकिन जब मैं वहां नहीं होता हूं तो मुझे इसे डी-स्किल करने की आवश्यकता होती है।

यहां मेरा इरादा आपको एक तैयार उत्पाद देने का नहीं है, जो कि कई अन्य इंस्ट्रक्शंस की तरह खूबसूरती से 3 डी प्रिंटेड केस के साथ पूरा हो। हर किसी के पास इसका अलग-अलग उपयोग होगा या अपने स्वयं के प्रोजेक्ट में शामिल करना चाहते हैं। इसके बजाय, मैं आपको उस तकनीक के साथ स्थापित करूंगा जिसे आप अपने प्रोजेक्ट में जोड़ सकते हैं, चाहे वह मीडिया सेंटर हो, IoT डिवाइस हो, या कुछ और।

(वीडियो में मैं इसे एक पाई ज़ीरो v1.2 और एक मॉनिटर के साथ प्रदर्शित कर रहा हूं जिसे मैंने एक पुनर्निर्मित लैपटॉप स्क्रीन और सुदूर पूर्व के एक नियंत्रक से बनाया है।)

चरण 1: डिजाइन

यह काम किस प्रकार करता है
यह काम किस प्रकार करता है

मेरा पावर बटन आपके लिए यही करेगा:

  • जब पाई चल रही होती है, तो एक एलईडी लगातार जलती रहती है। यदि इसे मैन्युअल रूप से बंद किया जाता है तो एलईडी केवल तभी बंद होती है जब बिजली को अनप्लग करना सुरक्षित हो।
  • दौड़ते समय, यदि आप कम से कम एक सेकंड के लिए बटन दबाते हैं तो शटडाउन शुरू हो जाता है और एलईडी हर सेकंड एक चौथाई सेकंड के लिए चमकती है जब तक कि यह बिजली को अनप्लग करने के लिए सुरक्षित न हो।
  • शटडाउन स्थिति से (यदि पावर को हटाया नहीं गया है), बटन दबाने से यह बूट होना शुरू हो जाता है और बूट होने तक हर सेकंड एक चौथाई के लिए एलईडी फ्लैश करता है। (इसमें ssh और vnc जैसी सभी सेवाएँ चलने में थोड़ा अधिक समय लग सकता है।)

घटक बहुत सस्ते हैं। जो तुम्हे चाहिए वो है:

  • ATTiny85 (Arduino- संगत चिप)
  • 3 प्रतिरोधक: 2 x 330Ω और 1 x 10kΩ
  • 1 एलईडी - मैं हरे या नीले रंग का सुझाव देता हूं, लेकिन यह आपकी पसंद है
  • ब्रेडबोर्ड और जम्पर तार, या स्ट्रिपबोर्ड, या फिर आप इसे बनाना चाहते हैं।

चरण 2: यह कैसे काम करता है

सभी पीआई पावर बटन के साथ, यह एक जीपीआईओ पिन को कम स्थिति में खींचता है ताकि पीआई पर चल रहे एक सहायक प्रोग्राम को शटडाउन अनुरोध का संकेत दिया जा सके। मैंने GPIO4 (पिन 7) का उपयोग किया है लेकिन आप किसी अन्य पिन का उपयोग कर सकते हैं।

यह बताने का एकमात्र तरीका है कि एक पीआई ने शटडाउन पूरा कर लिया है, टीएक्सडी पिन 8 देख रहा है, जो तब कम हो जाता है। यह सीरियल कंसोल के सक्षम होने पर निर्भर करता है, जो कि यह डिफ़ॉल्ट रूप से होता है। वास्तव में टीएक्सडी नियमित रूप से ऊपर और नीचे जाएगा, जबकि इसे सीरियल कंसोल के रूप में उपयोग किया जा रहा है, लेकिन यह एक समय में लगभग 30 एमएस से अधिक के लिए कम नहीं होगा, यहां तक कि सबसे धीमी सामान्य बॉड दर पर भी। यह अभी भी एक सीरियल कंसोल के लिए इस्तेमाल किया जा सकता है क्योंकि हम इसे निष्क्रिय रूप से देखते हैं।

रिबूट करने के लिए, हमें संक्षेप में SCL1 (पिन 5) को नीचे खींचना होगा। यह पिन किसी भी I2C डिवाइस (मेरे मिडी इंटरफ़ेस सहित) द्वारा उपयोग किया जाता है, लेकिन बूट शुरू करने के बाद हम इसे अकेला छोड़ देते हैं।

अधिकांश जटिलता Arduino स्केच में है जिसे हम ATTiny85 में लोड करते हैं। यह एक "राज्य मशीन" लागू करता है - किसी भी समस्या को कोड करने का एक बहुत ही उपयोगी और शक्तिशाली तरीका जिसे कई "राज्यों" द्वारा दर्शाया जा सकता है। वॉशिंग मशीन ठीक उसी तरह काम करती है। राज्य धोने के चक्र में चरणों का प्रतिनिधित्व करते हैं, और प्रत्येक परिभाषित करता है कि उस बिंदु पर मशीन को क्या करना चाहिए (मोटर या पंप चलाने के लिए, वाल्व खोले या बंद करने के लिए) और कौन से सेंसर इनपुट (तापमान, जल स्तर, टाइमर) निर्धारित करें कि अगले राज्य में कब जाना है और कौन सा अगला राज्य चुनना है।

हस्त रेखाचित्र राज्य आरेख का मेरा पहला मसौदा है, जिसमें राज्य के सभी परिवर्तन दर्शाए गए हैं। यह सिर्फ आपको यह दिखाने के लिए है कि आप शुरू में अपने राज्यों और राज्य के संक्रमणों की योजना कैसे बना सकते हैं - यह पूरी तरह से सटीक नहीं हो सकता है जैसा कि मैंने डिबगिंग शुरू करने से पहले किया था।

हमारे मामले में, हमारे पास 6 राज्य हैं जिन्हें मैंने बंद, बूट अनुरोध, बूटिंग, रनिंग, शटडाउन अनुरोध, और शट डाउन कहा है। (बंद करने के बाद यह वापस बंद में चला जाता है।) इन्हें स्केच में टिप्पणियों द्वारा पहचाना जाता है, और प्रत्येक के लिए, आगे की टिप्पणियों में कहा गया है कि इसे क्या करना चाहिए और कौन सी घटनाएं इसे दूसरे राज्य में ले जाएंगी।

अधिकांश शटडाउन बटनों की तुलना में पाई पर चलने वाला सहायक प्रोग्राम थोड़ा अधिक जटिल है। यह शटडाउन शुरू करके GPIO पिन पर एक लंबी कम पल्स का जवाब देता है, लेकिन यह GPIO पिन को कम खींचकर अपने आप में एक छोटी पल्स का भी जवाब देता है। इस प्रकार ATTiny85 बता सकता है कि यह चल रहा है और इसलिए यह BOOTING से RUNNING स्थिति में जा सकता है।

चरण 3: एक डेमो प्रोटोटाइप बनाना

एक डेमो प्रोटोटाइप का निर्माण
एक डेमो प्रोटोटाइप का निर्माण
एक डेमो प्रोटोटाइप का निर्माण
एक डेमो प्रोटोटाइप का निर्माण
एक डेमो प्रोटोटाइप का निर्माण
एक डेमो प्रोटोटाइप का निर्माण

प्रदर्शन उद्देश्यों के लिए आप इसे एक सोल्डरलेस ब्रेडबोर्ड पर प्रोटोटाइप कर सकते हैं जैसा कि दिखाया गया है लेकिन मैंने आपको योजनाबद्ध भी दिया है ताकि आप स्ट्रिपबोर्ड या कस्टम पीसीबी का उपयोग करके अपना खुद का लेआउट तैयार कर सकें, शायद एक व्यापक परियोजना का हिस्सा।

चरण 4: ATTiny85 की प्रोग्रामिंग

Arduino स्केच और हेल्पर प्रोग्राम इस चरण से जुड़े हुए हैं। अपने Arduino स्केच फोल्डर में, PiPwr नाम का फोल्डर बनाएं और उसमें PiPwr.ino फाइल को कॉपी करें। Arduino IDE को लॉन्च करने पर अब आप इसे अपनी स्केचबुक में पाएंगे।

ATTiny85 प्रोग्रामिंग के कई तरीके हैं। यदि आपके पास बूटलोडर स्थापित है तो आप केवल कुछ पाउंड की लागत वाले ATTiny85 विकास बोर्ड का उपयोग कर सकते हैं। यह USB पोर्ट के जरिए आपके पीसी से कनेक्ट होता है। मैंने एक हिडियट का इस्तेमाल किया जो अनिवार्य रूप से वही है लेकिन प्रोटोटाइप क्षेत्र के साथ।

फ़ाइल के अंतर्गत Arduino IDE में - वरीयताएँ, जोड़ें

digistump.com/package_digistump_index.json

अतिरिक्त बोर्ड प्रबंधक URL के लिए।

टूल्स - बोर्ड के तहत अब आपको कई डिजीस्पार्क विकल्प देखने चाहिए। डिजिस्पार्क चुनें (डिफ़ॉल्ट - 16.5 मेगाहर्ट्ज)।

यदि आपके ATTiny85 में बूटलोडर नहीं है (या आप नहीं जानते हैं) तो आप कुछ पाउंड के लिए AVR ISP प्रोग्रामर प्राप्त कर सकते हैं। या आप एक प्रोग्रामर के रूप में एक Arduino Uno या सस्ता Pro Mini या Nano का उपयोग कर सकते हैं। निर्देशों के लिए Google "arduino as isp attiny85" (उद्धरण के बिना)।

यदि आप स्केच को संशोधित करना चाहते हैं, तो आप पाएंगे कि यह पूरी तरह से टिप्पणी की गई है और उम्मीद है कि इसका पालन करना आसान होगा। डिबगिंग के लिए Arduino Pro Mini या Nano का उपयोग करना बहुत आसान है। सीरियल मॉनिटर के उपयोग से होने वाले चरणों को देखने के लिए सेटअप में serial.begin () और लूप () में प्रिंट स्टेटमेंट को अनकम्मेंट करें। स्रोत में वैकल्पिक पिन परिभाषाएँ हैं, टिप्पणी की गई, एक ऊनो, प्रो मिनी या नैनो के लिए।

अपने रास्पबेरी पाई पर, फ़ाइल shutdown_helper.py को फ़ोल्डर /etc/local/bin में कॉपी करें और इसे कमांड के साथ निष्पादन योग्य के रूप में सेट करें

sudo chmod +x /usr/local/bin/shutdown_helper.py

अब फ़ाइल /etc/rc.local को अपने पसंदीदा संपादक से संपादित करें। (आपको इसे रूट के रूप में करना होगा।) अंतिम पंक्ति से पहले (बाहर निकलें 0) लाइन डालें

nohup /usr/local/bin/shutdown_helper.py &

रिबूट, और सहायक कार्यक्रम स्वचालित रूप से शुरू हो जाएगा।

सिफारिश की: