INHOUDSOPGAWE:
- Stap 1: Gebruikte materiaal
- Stap 2: Montering en gebruik
- Stap 3: Die kode
- Stap 4: 'n Paar skakels en opmerkings
Video: N Sprekende kleursensor, gebaseer op die AIY Voice Kit: 4 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
Nadat ek onlangs 'n bietjie oor braille geleer het, het ek gewonder of ek iets kan bou met die AIY-stemstel vir die Raspberry Pi, wat 'n werklike voordeel vir gesiggestremdes kan inhou. So beskryf in die volgende, vind u 'n prototipe van 'n eenvoudige kleuropsporingstoestel wat die bevindinge hardop lees.
'N Meer uitgebreide weergawe van hierdie stelsel kan nuttig wees vir persone met 'n gestremde sig of kleurblindheid.
Die stelsel gebruik 'n Raspberry Pi met 'n AIY -stemhoed aangeheg. 'N TCS34725 RGB -sensoruitbraak is gekoppel aan die I2C -poort van die HAT. Die uitbarsting bevat 'n helder warm wit LED om die voorwerp wat ontleed moet word, te verlig. Die uitbraak is in 'n behuising geplaas om die metingstoestande te optimaliseer en te standaardiseer.
Die drie kleursensor meet ongeveer dieselfde drie frekwensiebereike as die kleursensors in u oë. Dan word die rooi, groen en blou (RGB) waardes gebruik om die algehele kleurindruk te bereken.
Die aangename van hierdie spesiale stelsel is dat dit u nou die kleur mondeling vertel, met behulp van die 'sê' opdrag van die AIY -stelsels. Kyk gerus na die meegaande video.
Die toestel kan ook nuttig wees as 'n voorbeeld vir 'n I2C -sensortoestel wat aan die AIY -stemhoed gekoppel is.
Stap 1: Gebruikte materiaal
Framboos Pi 3. ~ 35 US $ of EUR
AIY -stemstel, met opskrifte aan die hoed gesoldeer. ~ 25US $ of EUR
Adafruit TCS34725 -uitbreek, met 'n kop wat gesoldeer is. ~ 8 VS $ of EUR
Springkabels.
'N Broodbord (opsioneel)
Vir die sensorbehuizing:- 'n gebruikte "Dolce Gusto" koffiekapsel- 'n klein ronde stuk 2 mm Forex (PVC-skuimplaat), ongeveer 37 mm in deursnee- 'n nie-weerkaatsende swart materiaal om die binnemure van die behuising te bedek. Ek het selfklevende swart rubberskuim gebruik.
Opsioneel: 'n klein skakelaar om die metings op te roep
'N Paar druppels plastiekgom en 'n mes.
Stap 2: Montering en gebruik
Die Raspberry Pi met die AIY -stemhoed is opgestel soos beskryf in die AIY -handleiding. Voordat dit gemonteer is, is koppe aan die hawens op die HAT gesoldeer. Vir die behuising van die sensor is 'n "Dulce Gusto" koffiekapsel leeggemaak, skoongemaak en 'n deel van die bodem versigtig met 'n mes verwyder. U kan iets anders vir hierdie doel gebruik; die koffiekapsel het net die regte grootte en vorm gehad. 'N Ronde stuk van 2 mm Forex is van 'n bord gesny, die uitbreek is dan sentraal op die Forex -plaat geplaas, die posisie is gemerk met 'n viltpen en 'n gleuf vir die kopstuk op die uitbreek is op die regte posisie gesny.
Nou is die Forex -stuk op die behuising vasgeplak en die sensorbreuk aan die Forex -plaat vasgemaak met 'n klittenbandstrook. Toe is die binnemure bedek met 'n lig absorberende swart materiaal; ek het 'n selfklevende rubberskuim gebruik. Swart karton behoort ook te werk. Nou, met behulp van springkabels, is die I2C "3.3V" -poort van die HAT gekoppel aan "V in" op die sensor, Ground to Gnd, sda to sda en scl to scl. Ek het 'n broodbord gebruik om albei dele aan te sluit, maar dit is nie nodig nie.
Plaas die AIY_TCS34725 python -script in die src -lêergids en voer die script uit die dev -terminale en voer "sec/AIY_TCS34752.py" in. Miskien moet u die python -skrip eers uitvoerbaar maak. Plaas die sensoreenheid op die voorwerp wat u wil meet, druk op die knoppie in die AIY -toestel en wag 'n sekonde of twee.
Op grond van die gemete RGB- en witwaardes, bereken die toestel dan eers die ooreenstemmende kleurwaarde, skat dan die kleur op grond van hierdie waarde en kommunikeer dit mondelings via die AIY -stemstelsel, e. g. as "donkerrooi", maar gee ook die kleurwaarde. RGB, kleur en helderheid (ligtheid, om presies te wees) waardes word ook op die skerm gedruk.
Om die proses van kleuraantekening te vereenvoudig, word die RGB -waardes omskep in die HSV -formaat (kleur, versadiging, waarde). Hierdeur kan u 'n kleur in 'n sekere hoekhoek (soos 'n tertskyfie) aanteken, en die kleur kies op grond van die berekende kleurwaarde.
U moet u toestel normaliseer teen 'n wit en 'n swart verwysing. Meet net die witste en swartste stukke papier wat u beskikbaar het, meet elkeen en plaas hierdie waardes as maksimum en minimum waardes in die kode. Slegs optimale verwysingswaardes gee 'n goeie kleurherkenning.
Een basiese probleem is refleksie. As u 'n voorwerp met 'n blink of gepoleerde oppervlak het, weerspieël dit baie van die lig wat die LED uitstraal, wat baie ligter lyk as wat dit werklik is. U kan 'n vel membraan gebruik om die lig te verstrooi, maar u moet moontlik 'n regstellingsfaktor implementeer.
In die geval van deurskynende voorwerpe, kan dit handig wees om dit op 'n wit papier te plaas, anders is die hoeveelheid gereflekteerde ligte te klein en word die voorwerp as 'swart' gerapporteer.
As u die kleur van voorwerpe wat lig uitstraal, wil meet, moet u die LED op die deurbreek afskakel deur die "LED" -poort op die uitgangsknop aan te sluit op "Grond". Stel nou die normaliseringswaardes daarvolgens in.
'N Ander algemene probleem is die verligting van die voorwerp. Die warmwit LED op die uitbreek straal 'n nie-deurlopende spektrum van lig uit. Daarom kan sekere kleure oor- of onderverteenwoordig wees in die RGB-spektrum. Vir meer inligting oor hierdie onderwerp, kyk na my vorige instruksies oor kleurmeters/ fotometers en spektrometers:
www.instructables.com/id/An-Inexpensive-Ph…
www.instructables.com/id/A-Mimimal-Six-Col…
Stap 3: Die kode
Die kode is 'n kombinasie van 'n wysiging van 'n kode uit die AIY -stemhandleiding, en die TCS34725 -sensorkode deur Bradspi.
Ek het ook probeer om die TCS34725 -python -kode van Adafruit te gebruik, maar ek het probleme ondervind om hierdie en 'n paar ander kodes te gebruik wat eksterne biblioteke gebruik in kombinasie met die AIY HAT. Enige hulp welkom.
Soos voorheen genoem, is die kleuraantekening gebaseer op 'n transformasie van die RGB na kleure waardes. U moet normaliseringsinstellings stel op grond van eksperimentele metings van wit en swart eerbiedmateriaal. Vul die absolute waardes vir R, G en B min of maksimum dienooreenkomstig in.
Die script gebruik 'n nuwe weergawe van die 'sê' opdrag waarmee u volume en toonhoogte kan reguleer. In die geval moet u die bestuurderslêers audio.py en tty opdateer of die 'volume- en toonhoogte -dele' uit die script verwyder.
#!/usr/bin/env python3 # Hierdie script is 'n aanpassing van die servo_demo.py -script vir die AIY -stemhoed, # geoptimaliseer vir die kleurherkenning deur die Afafruit TCS34725 breakout import aiy.audio import aiy.cloudspeech import aiy.voicehat # van gpiozero invoer LED # kan nuttig wees vir 'n eksterne LED op servo-poort # vanaf gpiozero invoer knoppie # kan nuttig wees vir 'n eksterne knoppie op servo-poort invoer tyd invoer smbus bus = smbus. SMBus (1) import colorsys def hue2color (kleur): # kleurinterpretasie gebaseer op die berekende kleurwaardes as ((kleur> 12) en (kleur 25) en (kleur 69) en (kleur 164) en (kleur 194) en (kleur 269) en (kleur 319) of (tint <20)): color = "rooi" retourkleur anders: druk ("iets het skeefgeloop")
def tcs34725 (): # meting en interpretasie.
# Die meting word uitgevoer deur die Bradspi TCS34725-script: # https://bradsrpi.blogspot.com/2013/05/tcs34725-rg… bus.write_byte (0x29, 0x80 | 0x12) ver = bus.read_byte (0x29) # weergawe # moet 0x44 wees as ver == 0x44: print ("Toestel gevind / n") bus.write_byte (0x29, 0x80 | 0x00) # 0x00 = GESKIKBAAR registreer bus.write_byte (0x29, 0x01 | 0x02) # 0x01 = Skakel aan, 0x02 RGB -sensors bus.write_byte (0x29, 0x80 | 0x14) # Leesresultate begin met register 14, LSB dan MSB data = bus.read_i2c_block_data (0x29, 0) clear = clear = data [1] << 8 | data [0] rooi = data [3] << 8 | data [2] groen = data [5] << 8 | data [4] blou = data [7] << 8 | data [6] crgb = "Absolute tellings: C: %s, R: %s, G: %s, B: %s / n" %(helder, rooi, groen, blou) druk (crgb) time.sleep (1) anders: druk ("Toestel nie gevind / n") # normalisering en transformasie van die gemete RGBW -waardes col = "" # Maksimum waardes Normaliseringsfaktore, moet eksperimenteel gedefinieer word # bv. teenoor 'n wit vel papier. Kontroleer en korrigeer van tyd tot tyd. max_bright = 5750 max_red = 1930 max_green = 2095 max_blue = 1980 # agtergrond/minimum waardes normaliseringsfaktore, moet eksperimenteel gedefinieer word # bv. vs. swart vel papier. Kontroleer en korrigeer van tyd tot tyd. min_bright = 750 min_rooi = 340 min_groen = 245 min_blou = 225 # genormaliseerde waardes, tussen 0 en 1 rel_bright = ((duidelik - min_bright)/(max_bright - min_bright)) rel_red = ((rooi - min_rooi)/(maks_rooi - min_rooi)) 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 = hsv_col [0]*35 as rel_bright> 0.9: col = "wit" # as baie helder -> wit elif rel_bright swart anders: col = hue2color (tint) # kleurkeuse volgens kleurwaardes # print ("relatiewe waardes helder, rooi, groen, blou:") # print (rel_bright, rel_red, rel_green, rel_blue) # print ("HSV -waardes (kleur, versadiging, waarde):", hsv_col) # print ("hue in °", hue) return [col, rel_bright, rel_red, rel_green, rel_blou, tint]
def main ():
knoppie = aiy.voicehat.get_button () # verandering Knoppie status gelei = aiy.voicehat.get_led () # verandering Knoppie-LED status aiy.audio.get_recorder (). begin () # buttoni = Knoppie (5) # afstandsensor of ander eksterne knoppie, gekoppel aan servo3/GPIO 05
aiy.audio.say ("Hallo!",, volume = 50, toonhoogte = 100) # volume en toonhoogte vereis hersiening van audio.py en _tty.py in November 2017!
aiy.audio.say ("Om te begin, beweeg die sensor bokant die voorwerp. Druk dan op die blou knoppie",, volume = 50, toonhoogte = 100) druk ("Om die kleurmetingsensor bo die voorwerp te aktiveer, druk dan op die blou knoppie ") terwyl True: led.set_state (aiy.voicehat. LED. ON) button.wait_for_press () # vir eksterne knoppie, vervang knoppie deur buttoni led.set_state (aiy.voicehat. LED. BLINK) aiy.audio.say (" Meet ",, volume = 50, toonhoogte = 100) resultaat = tcs34725 () # roep meting en interpretasie op kol = resultaat [0] # kleur, aangesien teks hue = str (int (resultaat [5])) # tint in °, as teks r_red = str (int (resultaat [2]*255)) # R waarde, as teks r_green = str (int (resultaat [3]*255)) # G waarde, as teks r_blue = str (int (resultaat [4]*255)) # B -waarde, as teks r_bright = str (int (resultaat [1]*100)) # W -waarde, as teks led.set_state (aiy.voicehat. LED. OFF) as kol == "wit "of col ==" black ": bright =" "elif (resultaat [1]> 0.69): #helderheid/helderheid van kleur bright =" light "elif (resultaat [1] <0.25): bright =" dark "anders: helder = "medium" # kommunikeer t hy resultate color_text = ("Die kleur van die voorwerp is" + bright + "" + col) print (color_text) aiy.audio.say (color_text,, volume = 75, pitch = 100) hue_text = ("The tue value is "+ tint+" grade ") druk (hue_text) aiy.audio.say (hue_text,, volume = 75, toonhoogte = 100)
as _name_ == '_main_': main ()
Stap 4: 'n Paar skakels en opmerkings
Die TCS34725 sensor-gegewensblad kan hier gevind word:
Die kode om die sensor wat ek gebruik het, te lees, is hier beskryf:
U kan addisionele inligting oor kleurmetings met hierdie en 'n ander sensor in my vorige instruksies vind:
www.instructables.com/id/An-Inexpensive-Ph…
www.instructables.com/id/A-Mimimal-Six-Col…
Aanbeveel:
Konfigurasie van die AVR -mikrobeheerder. Skep en laai die LED -knipperprogram in die flitsgeheue van die mikrokontroleerder op: 5 stappe
Konfigurasie van die AVR -mikrobeheerder. Skep en laai die LED -knipperprogram in die flitsgeheue van die mikrokontroleerder: In hierdie geval sal ons 'n eenvoudige program in C -kode skep en dit in die geheue van die mikrokontroleerder verbrand. Ons sal ons eie program skryf en die hex -lêer saamstel, met behulp van die Atmel Studio as die geïntegreerde ontwikkelingsplatform. Ons sal die sekering van twee instel
N Arduino WiFi -netwerk (sensors en aandrywers) - die kleursensor: 4 stappe
N Arduino WiFi -netwerk (sensors en aandrywers) - die kleursensor: hoeveel keer in u toepassings het u 'n sensor of 'n aandrywer ver van u af? Hoeveel gemaklik kan dit wees om slegs een hooftoestel naby u rekenaar te gebruik om verskillende slawe-toestelle wat via 'n wi-fi-netwerk verbind is, te bestuur? In hierdie projek
Voeg Trigger Start Sound by Google AIY Voice Kit: 6 stappe (met foto's)
Voeg Trigger Start Sound by Google AIY Voice Kit: hierdie tutoriaal is redelik eenvoudig. Ek het die Google AIY Voice Kit baie geniet, maar ek hou baie van die geraas wat ek maak in my normale Google Home om te bevestig dat hulle aktief luister. Dit is nie standaard opgestel in enige van die voorbeelde nie
Hoe om die veiligheid van die meeste blokkeerders aan die kant van die bediener te omseil: 3 stappe
Hoe om die veiligheid van die meeste webblokkers op die bediener te verlig: dit is my eerste instruksie, so hou my in gedagte: Ok, ek sal u vertel hoe u die webblokkers wat ek in skole gebruik het, kan omseil. Al wat u nodig het, is 'n flash drive en 'n paar sagteware aflaai
Instruksies vir die voltooiing van die opmaak van die baanskyfontwerp vir die opheffing/verlaging van die middelste voetsteun op motorwielstoele: 9 stappe (met foto's)
Instruksies vir die voltooiing van die opmaak van die baanskyfontwerp vir die opheffing/verlaging van die middelste voetsteun op motorwielstoele: die middelste voetsteunhysers moet goed onder die sitplek geberg word en laer om te ontplooi. 'N Meganisme vir die onafhanklike werking van die opberging en ontplooiing van voetsteun is nie ingesluit by rolstoele op die mark nie, en PWC -gebruikers het die behoefte uitgespreek