Բովանդակություն:
- Քայլ 1: Օգտագործված նյութեր
- Քայլ 2: Հավաքում և օգտագործում
- Քայլ 3: Կոդ
- Քայլ 4: Որոշ հղումներ և դիտողություններ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Վերջերս մի փոքր սովորելով Բրայլյան տառի մասին, ես մտածում էի ՝ կարո՞ղ եմ ինչ-որ բան կառուցել ՝ օգտագործելով Raspberry Pi- ի համար նախատեսված AIY ձայնային հավաքածուն, որը կարող է իրական օգուտ ունենալ տեսողության խնդիրներ ունեցողների համար: Հետևյալում նկարագրված, դուք կգտնեք պարզ գույնի հայտնաբերման սարքի նախատիպ, որը բարձրաձայն կարդում է դրա արդյունքները:
Այս համակարգի ավելի մշակված տարբերակը կարող է օգտակար լինել տեսողության կամ գունային կուրության խանգարում ունեցող մարդկանց համար:
Համակարգը օգտագործում է Raspberry Pi- ն ՝ կցված AIY ձայնային գլխարկով: TCS34725 RGB սենսորային անջատումը միացված է HAT- ի I2C նավահանգստին: Բեկումը պարունակում է պայծառ տաք սպիտակ LED, որը լուսավորում է վերլուծվող օբյեկտը: Բեկումը տեղադրվել է պատյանում `չափման պայմանների օպտիմալացման և ստանդարտացման համար:
Երեք գույնի տվիչը չափում է մոտավորապես նույն երեք հաճախականությունների տիրույթը, ինչ ձեր աչքերի գույնի տվիչները: Այնուհետև կարմիր, կանաչ և կապույտ (RGB) արժեքները օգտագործվում են ընդհանուր գույնի տպավորությունը հաշվարկելու համար:
Այս հատուկ համակարգի հաճելի բանն այն է, որ այն այժմ ձեզ բանավոր է ասում գույնը ՝ օգտագործելով AIY ձայնային հավաքածուների «ասա» հրամանը: Խնդրում ենք դիտել կից տեսանյութը:
Սարքը կարող է նաև օգտակար լինել որպես օրինակ I2C սենսորային սարքի համար, որը միացված է AIY ձայնային HAT- ին:
Քայլ 1: Օգտագործված նյութեր
Raspberry Pi 3. ~ 35 ԱՄՆ դոլար կամ եվրո
AIY ձայնային հավաքածու, վերնագրերով զետեղված HAT- ին: US 25 ԱՄՆ դոլար կամ եվրո
Adafruit TCS34725 ճեղքվածք ՝ գլխիկով զոդված: US 8 ԱՄՆ դոլար կամ եվրո
Թռիչքային մալուխներ:
Հացաթուղթ (ըստ ցանկության)
Սենսորային պատյանների համար. Ես օգտագործել եմ սոսնձվող սեւ ռետինե փրփուր:
Լրացուցիչ `փոքր անջատիչ` չափումները առաջացնելու համար
Մի քանի կաթիլ պլաստիկ սոսինձ և դանակ:
Քայլ 2: Հավաքում և օգտագործում
Raspberry Pi- ն AIY ձայնային գլխարկով տեղադրված էր, ինչպես նկարագրված է AIY ձեռնարկում: Հավաքվելուց առաջ գլխարկները կպչում էին HAT- ի նավահանգիստներին: Սենսորի պատյանների համար «Dulce Gusto» սուրճի պարկուճը դատարկվեց, մաքրվեց, իսկ ներքևի հատվածը զգուշորեն հանվեց դանակով: Այս նպատակի համար կարող եք օգտագործել այլ բան, սուրճի պարկուճը պարզապես ուներ ճիշտ չափս և ձև: 2 մմ Forex- ի կլոր կտորը կտրված էր ափսեից, այնուհետև բեկումը տեղադրվում էր կենտրոնականորեն Forex ափսեի վրա, դիրքը նշվում էր զգայական գրիչով, իսկ ճեղքումի վերնագրի համար անցքը կտրվում էր համապատասխան դիրքում:
Այժմ Forex- ի կտորը սոսնձված էր պատյանին և սենսորային ճեղքվածքը ամրացված էր Forex- ի ափսեին ՝ օգտագործելով Velcro ժապավեն: Այնուհետեւ ներքին պատերը ծածկված էին թեթեւ ներծծող սեւ նյութով, ես օգտագործեցի ինքնասոսնձվող ռետինե փրփուր: Սև ստվարաթուղթը նույնպես պետք է աշխատի: Այժմ, օգտագործելով jumper մալուխներ, HAT- ի I2C «3.3V» նավահանգիստը միացված էր սենսորի վրա «V in», Ground to Gnd, sda to sda և scl to scl: Երկու մասերը միացնելու համար ես օգտագործել էի հացահատիկ, բայց դա պարտադիր չէ:
Տեղադրեք AIY_TCS34725 պիթոնի սցենարը src պանակում և գործարկեք սցենարը dev տերմինալից ՝ մուտքագրելով «sec/AIY_TCS34752.py»: Հնարավոր է, որ սկզբում ստիպված լինեք Python սցենարը կատարելագործելի դարձնել: Երբ հարցնում եք, տեղադրեք սենսորային միավորը չափվող օբյեկտի վրա, սեղմեք AIY սարքի կոճակը և սպասեք մեկ -երկու վայրկյան:
Այնուհետև, չափված RGB և սպիտակ արժեքների հիման վրա, սարքը նախ հաշվարկում է համապատասխան երանգի արժեքը, այնուհետև գնահատում է գույնը այս արժեքի հիման վրա և դրանք բանավոր կերպով փոխանցում է AIY ձայնային համակարգի միջոցով, օրինակ. է. որպես «մուգ կարմիր», բայց նաև տալիս է երանգի արժեք: RGB- ի, երանգի և պայծառության (թեթևությունը, ճիշտն ասած) արժեքները նույնպես տպվում են էկրանին:
Գույնի անոտացիայի գործընթացը պարզեցնելու համար RGB արժեքները փոխակերպվում են HSV (երանգ, հագեցվածություն, արժեք) ձևաչափի: Սա թույլ է տալիս գույնը մեկնաբանել որոշակի տեսանկյունից (այսինքն ՝ կարկանդակի կտոր) և ընտրել գույնը ՝ հաշվարկված երանգի արժեքի հիման վրա:
Դուք պետք է նորմալացնեք ձեր սարքը սպիտակ և սև հղումների համեմատ: Պարզապես չափեք ձեր հասանելիք ամենաթեթև և սև կտորները, չափեք յուրաքանչյուրը և տեղադրեք այս արժեքները որպես առավելագույն և նվազագույն արժեքներ կոդի մեջ: Միայն օպտիմալ հղումների արժեքները կտան գույնի լավ ճանաչում:
Հիմնական խնդիրներից մեկը արտացոլումն է: Եթե ունեք փայլուն կամ փայլեցված մակերևույթ ունեցող մի առարկա, այն կարտացոլի LED- ի արտանետվող շատ լույս ՝ տեսնելով շատ ավելի թեթև, քան իրականում կա: Լույսը ցրելու համար կարող եք օգտագործել թաղանթաթերթ, բայց գուցե անհրաժեշտ լինի ուղղիչ գործոն ներդնել:
Թափանցիկ օբյեկտների դեպքում դրանք կարող են հարմար լինել դրանք տեղադրել սպիտակ թղթի վրա, հակառակ դեպքում արտացոլված լույսի քանակը փոքր կլինի, իսկ օբյեկտը `« սև »:
Եթե ցանկանում եք չափել լույս արձակող օբյեկտների գույնը, ապա պետք է անջատեք լուսամուտի լուսադիոդը ՝ ճեղքումի «LED» նավահանգիստը միացնելով «Ground» - ին: Այժմ համապատասխանաբար սահմանեք նորմալացման արժեքները:
Մեկ այլ ընդհանուր խնդիր է օբյեկտի լուսավորությունը: Warmերմ սպիտակ LED- ն ճեղքման վրա թողարկում է լույսի ոչ շարունակական սպեկտր: Հետևաբար, որոշ գույներ կարող են չափազանց կամ թեր ներկայացված լինել RGB սպեկտրում: Այս թեմայի վերաբերյալ լրացուցիչ տեղեկությունների համար խնդրում ենք ծանոթանալ իմ նախորդ հրահանգներին ՝ գունաչափերի/ լուսաչափերի և սպեկտրոմետրերի վերաբերյալ.
www.instructables.com/id/An-Inexpensive-Ph…
www.instructables.com/id/A-Mimimal-Six-Col…
Քայլ 3: Կոդ
Կոդը AIY ձայնային ձեռնարկից ծածկագրի փոփոխման և Բրեդսպիի TCS34725 սենսորային կոդի համադրություն է:
Ես նաև փորձել էի օգտագործել Adafruit- ի TCS34725 պիթոնի ծածկագիրը, բայց խնդիրներ ունեցա այս և մի քանի այլ կոդերի գործարկման հետ, որոնք օգտագործում են արտաքին գրադարաններ AIY HAT- ի հետ համատեղ: Helpանկացած օգնություն ողջունելի է:
Ինչպես արդեն նշվեց, գունային ծանոթագրությունը հիմնված է RGB- ի վրա ստվերային արժեքների փոխակերպման վրա: Դուք պետք է կարգավորեք կարգավորումները ՝ հիմնվելով սպիտակ և սև ակնածանքի նյութերի փորձնական չափումների վրա: Լրացրեք համապատասխանաբար R, G և B min կամ max բացարձակ արժեքները:
Սցենարը օգտագործում է «ասա» հրամանի նոր տարբերակը, որը թույլ է տալիս կարգավորել ձայնը և բարձրությունը: Այն դեպքում, գուցե ստիպված լինեք կամ թարմացնել audio.py և tty վարորդի ֆայլերը կամ ջնջել «ձայնի և ձայնի մասերը» սցենարից:
#!/usr/bin/env python3 # Այս սկրիպտը servo_demo.py սցենարի հարմարեցում է AIY ձայնային գլխարկի համար, # օպտիմիզացված գույնի ճանաչման համար ՝ օգտագործելով Afafruit TCS34725 breakout import aiy.audio import aiy.cloudspeech import aiy.voicehat # gpiozero ներմուծման LED- ն # կարող է օգտակար լինել servo-port- ի արտաքին LED- ի համար # gpiozero ներմուծման կոճակից # կարող է օգտակար լինել servo-port- ի ներմուծման ժամանակի արտաքին կոճակի համար smbus bus = smbus. SMBus (1) ներմուծել colorsys def hue2color (երանգ). # գույնի մեկնաբանություն ՝ հիմնված հաշվարկված երանգների արժեքների վրա, եթե ((երանգ> 12) և (երանգ 25) և (երանգ 69) և (երանգ 164) և (երանգ 194) և (երանգ 269) և (երանգ 319) կամ (երանգ <20)).
def tcs34725 (): # չափում և մեկնաբանություն:
# Չափումը կատարվում է Bradspi TCS34725 սցենարով ՝ # https://bradsrpi.blogspot.com/2013/05/tcs34725-rg… bus.write_byte (0x29, 0x80 | 0x12) ver = bus.read_byte (0x29) # տարբերակ # պետք է լինի 0x44, եթե ver == 0x44: print ("Device found / n") bus.write_byte (0x29, 0x80 | 0x00) # 0x00 = ԱՆNAՆԵԼ գրանցել bus.write_byte (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 | տվյալներ [2] կանաչ = տվյալներ [5] << 8 | տվյալներ [4] կապույտ = տվյալներ [7] << 8 | տվյալներ [6] crgb = "Բացարձակ հաշվարկներ` C: %s, R: %s, G: %s, B: %s / n " %(պարզ, կարմիր, կանաչ, կապույտ) տպել (crgb) ժամանակը: քուն (1) այլ. Տպել («Սարքը չի գտնվել / n») # չափված RGBW արժեքների նորմալացում և փոխակերպում col = "" # Առավելագույն արժեքներ Նորմալացման գործոնները, պետք է փորձնականորեն սահմանվեն # օրինակ ընդդեմ սպիտակ թղթի: Checkամանակ առ ժամանակ ստուգեք և ուղղեք: max_bright = 5750 max_red = 1930 max_green = 2095 max_blue = 1980 # Նախապատմություն/Նվազագույն արժեքների նորմալացման գործոնները, պետք է սահմանվեն փորձնականորեն # օրինակ ընդդեմ սև թղթի: Checkամանակ առ ժամանակ ստուգեք և ուղղեք: min_bright = 750 ր 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_blv_) 35 h9 = hue = 0 եթե rel_bright> 0.9: col = "սպիտակ" # եթե շատ պայծառ -> սպիտակ էլիֆ rel_bright սև այլ: col = hue2color (երանգ) # գույնի ընտրություն ըստ երանգների արժեքների # տպել ("հարաբերական արժեքները պայծառ, կարմիր, կանաչ, կապույտ:") # տպել (rel_bright, rel_red, rel_green, rel_blue) # print ("HSV արժեքներ (երանգ, հագեցվածություն, արժեք).", hsv_col) # print ("hue in °", hue) վերադարձնել [col, rel_bright, rel_red, rel_green, rel_blue, երանգ]
def main ():
կոճակ = aiy.voicehat.get_button () # փոխել Կոճակի կարգավիճակը led = aiy.voicehat.get_led () # փոխել Կոճակ-LED կարգավիճակը aiy.audio.get_recorder (). սկիզբ () # buttoni = Կոճակ (5) # հեռավորության տվիչ կամ այլ արտաքին կոճակ ՝ միացված servo3/GPIO 05 -ին
aiy.audio.say («Բարև!»,, ծավալը = 50, սկիպիդար = 100) # ծավալը և սկիպիդարը պահանջում են audio.py և _tty.py վարորդի 2017 թ. նոյեմբեր ամսվա վերանայում:
aiy.audio.say («Սկսելու համար սենսորը տեղափոխեք օբյեկտի վերևում, այնուհետև սեղմեք կապույտ կոճակը»,, ծավալը = 50, սկիպիդար = 100) տպել («Գույնի չափման սենսորը օբյեկտի վերևում ակտիվացնելու համար, այնուհետև սեղմեք կապույտ կոճակը ") while True: led.set_state (aiy.voicehat. LED. ON) button.wait_for_press () # արտաքին կոճակի համար, կոճակը փոխարինեք buttoni led.set_state (aiy.voicehat. LED. BLINK) aiy.audio.say (" Չափում »,, ծավալը = 50, սկիպիդար = 100) արդյունք = tcs34725 () # առաջացնում է չափում և մեկնաբանություն col = արդյունք [0] # գույն, որպես տեքստի երանգ = str (int (արդյունք [5])) # երանգ °, որպես տեքստ r_red = str (int (արդյունք [2]*255)) # R արժեք, որպես տեքստ r_green = str (int (արդյունք [3]*255)) # G արժեք, որպես տեքստ r_blue = str (int (արդյունք [4]*255)) # B արժեք, որպես տեքստ r_bright = str (int (արդյունք [1]*100)) # W արժեք, որպես տեքստ led.set_state (aiy.voicehat. LED. OFF), եթե col == "սպիտակ "կամ col ==" black ": bright =" "elif (արդյունք [1]> 0.69): #պայծառություն/գույնի լուսավորություն bright =" light "elif (արդյունք [1] <0.25): պայծառ =" մութ "այլ: պայծառ = "միջին" # հաղորդակցվող տ նա արդյունքներ է տալիս color_text = ("Օբյեկտի գույնը" + պայծառ + "" + col) տպագիր (գունային_տեքստ) aiy.audio.say (color_text,, volume = 75, pitch = 100) hue_text = ("The hue value is "+ երանգ+" աստիճան ") տպել (hue_text) aiy.audio.say (hue_text,, volume = 75, pitch = 100)
եթե _name_ == '_main_': main ()
Քայլ 4: Որոշ հղումներ և դիտողություններ
TCS34725 տվիչների տվյալների թերթիկը կարելի է գտնել այստեղ ՝
Իմ օգտագործած տվիչը կարդալու կոդը նկարագրված է այստեղ ՝
Այս և մեկ այլ սենսորով գունային չափումների վերաբերյալ լրացուցիչ տեղեկություններ կարող եք գտնել իմ նախորդ հրահանգներում:
www.instructables.com/id/An-Inexpensive-Ph…
www.instructables.com/id/A-Mimimal-Six-Col…
Խորհուրդ ենք տալիս:
Հեշտ թեքության վրա հիմնված գույնի փոփոխման անլար Ռուբիկի խորանարդի լամպ. 10 քայլ (նկարներով)
Հեշտ թեքության վրա հիմնված գույնը փոխող անլար Ռուբիկի խորանարդի լամպ. Այսօր մենք պատրաստվում ենք կառուցել այս հիանալի Ռուբիկի խորանարդիկով լամպը, որը փոխում է գույնը `կախված այն կողմի վերևից: Խորանարդն աշխատում է LiPo- ի փոքր մարտկոցով, որը լիցքավորված է միկրո-USB ստանդարտ մալուխով և, իմ փորձարկմամբ, ունի մի քանի օր մարտկոցի կյանք: Այս
Գույնի տեսակավորման համակարգ. Arduino- ի վրա հիմնված համակարգ `երկու գոտիով` 8 քայլ
Գույնի տեսակավորման համակարգ. Arduino- ի վրա հիմնված համակարգ `երկու գոտիով. Արդյունաբերական ոլորտում ապրանքների և իրերի տեղափոխումը և/կամ փաթեթավորումը կատարվում է փոխակրիչ գոտիների միջոցով պատրաստված գծերի միջոցով: Այդ գոտիները օգնում են որոշակի արագությամբ իրը մի կետից մյուսը տեղափոխել: Որոշ մշակման կամ նույնականացման առաջադրանքներ կարող են լինել
Գույնի հայտնաբերման վրա հիմնված օբյեկտի հետևում. 10 քայլ
Գույնի հայտնաբերման վրա հիմնված օբյեկտի հետևում. Պատմություն Այս նախագիծը ես արեցի ՝ սովորելու համար պատկերի մշակումը `օգտագործելով ազնվամորի PI և բաց CV: Այս նախագիծը ավելի հետաքրքիր դարձնելու համար ես օգտագործեցի երկու SG90 Servo շարժիչ և դրա վրա տեղադրեցի տեսախցիկ: Մեկ շարժիչն օգտագործվում էր հորիզոնական տեղաշարժվելու համար, իսկ երկրորդը ՝ ուղղահայաց
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր). 4 քայլ (նկարներով)
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 Based Midi Generator). Բարև, այսօր ես կբացատրեմ, թե ինչպես պատրաստել ձեր սեփական եղանակի վրա հիմնված փոքր երաժշտության գեներատոր: Այն հիմնված է ESP8266- ի վրա, որը նման է Arduino- ին և արձագանքում է ջերմաստիճանին, անձրևին: և լույսի ուժգնություն: Մի ակնկալեք, որ այն ամբողջ երգեր կամ ակորդներ կհաղորդի
Հպման տվիչ և ձայնային տվիչ, որը վերահսկում է AC/DC լույսերը `5 քայլ
Touch Sensor & Sound Sensor AC/DC Lights. ՄԻԱՎԱ, եթե այն բաց թողնեք, Լույսը ԿԱՆFԻ, և նույնը