Innholdsfortegnelse:
- Trinn 1: Materialer som brukes
- Trinn 2: Oppsett og bruk
- Trinn 3: Koden
- Trinn 4: Outlook og kommentarer
Video: Et stemmestyrt, punktskrift-mønster semafor: 4 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:25
"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
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
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
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:
Talkative Automation -- Lyd fra Arduino -- Stemmestyrt automatisering -- HC - 05 Bluetooth -modul: 9 trinn (med bilder)
Talkative Automation || Lyd fra Arduino || Stemmestyrt automatisering || HC - 05 Bluetooth -modul: …………………………. Vennligst abonner på YouTube -kanalen min for flere videoer …. …. I denne videoen har vi bygget en Talkative Automation .. Når du sender en talekommando via mobil, vil den slå på hjemmeapparater og sende tilbakemeldinger i
Stemmestyrt robothånd: 8 trinn (med bilder)
Stemmestyrt robothånd: a.articles {font-size: 110.0%; font-weight: fet skrift; skriftstil: kursiv; tekst-dekorasjon: ingen; bakgrunnsfarge: rød;} a.articles: sveve {bakgrunnsfarge: svart;} Denne instruksjonen forklarer hvordan du bygger en stemmestyrt robothånd ved hjelp av
Stemmestyrt robot ved bruk av 8051 mikrokontroller: 4 trinn (med bilder)
Stemmestyrt robot ved bruk av 8051 mikrokontroller: En stemmestyrt robot tar spesifisert kommando i form av tale. Uansett hvilken kommando som er gitt gjennom talemodul eller Bluetooth -modul, blir den avkodet av den eksisterende kontrolleren, og derfor blir den gitte kommandoen utført. Her i dette prosjektet
Billig punktskrift (La Picoreuse): 19 trinn (med bilder)
Cheap Braille Embosser (La Picoreuse): Presentasjon " La Picoreuse " er en billig (75 euro), lett å bygge A4 -punktskrift. Dette prosjektet tar sikte på å tjene som et første skritt eller grunnlag for refleksjon for andre beslutningstakere for å gi et alternativ til svært dyre markedspregere
Enkel punktskriftskriver (tale til punktskrift): 8 trinn (med bilder)
Simple Braille Writer (Speech to Braille): Hei alle sammen. Alt dette begynte med å gjøre en enkel XY -plotter etter å ha fullført den, jeg tenkte å utvikle en enkel tale til punktskriftskonverter. Jeg begynte å søke på den på nettet og uventet var prisene for høye , det styrket meg