Sadržaj:
Video: Senzor boje za govor, temeljen na AIY Voice Kit: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Nedavno sam saznao nešto o Brajevom pismu i pitao bih se mogu li pomoću AIY glasovnog kompleta za Raspberry Pi napraviti nešto što bi moglo imati stvarnu korist za osobe s oštećenjem vida. Dakle, opisano u nastavku pronaći ćete prototip jednostavnog uređaja za otkrivanje boja koji naglas čita svoje nalaze.
Složenija verzija ovog sustava mogla bi biti korisna za osobe s oštećenim vidom ili sljepoćom za boje.
Sustav koristi Raspberry Pi s AIY glasovnom HAT. TCS34725 RGB osjetnik spojen je na I2C priključak HAT -a. Proboj sadrži svijetlu toplu bijelu LED diodu za osvjetljavanje objekta za analizu. Proboj je postavljen u kućište radi optimizacije i standardizacije mjernih uvjeta.
Senzor s tri boje mjeri otprilike ista tri frekvencijska raspona kao i senzori boje u vašim očima. Zatim se vrijednosti crvene, zelene i plave (RGB) koriste za izračun ukupnog dojma boje.
Lijepa stvar ovog posebnog sustava je to što vam sada verbalno govori boju, koristeći naredbu "say" AIY glasovnih kompleta. Pogledajte priloženi video.
Uređaj bi također mogao biti koristan kao primjer za I2C senzorski uređaj spojen na AIY voice HAT.
Korak 1: Korišteni materijali
Raspberry Pi 3. ~ 35 US $ ili EUR
AIY glasovni komplet, sa zaglavljima lemljenim na HAT. ~ 25 USD ili EUR
Adafruit TCS34725 proboj, sa zalemljenim zaglavljem. ~ 8 US $ ili EUR
Kratki kabeli.
Matična ploča (izborno)
Za kućište senzora:- rabljena kapsula kave "Dolce Gusto"- mali okrugli komad 2 mm Forex (ploča od PVC pjene), promjera oko 37 mm- ne reflektirajući crni materijal koji prekriva unutarnje stijenke kućišta. Koristio sam samoljepljivu pjenu od crne gume.
Izborno: mali prekidač za dozivanje mjerenja
Nekoliko kapi ljepila za plastiku i nož za rezanje.
Korak 2: Montaža i uporaba
Raspberry Pi s AIY glasovnim HAT -om postavljen je kako je opisano u AIY priručniku. Prije montaže, zaglavlja su lemljena na priključke na HAT -u. Za kućište senzora, kapsula za kavu "Dulce Gusto" je ispražnjena, očišćena i dio dna pažljivo uklonjen nožem. U tu svrhu možete upotrijebiti nešto drugo, kapsula kave je upravo imala odgovarajuću veličinu i oblik. Okrugli komad Forexa debljine 2 mm izrezan je s ploče, proboj je zatim postavljen centralno na Forex ploču, položaj označen flomasterom, a utor za zaglavlje na izbijanju izrezan je na odgovarajućem položaju.
Sada je Forex komad zalijepljen na kućište, a otvor senzora pričvršćen na Forex ploču, pomoću čičak trake. Zatim su unutarnji zidovi prekriveni crnim materijalom koji upija svjetlost, upotrijebio sam samoljepljivu pjenu od gume. Crni karton bi također trebao djelovati. Sada, pomoću kratkospojnih kabela, I2C "3.3V" port HAT -a je spojen na "V in" na senzoru, uzemljenje na Gnd, sda na sda i scl na scl. Koristio sam ploču za povezivanje oba dijela, ali to nije potrebno.
Postavite AIY_TCS34725 python skriptu u mapu src i pokrenite skriptu s dev terminala, unoseći "sec/AIY_TCS34752.py". Možda ćete prvo morati izvršiti python skriptu. Kad se od vas zatraži, postavite senzorsku jedinicu iznad objekta koji se mjeri, pritisnite gumb na AIY uređaju i pričekajte sekundu ili dvije.
Zatim, na temelju izmjerenih RGB i bijelih vrijednosti, uređaj prvo izračunava odgovarajuću vrijednost nijanse, zatim procjenjuje boju na temelju te vrijednosti i komunicira ih verbalno putem glasovnog sustava AIY, npr. g. kao "tamnocrvena", ali također daje vrijednost nijanse. RGB, nijanse i svjetline (svjetlost, točnije) vrijednosti se također ispisuju na ekranu.
Kako bi se pojednostavio postupak označavanja boja, RGB vrijednosti se pretvaraju u format HSV (nijansa, zasićenje, vrijednost). To omogućuje označavanje boje u određenom rasponu kutova (npr. Kriška pite) i odabir boje na temelju izračunate vrijednosti nijanse.
Morate normalizirati uređaj prema bijeloj i crnoj referenci. Samo izmjerite najbjelije i najcrnje komade papira koje imate na raspolaganju, napravite svako mjerenje i stavite te vrijednosti kao maksimalne i minimalne vrijednosti u kôd. Samo optimalne referentne vrijednosti dobro će prepoznati boju.
Jedan od osnovnih problema je refleksija. Ako imate objekt sa sjajnom ili poliranom površinom, on će reflektirati mnogo svjetlosti koju emitira LED, izgledajući mnogo svjetlije nego što stvarno jest. Za raspršivanje svjetlosti možete koristiti membranski list, ali možda ćete morati primijeniti faktor korekcije.
U slučaju prozirnih predmeta, moglo bi biti zgodno staviti ih na bijeli papir, inače će količina reflektirane svjetlosti biti premala, a objekt prijavljen kao "crn".
Ako želite mjeriti boju objekata koji emitiraju svjetlost, trebali biste isključiti LED na prekidaču spajanjem "LED" priključka na izlazu na "uzemljenje". Sada prema tome postavite vrijednosti normalizacije.
Drugi opći problem je osvjetljenje objekta. Topla bijela LED dioda na proboju emitira neprekidni spektar svjetlosti. Stoga određene boje mogu biti previše ili nedovoljno zastupljene u RGB spektru. Za više informacija o ovoj temi, pogledajte moje prethodne upute na kolorimetrima/ fotometrima i spektrometrima:
www.instructables.com/id/An-Inexpensive-Ph…
www.instructables.com/id/A-Mimimal-Six-Col…
Korak 3: Kôd
Kôd je kombinacija modifikacije koda iz glasovnog priručnika AIY i koda senzora TCS34725 tvrtke Bradspi.
Također sam pokušao koristiti TCS34725 python kod iz Adafruit -a, ali imao sam problema s pokretanjem ovog i nekih drugih kodova koji koriste vanjske knjižnice u kombinaciji s AIY HAT -om. Svaka pomoć dobrodošla.
Kao što je već spomenuto, napomena u boji temelji se na transformaciji vrijednosti RGB u nijansu. Morate postaviti postavke normalizacije na temelju eksperimentalnih mjerenja bijelih i crnih materijala za poštovanje. U skladu s tim ispunite apsolutne vrijednosti za R, G i B min ili max.
Skripta koristi novu verziju naredbe "say" koja omogućuje reguliranje glasnoće i visine tona. U tom slučaju ćete možda morati ažurirati datoteke upravljačkog programa audio.py i tty ili izbrisati "dijelove glasnoće i visine tona" iz skripte.
#!/usr/bin/env python3 # Ova skripta je adaptacija skripte servo_demo.py za AIY voice HAT, # optimizirana za prepoznavanje boja pomoću Afafruit TCS34725 proboja uvoz aiy.audio uvoz aiy.cloudspeech uvoz aiy.voicehat #from gpiozero import LED # mogao bi biti od pomoći za vanjsku LED diodu na servo-portu #from gpiozero import Button # mogao bi biti od pomoći za vanjski gumb na servo-portu za vrijeme uvoza import smbus bus = smbus. SMBus (1) import coloursys def hue2color (nijansa): # interpretacija boje na temelju izračunatih vrijednosti nijanse if ((hue> 12) i (hue 25) i (hue 69) i (hue 164) i (hue 194) i (hue 269) i (hue 319) ili (nijansa <20)): color = "red" boja povratka else: print ("nešto je pošlo po zlu")
def tcs34725 (): # mjerenje i tumačenje.
# Mjerenje se izvodi skriptom Bradspi TCS34725: # https://bradsrpi.blogspot.com/2013/05/tcs34725-rg… bus.write_byte (0x29, 0x80 | 0x12) ver = bus.read_byte (0x29) # verzija # treba biti 0x44 ako je ver == 0x44: print ("Uređaj je pronađen / n") bus.write_byte (0x29, 0x80 | 0x00) # 0x00 = ENABLE register bus.write_byte (0x29, 0x01 | 0x02) # 0x01 = Uključivanje, 0x02 RGB osjetnici omogućeni bus.write_byte (0x29, 0x80 | 0x14) # Rezultati čitanja započinju registar 14, LSB zatim MSB podaci = sabirnica.čitaj_i2c_block_data (0x29, 0) clear = clear = data [1] << 8 | podaci [0] crveni = podaci [3] << 8 | podaci [2] zeleni = podaci [5] << 8 | podaci [4] plava = podaci [7] << 8 | data [6] crgb = "Apsolutni brojevi: C: %s, R: %s, G: %s, B: %s / n" %(čisto, crveno, zeleno, plavo) ispis (crgb) vrijeme.sleep (1) else: print ("Uređaj nije pronađen / n") # normalizacija i transformacija izmjerenih vrijednosti RGBW col = "" # Maksimalne vrijednosti Faktori normalizacije, moraju se definirati eksperimentalno # npr. naspram bijelog lista papira. S vremena na vrijeme provjerite i ispravite. max_bright = 5750 max_red = 1930 max_green = 2095 max_blue = 1980 # Pozadina/Faktori normalizacije minimalnih vrijednosti, moraju se eksperimentalno definirati # npr. naspram crnog lista papira. S vremena na vrijeme provjerite i ispravite. min_svijetla = 750 min_crvena = 340 min_zelena = 245 min_plava = 225 # normalizirane vrijednosti, između 0 i 1 rel_bright = ((jasno - min_svijetlo)/(max_svijetlo - min_svijetlo)) rel_red = ((crveno - min_crveno)/(max_red - min_crveno)) rel_green = ((green - min_green)/(max_green - min_green)) rel_blue = ((blue - min_blue)/(max_blue - min_blue)) hsv_col = colorsys.rgb_to_hsv (rel_red, rel_green, rel_blue) hue = hs = hs = hs = 0 ako je rel_bright> 0.9: col = "white" # ako je jako svijetlo -> white elif rel_bright black else: col = hue2color (hue) # odabir boje prema vrijednostima nijanse # print ("relativne vrijednosti svijetla, crvena, zelena, plava:") # print (rel_bright, rel_red, rel_green, rel_blue) # print ("Vrijednosti HSV -a (nijansa, zasićenje, vrijednost):", hsv_col) # ispis ("nijansa u °", nijansa) return [col, rel_bright, rel_red, rel_green, rel_blue, nijansa]
def main ():
button = aiy.voicehat.get_button () # change Status gumba led = aiy.voicehat.get_led () # promijeni status tipke-LED aiy.audio.get_recorder (). start () # buttoni = Button (5) # senzor udaljenosti ili drugi vanjski gumb, spojen na servo3/GPIO 05
aiy.audio.say ("Hello!",, volume = 50, pitch = 100) # glasnoća i visina zahtijevaju reviziju audio.py i _tty.py upravljačkog programa u studenom 2017.!
aiy.audio.say ("Za početak pomaknite senzor iznad objekta. Zatim pritisnite plavi gumb",, glasnoća = 50, visina = 100) print ("Za aktiviranje mjerenja boje postavite senzor iznad objekta, a zatim pritisnite plavi gumb ") dok je True: led.set_state (aiy.voicehat. LED. ON) button.wait_for_press () # za vanjski gumb, gumb zamijenite buttoni led.set_state (aiy.voicehat. LED. BLINK) aiy.audio.say (" Mjerenje ",, volumen = 50, korak = 100) rezultat = tcs34725 () # izaziva mjerenje i tumačenje col = rezultat [0] # boja, kao nijansa teksta = str (int (rezultat [5])) # nijansa u °, kao tekst r_red = str (int (rezultat [2]*255)) # R vrijednost, kao tekst r_green = str (int (rezultat [3]*255)) # G vrijednost, kao tekst r_blue = str (int (rezultat [4]*255)) # B vrijednost, kao tekst r_bright = str (int (rezultat [1]*100)) # W vrijednost, kao tekst led.set_state (aiy.voicehat. LED. OFF) ako je col == "bijelo "or col ==" black ": bright =" "elif (rezultat [1]> 0,69): #svjetlina/svjetlina boje bright =" light "elif (rezultat [1] <0,25): bright =" dark "drugo: bright = "medium" # komunicira t on daje color_text = ("Boja objekta je" + bright + "" + col) print (color_text) aiy.audio.say (color_text,, volume = 75, pitch = 100) hue_text = ("Vrijednost nijanse je "+ hue+" stupnjevi ") ispis (hue_text) aiy.audio.say (hue_text,, volumen = 75, visina = 100)
if _name_ == '_main_': main ()
Korak 4: Neke veze i napomene
Tehnički list senzora TCS34725 možete pronaći ovdje:
Kod za čitanje senzora koji sam koristio opisan je ovdje:
U mojim prethodnim uputama možete pronaći neke dodatne informacije o mjerenju boja s ovim i drugim senzorom:
www.instructables.com/id/An-Inexpensive-Ph…
www.instructables.com/id/A-Mimimal-Six-Col…
Preporučeni:
IOT senzor vrata - temeljen na Wi -Fi, napaja se na 2xAAA baterije: 6 koraka
IOT senzor vrata-baziran na Wi-Fi, napaja se na 2xAAA baterije: U ovom uputstvu predstavljamo kako možete jednostavno izgraditi Wi-Fi senzor vrata na bateriju s IOT Cricket Wi-Fi modulom. Također pokazujemo kako integrirati Cricket -ove poruke s IFTTT -om (ili bilo kojim drugim uslugama, uključujući Home Assistant, MQTT ili Webhooks
PIR senzor pokreta temeljen na Arduinu: 4 koraka
PIR senzor pokreta temeljen na Arduinu: Uz pomoć ovog projekta možete kontrolirati visoko stanje i osjetljivost PIR -a
Glazbeni generator temeljen na vremenu (Midi generator temeljen na ESP8266): 4 koraka (sa slikama)
Glazbeni generator temeljen na vremenu (Midi Generator temeljen na ESP8266): Bok, danas ću vam objasniti kako napraviti vlastiti mali glazbeni generator temeljen na vremenu. Baziran je na ESP8266, koji je poput Arduina, a reagira na temperaturu, kišu i intenzitet svjetla. Ne očekujte da će to učiniti cijele pjesme ili akorde
Svjetlo upozorenja za rotacijske svjetionike u dvije boje u dvije boje: 6 koraka
Svjetlo upozorenja rotacijskog svjetionika u dvije boje: U ovom Instructable -u stvorit ćemo mini svjetlo. Znate, jedno od onih starinskih rotirajućih svjetala koje su stavljali na građevinsku opremu prije nego što su LED diode postale velike? Da. Jedan od onih. Ovaj će biti relativno jednostavan i malen
Dodajte početni zvuk okidača u Google AIY Voice Kit: 6 koraka (sa slikama)
Dodajte Trigger Start Sound u Google AIY Voice Kit: Ovaj je vodič prilično jednostavan. Zaista sam uživao u Google AIY Voice Kit -u, ali jako mi se sviđa buka koju stvaraju na mom normalnom Google Homeu kako bi potvrdili da aktivno slušaju. Ovo nije zadano postavljeno ni u jednom primjeru koji