Sisukord:
- Samm: kasutatud materjalid
- Samm: kokkupanek ja kasutamine
- 3. samm: kood
- 4. samm: mõned lingid ja märkused
Video: Rääkiv värvisensor, mis põhineb AIY häälkomplektil: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
Olles hiljuti Braille'i kohta natuke õppinud, mõtlesin, kas saaksin Rasyberry Pi jaoks AIY häälkomplekti abil midagi ehitada, millest võib nägemispuudega inimestele reaalset kasu saada. Järgnevalt kirjeldatud viisil leiate lihtsa värvituvastusseadme prototüübi, mis loeb selle tulemused valjusti.
Selle süsteemi täpsem versioon võib olla kasulik nägemispuudega või värvipimedusega inimestele.
Süsteem kasutab Raspberry Pi -d, millele on kinnitatud AIY häälkübar. TCS34725 RGB anduri katkestus on ühendatud HAT -i I2C -pordiga. Läbilõige sisaldab eredalt sooja valget LED -i, mis valgustab analüüsitavat objekti. Katkestus paigutati korpusesse, et optimeerida ja standardida mõõtmistingimusi.
Kolm värvisensorit mõõdavad umbes sama kolme sagedusvahemikku kui teie silmade värviandurid. Seejärel kasutatakse üldise värvimulje arvutamiseks punaseid, rohelisi ja siniseid (RGB) väärtusi.
Selle erilise süsteemi juures on tore see, et see ütleb teile nüüd värvi verbaalselt, kasutades AIY häälkomplektide "ütle" käsku. Palun vaadake lisatud videot.
Seade võib olla kasulik ka näitena AI2 häälkübaraga ühendatud I2C anduriseadmele.
Samm: kasutatud materjalid
Vaarika Pi 3. ~ 35 USA dollarit või eurot
AIY häälkomplekt, päised joodetud mütsi külge. ~ 25 USA dollarit või eurot
Adafruit TCS34725 läbilõige, jootekolviga. ~ 8 USA dollarit või eurot
Jumper kaablid.
Leivalaud (valikuline)
Anduri korpuse jaoks:- kasutatud "Dolce Gusto" kohvikapsel- väike ümmargune tükk 2 mm Forexi (PVC vahtplaat), umbes 37 mm läbimõõduga- mittepeegeldav must materjal korpuse siseseinte katmiseks. Kasutasin isekleepuvat musta kummivahtu.
Valikuline: väike lüliti mõõtmiste esilekutsumiseks
Mõni tilk plastliimi ja lõiketera.
Samm: kokkupanek ja kasutamine
AIY häälkübaraga Raspberry Pi seadistati AIY käsiraamatus kirjeldatud viisil. Enne kokkupanekut joodeti päised HAT -i portidesse. Anduri korpuse jaoks tühjendati "Dulce Gusto" kohvikapsel, puhastati see ja põhjaosa eemaldati noaga ettevaatlikult. Sel eesmärgil võite kasutada midagi muud, kohvikapslil oli lihtsalt õige suurus ja kuju. Plaadilt lõigati ümmargune 2 mm Forexi tükk, seejärel asetati murrang Forexi plaadile keskele, viltpliiatsiga märgistatud asend ja sobivas asendis lõigati pilu päise jaoks.
Nüüd liimiti Forexi tükk Velcro riba abil korpusele ja anduri purunemine Forexi plaadi külge. Seejärel kaeti siseseinad valgust neelava musta materjaliga, mina kasutasin isekleepuvat kummivahtu. Must papp peaks samuti toimima. Nüüd ühendati hüppajakaablite abil HAT -i I2C "3.3V" port anduri "V in" -ga, Ground to Gnd, sda to sda ja scl to scl. Olin mõlema osa ühendamiseks kasutanud leivaplaati, kuid see pole vajalik.
Asetage AIY_TCS34725 pythoni skript kausta src ja käivitage skript arendusterminalist, sisestades "sec/AIY_TCS34752.py". Võimalik, et peate esmalt muutma pythoni skripti käivitatavaks. Kui küsitakse, asetage andur üksus mõõdetava objekti kohale, vajutage AIY -seadme nuppu ja oodake sekund või kaks.
Seejärel arvutab seade mõõdetud RGB ja valgete väärtuste põhjal kõigepealt vastava tooni väärtuse, seejärel hindab selle väärtuse põhjal värvi ja edastab need suuliselt AIY häälsüsteemi kaudu, nt. g. "tumepunaseks", kuid annab ka tooniväärtuse. Ekraanile prinditakse ka RGB, tooni ja heleduse (täpsuselt heledus) väärtused.
Värvimärkimisprotsessi lihtsustamiseks teisendatakse RGB väärtused HSV (toon, küllastus, väärtus) vormingusse. See võimaldab märkida värvi teatud nurkade vahemikku (st pirukaviil) ja valida värvi arvutatud tooniväärtuse alusel.
Peate oma seadme normaliseerima valge ja musta viite suhtes. Mõõtke lihtsalt saadaolevad valgeimad ja mustimad paberitükid, mõõtke mõlemad ja asetage need väärtused maksimaalsete ja minimaalsete väärtustena koodi. Ainult optimaalsed võrdlusväärtused annavad hea värvituvastuse.
Üks põhiprobleeme on peegeldus. Kui teil on läikiva või poleeritud pinnaga ese, peegeldab see palju LED -i kiirgavat valgust, tundudes palju kergem kui see tegelikult on. Valguse hajutamiseks võite kasutada membraanilehte, kuid võib -olla peate rakendama parandusteguri.
Läbipaistvate esemete puhul võib olla mugav need valgele paberile asetada, vastasel juhul on peegeldunud valguse hulk väike ja objekt on märgitud mustaks.
Kui soovite mõõta valgust kiirgavate esemete värvi, peaksite väljalülitatud LED -i välja lülitama, ühendades katkestuse "LED" -pordi "Ground" -ga. Nüüd määrake normaliseerimisväärtused vastavalt.
Teine üldine probleem on objekti valgustus. Läbilõike soe valge LED kiirgab katkematut valgusspektrit. Seetõttu võivad teatud värvid olla RGB spektris üle- või alaesindatud. Selle teema kohta lisateabe saamiseks vaadake palun minu varasemaid juhiseid kolorimeetrite/ fotomeetrite ja spektromeetrite kohta:
www.instructables.com/id/An-Inexpensive-Ph…
www.instructables.com/id/A-Mimimal-Six-Col…
3. samm: kood
Kood on kombinatsioon AIY häälkäsiraamatu koodi muutmisest ja Bradspi TCS34725 anduri koodist.
Olin proovinud kasutada ka Adafruit'i Python -koodi TCS34725, kuid mul oli probleeme selle ja mõne muu koodi käivitamisega, mis kasutavad väliseid teeke koos AIY HAT -iga. Igasugune abi teretulnud.
Nagu varem mainitud, põhineb värvimärkimine RGB muutmisel tooniväärtusteks. Normaliseerimise seaded peate määrama valgete ja mustade aupaklikkusmaterjalide eksperimentaalsete mõõtmiste põhjal. Täitke vastavalt R, G ja B min või max absoluutväärtused.
Skript kasutab käsu "ütle" uut versiooni, mis võimaldab reguleerida helitugevust ja helikõrgust. Sellisel juhul peate võib -olla värskendama audio.py ja tty draiverifaile või kustutama skripti "helitugevuse ja helikõrguse osad".
#!/usr/bin/env python3 # See skript on kohandus servo_demo.py skriptist AIY Voice HAT jaoks, # mis on optimeeritud Afafruit TCS34725 breakout impordi aiy.audio import aiy.cloudspeech import aiy.voicehat # gpiozero impordi LED-ilt # võib olla abi servopordi välise LED-i jaoks (toon): # värvide tõlgendus, mis põhineb arvutatud tooniväärtustel, kui ((toon> 12) ja (toon 25) ja (toon 69) ja (toon 164) ja (toon 194) ja (toon 269) ja (toon 319) või (toon <20)): color = "red" tagastab värvi else: print ("midagi läks valesti")
def tcs34725 (): # mõõtmine ja tõlgendamine.
# Mõõtmist teostab Bradspi TCS34725 skript: # https://bradsrpi.blogspot.com/2013/05/tcs34725-rg… bus.write_byte (0x29, 0x80 | 0x12) ver = bus.read_byte (0x29) # versioon # peaks olema 0x44, kui ver == 0x44: print ("Seade leitud / n") bus.write_byte (0x29, 0x80 | 0x00) # 0x00 = LUBAB registri bus.write_byte (0x29, 0x01 | 0x02) # 0x01 = Toide sisse, 0x02 RGB andurid lubasid bus.write_byte (0x29, 0x80 | 0x14) # Lugemistulemuste algusregister 14, LSB, seejärel MSB andmed = bus.read_i2c_block_data (0x29, 0) selge = selge = andmed [1] << 8 | andmed [0] punane = andmed [3] << 8 | andmed [2] roheline = andmed [5] << 8 | andmed [4] sinine = andmed [7] << 8 | data [6] crgb = "Absoluutne arv: C: %s, R: %s, G: %s, B: %s / n" %(selge, punane, roheline, sinine) print (crgb) time.sleep (1) else: print ("Seadet ei leitud / n") # mõõdetud RGBW väärtuste normaliseerimine ja teisendamine col = "" # Maksimaalsed väärtused Normaliseerimistegurid tuleb määratleda eksperimentaalselt # nt vs valge paberileht. Kontrollige ja parandage aeg -ajalt. max_bright = 5750 max_red = 1930 max_green = 2095 max_blue = 1980 # Taust/miinimumväärtuste normaliseerimistegurid, tuleb määratleda katseliselt # nt. vs must paberileht. Kontrollige ja parandage aeg -ajalt. min_bright = 750 min_red = 340 min_green = 245 min_blue = 225 # normaliseeritud väärtused, vahemikus 0 kuni 1 rel_bright = ((selge - min_bright)/(max_bright - min_bright)) rel_red = ((red - min_red)/(max_red - min_red)) rel_green = ((roheline - min_roheline)/(max_roheline - min_roheline)) rel_blue = ((sinine - min_blue)/(max_blue - min_blue)) hsv_col = colorsys.rgb_to_hsv (rel_red, rel_green, rel_blue) hue = hsv_col [0] kui rel_bright> 0,9: col = "valge" # kui väga hele -> valge elif rel_bright must muu: col = hue2color (hue) # värvivalik tooni väärtuste järgi # print ("suhtelised väärtused heledad, punased, rohelised, sinised:") # print (rel_bright, rel_red, rel_green, rel_blue) # print ("HSV väärtused (toon, küllastus, väärtus):", hsv_col) # print ("toon toonides", toon) return [col, rel_bright, rel_red, rel_green, rel_blue, hue]
def main ():
button = aiy.voicehat.get_button () # change Nupu oleku LED = aiy.voicehat.get_led () # change Button-LED status aiy.audio.get_recorder (). start () # buttoni = Button (5) # distantsandur või muu väline nupp, ühendatud servo3/GPIO 05 -ga
aiy.audio.say ("Tere!",, maht = 50, helikõrgus = 100) # helitugevus ja helikõrgus nõuavad audio.py ja _tty.py draiverite novembri 2017. aasta ülevaatamist!
aiy.audio.say ("Alustuseks liigutage andurit objekti kohale. Seejärel vajutage sinist nuppu",, helitugevus = 50, samm = 100) print ("Värvimõõtmise kohaanduri aktiveerimiseks objekti kohal, seejärel vajutage sinist nuppu ") kuigi True: led.set_state (aiy.voicehat. LED. ON) button.wait_for_press () # välise nupu jaoks, asendage nupp nupuga led.set_state (aiy.voicehat. LED. BLINK) aiy.audio.say (" Mõõtmine ",, maht = 50, samm = 100) tulemus = tcs34725 () # kutsub esile mõõtmise ja tõlgendamise col = tulemus [0] # värv, teksti toonina = str (int (tulemus [5])) # toon, ° tekstina r_punane = str (int (tulemus [2]*255)) # R väärtus, tekstina r_roheline = str (int (tulemus [3]*255)) # G väärtus, tekstina r_sinine = str (int (tulemus [4]*255)) # B väärtus tekstina r_bright = str (int (tulemus [1]*100)) # W väärtus, tekstina led.set_state (aiy.voicehat. LED. OFF), kui col == "valge "või col ==" must ": bright =" "elif (tulemus [1]> 0,69): #heledus/heledus hele =" hele "elif (tulemus [1] <0,25): hele =" tume "muu: hele = "keskmine" # suhtlemine t ta tulemused color_text = ("Objekti värv on" + hele + "" + col) print (color_text) aiy.audio.say (color_text,, volume = 75, pitch = 100) hue_text = ("Tooni väärtus on "+ toon+" kraadid ") print (hue_text) aiy.audio.say (hue_text,, helitugevus = 75, samm = 100)
kui _nimi_ == '_main_': peamine ()
4. samm: mõned lingid ja märkused
TCS34725 anduri andmelehe leiate siit:
Minu kasutatud anduri lugemise koodi kirjeldati siin:
Selle ja teise anduri värvimõõtmiste kohta leiate lisateavet minu eelmistest juhenditest:
www.instructables.com/id/An-Inexpensive-Ph…
www.instructables.com/id/A-Mimimal-Six-Col…
Soovitan:
Automaatne siseruumides kasutatav kasvuhoone, mis põhineb Ikea sokkel: 5 sammu
Automaatne siseruumides kasutatav kasvuhoone Ikea Sockeri baasil: Tere, see on minu esimene juhendatav. Ma õppisin selle kogukonnaga palju ja arvan, et on aeg oma tagasihoidlikud ideed tagasi tuua. Mul on kahju oma inglise keele pärast, see on kehv, aga ma teen kõik endast oleneva. Idee oli teha Deskopi kasvuhoone, mis laseb mul seemneid kasvatada ja
Apple HomeKiti WiFi-õhukuivati, mis põhineb ESP8266-l?: 6 sammu (koos piltidega)
Apple HomeKiti WiFi-õhukuivati põhineb ESP8266-l?: Kahjuks on seal ainult üks või kaks õhukuivatit, mis toetavad Apple HomeKiti, kuid neil on tõesti kõrged hinnad (300 dollarit+). Nii et olen otsustanud teha oma WiFi-toega Apple HomeKiti õhukuivati juba olemasoleva odava põhjal? Ma
Rc auto, mis põhineb 434 MHz Rf -moodulil: 5 sammu
Rc -auto 434 MHz Rf -moodulil: 1) perfoplaat (näiv PCB) 2) juhtmed 4) RF -moodulid 5) takistused 1M ja 51K 6) LED -id 7) ic7805 pinge tagasi
Lora Gateway, mis põhineb MicroPython ESP32 -l: 10 sammu (koos piltidega)
Lora Gateway põhineb MicroPython ESP32 -l: Lora on viimastel aastatel olnud väga populaarne. Seda tehnoloogiat kasutav traadita side moodul on tavaliselt odav (kasutades vaba spektrit), väike, energiasäästlik ja pika sidekaugusega ning seda kasutatakse peamiselt vastastikuseks suhtlemiseks
MQmax 0,7 odava WiFi IoT platvorm, mis põhineb Esp8266 -l ja Arduino Mini Pro -l: 6 sammu
MQmax 0,7 madala hinnaga WiFi IoT platvorm, mis põhineb Esp8266 -l ja Arduino Mini Pro -l: Tere See on minu teine juhendatav (nüüdsest lõpetan loendamise). Tegin selle, et luua lihtne (vähemalt minu jaoks), odav, hõlpsasti valmistatav ja tõhus platvorm Real IoT rakendustele, mis sisaldavad M2M -i tööd. See platvorm töötab esp8266 ja