Innholdsfortegnelse:

Et stemmestyrt, punktskrift-mønster semafor: 4 trinn (med bilder)
Et stemmestyrt, punktskrift-mønster semafor: 4 trinn (med bilder)

Video: Et stemmestyrt, punktskrift-mønster semafor: 4 trinn (med bilder)

Video: Et stemmestyrt, punktskrift-mønster semafor: 4 trinn (med bilder)
Video: Ylvis | The Intelevator - Episode 1 (Exhibition) | discovery+ Norge 2024, November
Anonim
Et stemmestyrt, punktskriftstypisk mønster semafor
Et stemmestyrt, punktskriftstypisk mønster semafor
Et stemmekontrollert punktskrift-mønster semafor
Et stemmekontrollert punktskrift-mønster semafor
Et stemmestyrt, punktskriftstypisk mønster semafor
Et stemmestyrt, punktskriftstypisk mønster semafor
Et stemmekontrollert punktskrift-mønster semafor
Et stemmekontrollert punktskrift-mønster semafor

"Lord Vetinari sto ved vinduet hans og så på semaforetårnet på den andre siden av elven. Alle de åtte av de store skoddene som vendte mot ham blinket voldsomt - svart, hvitt, svart, hvitt, svart, hvitt … Informasjon fløy ut i luften. Tjue mil bak ham, på et annet tårn på Sto Lat, så noen gjennom et teleskop og ropte tall. Hvor fort fremtiden kommer over oss, tenkte han. " T. Pratchett, Den femte elefanten

Etter å ha bygd en stemmekontrollert hoppekontakt basert på AIY-talesettet, hadde jeg ideen om å bygge en stemmestyrt semafor, som samlet det siste innen IT-teknologi med begynnelsen på telekommunikasjon og dataoverføring.

Først hadde jeg ideen om å replikere det franske semaforesystemet av Chappe, som var det første kjente systemet for landsomfattende telekommunikasjon ved hjelp av et semaforesystem. Men det viste seg å være litt for komplisert til å bli realisert ved hjelp av standard servoer i løpet av en dag. Mitt neste mål var noe som ligner på clacks -systemet beskrevet av Terry Pratchett, f.eks. i "Going Postal", som et 2x4 lukkersemaforesystem (ikke som 4x4 -matrisen som er avbildet i filmen). Dessverre kunne jeg ikke finne for mange tekniske detaljer tilgjengelig på dette systemet. Så jeg endte opp med 2x3 matrisesemaforesystemet utviklet av Lord Murray, som hadde blitt brukt av den britiske marinen en stund. I tillegg passer et seks lukker/bits system godt til de seks servokontaktene som er tilgjengelige på AIY voice HAT. Men siden jeg ikke hadde seks servoer tilgjengelig mellom årene, bestemte jeg meg endelig for å bygge en simulator laget av lysdioder først.

Når det gjelder koden som vises, kan man bruke Murray -systemet, men igjen var informasjonen jeg hadde tilgjengelig om den ganske begrenset, og tillot ikke å vise noen tall og symboler. Så jeg kom til poenget med å bruke punktskriftssystemet i stedet, som også bruker en 2x3 matrise for å vise bokstaver, tall og andre tegn. Punktskriftssystemet er den internasjonale standarden for å skrive ut tekster som kan leses for blinde. Det er også et markeringsspråk, som bruker en tallindikator for å definere at tall skal vises neste, og indikatorer for å definere at en eller flere av de følgende bokstavene skrives som store bokstaver. Jeg bestemte meg derfor for å sette opp et litt forenklet system, med tall og noen tegn definert av Nemeth -utvidelsen av punktskriftssystemet i stedet, og bare bruke store bokstaver, i det minste i begynnelsen. Dette gjør det mulig å ha unike mønstre for hver bokstav, tall eller tegn som skal vises i min spesielle applikasjon, og å utelate tekstanalysen som kreves for ekte punktskrift.

Den siste enheten gjør det mulig å snakke et ord eller en setning til AIY -stemmegjenkjenningssystemet, deretter blir stemmemønsterdataene sendt via WLAN og internett til noen Google -server i USA, blir avkodet der, og i hvert fall i mitt tilfelle tolket data blir sendt tilbake til Europa, hvor jeg endelig får den anerkjente setningen vist som en tekststreng. Denne tekststrengen blir deretter brutt av Python -skriptet til de enkelte bokstavene, og nå, sammenlignet med en ordbok som definerer de tilsvarende mønstrene, blir mønsterinformasjonen hentet tilbake og mønstrene vises på en 2x3 LED -matrise. Ta en titt på den medfølgende videoen.

Jeg har angitt visningshastigheten til ett tegn per sekund, som skal være lenge nok til at en trent person kan identifisere og oversette mønsteret. Et mulig neste trinn ville være å bruke en mønstergjenkjenningsenhet som AIY vision HAT (så langt ikke tilgjengelig i Europa) for å lese og tolke mønstrene automatisk, for å lukke sirkelen.

Ytterligere konsepter for forbedringer, noen med mer reell relevans, diskuteres i "outlook" -delen av denne instruksjonsboken.

Trinn 1: Materialer som brukes

Materialer som brukes
Materialer som brukes
Materialer som brukes
Materialer som brukes

Raspberry Pi 3

AIY stemme HAT

Åtte hvite lysdioder, 5 mm i diameter. Disse går på 3V, og det er derfor nødvendig med en motstand.

100kOhm motstand. Kanskje ikke den perfekte løsningen, men var for hånden.

Hoppekabler

Et kort stykke ledning

Brødbrett, valgfritt for å teste oppsettet.

En plastboks for visittkort.

To stykker 4 mm plastskum, noen til overs søppel.

Noen plastmembraner, som diffusor, som ovenfor.

Loddejern og loddetinn, en kniv.

Trinn 2: Oppsett og bruk

Oppsett og bruk
Oppsett og bruk
Oppsett og bruk
Oppsett og bruk
Oppsett og bruk
Oppsett og bruk

Sett opp Raspberry Pi og AIY HAT som angitt i AIY voice HAT manual. Jeg vil anbefale å lodde topptekst i det minste til servoportene før du monterer Pi og HAT, da dette enkelt lar deg koble til servoer, et brødbrett eller lysdioder.

Utstillingsboksen var bygget av lokket på en plastboks for visittkort, to stykker skum som passet inn i esken og en lignende størrelse på en emballasjemembran som diffusor. I en av skumdelene ble seks hull presset og lysdiodene plassert i dem. De kortere føttene (bakken) på lysdiodene var forbundet med hverandre med et stykke kabel, deretter ble det lagt til en motstand og en jumperkabel ble loddet til sistnevnte. Til de andre føttene (plussiden) på LED -jumperkablene ble loddet.

Disse ble deretter koblet til servoportene på AIY -stemmehatten via forlengelseskabler, den positive siden til de (ytre) "P in" -pinnene, den negative kontakten til en av (indre) bakken/minus -pinnene. Ta en titt på den vedlagte ordningen.

Jeg vil sterkt anbefale å teste oppsettet på et brødbrett før lodding.

Nå ble membranen, LED -platen og tetningslaget lagt i plastboksen.

Plasser Braille_LED_1.py -skriptet i src -mappen. I tilfelle må du kanskje gjøre skriptet kjørbart først.

Ved å bruke Dev -terminalen (!) Startes Braille_LED_1.py -programmet. Skriv inn 'src/Braille_LED_1.py' og trykk 'Enter'.

Du blir nå bedt om å trykke på knappen i AIY -boksen og si ordet eller setningen din. Med en viss forsinkelse vil systemet gjenta det som var forstått, og vise det på skjermen samt bokstav for bokstav på de seks LED -displayene.

Hvis du gir søkeordet "Farvel" i stedet for en setning, vil systemet fortelle deg Farvel, og programmet vil bli lukket.

Trinn 3: Koden

Koden
Koden

Nedenfor finner du koden som lar deg snakke med AIY-taleenheten og få den gjenkjente setningen vist bokstav for bokstav på en liten 2x3-LED 'semafor' eller punktskriftmatrise.

Koden er en derivat av skriptet jeg brukte for et tidligere prosjekt ved bruk av AIY voice HAT, som er et derivat av servo_demo.py -eksemplet beskrevet i AIY voice HAT manual.

Du kan også finne en ordbok med den delen av Murray -koden jeg hadde funnet på internett, som tekstfil. Den inneholder verken tall og utelater noen bokstaver, noe som vil gi et problem her.

En begrensning av programmet i sin nåværende tilstand er at hvis et tegn som ikke er inkludert i ordlisten, ville det krasje programmet. I tillegg er det ikke en representasjon av den komplette punktskriftskoden som et markeringsspråk. Som du kan se i skriptet nedenfor, er Nemeth -koden for tall overflødig med noen tegn i standardskrift, men det burde ikke gi et problem for vår spesifikke applikasjon.

#!/usr/bin/env python3

# Dette skriptet er en tilpasning av servo_demo.py -skriptet for AIY -stemmehatten, # optimalisert for AIY -basert Baille -type symbolvisning import aiy.audio import aiy.cloudspeech import aiy.vohathat fra gpiozero import LED #frå gpiozero importknapp fra time import sleep # Dictionary: et kunstig modifisert punktskriftalfabet, # tall og noen symboler hentet fra Nemeth -utvidelsen av Braille Braille_6A = {"": "123456", # space "A": "1", "B": "12 "," C ":" 14 "," D ":" 145 "," E ":" 15 "," F ":" 124 "," G ":" 1245 "," H ":" 125 ", "I": "24", "J": "245", "K": "13", "L": "123", "M": "134", "N": "1345", "O ":" 135 "," P ":" 1234 "," Q ":" 12345 "," R ":" 1235 "," S ":" 234 "," T ":" 2345 "," U ": "136", "V": "1236", "X": "1346", "Y": "13456", "Z": "1356", "W": "2456", "#": "3456 ", # Nummerprefiks, dvs. at neste tegn er tall", ":" 2 ",". ": "256", # Punktum, slutten av setningen (GB) "?": "236", "!": "235", "'": "3", "-": "24", ";": "23", "Cap": "6", # Neste bokstav er i versaler; Nummerstopp? "": "", # Nemeth Braille-kode er en matematisk utvidelse for 6-punkts punktskrift # se: https://en.wikipedia.org/wiki/Nemeth_Braille "1": "2", # Nemeth Code '1', Punktskrift "komma" "2": "23", "3": "25", "4": "256", "5": "26", "6": "235", # Nemeth '6', Punktskrift! "7": "2356", "8": "236", # Nemeth '8', punktskrift '?' "9": "35", "0": "356", "+": "346", "-": "36", "/": "34", "(": "12356", ") ":" 23456 ","*":" 1346 " # '*' er et to -mønstersymbol i Nemeth, her erstattet av et 'x' for å utelate krasjer}" "" av enkle årsaker, standard blindeskriftstallmønstre er gitt nedenfor ble erstattet av de korresponderende Nemeth-kodene "1": "1", "2": "12", "3": "14", "4": "145", "5": "15", " 6 ":" 124 "," 8 ":" 1245 "," 9 ":" 24 "," 0 ":" 245 "," "" #Text = "rbhTZkl 9t64+34 #!" # Samletekst, for feilsøkingsformål def main (): gjenkjenner = aiy.cloudspeech.get_recognizer () gjenkenner.forventet_frase ('farvel') # søkeord, avslutter programknappen = aiy.voicehat.get_button () # AIY Knappstatus ledet = aiy.voicehat.get_led () # AIY Knapp-LED-status aiy.audio.get_recorder (). start () led_1 = LED (26) # 1. kontakt, servo0, GPIO 26 # øvre venstre led_2 = LED (6) # 2. kontakt, servo1, GPIO 06 # midt venstre led_3 = LED (13) # tredje kontakt, servo2, GPIO 13 # nedre venstre led_4 = LED (5) # 4st kontakt, servo3, GPIO 05 # øvre høyre led_5 = LED (12) # femte kontakt, servo4, GPIO 12 # midt til høyre led_6 = LED (24) # 4st kontakt, servo3, GPIO 13 # nedre høyre # avstand = Knapp (5) # avstandssensor koblet til servo3/GPIO 05, brukes ikke her aiy.audio.say ("Hei!",) Aiy.audio.say ("For å starte, trykk på knappen",) aiy.audio.say ("Hvis du sier farvel, vil jeg avslutte programmet",) mens True: # starter loop led.set_state (aiy.voicehat. LED. BLINK) print ("For å aktivere stemmegjenkjenning n, trykk på den blå knappen, og snakk deretter ") print () button.wait_for_press () print ('Listening …') aiy.audio.say (" I listen ",) led.set_state (aiy.voicehat. LED. BLINK_3) tekst = gjenkjenner.gjenkjenne () # tekststreng for den gjenkjente setningen led.set_state (aiy.voicehat. LED. OFF) hvis teksten er Ingen: aiy.audio.say ('Beklager, jeg hørte deg ikke.',) elif 'farvel' i tekst: aiy.audio.say ("Goodbye",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) sleep (3) print ('bye! ') break # stops loop og avslutter programmet else: print (' You said "', text,'" ') # Lar deg sjekke systemtolkningen, inkludert captialization aiy.audio.say (' I guess you said ',) aiy.audio.say (tekst,) # akustisk verifisering Text_up = text.upper () # overfører alt til store bokstaver (Text_up) Text_Len = len (Text_up) print (Text_Len) for i in range (Text_Len): Lett = Text_up # Plukker en enkelt bokstav, som begynner med første, dvs. [0] print ("Letter =", Lett) Lett_B = Braille_6A [Lett] # Plukker den tilsvarende koden fra ordbok. Et manglende tegn vil bryte koden! print (Lett_B) if ("1" in Lett_B): print ("LED 1") led_1.on () # aktiverer LED ved servo0 "if" 2 "i Lett_B: print (" LED 2 ") led_2.on () if "3" in Lett_B: print ("LED 3") led_3.on () if "4" in Lett_B: print ("LED 4") led_4.on () if "5" in Lett_B: print ("LED 5 ") led_5.on () if" 6 "in Lett_B: print (" LED 6 ") led_6.on () sleep (1) # display pattern for a second print () led_1.off () # inactive all LEDs on servos0 -5n led_2.off () led_3.off () led_4.off () led_5.off () led_6.off () hvilemodus (0.3) # en kort mørk pause, for å indikere slutten på bokstaven hvis _name_ == '_main_ ': main ()

Trinn 4: Outlook og kommentarer

Så hva kan være det neste?

Ved siden av IT-meta-spøk med AIY-videosettet eller et annet automatisert bildegjenkjenningssystem som er nevnt i innledningen, kan det være andre alternativer for å utvide konseptet beskrevet i denne instruksjonsboken. Noen av dem kan til og med være i virkeligheten. Disse kan være:

- forbedret programmering, slik at teksten overføres til standard blindeskriftskode, med alle markeringer og komprimeringer. Det burde ikke være særlig innsats for en dyktig pythonprogrammerer, noe jeg ikke er, så all hjelp er velkommen.

- utvide systemet til en 2x4 matrise. Bør også være mulig, og ville hjelpe til med å bruke de tilsvarende 8-punkts punktskriftskodene, som brukes av elektroniske punktskriftsskjermer. Over dette ville det være litt nærmere Dearheart clacks -systemet.

- konstruer en ekte 2x3 eller 2x4 punktskriftdisplay. Bør være mulig å bruke enten en rekke servoer eller en rekke 5V minisolenoider. Den primære utfordringen vil være at standardavstanden mellom taktile punkter er 2,45 mm, eller 1/10 tommer, på elektroniske skjermer, så noen gir og mekanikk kan være nødvendig. Den andre utfordringen kan være å nøyaktig regulere trykklengden.

En så enkel og billig løsning kan være av interesse for et bredere publikum, ettersom kommersielle punktskriftskjermer er ganske dyre. Det kan være en fordel for braille-elever som bruker et slikt stemmestyrt system. Ettersom de kan skrive inn en (engelsk) setning etter eget valg, og få teksten, bokstavene og tegnene vist på fingertuppene.

- konstruere et mekanisk lukkersystem som ligner Murray- eller Dearheart -systemene. Å bruke servoer bør ikke være for komplisert og kan beskrives i en annen instruks. Eller kan være et fint skoleprosjekt. Noen som er interessert?

–――――

Noen kommentarer og lenker av interesse:

- Det er en instruks som beskriver en "DIY semaforlykt", en 2x4 LED -matrise, basert på et propelldemotavle. Jeg liker oppsettet, men programmeringen ser litt komplisert ut for meg. Vennligst se selv.

- Jeg fant nå et python -program for å generere Fully Contracted (Grade 2) blindeskrift. Dessverre begrenset til python 2 og den amerikanske engelske versjonen fra 2002:

- et mer komplett program ser ut til å være liblouis, https://github.com/liblouis/liblouis, men jeg aner ikke hvordan jeg skal integrere dette i denne løsningen.

- Det ser ut til at en interessant python -løsning kommer fra Hellas, https://github.com/ant0nisk/pybrl kan integrere flere språk og generere punkt 2 -punktskrift.

- Jeg er verken programmerer, eller elektronikkmann, og hadde heller ikke mye kunnskap om punktskrift for noen dager siden.

Så hvis du ser noen feil, mangler eller har noen ideer til prosjektet, vennligst gi meg beskjed.

- Hvis du liker dette instruerbart, kan du stemme på det!

Anbefalt: