Sadržaj:

Senzor boje za govor, temeljen na AIY Voice Kit: 4 koraka
Senzor boje za govor, temeljen na AIY Voice Kit: 4 koraka

Video: Senzor boje za govor, temeljen na AIY Voice Kit: 4 koraka

Video: Senzor boje za govor, temeljen na AIY Voice Kit: 4 koraka
Video: 35 видео со страшными призраками: мегасборник 2023 года [V1] 2024, Studeni
Anonim
Senzor boje za razgovor, temeljen na AIY Voice Kit
Senzor boje za razgovor, temeljen na AIY Voice Kit
Senzor boje za razgovor, temeljen na AIY Voice Kit
Senzor boje za razgovor, temeljen na AIY Voice Kit
Senzor boje za razgovor, temeljen na AIY Voice Kit
Senzor boje za razgovor, temeljen na AIY Voice Kit
Senzor boje za razgovor, temeljen na AIY Voice Kit
Senzor boje za razgovor, temeljen na AIY Voice Kit

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

Montaža i upotreba
Montaža i upotreba
Montaža i upotreba
Montaža i upotreba
Montaža i upotreba
Montaža i upotreba

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

Kod
Kod

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: