Turinys:
- 1 žingsnis: naudojamos medžiagos
- 2 žingsnis: Surinkimas ir naudojimas
- 3 žingsnis: Kodas
- 4 žingsnis: kai kurios nuorodos ir pastabos
Video: Kalbantis spalvų jutiklis, pagrįstas AIY balso rinkiniu: 4 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Neseniai šiek tiek sužinojęs apie Brailio raštu, man buvo įdomu, ar galėčiau ką nors sukurti naudodamas „AIY“balso rinkinį, skirtą „Raspberry Pi“, kuris gali turėti realios naudos silpnaregiams. Taigi, kaip aprašyta toliau, rasite paprasto spalvų aptikimo įrenginio prototipą, kuris garsiai skaito jo išvadas.
Išsamesnė šios sistemos versija gali būti naudinga asmenims, turintiems regos sutrikimą ar spalvos aklumą.
Sistema naudoja „Raspberry Pi“su AIY balso skrybėlę. TCS34725 RGB jutiklio pertrauka yra prijungta prie HAT I2C prievado. Pertraukoje yra ryškiai šiltas baltas šviesos diodas, kuris apšviečia analizuojamą objektą. Pertrauka buvo įdėta į korpusą, siekiant optimizuoti ir standartizuoti matavimo sąlygas.
Trys spalvų jutikliai matuoja maždaug tuos pačius tris dažnių diapazonus, kaip ir spalvų jutikliai jūsų akyse. Tada raudonos, žalios ir mėlynos (RGB) vertės naudojamos bendram spalvų įspūdžiui apskaičiuoti.
Gražus šios specialios sistemos dalykas yra tai, kad dabar ji pasako jums spalvą žodžiu, naudojant AIY balso rinkinių komandą „pasakyti“. Prašome pažiūrėti į pridedamą vaizdo įrašą.
Įrenginys taip pat gali būti naudingas kaip pavyzdys I2C jutiklio įrenginiui, prijungtam prie AIY balso HAT.
1 žingsnis: naudojamos medžiagos
Raspberry Pi 3. ~ 35 US $ arba EUR
AIY balso rinkinys su antraštėmis, prilituotomis prie skrybėlės. ~ 25 USD arba EUR
„Adafruit TCS34725“pertrauka su lituojama antgaliu. ~ 8 JAV doleriai arba eurai
Trumpieji kabeliai.
Duonos lenta (neprivaloma)
Jutiklio korpusui:- panaudota „Dolce Gusto“kavos kapsulė- mažas apvalus 2 mm „Forex“gabalėlis (PVC putplasčio plokštelė), apie 37 mm skersmens,- neatspindinti juoda medžiaga, padengianti vidines korpuso sienas. Aš naudojau lipnią juodą gumos putą.
Neprivaloma: mažas jungiklis, skirtas sužadinti matavimus
Keli lašai plastikinių klijų ir peilis.
2 žingsnis: Surinkimas ir naudojimas
„Raspberry Pi“su AIY balso skrybėlę buvo nustatyta taip, kaip aprašyta AIY vadove. Prieš surinkimą antgaliai buvo lituojami prie HAT prievadų. Jutiklio korpusui „Dulce Gusto“kavos kapsulė buvo ištuštinta, išvalyta, o dugno dalis atsargiai pašalinta peiliu. Šiam tikslui galite naudoti ką nors kita, kavos kapsulė buvo tinkamo dydžio ir formos. Apvalus 2 mm Forex gabalas buvo išpjautas iš plokštelės, tada lūžis buvo padėtas centre ant Forex plokštės, padėtis pažymėta veltinio rašikliu, o atitinkamoje vietoje buvo išpjautas plyšys, skirtas antraščiui.
Dabar „Forex“gabalas buvo priklijuotas prie korpuso, o jutiklio pertrauka pritvirtinta prie „Forex“plokštės, naudojant „Velcro“juostą. Tada vidinės sienos buvo padengtos šviesą sugeriančia juoda medžiaga, aš naudojau lipnią guminę putą. Taip pat turėtų veikti juodas kartonas. Dabar, naudojant trumpiklius, HAT I2C „3.3V“prievadas buvo prijungtas prie jutiklio „V in“, „Ground“- „Gnd“, „sda“- „sda“ir „scl“- „scl“. Aš naudoju duonos lentą, kad sujungčiau abi dalis, tačiau tai nėra būtina.
Įdėkite AIY_TCS34725 python scenarijų į aplanką src ir paleiskite scenarijų iš kūrėjo terminalo, įvesdami „sec/AIY_TCS34752.py“. Pirmiausia gali tekti padaryti „python“scenarijų vykdomąjį. Kai jūsų paprašys, padėkite jutiklio bloką virš matuojamo objekto, paspauskite AIY įrenginio mygtuką ir palaukite sekundę ar dvi.
Tada, remdamasis išmatuotomis RGB ir baltos vertės, prietaisas pirmiausia apskaičiuoja atitinkamą atspalvio vertę, tada įvertina spalvą pagal šią vertę ir perduoda jas žodžiu per AIY balso sistemą, pvz. g. kaip „tamsiai raudona“, bet taip pat suteikia atspalvio vertę. RGB, atspalvio ir ryškumo (tiksliau - lengvumo) vertės taip pat spausdinamos ekrane.
Siekiant supaprastinti spalvų anotacijų procesą, RGB reikšmės konvertuojamos į HSV (atspalvio, sodrumo, vertės) formatą. Tai leidžia pažymėti spalvą tam tikru kampų diapazonu (ty pyrago gabalėliu) ir pasirinkti spalvą pagal apskaičiuotą atspalvio vertę.
Turite normalizuoti savo įrenginį pagal baltą ir juodą nuorodą. Tiesiog išmatuokite baltiausius ir juodiausius turimus popieriaus lapus, išmatuokite kiekvieną ir įdėkite šias vertes į maksimalias ir minimalias vertes į kodą. Tik optimalios atskaitos vertės suteiks gerą spalvų atpažinimą.
Viena iš pagrindinių problemų yra refleksija. Jei turite objektą su blizgiu ar poliruotu paviršiumi, jis atspindės daug šviesos diodo skleidžiamos šviesos ir atrodys daug lengvesnis nei yra iš tikrųjų. Šviesai išsklaidyti galite naudoti membranos lakštą, tačiau gali tekti pritaikyti korekcijos koeficientą.
Permatomų objektų atveju gali būti patogu juos uždėti ant balto popieriaus, nes priešingu atveju atspindėtos šviesos kiekis bus mažas ir objektas bus vadinamas „juodu“.
Jei norite išmatuoti šviesą skleidžiančių objektų spalvą, išjunkite šviesos diodą, prijungdami „LED“prievadą prie „Ground“. Dabar atitinkamai nustatykite normalizavimo vertes.
Kita bendra problema yra objekto apšvietimas. Šiltas baltas šviesos diodas, esantis ant lūžio, skleidžia nenutrūkstamą šviesos spektrą. Todėl tam tikros spalvos RGB spektre gali būti per daug arba per mažai. Norėdami gauti daugiau informacijos šia tema, peržiūrėkite mano ankstesnes instrukcijas apie kolorimetrus/ fotometrus ir spektrometrus:
www.instructables.com/id/An-Inexpensive-Ph…
www.instructables.com/id/A-Mimimal-Six-Col…
3 žingsnis: Kodas
Kodas yra AIY balso vadovo kodo modifikavimo ir Bradspi TCS34725 jutiklio kodo derinys.
Aš taip pat bandžiau naudoti „Adafruit“python kodą TCS34725, tačiau turėjau problemų paleisti šį ir kai kuriuos kitus kodus, naudojančius išorines bibliotekas kartu su AIY HAT. Bet kokia pagalba laukiama.
Kaip minėta anksčiau, spalvų anotacija pagrįsta RGB pavertimu atspalvių reikšmėmis. Turite nustatyti normalizavimo nustatymus, remdamiesi eksperimentiniais baltos ir juodos pagarbos medžiagų matavimais. Atitinkamai užpildykite absoliučias R, G ir B min arba max reikšmes.
Scenarijus naudoja naują komandos „pasakyti“versiją, leidžiančią reguliuoti garsumą ir aukštį. Tokiu atveju gali tekti atnaujinti garso.py ir tty tvarkyklės failus arba ištrinti „garsumo ir pikio dalis“iš scenarijaus.
#!/usr/bin/env python3 # Šis scenarijus yra servo_demo.py scenarijaus pritaikymas AIY balso skrybėlėms, # optimizuotas spalvų atpažinimui naudojant „Afafruit TCS34725 breakout“importą aiy.audio import aiy.cloudspeech import aiy.voicehat # iš „gpiozero“importavimo šviesos diodas # gali būti naudingas išoriniam šviesos diodui servo prievade (atspalvis): # spalvų aiškinimas, pagrįstas apskaičiuotomis atspalvių reikšmėmis, jei ((atspalvis> 12) ir (atspalvis 25) ir (atspalvis 69) ir (atspalvis 164) ir (atspalvis 194) ir (atspalvis 269) ir (atspalvis 319)) arba (atspalvis <20)): spalva = "raudona" grąžina spalvą kita: spausdinti ("kažkas nutiko")
def tcs34725 (): # matavimas ir aiškinimas.
# Matavimą atlieka Bradspi TCS34725 scenarijus: # https://bradsrpi.blogspot.com/2013/05/tcs34725-rg… bus.write_byte (0x29, 0x80 | 0x12) ver = bus.read_byte (0x29) # versija # turėtų būti 0x44, jei ver == 0x44: print ("Įrenginys rastas / n") bus.write_byte (0x29, 0x80 | 0x00) # 0x00 = ĮJUNGTI registraciją bus.write_byte (0x29, 0x01 | 0x02) # 0x01 = Įjungti, 0x02 RGB jutikliai įgalinti bus.write_byte (0x29, 0x80 | 0x14) # Skaitymo rezultatų pradžios registras 14, LSB, tada MSB duomenys = bus.read_i2c_block_data (0x29, 0) aiškus = aiškus = duomenys [1] << 8 | duomenys [0] raudona = duomenys [3] << 8 | duomenys [2] žalia = duomenys [5] << 8 | duomenys [4] mėlyni = duomenys [7] << 8 | data [6] crgb = "Absoliutus skaičius: C: %s, R: %s, G: %s, B: %s / n" %(skaidrus, raudonas, žalias, mėlynas) print (crgb) time.sleep (1) else: print ("Įrenginys nerastas / n") # išmatuotų RGBW verčių normalizavimas ir transformacija col = "" # Didžiausios vertės Normalizacijos koeficientai turi būti apibrėžti eksperimentiškai # pvz. prieš baltą popieriaus lapą. Kartkartėmis patikrinkite ir pataisykite. max_bright = 5750 max_red = 1930 max_green = 2095 max_blue = 1980 # Fonas/Minimalios vertės normalizavimo koeficientai, turi būti apibrėžti eksperimentiškai # pvz. prieš juodą popieriaus lapą. Kartkartėmis patikrinkite ir pataisykite. min_bright = 750 min_red = 340 min_green = 245 min_blue = 225 # normalizuotos vertės, nuo 0 iki 1 rel_bright = ((aišku - min_bright)/(max_bright - min_bright)) rel_red = ((raudona - min. raudona)/(max_red - min_red)) rel_green = ((žalia - min_žali)/(max_žaliai - min_žali)) rel_blue = ((mėlyna - min_ mėlyna)/(max_blue - min_blue)) hsv_col = colorsys.rgb_to_hsv (rel_red, rel_green, rel_blue) atspalvis = hsv_col [0] jei rel_bright> 0.9: col = "balta" # jei labai ryški -> balta elif rel_bright juoda kita: col = hue2color (atspalvis) # spalvų pasirinkimas pagal atspalvio reikšmes # print ("santykinės vertės ryškios, raudonos, žalios, mėlynos:") # print (rel_bright, rel_red, rel_green, rel_blue) # print ("HSV reikšmės (atspalvis, sodrumas, vertė):", hsv_col) # print ("atspalvis °", atspalvis) return [col, rel_bright, rel_red, rel_green, rel_blue, atspalvis]
def main ():
button = aiy.voicehat.get_button () # change Mygtuko būsenos indikatorius = aiy.voicehat.get_led () # change Mygtuko šviesos diodo būsena aiy.audio.get_recorder (). start () # buttoni = Mygtukas (5) # atstumo jutiklis arba kitas išorinis mygtukas, prijungtas prie servo3/GPIO 05
aiy.audio.say („Sveiki!“,, tūris = 50, pikis = 100) # garsui ir aukščiui reikia 2017 m. lapkričio mėn. peržiūrėti audio.py ir _tty.py tvarkyklę!
aiy.audio.say ("Norėdami pradėti, perkelkite jutiklį virš objekto. Tada paspauskite mėlyną mygtuką",, garsumas = 50, žingsnis = 100) print ("Norėdami įjungti spalvų matavimo vietos jutiklį virš objekto, tada paspauskite mėlyną mygtuką "), nors tiesa: led.set_state (aiy.voicehat. LED. ON) button.wait_for_press () # išorinis mygtukas, pakeiskite mygtuką mygtuku led.set_state (aiy.voicehat. LED. BLINK) aiy.audio.say (" Matavimas ",, tūris = 50, žingsnis = 100) rezultatas = tcs34725 () # sukelia matavimą ir aiškinimą col = rezultatas [0] # spalva, kaip teksto atspalvis = str (int (rezultatas [5])) # atspalvis °, kaip tekstas r_red = str (int (rezultatas [2]*255)) # R reikšmė, kaip tekstas r_green = str (int (rezultatas [3]*255)) # G reikšmė, kaip tekstas r_blue = str (int (rezultatas [4]*255)) # B reikšmė, kaip tekstas r_bright = str (int (rezultatas [1]*100)) # W vertė, kaip tekstas led.set_state (aiy.voicehat. LED. OFF), jei col == "balta "arba col ==" juodas ": ryškus =" "elifas (rezultatas [1]> 0,69): #spalvos ryškumas/šviesumas ryškus =" šviesus "elifas (rezultatas [1] <0,25): ryškus =" tamsus "kitas: ryškus = "vidutinis" # bendravimas t jis rezultatus color_text = ("Objekto spalva yra" + ryškus + "" + col) print (color_text) aiy.audio.say (color_text,, volume = 75, pitch = 100) hue_text = ("Atspalvio vertė yra "+ atspalvis+" laipsniai ") spausdinti (hue_text) aiy.audio.say (hue_text,, tūris = 75, žingsnis = 100)
jei _vardas_ == '_main_': pagrindinis ()
4 žingsnis: kai kurios nuorodos ir pastabos
TCS34725 jutiklio duomenų lapą rasite čia:
Mano naudojamo jutiklio skaitymo kodas buvo aprašytas čia:
Ankstesnėse instrukcijose galite rasti papildomos informacijos apie spalvų matavimus naudojant šį ir kitą jutiklį:
www.instructables.com/id/An-Inexpensive-Ph…
www.instructables.com/id/A-Mimimal-Six-Col…
Rekomenduojamas:
Paprastas „pasidaryk pats“spalvų jutiklis iš „Magicbit“: 5 žingsniai
Paprastas „pasidaryk pats“spalvų jutiklis iš „Magicbit“: šioje pamokoje sužinosime, kaip padaryti paprastą spalvų jutiklį naudojant „Magicbit“su „Arduino“
Spalvų aptikimu pagrįstas objekto stebėjimas: 10 žingsnių
Spalvų aptikimu pagrįstas objektų stebėjimas: istorija Aš padariau šį projektą, norėdamas išmokti apdoroti vaizdus naudojant Raspberry PI ir atidaryti CV. Kad šis projektas būtų įdomesnis, aš panaudojau du SG90 servo variklius ir pritvirtinau fotoaparatą. Vienas variklis buvo naudojamas horizontaliai judėti, o kitas - vertikaliam
Spalvų sekimo robotas, pagrįstas įvairiapusišku ratu ir „OpenCV“: 6 žingsniai
Spalvų sekimo robotas, pagrįstas įvairiapusišku ratu ir „OpenCV“: spalvų stebėjimui įgyvendinti naudoju daugialypę ratų važiuoklę ir naudoju mobilią programinę įrangą, vadinamą „OpenCVBot“. Dėkojame čia esantiems programinės įrangos kūrėjams. Dėkojame. „OpenCV Bot“iš tikrųjų aptinka arba seka bet kurį realaus laiko objektą per vaizdo apdorojimą
Kalbantis temperatūros ir drėgmės jutiklis - Si7021 ir „Little Buddy Talker“: 3 žingsniai
Kalbantis temperatūros ir drėgmės jutiklis - Si7021 ir „Little Buddy Talker“: „Mažasis bičiulis“yra mažas įrenginys, leidžiantis pridėti paprastą balso išvestį prie „Arduino“projektų. Jame yra ribotas 254 žodžių rinkinys ir jis gali būti prijungtas prie „Arduino“ar kitų mikrovaldiklių per SPI. Mažasis bičiulis T
Kalbantis vėjo jutiklis (su balso įrašymo rinkiniu): 6 žingsniai
Kalbantis vėjo jutiklis (su balso įrašymo rinkiniu): Tai vėjo jutiklis su laidžiais siūlais, laidžiais audiniais ir metaliniu rutuliu