विषयसूची:

AIY वॉयस किट पर आधारित टॉकिंग कलर सेंसर: 4 कदम
AIY वॉयस किट पर आधारित टॉकिंग कलर सेंसर: 4 कदम

वीडियो: AIY वॉयस किट पर आधारित टॉकिंग कलर सेंसर: 4 कदम

वीडियो: AIY वॉयस किट पर आधारित टॉकिंग कलर सेंसर: 4 कदम
वीडियो: आखरी स्टेज मुह के कॅन्सर के लक्षण जल्दी कैसे पेहचाने? | Last Stage Oral Cancer Symptoms | Dr. Amit 2024, नवंबर
Anonim
AIY वॉयस किट पर आधारित टॉकिंग कलर सेंसर
AIY वॉयस किट पर आधारित टॉकिंग कलर सेंसर
एआईवाई वॉयस किट पर आधारित टॉकिंग कलर सेंसर
एआईवाई वॉयस किट पर आधारित टॉकिंग कलर सेंसर
AIY वॉयस किट पर आधारित टॉकिंग कलर सेंसर
AIY वॉयस किट पर आधारित टॉकिंग कलर सेंसर
एआईवाई वॉयस किट पर आधारित टॉकिंग कलर सेंसर
एआईवाई वॉयस किट पर आधारित टॉकिंग कलर सेंसर

हाल ही में ब्रेल के बारे में कुछ जानने के बाद, मैं सोच रहा था कि क्या मैं रास्पबेरी पाई के लिए एआईवाई वॉयस किट का उपयोग करके कुछ ऐसा बना सकता हूं, जो नेत्रहीनों के लिए वास्तविक लाभ हो सकता है। तो निम्नलिखित में वर्णित आपको एक साधारण रंग पहचान उपकरण का एक प्रोटोटाइप मिलेगा जो इसके निष्कर्षों को जोर से पढ़ता है।

इस प्रणाली का अधिक विस्तृत संस्करण दृष्टिहीन या वर्णान्धता वाले व्यक्तियों के लिए उपयोगी हो सकता है।

सिस्टम एक रास्पबेरी पाई का उपयोग कर रहा है जिसमें एआईवाई वॉयस एचएटी संलग्न है। एक TCS34725 RGB सेंसर ब्रेकआउट HAT के I2C पोर्ट से जुड़ा है। ब्रेकआउट में विश्लेषण की जाने वाली वस्तु को रोशन करने के लिए एक चमकदार गर्म सफेद एलईडी होती है। माप की स्थितियों को अनुकूलित और मानकीकृत करने के लिए ब्रेकआउट को आवास में रखा गया था।

तीन रंग सेंसर आपकी आंखों में रंग सेंसर के समान तीन आवृत्ति श्रेणियों के बारे में मापते हैं। फिर समग्र रंग इंप्रेशन की गणना के लिए लाल, हरे और नीले (RGB) मानों का उपयोग किया जाता है।

इस विशेष प्रणाली के बारे में अच्छी बात यह है कि अब यह आपको AIY वॉयस किट 'से' कमांड का उपयोग करके मौखिक रूप से रंग बताती है। कृपया संलग्न वीडियो पर एक नजर डालें।

डिवाइस एआईवाई वॉयस एचएटी से जुड़े I2C सेंसर डिवाइस के लिए एक उदाहरण के रूप में भी उपयोगी हो सकता है।

चरण 1: प्रयुक्त सामग्री

रास्पबेरी पाई 3. ~ 35 यूएस$ या यूरो

एआईवाई वॉयस किट, हेडर के साथ एचएटी को मिलाप। ~ 25US$ या EUR

एडफ्रूट टीसीएस३४७२५ ब्रेकआउट, हेडर सोल्डर के साथ। ~ 8 यूएस$ या यूरो

जंपर केबल।

एक ब्रेडबोर्ड (वैकल्पिक)

सेंसर हाउसिंग के लिए: - एक प्रयुक्त "डोल्से गुस्टो" कॉफी कैप्सूल- 2 मिमी फॉरेक्स (पीवीसी फोम प्लेट) का एक छोटा गोल टुकड़ा, लगभग 37 मिमी व्यास- आवास की आंतरिक दीवारों को कवर करने के लिए एक गैर-परावर्तक काली सामग्री। मैंने स्वयं चिपकने वाला काला रबर फोम का इस्तेमाल किया।

वैकल्पिक: माप उत्पन्न करने के लिए एक छोटा स्विच

प्लास्टिक गोंद और एक कटर चाकू की कुछ बूँदें।

चरण 2: विधानसभा और उपयोग

विधानसभा और उपयोग
विधानसभा और उपयोग
विधानसभा और उपयोग
विधानसभा और उपयोग
विधानसभा और उपयोग
विधानसभा और उपयोग

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

अब फॉरेक्स पीस को वेल्क्रो स्ट्रिप का उपयोग करके हाउसिंग और सेंसर ब्रेकआउट फॉरेक्स प्लेट से चिपका दिया गया था। फिर आंतरिक दीवारों को एक प्रकाश अवशोषित काली सामग्री के साथ कवर किया गया था, मैंने स्वयं चिपकने वाला रबर फोम का उपयोग किया था। ब्लैक कार्डबोर्ड को भी काम करना चाहिए। अब, जम्पर केबल का उपयोग करते हुए, HAT का I2C "3.3V" पोर्ट सेंसर पर "V in" से, ग्राउंड से Gnd, sda से sda और scl से scl से जुड़ा था। मैंने दोनों भागों को जोड़ने के लिए एक ब्रेडबोर्ड का उपयोग किया था, लेकिन यह आवश्यक नहीं है।

स्रोत फ़ोल्डर में AIY_TCS34725 अजगर स्क्रिप्ट रखें और "sec/AIY_TCS34752.py" दर्ज करते हुए, देव टर्मिनल से स्क्रिप्ट चलाएँ। आपको पहले पायथन लिपि को निष्पादन योग्य बनाना पड़ सकता है। पूछे जाने पर, सेंसर यूनिट को मापी जाने वाली वस्तु के ऊपर रखें, AIY डिवाइस में बटन दबाएं और एक या दो सेकंड प्रतीक्षा करें।

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

रंग एनोटेशन प्रक्रिया को सरल बनाने के लिए, RGB मानों को HSV (रंग, संतृप्ति, मान) प्रारूप में बदल दिया जाता है। यह एक रंग को कोणों की एक निश्चित सीमा (यानी एक पाई स्लाइस) में एनोटेट करने की अनुमति देता है, और परिकलित ह्यू मान के आधार पर रंग चुनता है।

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

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

पारभासी वस्तुओं के मामले में, उन्हें एक श्वेत पत्र पर रखना आसान हो सकता है, अन्यथा परावर्तित प्रकाश की मात्रा छोटी होगी और वस्तु को "काली" के रूप में रिपोर्ट किया जाएगा।

यदि आप प्रकाश उत्सर्जित करने वाली वस्तुओं के रंग को मापना चाहते हैं, तो आपको ब्रेकआउट पर "एलईडी" पोर्ट को "ग्राउंड" से जोड़कर ब्रेकआउट पर एलईडी को बंद कर देना चाहिए। अब उसके अनुसार सामान्यीकरण मान सेट करें।

एक अन्य सामान्य समस्या वस्तु की रोशनी है। ब्रेकआउट पर गर्म सफेद एलईडी प्रकाश के एक गैर-निरंतर स्पेक्ट्रम का उत्सर्जन करता है। इसलिए आरजीबी स्पेक्ट्रम में कुछ रंगों को खत्म या कम किया जा सकता है। इस विषय पर अधिक जानकारी के लिए, कृपया मेरे पिछले अनुदेशों को एक वर्णमापी/फोटोमीटर और स्पेक्ट्रोमीटर पर देखें:

www.instructables.com/id/An-Inexpensive-Ph…

www.instructables.com/id/A-Mimimal-Six-Col…

चरण 3: कोड

कोड
कोड

कोड AIY वॉयस मैनुअल से एक कोड के संशोधन और ब्रैडस्पि द्वारा TCS34725 सेंसर कोड का एक संयोजन है।

मैंने एडफ्रूट से टीसीएस३४७२५ पायथन कोड का उपयोग करने की भी कोशिश की थी, लेकिन इसे चलाने में समस्याएं थीं और कुछ अन्य कोड जो एआईवाई एचएटी के संयोजन में बाहरी पुस्तकालयों का उपयोग कर रहे हैं। किसी भी मदद का स्वागत है।

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

स्क्रिप्ट "कहो" कमांड के एक नए संस्करण का उपयोग करती है जो वॉल्यूम और पिच को विनियमित करने की अनुमति देती है। मामले में, आपको या तो audio.py और tty ड्राइवर फ़ाइलों को अपडेट करना पड़ सकता है या स्क्रिप्ट से "वॉल्यूम और पिच भागों" को हटाना पड़ सकता है।

#!/usr/bin/env python3# यह स्क्रिप्ट AIY आवाज HAT के लिए सर्वो_डेमो.py स्क्रिप्ट का एक रूपांतर है, # Afafruit TCS34725 ब्रेकआउट आयात aiy.audio आयात aiy.cloudspeech आयात aiy.voicehat का उपयोग करके रंग पहचान के लिए अनुकूलित #gpiozero आयात LED से # सर्वो-पोर्ट पर बाहरी LED के लिए सहायक हो सकता है #gpiozero आयात बटन से # सर्वो-पोर्ट आयात समय पर बाहरी बटन के लिए सहायक हो सकता है आयात smbus बस = smbus. SMBus(1) आयात colorsys def Hue2color (ह्यू): # रंग व्याख्या परिकलित ह्यू मानों के आधार पर यदि ((ह्यू> 12) और (ह्यू 25) और (ह्यू 69) और (ह्यू १६४) और (ह्यू १९४) और (ह्यू २६९) और (ह्यू ३१९) या (ह्यू< 20)): रंग = "लाल" रंग वापस लौटाएं: प्रिंट ("कुछ गलत हो गया")

def tcs34725(): # माप और व्याख्या।

# माप ब्रैडस्पि टीसीएस३४७२५ स्क्रिप्ट द्वारा किया जाता है: # https://bradsrpi.blogspot.com/2013/05/tcs34725-rg… bus.write_byte(0x29, 0x80|0x12) ver = bus.read_byte(0x29) # version # 0x44 होना चाहिए अगर ver == 0x44: प्रिंट ("डिवाइस मिला\n") bus.write_byte(0x29, 0x80|0x00) # 0x00 = रजिस्टर बस.राइट_बाइट (0x29, 0x01|0x02) # 0x01 = पावर ऑन, 0x02 RGB सेंसर सक्षम bus.write_byte(0x29, 0x80|0x14) # रीडिंग रिजल्ट रजिस्टर 14, LSB फिर MSB डेटा = bus.read_i2c_block_data(0x29, 0) clear = clear = data[1] << 8 | डेटा [0] लाल = डेटा [3] << 8 | डेटा [२] हरा = डेटा [५] << ८ | डेटा [४] नीला = डेटा [७] << ८ | डेटा [६] crgb = "पूर्ण गणना: C:% s, R:% s, G:% s, B:% s / n"% (स्पष्ट, लाल, हरा, नीला) प्रिंट (crgb) समय। नींद (1) और: प्रिंट ("डिवाइस नहीं मिला\n") # मापा आरजीबीडब्ल्यू मूल्यों का सामान्यीकरण और परिवर्तन # अधिकतम मान सामान्यीकरण कारक, प्रयोगात्मक रूप से परिभाषित किया जाना चाहिए # उदाहरण बनाम कागज की एक सफेद शीट। समय-समय पर जांचें और सही करें। max_bright = 5750 max_red = 1930 max_green = 2095 max_blue = 1980 # पृष्ठभूमि/न्यूनतम मान सामान्यीकरण कारक, प्रयोगात्मक रूप से परिभाषित किए जाने चाहिए # उदा। कागज की काली शीट बनाम। समय-समय पर जांचें और सही करें। min_bright = 750 min_red = 340 min_green = 245 min_blue = 225 # सामान्यीकृत मान, 0 और 1 के बीच rel_bright = ((स्पष्ट - min_bright)/(max_bright - min_bright)) rel_red = ((लाल - min_red)/(max_red - min_red)) rel_green = ((हरा - min_green)/(max_green - min_green)) rel_blue = ((नीला - min_blue)/(max_blue - min_blue)) hsv_col = colorsys.rgb_to_hsv(rel_red, rel_green, rel_blue) रंग = hsv_col[0]*359 अगर rel_bright > 0.9: col = "white" # यदि बहुत उज्ज्वल है -> सफेद elif rel_bright काला और: col = रंग 2 रंग (ह्यू) # रंग चयन ह्यू वैल्यू द्वारा # प्रिंट ("सापेक्ष मान उज्ज्वल, लाल, हरा, नीला:") # प्रिंट (rel_bright, rel_red, rel_green, rel_blue) # प्रिंट ("HSV मान (ह्यू, सैचुरेशन, मान):", hsv_col) # प्रिंट ("ह्यू इन °", ह्यू) रिटर्न [col, rel_bright, rel_red, rel_green, rel_blue, रंग]

डीईएफ़ मुख्य ():

बटन = aiy.voicehat.get_button() # परिवर्तन बटन स्थिति का नेतृत्व किया = aiy.voicehat.get_led () # बटन-एलईडी स्थिति बदलें aiy.audio.get_recorder ()। प्रारंभ () # बटनी = बटन (5) # दूरी सेंसर या अन्य बाहरी बटन, सर्वो3/जीपीआईओ 05 से जुड़ा है

aiy.audio.say("Hello!",, Volume=50, पिच=100) # वॉल्यूम और पिच के लिए नवंबर 2017 में audio.py और _tty.py ड्राइवर के संशोधन की आवश्यकता है!

aiy.audio.say ("शुरू करने के लिए, सेंसर को ऑब्जेक्ट के ऊपर ले जाएं। फिर नीला बटन दबाएं", वॉल्यूम = ५०, पिच = १००) प्रिंट ("ऑब्जेक्ट के ऊपर रंग माप स्थान सेंसर को सक्रिय करने के लिए, फिर नीला बटन दबाएं ") जबकि ट्रू: led.set_state(aiy.voicehat. LED. ON) button.wait_for_press() # बाहरी बटन के लिए, बटन को बटन से बदलें.set_state(aiy.voicehat. LED. BLINK) aiy.audio.say(" मापन",, आयतन = ५०, पिच = १००) परिणाम = tcs३४७२५ () # माप और व्याख्या को उद्घाटित करता है col = परिणाम [०] # रंग, पाठ रंग के रूप में = str(int(result[5])) # रंग ° में, टेक्स्ट के रूप में r_red = str(int(result[2]*255)) # R मान, टेक्स्ट के रूप में r_green = str(int(result[3]*255)) # G मान, टेक्स्ट के रूप में r_blue = str(int(result[4]*255)) # B मान, टेक्स्ट के रूप में r_bright = str(int(result[1]*100)) # W मान, टेक्स्ट के रूप में.set_state(aiy.voicehat. LED. OFF) अगर col == "white" " या कर्नल == "ब्लैक": ब्राइट = "" एलिफ (परिणाम[1]>0.69): #ब्राइटनेस/लाइटनेस ऑफ कलर ब्राइट ="लाइट" एलिफ (परिणाम[1] <0.25): ब्राइट =" डार्क "अन्यथा: उज्ज्वल = "मध्यम" # संचार t वह परिणाम color_text = ("वस्तु का रंग है" + उज्ज्वल + "" + col) प्रिंट (color_text) aiy.audio.say(color_text,, Volume=75, पिच=100) रंग_पाठ = ("ह्यू मान है "+ ह्यू+" डिग्री") प्रिंट (ह्यू_टेक्स्ट) aiy.audio.say(hue_text,, Volume=75, पिच = 100)

अगर _name_ == '_main_': मुख्य ()

चरण 4: कुछ लिंक और टिप्पणियां

TCS34725 सेंसर डेटा शीट यहां पाई जा सकती है:

मेरे द्वारा उपयोग किए गए सेंसर को पढ़ने के लिए कोड का वर्णन यहां किया गया था:

आपको इसके साथ रंग माप पर कुछ अतिरिक्त जानकारी और मेरे पिछले निर्देशों में एक अन्य सेंसर मिल सकता है:

www.instructables.com/id/An-Inexpensive-Ph…

www.instructables.com/id/A-Mimimal-Six-Col…

सिफारिश की: