- आवश्यक सामग्री:
- ADC0804 एकल चैनल 8-बिट ADC मॉड्यूल:
- सर्किट आरेख और स्पष्टीकरण:
- रास्पबेरी पाई प्रोग्रामिंग:
- रास्पबेरी पाई का उपयोग करके एलसीडी पर फ्लेक्स सेंसर मूल्य दिखा रहा है:
रास्पबेरी पाई एक एआरएम आर्किटेक्चर प्रोसेसर आधारित बोर्ड है जो इलेक्ट्रॉनिक इंजीनियरों और शौकियों के लिए बनाया गया है। PI अब वहां से सबसे भरोसेमंद परियोजना विकास प्लेटफार्मों में से एक है। उच्च प्रोसेसर गति और 1 जीबी रैम के साथ, पीआई का उपयोग इमेज प्रोसेसिंग और इंटरनेट ऑफ थिंग्स जैसी कई उच्च प्रोफ़ाइल परियोजनाओं के लिए किया जा सकता है। पीआई के साथ बहुत सारी शांत चीजें हो सकती हैं, लेकिन एक दुखद बात यह है कि इसमें इनबिल्ट एडीसी मॉड्यूल नहीं है।
केवल, अगर रास्पबेरी पाई सेंसर के साथ हस्तक्षेप किया जा सकता है तो यह वास्तविक दुनिया के मापदंडों के बारे में पता कर सकता है और इसके साथ बातचीत कर सकता है। अधिकांश सेंसर बाहर एनालॉग सेंसर हैं और इसलिए हमें इन सेंसर को इंटरफ़ेस करने के लिए रास्पबेरी पाई के साथ एक बाहरी एडीसी मॉड्यूल आईसी का उपयोग करना सीखना चाहिए। इस परियोजना में हम सीखेंगे कि कैसे हम रास्पबेरी पाई के साथ फ्लेक्स सेंसर को इंटरफ़ेस कर सकते हैं और एलसीडी स्क्रीन पर इसके मूल्यों को प्रदर्शित कर सकते हैं ।
आवश्यक सामग्री:
- रास्पबेरी पाई (कोई भी मॉडल)
- ADC0804 आईसी
- 16 * 2 एलसीडी डिस्प्ले
- फ्लेक्स सेंसर
- प्रतिरोध और कैपेसिटर
- ब्रेडबोर्ड या परफेक्ट बोर्ड।
ADC0804 एकल चैनल 8-बिट ADC मॉड्यूल:
इससे पहले कि हम आगे बढ़ें, आइए इस ADC0804 IC के बारे में जानें और रास्पबेरी पाई के साथ इसका उपयोग कैसे करें । ADC0804 एक एकल चैनल 8-बिट IC है, जिसका अर्थ है कि यह एकल ADC मान पढ़ सकता है और इसे 8-बिट डिजिटल डेटा पर मैप कर सकता है। इन 8-बिट डिजिटल डेटा को रास्पबेरी पाई द्वारा पढ़ा जा सकता है, इस प्रकार 2 ^ 8 के बाद से मान 0-255 होगा। जैसा कि नीचे आईसी के पिनआउट में दिखाया गया है, इन डिजिटल को पढ़ने के लिए पिन DB0 DB7 का उपयोग किया जाता है मान।
अब यहाँ एक और महत्वपूर्ण बात है, ADC0804 5V पर काम करता है और इसलिए यह 5V लॉजिक सिग्नल में आउटपुट प्रदान करता है। 8 पिन आउटपुट (8 बिट्स का प्रतिनिधित्व) में, प्रत्येक पिन तर्क '1' का प्रतिनिधित्व करने के लिए + 5V आउटपुट प्रदान करता है। तो समस्या यह है कि PI लॉजिक + 3.3v का है, इसलिए आप PI के + 3.3V GPIO पिन में 5V तर्क नहीं दे सकते। यदि आप PI के किसी भी GPIO पिन को + 5V देते हैं, तो बोर्ड क्षतिग्रस्त हो जाता है।
इसलिए + 5V से लॉजिक स्तर को नीचे ले जाने के लिए, हम वोल्टेज विभक्त सर्किट का उपयोग करेंगे। हमने पहले चर्चा के लिए वोल्ट डिवाइडर सर्किट पर चर्चा की है। हम क्या करेंगे, हम 2 * 2.5V लॉजिक में + 5V तर्क को विभाजित करने के लिए दो प्रतिरोधों का उपयोग करते हैं। इसलिए विभाजन के बाद हम रास्पबेरी पाई को + 2.5 वी तर्क देंगे। इसलिए, जब भी ADC0804 द्वारा तर्क '1' प्रस्तुत किया जाता है, हम + 5V के बजाय PI GPIO पिन पर + 2.5V देखेंगे। ADC के बारे में अधिक जानें यहाँ: ADC0804 का परिचय।
नीचे ADC0804 का उपयोग करके ADC मॉड्यूल की तस्वीर है जो हमने परफेक्ट बोर्ड पर बनाई है:
सर्किट आरेख और स्पष्टीकरण:
रास्पबेरी पाई के साथ फ्लेक्स सेंसर को इंटरफेस करने के लिए पूरा सर्किट आरेख नीचे दिखाया गया है। उसी की व्याख्या इस प्रकार है।
यह रास्पबेरी पाई फ्लेक्स सेंसर सर्किट बहुत सारे तारों के साथ थोड़ा जटिल लग सकता है, लेकिन अगर आप करीब से देखें तो अधिकांश तार सीधे एलसीडी और 8-बिट डेटा पिन से रास्पबेरी पाई से जुड़े होते हैं। कनेक्शन बनाते और सत्यापित करते समय निम्न तालिका आपकी मदद करेगी।
पिन नाम |
रास्पबेरी पिन नंबर |
रास्पबेरी पाई GPIO नाम |
एलसीडी वी.एस.एस. |
पिन ४ |
भूमि |
LCD Vdd |
पिन ६ |
Vcc (+ 5 वी) |
एलसीडी वी |
पिन ४ |
भूमि |
एलसीडी रु |
पिन ३ 38 |
GPIO 20 |
एलसीडी आरडब्ल्यू |
पिन ३ 39 |
भूमि |
एलसीडी ई |
पिन ४० |
GPIO 21 |
एलसीडी डी 4 |
पिन ३ |
जीपीआईओ २ |
एलसीडी डी 5 |
पिन ५ |
GPIO 3 |
एलसीडी डी 6 |
पिन 7 |
GPIO 4 |
एलसीडी डी 7 |
पिन ११ |
GPIO 17 |
ADC0804 Vcc |
पिन २ |
Vcc (+ 5 वी) |
ADC0804 B0 |
पिन 19 (5.1K के माध्यम से) |
GPIO 10 |
ADC0804 B1 |
पिन 21 (5.1K के माध्यम से) |
जीपीआईओ ९ |
ADC0804 B2 |
पिन 23 (5.1K के माध्यम से) |
GPIO 11 |
ADC0804 B3 |
पिन 29 (5.1K के माध्यम से) |
GPIO 5 |
ADC0804 B4 |
पिन 31 (5.1K के माध्यम से) |
GPIO 6 |
ADC0804 B5 |
पिन 33 (5.1K के माध्यम से) |
GPIO 13 |
ADC0804 B6 |
पिन 35 (5.1K के माध्यम से) |
GPIO 19 |
ADC0804 B7 |
पिन 37 (5.1K के माध्यम से) |
GPIO 26 |
ADC0804 WR / INTR |
पिन १५ |
GPIO 22 |
आप रास्पबेरी पर पिन नंबर निर्धारित करने के लिए निम्न चित्र का उपयोग कर सकते हैं।
सभी ADC मॉड्यूल की तरह, ADC0804 IC को भी संचालित करने के लिए क्लॉक सिग्नल की आवश्यकता होती है, सौभाग्य से इस IC में एक आंतरिक क्लॉक स्रोत है, इसलिए हमें बस RCK सर्किट को CLK और CLK R पिन में जोड़ना होगा जैसा कि सर्किट में दिखाया गया है। हमने 10K और 105pf के मान का उपयोग किया है, लेकिन हम 1uf, 0.1uf, 0.01uf जैसे किसी भी मूल्य का उपयोग कर सकते हैं।
फिर फ्लेक्स सेंसर को जोड़ने के लिए हमने 100K रेसिस्टर का उपयोग करके एक संभावित विभक्त सर्किट का उपयोग किया है। जैसा कि फ्लेक्स सेंसर के पार प्रतिरोध झुका हुआ है, यह अलग-अलग होगा और इसलिए प्रतिरोधक में संभावित गिरावट होगी। यह ड्रॉप ADC0804 IC द्वारा मापा जाता है और 8-बिट डेटा तदनुसार उत्पन्न होता है।
फ्लेक्स सेंसर से संबंधित अन्य परियोजनाओं की जाँच करें:
- AVR माइक्रोकंट्रोलर के साथ फ्लेक्स सेंसर इंटरफेसिंग
- Arduino आधारित एंग्री बर्ड गेम कंट्रोलर फ्लेक्स सेंसर का उपयोग करता है
- फ्लेक्स सेंसर द्वारा सर्वो मोटर नियंत्रण
- Arduino का उपयोग करके फिंगर्स टैप करके टोन उत्पन्न करना
रास्पबेरी पाई प्रोग्रामिंग:
एक बार जब हम कनेक्शन के साथ हो जाते हैं, तो हमें रास्पबेरी पाई का उपयोग करके इन 8-बिट्स की स्थिति को पढ़ना चाहिए और उन्हें दशमलव में बदलना चाहिए ताकि हम उनका उपयोग कर सकें। एलसीडी स्क्रीन पर परिणामी मानों को समान करने और प्रदर्शित करने का कार्यक्रम इस पृष्ठ के अंत में दिया गया है। इसके अलावा कोड को नीचे छोटे खंडों में समझाया गया है।
हमें Pi के साथ LCD इंटरफ़ेस करने के लिए एक LCD लाइब्रेरी की आवश्यकता है । इसके लिए हम शुभम द्वारा विकसित लाइब्रेरी का उपयोग करते हैं जो चार वायर मोड में पाई के साथ 16 * 2 एलसीडी डिस्प्ले को इंटरफ़ेस करने में हमारी मदद करेगी। इसके अलावा हमें समय और पाई GPIO पिन का उपयोग करने के लिए पुस्तकालयों की आवश्यकता है।
नोट : lcd.py को यहां से डाउनलोड किया जाना चाहिए, और उसी निर्देशिका में रखा जाना चाहिए जहां यह प्रोग्राम सहेजा गया है। उसके बाद ही कोड संकलित होगा।
आयात lcd # [email protected] द्वारा LCD लाइब्रेरी को आयात करें। आयात समय #Import समय आयात RPi.GPIO को GPIO के रूप में #GPIO को केवल GPIO के रूप में बदला जाएगा।
एलसीडी पिन परिभाषाओं जिन्हें आप नीचे देख चर को सौंपा है। ध्यान दें कि ये नंबर GPIO पिन नंबर हैं न कि वास्तविक पिन नंबर। आप पिन नंबर के साथ GPIO नंबर की तुलना करने के लिए ऊपर दी गई तालिका का उपयोग कर सकते हैं। सरणी बाइनरी में सभी डेटा पिन नंबर शामिल होंगे और सरणी बिट सभी GPIO पिन के परिणामी मूल्य को संग्रहीत करेंगे।
#LCD पिन परिभाषाएँ D4 = 2 D5 = 3 D6 = 4 D7 = 17 RS = 20 EN = 21 बाइनरी = (10,9,11,5,6,13,19,26) #Array पिन नंबर DB0- से जुड़ते हैं DB7 बिट्स # 8-बिट डेटा के #resulting मान
अब, हमें इनपुट और आउटपुट पिंस को परिभाषित करना होगा । सात डेटा पिन इनपुट पिन होंगे और ट्रिगर पिन (RST और INTR) आउटपुट पिन होगा। हम इनपुट पिन से 8-बिट डेटा मान तभी पढ़ सकते हैं, जब हम डेटशीट के अनुसार किसी विशेष समय के लिए आउटपुट पिन को उच्च ट्रिगर करते हैं। चूँकि हमने बाइनरी पिन को बाइनरी ऐरे में घोषित किया है इसलिए हम घोषणा के लिए लूप का उपयोग कर सकते हैं जैसा कि नीचे दिखाया गया है।
बाइनरी में बाइनरी के लिए: GPIO.setup (बाइनरी, GPIO.IN) # सभी बाइनरी पिन इनपुट पिन हैं #Trigger pin GPIO.setup (22, GPIO.OUT) #WR और INTR पिन आउटपुट हैं
अब एलसीडी लाइब्रेरी कमांड का उपयोग करके हम एलसीडी मॉड्यूल को इनिशियलाइज़ कर सकते हैं और नीचे दिखाए गए अनुसार एक छोटा इंट्रो संदेश प्रदर्शित कर सकते हैं।
mylcd = lcd.lcd () mylcd.begin (D4, D5, D6, D7, RS, EN) #Intro संदेश mylcd.Print ("फ्लेक्स सेंसर के साथ") mylcd.setCursor (2,1) mylcd.Print ("रास्पबेरी") पाई ") time.sleep (2) mylcd.clear ()
लूप करते समय अनंत के अंदर, हम बाइनरी मान पढ़ना शुरू करते हैं , उन्हें दशमलव में परिवर्तित करते हैं और एलसीडी पर परिणाम अपडेट करते हैं। जैसा कि पहले कहा गया था कि एडीसी मूल्यों को पढ़ने से पहले हमें एडीसी रूपांतरण को सक्रिय करने के लिए किसी विशेष समय के लिए ट्रिगर पिन बनाना चाहिए । यह निम्नलिखित पंक्तियों का उपयोग करके किया जाता है।
GPIO.output (22, 1) # ट्रिगर समय पर पूरा करें। सोएं (0.1) GPIO.output (22, 0) #Turn Off ट्रिगर
अब, हमें 8-डेटा पिन पढ़ना चाहिए और बिट्स सरणी में परिणाम को अपडेट करना चाहिए । ऐसा करने के लिए हम ट्रू और फाल्स के साथ प्रत्येक इनपुट पिन की तुलना करने के लिए लूप के लिए उपयोग करते हैं । अगर सच में संबंधित बिट्स सरणी 1 के रूप में बनाई जाएगी, तो इसे 0. के रूप में बनाया जाएगा। यह सब 8-बिट डेटा था 0 और 1 पढ़ा मूल्यों से संबंधित होगा।
# रेंज पिन में इनपुट पिन और अद्यतन परिणाम के लिए मैं रेंज में (8): अगर (GPIO.input (बाइनरी) == सच): बिट्स = 1 अगर (GPIO.input (बाइनरी) == गलत): बिट्स = ०
एक बार बिट्स ऐरे को अपडेट करने के बाद, हमें इस एरे को दशमलव मान में बदलना चाहिए । यह दशमलव रूपांतरण के अलावा कुछ भी नहीं है। 8-बिट बाइनरी डेटा के लिए 2 ^ 8 256 है। इसलिए हम 0 से 255 तक दशमलव डेटा प्राप्त करेंगे। अजगर में ऑपरेटर "**" का उपयोग किसी भी मूल्य की शक्ति को खोजने के लिए किया जाता है। चूंकि बिट्स MSB से शुरू होते हैं इसलिए हम इसे 2 ^ (7-स्थिति) से गुणा करते हैं। इस तरह हम सभी बाइनरी मानों को दशमलव डेटा में बदल सकते हैं और फिर इसे एलसीडी पर प्रदर्शित कर सकते हैं
# श्रेणी में (8) के लिए बिट ऐरे का उपयोग करके दशमलव मान को बढ़ाएँ: दशमलव = दशमलव + (बिट्स * (2 ** (7-i)))
एक बार जब हम दशमलव मान को जानते हैं तो वोल्टेज मान की गणना करना आसान होता है । हमें इसे 19.63 से गुणा करना होगा। क्योंकि 8-बिट 5VADC के लिए प्रत्येक बिट 19.3 मिली वोल्ट की सादृश्य है। परिणामी वोल्टेज मान वोल्टेज का मान है जो कि ADC0804 IC के पिन + और Vin- के पार दिखाई दिया है।
#calculate वोल्टेज वैल्यू वोल्टेज = दशमलव * 19.63 * 0.001 #one इकाई 19.3mV है
वोल्टेज के मूल्य का उपयोग करके हम यह निर्धारित कर सकते हैं कि फ्लेक्स सेंसर कैसे मुड़ा हुआ है और यह किस दिशा में मुड़ा हुआ है। नीचे की पंक्तियों में मैंने एलसीडी स्क्रीन पर फ्लेक्स सेंसर की स्थिति को इंगित करने के लिए वोल्टेज के पूर्व निर्धारित मूल्यों के साथ रीड वोल्टेज मूल्यों की तुलना की है ।
# कॉमपेयर वोल्टेज और सेंसर की डिस्प्ले स्थिति mylcd.Print ("स्थिर")
इसी तरह आप किसी भी कार्य को करने के लिए वोल्टेज मान का उपयोग कर सकते हैं जिसे आप रास्पबेरी पाई के प्रदर्शन की इच्छा रखते हैं।
रास्पबेरी पाई का उपयोग करके एलसीडी पर फ्लेक्स सेंसर मूल्य दिखा रहा है:
परियोजना का काम बहुत सरल है। लेकिन सुनिश्चित करें कि आपने lcd.py हेडर फ़ाइल डाउनलोड की है और इसे उसी निर्देशिका में रखा है जहाँ आपका वर्तमान कार्यक्रम मौजूद है। फिर कनेक्शन को ब्रेडबोर्ड या एक संपूर्ण बोर्ड का उपयोग करके सर्किट आरेख में दिखाया गया है और अपने पाई पर नीचे कार्यक्रम चलाएं और आपको काम करने की बात करनी चाहिए। आप सेट करें नीचे कुछ इस तरह दिखना चाहिए।
जैसा कि दिखाया गया है कि एलसीडी दशमलव मूल्य, वोल्टेज मान और सेंसर की स्थिति को प्रदर्शित करेगा । बस सेंसर को आगे या पीछे की ओर झुकाएं और आपको वोल्टेज और दशमलव मान को अलग-अलग देखने में सक्षम होना चाहिए, एक स्थिति पाठ भी प्रदर्शित किया जाएगा। आप किसी भी सेंसर को कनेक्ट कर सकते हैं और वोल्टेज को नोटिस कर सकते हैं।
ट्यूटोरियल का पूरा काम नीचे दिए गए वीडियो पर पाया जा सकता है । आशा है कि आपने इस परियोजना को समझा और कुछ इसी तरह के निर्माण का आनंद लिया। यदि आपको कोई संदेह है, तो उन्हें टिप्पणी अनुभाग में या मंचों पर छोड़ दें और मैं उन्हें जवाब देने की पूरी कोशिश करूंगा।