Sadržaj:

Senzor boje za razgovor, zasnovan na AIY Voice Kit: 4 koraka
Senzor boje za razgovor, zasnovan na AIY Voice Kit: 4 koraka

Video: Senzor boje za razgovor, zasnovan na AIY Voice Kit: 4 koraka

Video: Senzor boje za razgovor, zasnovan na AIY Voice Kit: 4 koraka
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Novembar
Anonim
Senzor boje za razgovor, zasnovan na AIY Voice Kit
Senzor boje za razgovor, zasnovan na AIY Voice Kit
Senzor boje za razgovor, zasnovan na AIY Voice Kit
Senzor boje za razgovor, zasnovan na AIY Voice Kit
Senzor boje za razgovor, zasnovan na AIY Voice Kit
Senzor boje za razgovor, zasnovan na AIY Voice Kit
Senzor boje za razgovor, zasnovan na AIY Voice Kit
Senzor boje za razgovor, zasnovan na AIY Voice Kit

Nedavno sam saznao nešto o Brajevom pismu, pitao sam se bih li mogao napraviti nešto pomoću AIY glasovnog kompleta za Raspberry Pi, što bi moglo imati stvarnu korist za osobe sa oštećenim vidom. Tako opisano u nastavku ćete pronaći prototip jednostavnog uređaja za detekciju boja koji naglas čita svoje nalaze.

Detaljnija verzija ovog sistema mogla bi biti korisna za osobe sa oštećenim vidom ili daltonizam.

Sistem koristi Raspberry Pi sa priloženom AIY glasovnom HAT. TCS34725 RGB senzor je spojen na I2C port HAT -a. Proboj sadrži jarko toplu bijelu LED diodu za osvjetljavanje objekta koji se analizira. Proboj je postavljen u kućište radi optimizacije i standardizacije mernih uslova.

Senzor s tri boje mjeri otprilike ista tri raspona frekvencija kao senzori boje u vašim očima. Zatim se vrijednosti crvene, zelene i plave (RGB) koriste za izračun ukupnog utiska boje.

Dobra stvar u vezi sa ovim posebnim sistemom je to što vam sada govori boju verbalno, koristeći komandu "say" AIY glasovnih kompleta. Pogledajte priloženi video zapis.

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 zalemljenim na HAT. ~ 25 USD $ ili EUR

Adafruit TCS34725 proboj, sa zalemljenim zaglavljem. ~ 8 US $ ili EUR

Premosni kablovi.

Okvir (opcionalno)

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 unutrašnje zidove kućišta. Koristio sam samoljepljivu pjenu od crne gume.

Opcionalno: mali prekidač za dozivanje mjerenja

Nekoliko kapi ljepila za plastiku i nož za rezanje.

Korak 2: Montaža i upotreba

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 sa AIY glasovnim HAT -om postavljen je kako je opisano u AIY priručniku. Prije montaže, zaglavlja su lemljena na portove 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 samo imala odgovarajuću veličinu i oblik. Okrugli komad Forex -a 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 izbijaču izrezan je na odgovarajućoj poziciji.

Sada je Forex komad zalijepljen na kućište, a izboj senzora pričvršćen na Forex ploču, pomoću čičak trake. Zatim su unutrašnji zidovi prekriveni crnim materijalom koji upija svjetlost, upotrijebio sam samoljepljivu pjenu od gume. I crni karton bi 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 sa dev terminala, unoseći "sec/AIY_TCS34752.py". Možda ćete prvo morati učiniti python skriptu izvršnom. Kada se od vas zatraži, postavite senzorsku jedinicu iznad objekta koji se mjeri, pritisnite dugme na AIY uređaju i pričekajte sekundu ili dvije.

Zatim, na osnovu izmjerenih RGB i bijelih vrijednosti, uređaj prvo izračunava odgovarajuću vrijednost nijanse, zatim procjenjuje boju na osnovu te vrijednosti i komunicira ih verbalno putem AIY glasovnog sistema, npr. g. kao "tamnocrvena", ali također daje vrijednost nijanse. RGB, nijanse i svjetlina (svjetlost, točnije) vrijednosti se također ispisuju na ekranu.

Da bi se pojednostavio proces označavanja boja, RGB vrijednosti se pretvaraju u HSV (nijansa, zasićenje, vrijednost) format. To omogućuje označavanje boje u određenom rasponu kutova (tj. Kriška pite) i odabir boje na osnovu 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 dat će dobro prepoznavanje boje.

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 zaista jest. Za raspršivanje svjetlosti možete koristiti membranski list, ali možda ćete morati primijeniti faktor korekcije.

U slučaju prozirnih predmeta, možda bi bilo zgodno staviti ih na bijeli papir, u protivnom će količina reflektirane svjetlosti biti mala, a objekt prijavljen kao "crn".

Ako želite mjeriti boju objekata koji emitiraju svjetlost, trebali biste isključiti LED diodu na prekidaču povezivanjem "LED" priključka na prekidaču na "Uzemljenje". Sada prema tome postavite vrijednosti normalizacije.

Drugi opći problem je osvjetljenje objekta. Topla bijela LED dioda na prekidaču emituje 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

Kodeks
Kodeks

Kôd je kombinacija modifikacije koda iz AIY glasovnog priručnika i koda senzora TCS34725 kompanije Bradspi.

Također sam pokušao koristiti TCS34725 python kod iz Adafruit -a, ali sam imao problema pri pokretanju ovog i nekih drugih kodova koji koriste vanjske biblioteke 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 nijanse. Morate postaviti postavke normalizacije na osnovu eksperimentalnih mjerenja bijelih i crnih materijala za poštovanje. U skladu s tim popunite apsolutne vrijednosti za R, G i B min ili max.

Skripta koristi novu verziju naredbe "say" koja omogućava regulaciju jačine zvuka i tona. U tom slučaju ćete možda morati ažurirati datoteke upravljačkog programa audio.py i tty ili izbrisati "dijelove jačine zvuka i visine tona" iz skripte.

#!/usr/bin/env python3 # Ova skripta je adaptacija skripte servo_demo.py za AIY glas HAT, # optimizirana za prepoznavanje boja pomoću Afafruit TCS34725 proboja uvoz aiy.audio uvoz aiy.cloudspeech uvoz aiy.voicehat #iz gpiozero import LED # može biti korisno za vanjsku LED diodu na servo portu #iz gpiozero import dugmeta # bi moglo biti korisno za vanjsko dugme na servo-port vrijeme uvoza import smbus bus = smbus. SMBus (1) import coloursys def hue2color (nijansa): # tumačenje boje na osnovu izračunatih vrijednosti nijanse ako ((nijansa> 12) i (nijansa 25) i (nijansa 69) i (nijansa 164) i (nijansa 194) i (nijansa 269) i (nijansa 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 vrši prema Bradspi TCS34725 skripti: # 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 senzori omogućeni bus.write_byte (0x29, 0x80 | 0x14) # Rezultati čitanja započinju registar 14, LSB zatim MSB podaci = bus.read_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) time.sleep (1) else: print ("Uređaj nije pronađen / n") # normalizacija i transformacija izmjerenih RGBW vrijednosti col = "" # Maksimalne vrijednosti Faktori normalizacije, moraju se eksperimentalno definirati # 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_bright = 750 min_red = 340 min_green = 245 min_blue = 225 # normalizirane vrijednosti, između 0 i 1 rel_bright = ((clear - min_bright)/(max_bright - min_bright)) rel_red = ((red - min_red)/(max_red - min_red)) rel_green = ((green - min_green)/(max_green - min_green)) rel_blue = ((blue - min_blue)/(max_blue - min_blue)) hsv_col = coloursys.rgb_to_hsv (rel_red, rel_green, rel_blue) hue = hs = hs = 0 ako je rel_bright> 0.9: col = "bijelo" # ako je jako svijetlo -> bijelo elif rel_bright crno drugo: 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 dugmeta led = aiy.voicehat.get_led () # promijeni status LED dugmeta aiy.audio.get_recorder (). start () # buttoni = Button (5) # senzor udaljenosti ili drugo vanjsko dugme, spojeno na servo3/GPIO 05

aiy.audio.say ("Hello!",, volume = 50, pitch = 100) # jačina zvuka i visina zvuka zahtijevaju reviziju audio.py i _tty.py upravljačkog programa u novembru 2017. godine!

aiy.audio.say ("Za početak, pomaknite senzor iznad objekta. Zatim pritisnite plavo dugme",, jačina zvuka = 50, visina = 100) print ("Za aktiviranje mjerenja boje postavite senzor iznad objekta, a zatim pritisnite plavo dugme ") dok je True: led.set_state (aiy.voicehat. LED. ON) button.wait_for_press () # za vanjsko dugme, 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 "inače: bright = "medium" # komunicira t on daje color_text = ("Boja objekta je" + bright + "" + col) print (color_text) aiy.audio.say (color_text,, volumen = 75, pitch = 100) hue_text = ("Vrijednost nijanse je "+ hue+" stepeni ") 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čuje se: