इस परियोजना में हम रास्पबेरी पाई के साथ TCS3200 कलर सेंसर मॉड्यूल का उपयोग करके कलर्स का पता लगाने जा रहे हैं । यहां हमने TCS3200 सेंसर का उपयोग करके रंगों का पता लगाने के लिए रास्पबेरी पाई के लिए पायथन कोड का उपयोग किया। आरजीबी एलईडी का उपयोग करने वाले रंग का पता लगाने के लिए, यह आरजीबी एलईडी उसी रंग में चमकती है, जिसमें ऑब्जेक्ट सेंसर के पास प्रस्तुत किया जाता है। वर्तमान में हमने रास्पबेरी पाई को केवल लाल, हरे और नीले रंगों का पता लगाने के लिए प्रोग्राम किया है। लेकिन आप इसे आरजीबी मान प्राप्त करने के बाद किसी भी रंग का पता लगाने के लिए प्रोग्राम कर सकते हैं, क्योंकि हर रंग इन आरजीबी घटकों से बना है। आखिर में डेमो वीडियो देखें।
हमने पहले Arduino के साथ समान TCS3200 का उपयोग करके रंगों के RGB मानों को पढ़ा और प्रदर्शित किया है। आगे जाने से पहले, TCS3200 कलर सेंसर के बारे में जानते हैं।
TCS3200 रंग सेंसर:
TCS3200 एक कलर सेंसर है जो सही प्रोग्रामिंग के साथ किसी भी रंग का पता लगा सकता है। TCS3200 में RGB (Red Green Blue) सरणियाँ हैं । जैसा कि सूक्ष्म स्तर पर आकृति में दिखाया गया है, कोई सेंसर पर आंख के अंदर वर्ग बक्से देख सकता है। ये वर्ग बॉक्स RGB मैट्रिक्स के सरणियाँ हैं। इनमें से प्रत्येक बॉक्स में लाल, हरे और नीले प्रकाश की तीव्रता को महसूस करने के लिए तीन सेंसर हैं।
इसलिए हमारे पास एक ही लेयर पर रेड, ब्लू और ग्रीन ऐरे हैं। इसलिए रंग का पता लगाने के दौरान हम सभी तीन तत्वों का एक साथ पता नहीं लगा सकते हैं। इनमें से प्रत्येक सेंसर सरणियों को रंग का पता लगाने के लिए एक के बाद एक अलग-अलग चुना जाना है। मॉड्यूल को विशेष रंग को समझने और दूसरों को छोड़ने के लिए प्रोग्राम किया जा सकता है। इसमें उस चयन उद्देश्य के लिए पिन होते हैं, जिसे बाद में समझाया गया है। आगे मोड है जो कोई फिल्टर मोड नहीं है; बिना फिल्टर मोड के साथ सेंसर सफेद रोशनी का पता लगाता है ।
हम इस सेंसर को रास्पबेरी पाई से जोड़ेंगे और रास्पबेरी पाई को रंग के आधार पर उचित प्रतिक्रिया प्रदान करने के लिए प्रोग्राम करेंगे।
आवश्यक घटक:
यहां हम रास्पबेरी जेसी ओएस के साथ रास्पबेरी पाई 2 मॉडल बी का उपयोग कर रहे हैं । सभी मूल हार्डवेयर और सॉफ़्टवेयर आवश्यकताओं पर पहले से चर्चा की जाती है, आप इसे रास्पबेरी पाई परिचय और रास्पबेरी पीआई एलईडी ब्लिंकिंग को शुरू करने के लिए देख सकते हैं, इसके अलावा, हमें इसकी आवश्यकता है:
- पूर्व-स्थापित ओएस के साथ रास्पबेरी पाई
- TCS3200 रंग सेंसर
- CD4040 काउंटर चिप
- RGB एलईडी
- 1K 1 रोकनेवाला (3 टुकड़े)
- 1000uF संधारित्र
सर्किट आरेख और कनेक्शन:
रास्पबेरी पाई के साथ रंगीन सेंसर को जोड़ने के लिए जो कनेक्शन दिए गए हैं, वे नीचे दी गई तालिका में दिए गए हैं:
सेंसर पिंस |
रास्पबेरी पाई पिंस |
Vcc |
+ 3.3v |
GND |
भूमि |
S0 |
+ 3.3v |
एस 1 |
+ 3.3v |
एस 2 |
PI का GPIO6 |
S3 |
PI का GPIO5 |
ँ |
PI का GPIO22 |
बाहर |
CD4040 का सीएलके |
रास्पबेरी पाई के साथ CD4040 काउंटर के लिए कनेक्शन नीचे दी गई तालिका में दिए गए हैं:
CD4040 पिंस |
रास्पबेरी पाई पिंस |
Vcc16 |
+ 3.3v |
गाण्ड 8 |
गाँड |
Clk10 |
सेंसर के बाहर |
रीसेट 11 |
PI का GPIO26 |
क्रि ० प्र० — देना |
PI का GPIO21 |
Q1 |
पीआई का GPIO20 |
Q2 |
PI का GPIO16 |
Q3 |
PI का GPIO12 |
Q4 |
पीआई का जीपीओ 25 |
क्यू 5 |
PI का GPIO24 |
Q6 |
PI का GPIO23 |
क्यू 7 |
पीआई का जीपीओ 18 |
प्रश्न 8 |
कोई कनेक्शन नहीं |
प्रश्न 9 |
कोई कनेक्शन नहीं |
प्रश्न 10 |
कोई कनेक्शन नहीं |
प्रश्न 11 |
कोई कनेक्शन नहीं |
रास्पबेरी पाई के साथ इंटरफेसिंग कलर सेंसर का पूरा सर्किट आरेख नीचे दिया गया है:
कार्य स्पष्टीकरण:
हर रंग तीन रंगों से बना है: लाल, हरा और नीला (RGB)। और अगर हम किसी भी रंग में आरजीबी की तीव्रता को जानते हैं, तो हम उस रंग का पता लगा सकते हैं। हमने पहले Arduino का उपयोग करके इन RGB मानों को पढ़ा है।
TCS3200 कलर सेंसर का उपयोग करते हुए, हम एक ही समय में लाल, हरे और नीले प्रकाश का पता नहीं लगा सकते हैं, इसलिए हमें उन्हें एक-एक करके जांचना होगा। कलर सेंसर द्वारा जिस रंग को सेंस किया जाना चाहिए, वह दो पिन S2 और S3 द्वारा चुना जाता है। इन दो पिनों से हम सेंसर को बता सकते हैं कि किस रंग की रोशनी की तीव्रता मापी जानी है।
कहते हैं कि अगर हमें लाल रंग की तीव्रता को समझने की जरूरत है तो हमें दोनों पिनों को LOW पर सेट करना होगा। लाल बत्ती को मापने के बाद, हम नीली रोशनी को मापने के लिए S2 LOW और S3 HIGH सेट करेंगे। क्रमिक रूप से S2 और S3 के लॉगिक्स को बदलकर हम नीचे दी गई तालिका के अनुसार, लाल, नीले और हरे रंग की प्रकाश तीव्रता को माप सकते हैं:
एस 2 |
S3 |
फोटोडायोड प्रकार |
कम |
कम |
लाल |
कम |
उच्च |
नीला |
उच्च |
कम |
कोई फ़िल्टर (सफेद) |
उच्च |
उच्च |
हरा |
एक बार सेंसर आरजीबी घटकों की तीव्रता का पता लगा लेता है, तो मूल्य मॉड्यूल के अंदर नियंत्रण प्रणाली को भेजा जाता है जैसा कि नीचे की आकृति में दिखाया गया है। सरणी द्वारा मापी गई प्रकाश की तीव्रता को मॉड्यूल के अंदर करंट फ्रीक्वेंसी कनवर्टर में भेजा जाता है। फ़्रीक्वेंसी कनवर्टर एक वर्गाकार तरंग उत्पन्न करता है जिसकी आवृत्ति ऐरे द्वारा भेजे गए मान के सीधे आनुपातिक होती है। ARRAY से उच्च मूल्य के साथ, करंट टू फ़्रीक्वेंसी कनवर्टर उच्च आवृत्ति की वर्ग तरंग उत्पन्न करता है।
कलर सेंसर मॉड्यूल द्वारा आउटपुट सिग्नल फ्रीक्वेंसी को चार स्तरों पर समायोजित किया जा सकता है। ये स्तर सेंसर मॉड्यूल के S0 और S1 का उपयोग करके चुने गए हैं जैसा कि नीचे दिए गए आंकड़े में दिखाया गया है।
S0 |
एस 1 |
आउटपुट फ्रिक्वेंसी स्केलिंग (f0) |
एल |
एल |
सत्ता जाना |
एल |
एच |
2% |
एच |
एल |
20% |
एच |
एच |
100% |
यह फीचर तब काम आता है जब हम इस मॉड्यूल को कम क्लॉक वाले सिस्टम में इंटर कर रहे हैं। रास्पबेरी पाई के साथ हम 100% का चयन करेंगे। यहां याद रखें, शेड के नीचे कलर सेंसर मॉड्यूल एक स्क्वायर वेव आउटपुट उत्पन्न करता है जिसकी अधिकतम आवृत्ति प्रत्येक रंग के लिए 2500Hz (100% स्केलिंग) है।
यद्यपि मॉड्यूल आउटपुट स्क्वायर तरंग प्रदान करता है जिसकी आवृत्ति इसकी सतह पर गिरने वाली प्रकाश तीव्रता के सीधे अनुपात में होती है, इस मॉड्यूल द्वारा प्रत्येक रंग की प्रकाश तीव्रता की गणना करने का कोई आसान तरीका नहीं है। हालाँकि हम बता सकते हैं कि प्रकाश की तीव्रता प्रत्येक रंग के लिए बढ़ रही है या घट रही है। इसके अलावा, हम मॉड्यूल की सतह पर ऑब्जेक्ट प्रीसेट के प्रकाश या रंग का पता लगाने के लिए लाल, हरे, नीले मूल्यों की गणना और तुलना कर सकते हैं। तो यह लाइट इंटेंसिटी सेंसर मॉड्यूल के बजाय कलर सेंसर मॉड्यूल का अधिक है।
अब हम इस स्क्वायर वेव आउटपुट को रास्पबेरी पाई को खिलाएंगे लेकिन हम इसे सीधे पीआई को नहीं दे सकते, क्योंकि रास्पबेरी पाई का कोई आंतरिक काउंटर नहीं है । तो पहले हम इस आउटपुट को CD4040 बाइनरी काउंटर पर देंगे और हम 100msec के आवधिक अंतराल पर काउंटर से आवृत्ति मान लेने के लिए रास्पबेरी पाई को प्रोग्राम करेंगे।
इसलिए PI प्रत्येक RED, GREEN और BLUE रंग के लिए 2500/10 = 250 अधिकतम का मान पढ़ता है। हमने रास्पबेरी पाई को भी इन मूल्यों को मुद्रित करने के लिए प्रोग्राम किया है जो स्क्रीन पर प्रकाश की तीव्रता का प्रतिनिधित्व करते हैं जैसा कि नीचे दिखाया गया है। मूल्यों को शून्य तक पहुंचने के लिए डिफ़ॉल्ट मानों से घटाया जाता है। यह रंग तय करते समय काम आता है।
यहां डिफ़ॉल्ट मान RGB के मान हैं, जो बिना किसी ऑब्जेक्ट को सेंसर के सामने रखे हुए हैं। यह आसपास की हल्की परिस्थितियों पर निर्भर करता है और ये मूल्य परिवेश के अनुसार अलग-अलग हो सकते हैं। मूल रूप से हम मानक रीडिंग के लिए सेंसर को कैलिब्रेट कर रहे हैं । इसलिए पहले बिना किसी ऑब्जेक्ट को रखे प्रोग्राम को चलाएं और रीडिंग नोट करें। ये मान शून्य के पास नहीं होंगे क्योंकि हमेशा सेंसर पर कोई न कोई प्रकाश गिरता ही रहेगा चाहे आप इसे किस स्थान पर रखें। फिर उन रीडिंग को उन रीडिंग के साथ घटाएं जो हमें परीक्षण के लिए एक ऑब्जेक्ट रखने के बाद मिलेंगे। इस तरह हम मानक रीडिंग प्राप्त कर सकते हैं।
रास्पबेरी पाई को आर, जी और बी मूल्यों की तुलना सेंसर के पास रखी गई वस्तु के रंग को निर्धारित करने के लिए भी किया जाता है। इस परिणाम को रास्पबेरी पाई से जुड़े आरजीबी एलईडी चमक द्वारा दिखाया गया है।
तो संक्षेप में,
1. मॉड्यूल सतह के पास रखी वस्तु द्वारा परावर्तित प्रकाश का पता लगाता है।
2. रंग संवेदक मॉड्यूल आर या जी या बी के लिए आउटपुट तरंग प्रदान करता है, जिसे रास्पबेरी पाई द्वारा क्रमिक रूप से पिंस एस 2 और एस 3 के माध्यम से चुना जाता है।
3. CD4040 काउंटर तरंग लेता है और आवृत्ति मूल्य को मापता है।
4. पीआई प्रत्येक 100ms के लिए प्रत्येक रंग के लिए काउंटर से आवृत्ति मूल्य लेता है। हर बार मूल्य लेने के बाद पीआई अगले मूल्य का पता लगाने के लिए काउंटर को रीसेट करता है।
5. रास्पबेरी पाई स्क्रीन पर इन मूल्यों को प्रिंट करता है और वस्तु के रंग का पता लगाने के लिए इन मूल्यों की तुलना करता है और अंत में वस्तु के रंग के आधार पर उचित रंग में आरजीबी एलईडी को चमकता है।
हमने अपने पायथन कोड में उपरोक्त अनुक्रम का पालन किया है। एक प्रदर्शन वीडियो के साथ पूरा कार्यक्रम नीचे दिया गया है ।
यहां रास्पबेरी पाई को केवल तीन रंगों का पता लगाने के लिए प्रोग्राम किया गया है, आप अपनी पसंद के अधिक रंगों का पता लगाने के लिए तदनुसार आर, जी और बी मूल्यों का मिलान कर सकते हैं।