Indholdsfortegnelse:

Et stemmestyret, punktskriftstype mønster semafor: 4 trin (med billeder)
Et stemmestyret, punktskriftstype mønster semafor: 4 trin (med billeder)

Video: Et stemmestyret, punktskriftstype mønster semafor: 4 trin (med billeder)

Video: Et stemmestyret, punktskriftstype mønster semafor: 4 trin (med billeder)
Video: Sådan sammensætter du et Danfoss Icon™ gulvarmesystem 2024, November
Anonim
En stemmestyret, punktskriftstype mønster semafor
En stemmestyret, punktskriftstype mønster semafor
En stemmestyret, punktskriftstype mønster semafor
En stemmestyret, punktskriftstype mønster semafor
En stemmestyret, punktskriftstype mønster semafor
En stemmestyret, punktskriftstype mønster semafor
En stemmestyret, punktskriftstype mønster semafor
En stemmestyret, punktskriftstype mønster semafor

"Lord Vetinari stod ved sit vindue og så på semaforetårnet på den anden side af floden. Alle otte af de store skodder, der vendte mod ham, blinkede hidsigt - sort, hvid, sort, hvid, sort, hvid … Information fløj i luften. Tyve kilometer bag ham, på et andet tårn på Sto Lat, kiggede nogen gennem et teleskop og råbte tal. Hvor hurtigt fremtiden kommer over os, tænkte han. " T. Pratchett, Den femte elefant

Efter at have opbygget et stemmestyret springstik baseret på AIY-stemmesættet havde jeg ideen om at bygge en stemmestyret semafor, der samler det nyeste inden for it-teknologi med begyndelsen på telekommunikation og dataoverførsel.

Først havde jeg ideen om at replikere det franske semaforesystem af Chappe, som var det første kendte system for landsdækkende telekommunikation ved hjælp af et semaforesystem. Men det viste sig at være lidt for kompliceret til at blive realiseret ved hjælp af standard servoer inden for en dag. Mit næste mål var noget, der lignede det clacks -system, der blev beskrevet af Terry Pratchett, f.eks. i "Going Postal", som et 2x4 -lukkersemaforesystem (ikke som den 4x4 -matrix, der er afbildet i filmen). Desværre kunne jeg ikke finde for mange tekniske detaljer tilgængelige på dette system. Så jeg endte med 2x3 matrix semaforesystem udviklet af Lord Murray, som havde været brugt af den britiske flåde i et stykke tid. Derudover passer et seks lukker/bit system godt til de seks servostik, der er tilgængelige på AIY voice HAT. Men da jeg ikke havde seks servoer ved hånden mellem årene, besluttede jeg endelig at bygge en simulator lavet af lysdioder først.

Med hensyn til den viste kode kunne man bruge Murray -systemet, men igen var de oplysninger, jeg havde til rådighed om det, temmelig begrænsede, hvilket ikke tillod at vise tal og symboler. Så jeg kom til det punkt at bruge punktskriftssystemet i stedet, som også bruger en 2x3 matrix til at vise bogstaver, tal og andre tegn. Braille -systemet er den internationale standard for udskrivning af tekster, der kan læses for blinde. Det er også et markeringssprog, der bruger en talindikator til at definere, at tal derefter skal vises, og indikatorer til at definere, at et eller flere af de følgende bogstaver skrives som store. Jeg besluttede derfor at oprette et lidt forenklet system, med tal og nogle tegn defineret af Nemeth -udvidelsen af punktskriftssystemet i stedet, og bare bruge store bogstaver, i det mindste til begyndelsen. Dette gør det muligt at have unikke mønstre for hvert bogstav, tal eller tegn, der skal vises i min specielle applikation, og at udelade den tekstanalyse, der kræves for ægte punktskrift.

Den sidste enhed gør det muligt at tale et ord eller en sætning i AIY -stemmegenkendelsessystemet, derefter sendes stemmemønsterdataene via WLAN og internet til en eller anden Google -server i USA, afkodes der, og i hvert fald i mit tilfælde fortolkes data sendes tilbage til Europa, hvor jeg endelig får vist den genkendte sætning som en tekststreng. Denne tekststreng brydes derefter af Python -scriptet i de enkelte bogstaver, og nu, i sammenligning med en ordbog, der definerer de tilsvarende mønstre, genoprettes mønsteroplysningerne, og mønstrene vises på en 2x3 LED -matrix. Se venligst den medfølgende video.

Jeg har indstillet visningshastigheden til et tegn pr. Sekund, hvilket burde være længe nok til, at en uddannet person kan identificere og oversætte mønsteret. Et muligt næste trin ville være at bruge en mønstergenkendelsesenhed som AIY vision HAT (indtil videre ikke tilgængelig i Europa) til at læse og fortolke mønstrene automatisk, så man lukker cirklen.

Yderligere begreber til forbedringer, nogle med mere relevans i virkeligheden, diskuteres i 'outlook'-delen af denne instruktive.

Trin 1: Brugte materialer

Materialer brugt
Materialer brugt
Materialer brugt
Materialer brugt

Raspberry Pi 3

AIY stemme HAT

Otte hvide lysdioder, 5 mm diameter. Disse kører på 3V, og derfor er en modstand nødvendig.

100kOhm modstand. Måske ikke den perfekte løsning, men var lige ved hånden.

Jumper kabler

Et kort stykke ledning

Breadboard, valgfri til at teste opsætningen.

En plastkasse til visitkort.

To stykker 4 mm plastskum, nogle tilovers affald.

Et stykke plastmembran, som diffuser, som ovenfor.

Loddejern og lodde, en kniv.

Trin 2: Opsætning og brug

Opsætning og brug
Opsætning og brug
Opsætning og brug
Opsætning og brug
Opsætning og brug
Opsætning og brug

Opsæt Raspberry Pi og AIY HAT som angivet i AIY voice HAT manualen. Jeg vil anbefale at lodde headere i det mindste til servo -portene, før du samler Pi og HAT, da dette let giver dig mulighed for let at tilslutte servoer, et brødbræt eller lysdioder.

Displaykassen var bygget af låget på en plastkasse til visitkort, to stykker skum, der passede ind i æsken, og et stykke emballagemembran af lignende størrelse som diffusor. I en af skumdelene blev seks huller skubbet og LED'erne anbragt i dem. Lysdiodernes kortere fødder (jordside) blev forbundet med hinanden med et stykke kabel, derefter blev der tilføjet en modstand, og et jumperkabel blev loddet til sidstnævnte. Til de andre fødder (plus side) af LED'ernes jumperkabler blev loddet.

Disse blev derefter forbundet til servo -portene på AIY -stemmehatten via forlængelseskabler, den positive side til de (ydre) "P in" -stifter, det negative stik til en af de (indre) jord/minus -ben. Tag et kig på den vedhæftede ordning.

Jeg vil kraftigt anbefale at teste opsætningen på et brødbræt inden lodning.

Nu blev membranen, LED -pladen og tætningslaget lagt i plastkassen.

Placer Braille_LED_1.py -scriptet i src -mappen. I tilfælde af at du muligvis skal gøre scriptet eksekverbart først.

Nu ved hjælp af Dev -terminalen (!) Startes Braille_LED_1.py -programmet. Indtast 'src/Braille_LED_1.py', og tryk på 'Enter'.

Du bliver nu bedt om at trykke på knappen i AIY -boksen og sige dit ord eller din sætning. Med en vis forsinkelse vil systemet gentage det, der var forstået, og vise det på skærmen samt bogstav for bogstav på de seks LED -display.

Hvis du giver søgeordet "Farvel" i stedet for en sætning, vil systemet fortælle dig Farvel, og programmet lukkes.

Trin 3: Koden

Koden
Koden

Nedenfor finder du koden, der giver dig mulighed for at tale til AIY-stemmeenheden og få vist den genkendte sætning bogstaveligt for bogstav på en lille 2x3-LED 'semafor' eller matrix af braille-type.

Koden er en afledning af scriptet, jeg brugte til et tidligere projekt ved hjælp af AIY voice HAT, der er et derivat af servo_demo.py -eksemplet beskrevet i AIY voice HAT manual.

Du kan også finde en ordbog med den del af Murray -koden, jeg havde fundet på internettet, som tekstfil. Den indeholder hverken tal og udelader nogle bogstaver, hvilket ville give et problem her.

En begrænsning af programmet i dets nuværende tilstand er, at hvis et tegn, der ikke er inkluderet i ordbogen, ville det ødelægge programmet. Derudover er det ikke en repræsentation af den komplette punktskriftskode som et markeringssprog. Som du kan se i scriptet herunder, er Nemeth -koden for tal overflødig med nogle tegn i standardskrift, men det bør ikke give et problem for vores specifikke applikation.

#!/usr/bin/env python3

# Dette script er en tilpasning af servo_demo.py -scriptet til AIY -stemmehatten, # optimeret til den AIY -baserede Baille -type symbolvisning import aiy.audio import aiy.cloudspeech import aiy.vohathat fra gpiozero import LED # fra gpiozero import Knap fra tid import søvn # Ordbog: et kunstigt ændret punktskrifts alfabet, # tal og nogle symboler hentet fra Nemeth -udvidelsen af punktskrift Braille_6A = {"": "123456", # mellemrum "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. de næste tegn er tal", ":" 2 ",". ": "256", # Punktum, slutning af sætning (GB) "?": "236", "!": "235", "'": "3", "-": "24", ";": "23", "Cap": "6", # Næste bogstav er i hovedstæder; Nummer-stop? "": "", # Nemeth Braille-kode er en matematisk udvidelse til 6-punkts braille # 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 af et 'x' for at udelade nedbrud}" "" af enkle årsager, standard Braille -talmønstrene er givet nedenfor blev erstattet af de tilsvarende Nemeth-koder "1": "1", "2": "12", "3": "14", "4": "145", "5": "15", " 6 ":" 124 "," 8 ":" 1245 "," 9 ":" 24 "," 0 ":" 245 "," "" #Text = "rbhTZkl 9t64+34 #!" # Sampletekst, til fejlfindingsformål def main (): anerkender = aiy.cloudspeech.get_recognizer () anerkender.forventet_frase ('farvel') # søgeord, slutter programknappen = aiy.voicehat.get_button () # AIY Knapstatus ledet = aiy.voicehat.get_led () # AIY Knap-LED-status aiy.audio.get_recorder (). start () led_1 = LED (26) # 1. stik, servo0, GPIO 26 # øverste venstre led_2 = LED (6) # 2. stik, servo1, GPIO 06 # midterste venstre led_3 = LED (13) # 3. stik, servo2, GPIO 13 # nederste venstre led_4 = LED (5) # 4st stik, servo3, GPIO 05 # øverste højre led_5 = LED (12) # 5. stik, servo4, GPIO 12 # midterste højre led_6 = LED (24) # 4st stik, servo3, GPIO 13 # nederst til højre # afstand = Knap (5) # afstandssensor forbundet til servo3/GPIO 05, bruges ikke her aiy.audio.say ("Hej!",) Aiy.audio.say ("For at starte, tryk venligst på knappen",) aiy.audio.say ("Hvis du siger farvel, jeg afslutter programmet",) mens True: # starter loop led.set_state (aiy.voicehat. LED. BLINK) print ("For at aktivere stemmegenkendelse n, tryk på den blå knap, og tal derefter ") print () button.wait_for_press () print ('Listening …') aiy.audio.say (" I listen ",) led.set_state (aiy.voicehat. LED. BLINK_3) tekst = anerkender.genkende () # tekststreng for den genkendte sætning led.set_state (aiy.voicehat. LED. OFF) hvis teksten er Ingen: aiy.audio.say ('Beklager, jeg hørte dig ikke.',) elif 'farvel' i teksten: aiy.audio.say ("Farvel",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) sleep (3) print ('bye! ') break # stops loop og afslutter programmet else: print (' You said "', text,'" ') # Lader dig kontrollere systemets fortolkning, herunder captialization aiy.audio.say (' I guess you said ',) aiy.audio.say (tekst,) # akustisk verifikation Text_up = text.upper () # overfører alt til store bogstaver (Text_up) Text_Len = len (Text_up) print (Text_Len) for i inden for området (Text_Len): Lett = Text_up # Vælger et enkelt bogstav, der starter med det første, dvs. [0] print ("Letter =", Lett) Lett_B = Braille_6A [Lett] # Vælger den tilsvarende kode fra ordbog. Et manglende tegn vil bryde koden! print (Lett_B) if ("1" i Lett_B): print ("LED 1") led_1.on () # aktiverer LED ved servo0 "hvis" 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 () hvis" 6 "i Lett_B: print (" LED 6 ") led_6.on () sleep (1) # displaymønster for et andet print () led_1.off () # inaktiver alle LED'er på servoer0 -5n led_2.off () led_3.off () led_4.off () led_5.off () led_6.off () sleep (0,3) # en kort mørk pause, for at angive slutningen på bogstavet, hvis _navn_ == '_hoved_ ': main ()

Trin 4: Outlook og bemærkninger

Så hvad kunne være det næste?

Udover IT-meta-joke med AIY-videosættet eller et andet automatiseret billedgenkendelsessystem, der er nævnt i indledningen, kan der være andre muligheder for at udvide konceptet beskrevet i denne instruktive. Nogle af dem kan endda være til brug i den virkelige verden. Disse kan være:

- forbedret programmering, så teksten overføres til standard Braille -kode med alle markeringer og komprimeringer. Det burde ikke være en særlig indsats for en dygtig pythonprogrammerer, hvilket jeg ikke er, så enhver hjælp er velkommen.

- udvid systemet til en 2x4 matrix. Bør også være muligt og ville hjælpe med at bruge de tilsvarende 8-punkts Braille-koder, som bruges af elektroniske punktskriftsskærme. Over dette ville det være lidt tættere på Dearheart -klacksystemet.

- konstruer en ægte 2x3 eller 2x4 braille display. Bør være muligt ved hjælp af enten en række servoer eller en række 5V minisolenoider. Den primære udfordring ville være, at standardafstanden mellem taktile punkter er 2,45 mm, eller 1/10 tommer, på elektroniske displays, så nogle gear og mekanik kan være påkrævet. Den anden udfordring kan være at præcist regulere skubbelængden.

Sådan en enkel og billig løsning kan være af interesse for en bredere offentlighed, da kommercielle punktskriftskærme er ret dyre. Der kan være en fordel for braille-elever, der bruger et sådant stemmestyret system. Da de mundtligt kan indtaste en (engelsk) sætning efter eget valg, og få teksten, bogstaverne og tegnene vist på deres fingerspids (er).

- konstruere et mekanisk lukkersystem, der ligner Murray- eller Dearheart -systemerne. Brug af servoer bør ikke være for kompliceret og kan beskrives i en anden instruerbar. Eller kunne være et godt skoleprojekt. Nogen interesseret?

–――――

Nogle bemærkninger og links af interesse:

- Der er en instruerbar beskrivelse af en "DIY semafor lanterne", en 2x4 LED matrix, baseret på et Propeller demo board. Jeg kan godt lide layoutet, men programmeringen ser for mig lidt kompliceret ud. Kig venligst selv.

- Jeg fandt nu et python -program til generering af Fully Contracted (Grade 2) Braille. Desværre begrænset til python 2 og den amerikanske engelske version fra 2002:

- et mere komplet program ser ud til at være liblouis, https://github.com/liblouis/liblouis, men jeg aner ikke, hvordan jeg kan integrere dette i denne løsning.

- der synes at komme en interessant python -løsning fra Grækenland, https://github.com/ant0nisk/pybrl kan integrere flere sprog og generere punkt 2 -punktskrift.

- Jeg er hverken en programmør eller en elektronik -fyr, og havde heller ikke megen viden om punktskrift for et par dage siden.

Så hvis du ser fejl, mangler eller har nogle ideer til projektet, så lad mig det vide.

- Hvis du kan lide dette instruerbare, så stem på det!

Anbefalede: