Satura rādītājs:

Runājošs krāsu sensors, pamatojoties uz AIY balss komplektu: 4 soļi
Runājošs krāsu sensors, pamatojoties uz AIY balss komplektu: 4 soļi

Video: Runājošs krāsu sensors, pamatojoties uz AIY balss komplektu: 4 soļi

Video: Runājošs krāsu sensors, pamatojoties uz AIY balss komplektu: 4 soļi
Video: Нефтяные исправления, которые вы должны изучить | Дневники семинара | Эдд Чайна 2024, Novembris
Anonim
Runājošs krāsu sensors, pamatojoties uz AIY balss komplektu
Runājošs krāsu sensors, pamatojoties uz AIY balss komplektu
Runājošs krāsu sensors, pamatojoties uz AIY balss komplektu
Runājošs krāsu sensors, pamatojoties uz AIY balss komplektu
Runājošs krāsu sensors, pamatojoties uz AIY balss komplektu
Runājošs krāsu sensors, pamatojoties uz AIY balss komplektu
Runājošs krāsu sensors, pamatojoties uz AIY balss komplektu
Runājošs krāsu sensors, pamatojoties uz AIY balss komplektu

Nesen uzzinājis par Braila rakstu, es domāju, vai es varētu kaut ko izveidot, izmantojot AIY balss komplektu Raspberry Pi, kas varētu dot reālu labumu redzes invalīdiem. Tālāk aprakstīts, jūs atradīsit vienkāršas krāsu noteikšanas ierīces prototipu, kas skaļi nolasa savus secinājumus.

Izstrādātāka šīs sistēmas versija varētu būt noderīga cilvēkiem ar redzes traucējumiem vai krāsu aklumu.

Sistēma izmanto Raspberry Pi ar piestiprinātu AIY balss cepuri. TCS34725 RGB sensora pārtraukums ir pievienots HAT I2C portam. Sadalījumā ir spilgti silts balts LED, lai apgaismotu analizējamo objektu. Izlaušana tika ievietota korpusā, lai optimizētu un standartizētu mērīšanas apstākļus.

Trīs krāsu sensori mēra aptuveni tādus pašus trīs frekvenču diapazonus kā krāsu sensori jūsu acīs. Pēc tam sarkanās, zaļās un zilās (RGB) vērtības tiek izmantotas, lai aprēķinātu kopējo krāsu iespaidu.

Jaukā lieta par šo īpašo sistēmu ir tā, ka tagad tā stāsta jums krāsu mutiski, izmantojot AIY balss komplektu komandu "teikt". Lūdzu, apskatiet pievienoto video.

Ierīce varētu būt noderīga arī kā piemērs I2C sensora ierīcei, kas savienota ar AIY balss HAT.

1. darbība. Izmantotie materiāli

Raspberry Pi 3. ~ 35 ASV dolāri jeb EUR

AIY balss komplekts ar galvenēm, kas pielodētas pie HAT. ~ 25 ASV dolāri vai EUR

Adafruit TCS34725 izlaušanās ar lodētu galvu. ~ 8 ASV dolāri vai EUR

Jumper kabeļi.

Maizes dēlis (pēc izvēles)

Sensora korpusam:- lietota "Dolce Gusto" kafijas kapsula- neliels apaļš 2 mm Forex gabals (PVC putu plāksne), aptuveni 37 mm diametrā- neatstarojošs melns materiāls, kas pārklāj korpusa iekšējās sienas. Es izmantoju pašlīmējošas melnas gumijas putas.

Pēc izvēles: mazs slēdzis, lai izsauktu mērījumus

Daži pilieni plastmasas līmes un griezējnazis.

2. darbība: montāža un lietošana

Montāža un lietošana
Montāža un lietošana
Montāža un lietošana
Montāža un lietošana
Montāža un lietošana
Montāža un lietošana

Raspberry Pi ar AIY balss HAT tika iestatīts, kā aprakstīts AIY rokasgrāmatā. Pirms montāžas galvenes tika pielodētas pie HAT ostām. Sensora korpusam "Dulce Gusto" kafijas kapsula tika iztukšota, notīrīta, un daļa no dibena uzmanīgi noņemta ar nazi. Šim nolūkam varat izmantot kaut ko citu, kafijas kapsulai bija tikai pareizais izmērs un forma. No plāksnes tika izgriezts apaļš 2 mm Forex gabals, tad izlauzums tika novietots uz Forex plāksnes centrā, pozīcija tika atzīmēta ar filca pildspalvu, un atbilstošajā vietā tika izgriezta sprauga galvenei uz izlaušanās.

Tagad Forex gabals tika pielīmēts pie korpusa un sensora izlauzums tika piestiprināts pie Forex plāksnes, izmantojot Velcro sloksni. Tad iekšējās sienas tika pārklātas ar gaismu absorbējošu melnu materiālu, es izmantoju pašlīmējošas gumijas putas. Melnajam kartonam vajadzētu arī darboties. Tagad, izmantojot džemperkabeļus, HAT I2C "3.3V" ports tika pievienots sensora "V in", Ground to Gnd, sda - sda un scl - scl. Es biju izmantojis maizes dēli, lai savienotu abas daļas, bet tas nav nepieciešams.

Ievietojiet AIY_TCS34725 python skriptu mapē src un palaidiet skriptu no izstrādātāja termināļa, ievadot "sec/AIY_TCS34752.py". Iespējams, vispirms ir jāizveido izpildāmā python skripts. Kad tiek prasīts, novietojiet sensoru virs mērāmā objekta, nospiediet AIY ierīces pogu un pagaidiet sekundi vai divas.

Pēc tam, pamatojoties uz izmērītajām RGB un baltās vērtības, ierīce vispirms aprēķina atbilstošo nokrāsas vērtību, pēc tam novērtē krāsu, pamatojoties uz šo vērtību, un paziņo to mutiski, izmantojot AIY balss sistēmu, piem. g. kā "tumši sarkans", bet arī piešķir nokrāsas vērtību. Uz ekrāna tiek drukātas arī RGB, nokrāsas un spilgtuma (precīzāk, viegluma) vērtības.

Lai vienkāršotu krāsu anotācijas procesu, RGB vērtības tiek pārveidotas HSV (nokrāsa, piesātinājums, vērtība) formātā. Tas ļauj anotēt krāsu noteiktam leņķu diapazonam (piemēram, pīrāga šķēlei) un izvēlēties krāsu, pamatojoties uz aprēķināto nokrāsas vērtību.

Jums ir jānormalizē ierīce pret baltu un melnu atsauci. Vienkārši izmēriet pieejamākos un baltākos papīra gabalus, veiciet mērījumus un ievietojiet šīs vērtības kā maksimālās un minimālās vērtības kodā. Tikai optimālas atsauces vērtības nodrošinās labu krāsu atpazīšanu.

Viena no galvenajām problēmām ir pārdomas. Ja jums ir priekšmets ar spīdīgu vai pulētu virsmu, tas atspoguļos daudz gaismas diodes izstarotās gaismas, izskatoties daudz vieglāks nekā patiesībā. Gaismas izkliedēšanai varat izmantot membrānas loksni, bet, iespējams, būs jāievieš korekcijas koeficients.

Caurspīdīgu priekšmetu gadījumā var būt ērti tos novietot uz balta papīra, pretējā gadījumā atstarotās gaismas daudzums būs mazs un objekts tiks atzīmēts kā “melns”.

Ja vēlaties izmērīt gaismu izstarojošo objektu krāsu, izslēdziet gaismas diodi, savienojot "LED" pieslēgvietu uz "Ground". Tagad attiecīgi iestatiet normalizācijas vērtības.

Vēl viena vispārīga problēma ir objekta apgaismojums. Siltā balta gaismas diode uz izlaušanās izstaro nepārtrauktu gaismas spektru. Tāpēc dažas krāsas var būt pārāk vai nepietiekami pārstāvētas RGB spektrā. Lai iegūtu plašāku informāciju par šo tēmu, lūdzu, apskatiet manus iepriekšējos norādījumus par kolorimetriem/ fotometriem un spektrometriem:

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

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

3. darbība: kods

Kods
Kods

Kods ir kombinācija no AIY balss rokasgrāmatas koda modifikācijas un Bradspi TCS34725 sensora koda.

Es arī mēģināju izmantot Adafruit TCS34725 pitona kodu, taču man bija problēmas palaist šo un dažus citus kodus, kas izmanto ārējās bibliotēkas kombinācijā ar AIY HAT. Jebkura palīdzība laipni gaidīta.

Kā minēts iepriekš, krāsu anotācijas pamatā ir RGB pārveidošana par nokrāsu vērtībām. Jums ir jāiestata normalizācijas iestatījumi, pamatojoties uz eksperimentāliem baltas un melnas godbijības materiālu mērījumiem. Attiecīgi aizpildiet R, G un B min vai max absolūtās vērtības.

Skripts izmanto jaunu komandas "say" versiju, kas ļauj regulēt skaļumu un piķi. Šajā gadījumā jums, iespējams, būs jāatjaunina audio.py un tty draivera faili vai jāizdzēš "skaļuma un piķa daļas" no skripta.

#!/usr/bin/env python3 # Šis skripts ir servo_demo.py skripta adaptācija AIY balss HAT, # optimizēta krāsu atpazīšanai, izmantojot Afafruit TCS34725 pārtraukuma importu aiy.audio import aiy.cloudspeech import aiy.voicehat # no gpiozero importēšanas gaismas diodes # varētu būt noderīgs ārējam gaismas diodei servoportā # no gpiozero importēšanas pogas # varētu būt noderīga ārējai pogai servoporta importēšanas laikā importēt smbus kopne = smbus. SMBus (1) importē krāsas s def hue2color (nokrāsa): # krāsu interpretācija, pamatojoties uz aprēķinātajām nokrāsu vērtībām, ja ((nokrāsa> 12) un (nokrāsa 25) un (nokrāsa 69) un (nokrāsa 164) un (nokrāsa 194) un (nokrāsa 269) un (nokrāsa 319) vai (nokrāsa <20)): color = "red" atgriež krāsu else: print ("kaut kas nogāja greizi")

def tcs34725 (): # mērīšana un interpretācija.

# Mērījumus veic Bradspi TCS34725 skripts: # https://bradsrpi.blogspot.com/2013/05/tcs34725-rg… bus.write_byte (0x29, 0x80 | 0x12) ver = bus.read_byte (0x29) # versija # jābūt 0x44, ja ver == 0x44: print ("Ierīce atrasta / n") bus.write_byte (0x29, 0x80 | 0x00) # 0x00 = ENABLE register bus.write_byte (0x29, 0x01 | 0x02) # 0x01 = Power on, 0x02 iespējoti RGB sensori bus.write_byte (0x29, 0x80 | 0x14) # Lasīšanas rezultātu sākuma reģistrs 14, LSB, pēc tam MSB dati = bus.read_i2c_block_data (0x29, 0) skaidrs = skaidrs = dati [1] << 8 | dati [0] sarkans = dati [3] << 8 | dati [2] zaļš = dati [5] << 8 | dati [4] zils = dati [7] << 8 | data [6] crgb = "Absolūtais skaits: C: %s, R: %s, G: %s, B: %s / n" %(skaidrs, sarkans, zaļš, zils) drukāt (crgb) time.sleep (1) else: print ("Ierīce nav atrasta / n") # izmērīto RGBW vērtību normalizēšana un pārveidošana col = "" # Maksimālās vērtības Normalizācijas koeficienti, jādefinē eksperimentāli # piem. pret baltu papīra lapu. Laiku pa laikam pārbaudiet un izlabojiet. max_bright = 5750 max_red = 1930 max_green = 2095 max_blue = 1980 # Fons/minimālo vērtību normalizācijas koeficienti, jādefinē eksperimentāli # piem. pret melno papīra lapu. Laiku pa laikam pārbaudiet un izlabojiet. min_bright = 750 min_red = 340 min_green = 245 min_blue = 225 # normalizētas vērtības, no 0 līdz 1 rel_bright = ((skaidrs - min_bright)/(max_bright - min_bright)) rel_red = ((sarkans - min_red)/(max_red - min_red)) rel_green = ((zaļš - min_zaļš)/(max_green - min_green)) rel_blue = ((zils - min_zils)/(max_blue - min_blue)) hsv_col = colorsys.rgb_to_hsv (rel_red, rel_green, rel_blue) nokrāsa = hsv_col [0] ja rel_bright> 0,9: col = "balts" # ja ļoti spilgts -> balts elifs rel_bright melns cits: col = hue2color (nokrāsa) # krāsu izvēle pēc nokrāsas vērtībām # print ("relatīvās vērtības spilgti, sarkani, zaļi, zili:") # print (rel_bright, rel_red, rel_green, rel_blue) # print ("HSV vērtības (nokrāsa, piesātinājums, vērtība):", hsv_col) # print ("nokrāsa °", nokrāsa) return [col, rel_bright, rel_red, rel_green, rel_blue, nokrāsa]

def main ():

button = aiy.voicehat.get_button () # change Button status led = aiy.voicehat.get_led () # change Button-LED status aiy.audio.get_recorder (). start () # buttoni = Poga (5) # attāluma sensors vai cita ārējā poga, savienota ar servo3/GPIO 05

aiy.audio.say ("Sveiki!",, apjoms = 50, piķis = 100) # skaļumam un skaļumam nepieciešama audio.py un _tty.py draivera pārskatīšana 2017. gada novembrī!

aiy.audio.say ("Lai sāktu, pārvietojiet sensoru virs objekta. Pēc tam nospiediet zilo pogu",, skaļums = 50, piķis = 100) print ("Lai aktivizētu krāsu mērīšanas vietas sensoru virs objekta, pēc tam nospiediet zilo pogu "), kamēr True: led.set_state (aiy.voicehat. LED. ON) button.wait_for_press () # ārējai pogai, aizstājiet pogu ar buttoni led.set_state (aiy.voicehat. LED. BLINK) aiy.audio.say (" Mērīšana ",, tilpums = 50, piķis = 100) rezultāts = tcs34725 () # izraisa mērījumus un interpretāciju col = rezultāts [0] # krāsa, kā teksta nokrāsa = str (int (rezultāts [5])) # nokrāsa °, kā teksts r_sarkana = str (int (rezultāts [2]*255)) # R vērtība, kā teksts r_zaļš = str (int (rezultāts [3]*255)) # G vērtība, kā teksts r_zila = str (int (rezultāts [4]*255)) # B vērtība, kā teksts r_bright = str (int (rezultāts [1]*100)) # W vērtība, kā teksts led.set_state (aiy.voicehat. LED. OFF), ja kolonna == "balta "vai kolons ==" melns ": gaišs =" "elif (rezultāts [1]> 0,69): #krāsas spilgtums/gaišums spilgts =" gaišs "elifs (rezultāts [1] <0,25): spilgts =" tumšs "cits: gaišs = "vidējs" # komunicējošs t he results color_text = ("Objekta krāsa ir" + spilgts + "" + col) print (color_text) aiy.audio.say (color_text,, volume = 75, pitch = 100) hue_text = ("Nokrāsas vērtība ir "+ nokrāsa+" grādi ") drukāt (hue_text) aiy.audio.say (hue_text,, apjoms = 75, piķis = 100)

ja _name_ == '_main_': main ()

4. solis: dažas saites un piezīmes

TCS34725 sensora datu lapu var atrast šeit:

Kods sensora lasīšanai, ko esmu izmantojis, tika aprakstīts šeit:

Jūs varat atrast papildu informāciju par krāsu mērījumiem ar šo un citu sensoru manās iepriekšējās instrukcijās:

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

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

Ieteicams: