INHOUDSOPGAWE:

N Spraakbeheerde, braille-tipe patroon-semafoor: 4 stappe (met foto's)
N Spraakbeheerde, braille-tipe patroon-semafoor: 4 stappe (met foto's)

Video: N Spraakbeheerde, braille-tipe patroon-semafoor: 4 stappe (met foto's)

Video: N Spraakbeheerde, braille-tipe patroon-semafoor: 4 stappe (met foto's)
Video: Как Продолжения Уничтожили N-time? 2024, November
Anonim
'N Spraakbeheerde, braille-tipe patroon-semafoor
'N Spraakbeheerde, braille-tipe patroon-semafoor
'N Spraakbeheerde, braille-tipe patroon-semafoor
'N Spraakbeheerde, braille-tipe patroon-semafoor
'N Spraakbeheerde, braille-tipe patroon-semafoor
'N Spraakbeheerde, braille-tipe patroon-semafoor
'N Spraakbeheerde, braille-tipe patroon-semafoor
'N Spraakbeheerde, braille-tipe patroon-semafoor

"Lord Vetinari het by sy venster gestaan en kyk na die semafoor toring aan die ander kant van die rivier. Al agt die groot luike wat na hom kyk, knip verwoed - swart, wit, swart, wit, swart, wit … Inligting vlieg die lug in. Twintig kilometer agter hom, op 'n ander toring op Sto Lat, kyk iemand deur 'n teleskoop en skreeu syfers. Hoe vinnig kom die toekoms oor ons, dink hy. " T. Pratchett, Die vyfde olifant

Nadat ek 'n spraakbeheerde springaansluiting gebou het, gebaseer op die AIY-stemstel, het ek die idee gehad om 'n stembeheerde semafoor te bou, wat die nuutste IT-tegnologie bymekaarbring met die begin van telekommunikasie en data-oordrag.

Ek het eers die idee gehad om die Franse semafoorstelsel deur Chappe te herhaal, wat die eerste bekende stelsel vir landwye telekommunikasie was met behulp van 'n semafoorstelsel. Maar dit blyk 'n bietjie te ingewikkeld te wees om binne 'n dag standaard servo's te realiseer. My volgende doelwit was iets soortgelyk aan die clacks -stelsel wat deur Terry Pratchett beskryf is, bv. in "Going Postal", as 'n 2x4 -sluitersemafoorstelsel (nie soos die 4x4 -matriks wat in die film uitgebeeld word nie). Ongelukkig kon ek nie te veel tegniese besonderhede oor hierdie stelsel vind nie. Ek beland dus met die 2x3 matrikssemafoorstelsel wat deur Lord Murray ontwikkel is, wat 'n rukkie deur die Britse vloot gebruik is. Boonop pas 'n ses -sluiter/bis -stelsel goed by die ses servo -aansluitings wat op die AIY -stemhoed beskikbaar is. Maar omdat ek tussen die jare nie ses servo's byderhand gehad het nie, het ek uiteindelik besluit om eers 'n simulator van LED's te bou.

Met betrekking tot die kode wat vertoon word, kan u die Murray -stelsel gebruik, maar weereens was die inligting wat ek daaroor beskikbaar het, taamlik beperk, sonder om getalle en simbole te vertoon. Daarom het ek die punt bereik om eerder die Braille -stelsel te gebruik, wat ook 'n 2x3 -matriks gebruik om letters, syfers en ander tekens te vertoon. Die Braille -stelsel is die internasionale standaard vir die druk van tekste wat vir blindes leesbaar is. Dit is ook 'n opmaaktaal wat 'n getalaanwyser gebruik om te definieer dat getalle daarna vertoon moet word, en aanwysers om die een of meer van die volgende letters te definieer, word as hoofletters geskryf. Daarom het ek besluit om 'n effens vereenvoudigde stelsel op te stel, met getalle en 'n paar tekens wat deur die Nemeth -uitbreiding van die braille -stelsel gedefinieer word, en net hoofletters te gebruik, ten minste vir die begin. Dit laat unieke patrone toe vir elke letter, getal of teken wat in my spesiale toepassing vertoon kan word, en kan die teksanalise wat vir regte Braille benodig word, weglaat.

Met die finale toestel kan 'n woord of sin in die AIY -stemherkenningstelsel gepraat word, dan word die stempatroondata via WLAN en internet na 'n Google -skeidingstelsel in die VSA gestuur, daar gedekodeer, en, in elk geval, my interpretasie data word teruggestuur na Europa, waar ek uiteindelik die herkenbare sin as 'n teksstring vertoon. Hierdie teksstring word dan deur die Python -skrif in die individuele letters opgebreek, en nou, in vergelyking met 'n woordeboek wat die ooreenstemmende patrone definieer, word die patrooninligting herhaal en die patrone word op 'n 2x3 LED -matriks vertoon. Kyk gerus na die meegaande video.

Ek het die vertoningsnelheid op een karakter per sekonde gestel, wat lank genoeg moet wees vir 'n opgeleide persoon om die patroon te identifiseer en te vertaal. 'N Moontlike volgende stap sou wees om 'n patroonherkenningstoestel soos die AIY vision HAT (tot dusver nie in Europa beskikbaar nie) te gebruik om die patrone outomaties te lees en te interpreteer om die sirkel te sluit.

Verdere konsepte vir verbeterings, sommige met 'n meer werklike relevansie, word bespreek in die 'vooruitsig'-gedeelte van hierdie instruksies.

Stap 1: Gebruikte materiaal

Materiaal wat gebruik word
Materiaal wat gebruik word
Materiaal wat gebruik word
Materiaal wat gebruik word

Framboos Pi 3

AIY stem HAT

Agt wit LED's, 5 mm in deursnee. Hierdie werk op 3V, dus is 'n weerstand nodig.

Weerstand van 100 kOhm. Miskien nie die perfekte oplossing nie, maar dit was byderhand.

Springkabels

'N Kort stuk draad

Broodbord, opsioneel om die opstelling te toets.

'N Plastiek boks vir besigheidskaartjies.

Twee stukke plastiekskuim van 4 mm, 'n paar oorblywende vullis.

'N Stukkie plastiekmembraan, soos diffuser, soos hierbo.

Soldeerbout en soldeer, 'n mes.

Stap 2: Opstel en gebruik

Opstelling en gebruik
Opstelling en gebruik
Opstelling en gebruik
Opstelling en gebruik
Opstelling en gebruik
Opstelling en gebruik

Stel die Raspberry Pi en AIY HAT op soos aangedui in die AIY stem HAT handleiding. Ek sou aanbeveel om koppe ten minste aan die servo -poorte te soldeer voordat u Pi en HAT monteer, aangesien dit u maklik moontlik maak om servo's, 'n broodbord of LED's aan te sluit.

Die vertoonkas is gemaak van die deksel van 'n plastiekkassie vir visitekaartjies, twee stukke skuim wat in die boks pas en 'n stuk verpakkingsmembraan van dieselfde grootte as die diffuser. In een van die skuimdele is ses gate gestoot en die LED's daarin geplaas. Die korter voete (grondkant) van die LED's is met 'n stuk kabel met mekaar verbind, daarna is 'n weerstand bygevoeg en 'n springkabel aan die laasgenoemde gesoldeer. Aan die ander voete (pluskant) van die LED's is jumperkabels gesoldeer.

Hierdie is dan verbind met die servo -poorte op die AIY -stemhoed via verlengkabels, die positiewe kant na die (buitenste) "P in" penne, die negatiewe aansluiting op een van die (binne) grond/minus penne. Kyk gerus na die aangehegte skema.

Ek beveel sterk aan om die opset op 'n broodbord te toets voordat dit gesoldeer word.

Nou is die membraan, die LED -plaat en die seëllaag in die plastiekboks geplaas.

Plaas die Braille_LED_1.py -script in die src -lêergids. In die geval moet u die script eers uitvoerbaar maak.

Met die gebruik van die Dev -terminale (!) Word die Braille_LED_1.py -program begin. Voer 'src/Braille_LED_1.py' in en druk 'Enter'.

U sal nou gevra word om op die knoppie van die AIY -boks te druk en u woord of sin te sê. Met 'n bietjie vertraging herhaal die stelsel wat verstaan is, en vertoon dit op die skerm sowel as letter vir letter op die ses LED -skerm.

As u die trefwoord "Totsiens" in plaas van 'n sin gee, sal die stelsel u totsiens sê en die program word gesluit.

Stap 3: Die kode

Die kode
Die kode

Hieronder vind u die kode waarmee u met die AIY-spraaktoestel kan praat en die herkenbare sin letter vir letter op 'n klein 2x3-LED 'semafoor' of braille-tipe matriks kan vertoon.

Die kode is 'n afgeleide van die skrif wat ek vir 'n vorige projek gebruik het met die AIY -stemhoed, 'n afgeleide van die servo_demo.py -voorbeeld wat in die AIY -stemhoedhandleiding beskryf word.

U kan ook 'n woordeboek vind met die deel van die Murray -kode wat ek op die internet gevind het, as 'n tekslêer. Dit bevat ook nie syfers nie en laat enkele letters weg, wat hier 'n probleem kan veroorsaak.

'N Beperking van die program in sy huidige toestand is dat as 'n teken nie in die woordeboek voorkom nie, dit die program sou laat val. Boonop is dit nie 'n voorstelling van die volledige Braille -kode as 'n herkenningstaal nie. Soos u in die onderstaande skrif kan sien, is die Nemeth -kode vir getalle oorbodig met 'n paar tekens in standaard Braille, maar dit behoort nie 'n probleem vir ons spesifieke toepassing te veroorsaak nie.

#!/usr/bin/env python3

# Hierdie script is 'n aanpassing van die servo_demo.py -script vir die AIY -stemhoed, # geoptimaliseer vir die AIY -gebaseerde Baille -tipe simbool vertoon invoer aiy.audio import aiy.cloudspeech import aiy.vohathat van gpiozero invoer LED #van gpiozero invoer knoppie van tyd invoer slaap # Woordeboek: 'n kunsmatig gewysigde braille -alfabet, # getalle en 'n paar simbole geneem uit die Nemeth -uitbreiding van Braille Braille_6A = {"": "123456", # spasie "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 ", # Getalvoorvoegsel, dws volgende tekens is getalle", ":" 2 ",". ": "256", # Punt, einde van sin (GB) "?": "236", "!": "235", "'": "3", "-": "24", ";": "23", "Cap": "6", # Die volgende letter is in hoofletters; Getal-stop? "": "", # Nemeth Braille-kode is 'n wiskundige uitbreiding vir 6-punt-braille # sien: https://en.wikipedia.org/wiki/Nemeth_Braille "1": "2", # Nemeth-kode '1', Braille 'komma' "2": "23", "3": "25", "4": "256", "5": "26", "6": "235", # Nemeth '6', Braille '!' "7": "2356", "8": "236", # Nemeth '8', Braille '?' "9": "35", "0": "356", "+": "346", "-": "36", "/": "34", "(": "12356", ") ":" 23456 ","*":" 1346 " # '*' is 'n twee -patroon simbool in Nemeth, hier vervang met 'n 'x' om ineenstortings uit te laat}" "" om redes van eenvoud, die standaard braille getalpatrone word gegee hieronder is vervang deur die ooreenstemmende Nemeth-kodes "1": "1", "2": "12", "3": "14", "4": "145", "5": "15", " 6 ":" 124 "," 8 ":" 1245 "," 9 ":" 24 "," 0 ":" 245 "," "" #Text = "rbhTZkl 9t64+34 #!" # Samevolledige teks, vir ontfoutingsdoeleindes def main (): herkenner = aiy.cloudspeech.get_recognizer () herkenner.verwag_frase ('tot siens') # sleutelwoord, eindig die programknoppie = aiy.voicehat.get_button () # AIY Knoppie status gelei = aiy.voicehat.get_led () # AIY Knoppie-LED-status aiy.audio.get_recorder (). start () led_1 = LED (26) # 1ste aansluiting, servo0, GPIO 26 # boonste linker led_2 = LED (6) # 2de aansluiting, servo1, GPIO 06 # middel links led_3 = LED (13) # 3de aansluiting, servo2, GPIO 13 # links onder led_4 = LED (5) # 4ste aansluiting, servo3, GPIO 05 # bo regs led_5 = LED (12) # 5de aansluiting, servo4, GPIO 12 # middel regs led_6 = LED (24) # 4ste aansluiting, servo3, GPIO 13 # regs onder # afstand = Knoppie (5) # afstandsensor gekoppel aan servo3/GPIO 05, word nie hier gebruik nie aiy.audio.say ("Hallo!",) Aiy.audio.say ("Om te begin, druk asseblief op die knoppie",) aiy.audio.say ("As u vir my totsiens sê, sal ek die program beëindig",) terwyl True: # begin loop led.set_state (aiy.voicehat. LED. BLINK) print ("Om stemherkenning te aktiveer n, druk op die blou knoppie en praat dan ") print () button.wait_for_press () print ('Luister …') aiy.audio.say (" ek luister ",) led.set_state (aiy.voicehat. LED. BLINK_3) teks = herkener.herken () # teksstring van die herkende sin led.set_state (aiy.voicehat. LED. OFF) as teks Geen is: aiy.audio.say ('Jammer, ek het u nie gehoor nie',) elif 'totsiens' in teks: aiy.audio.say ("totsiens",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) slaap (3) druk ('bye! ') breek # stoplus en eindig program anders: print (' U het gesê '', teks, '' ') # Laat u die stelselinterpretasie nagaan, insluitend captialisering aiy.audio.say (' ek dink u het gesê ',) aiy.audio.say (text,) # akustiese verifikasie Text_up = text.upper () # dra alles oor na hoofletters (Text_up) Text_Len = len (Text_up) print (Text_Len) vir i in range (Text_Len): Lett = Text_up # Kies 'n enkele letter, begin met die eerste, dit wil sê [0] druk ("Letter =", Lett) Lett_B = Braille_6A [Lett] # Kies die ooreenstemmende kode uit die woordeboek. 'N Ontbrekende teken sal die kode breek! print (Lett_B) if ("1" in Lett_B): print ("LED 1") led_1.on () # aktiveer LED by servo0 "as" 2 "in Lett_B: print (" LED 2 ") led_2.on () as "3" in Lett_B: druk ("LED 3") led_3.on () as "4" in Lett_B: druk ("LED 4") led_4.on () as "5" in Lett_B: druk ("LED 5 ") led_5.on () as" 6 "in Lett_B: druk (" LED 6 ") led_6.on () slaap (1) # vertoonpatroon vir 'n tweede druk () led_1.off () # deaktiveer alle LED's op servo's0 -5n led_2.off () led_3.off () led_4.off () led_5.off () led_6.off () slaap (0.3) # 'n kort donker pouse, om die einde van die letter aan te dui as _name_ == '_main_ ': main ()

Stap 4: Outlook en opmerkings

So, wat kan volgende wees?

Benewens die IT-meta-grap met die AIY-videokit of 'n ander outomatiese beeldherkenningstelsel wat in die inleiding genoem word, is daar moontlik ander opsies om die konsep wat in hierdie instruksies beskryf word, uit te brei. Sommige van hulle kan selfs in die regte wêreld gebruik word. Dit kan wees:

- verbeterde programmering, sodat die teks oorgedra word na die standaard Braille -kode, met al die opmerkings en kompressies. Dit behoort nie veel moeite te wees vir 'n bekwame pythonprogrammeerder nie, wat ek nie is nie, so enige hulp is welkom.

- brei die stelsel uit tot 'n 2x4 -matriks. Dit behoort ook moontlik te wees, en dit sal help om die ooreenstemmende braille-kodes met 8 punte te gebruik, soos dit deur elektroniese braille-skerms gebruik word. Hierbo sou dit 'n bietjie nader aan die Dearheart clacks -stelsel wees.

- bou 'n regte 2x3 of 2x4 braille -skerm. Dit moet moontlik wees om 'n reeks servo's of 'n reeks 5V mini -solenoïdes te gebruik. Die primêre uitdaging sou wees dat die standaardafstand tussen tasbare punte 2,45 mm, of 1/10 duim, op elektroniese skerms is, sodat sommige ratte en meganika nodig is. Die ander uitdaging kan wees om die duwlengte presies te reguleer.

So 'n eenvoudige en goedkoop oplossing kan vir 'n groter publiek interessant wees, aangesien kommersiële braille -uitstallings redelik duur is. Daar kan 'n voordeel wees vir Braille-leerders wat so 'n stembeheerde stelsel gebruik. Aangesien hulle mondelings 'n (Engelse) sin van hul keuse kan invoer, kan hulle die teks, letters en tekens op hul vingerpunt (e) vertoon.

- bou 'n meganiese sluiterstelsel wat lyk soos die Murray- of Dearheart -stelsels. Dit moet nie te ingewikkeld wees om servo's te gebruik nie en kan in 'n ander instruksie beskryf word. Of dit kan 'n goeie skoolprojek wees. Stel iemand belang?

–――――

Enkele opmerkings en skakels van belang:

- Daar is 'n instruksionele beskrywing van 'n "DIY semafoorlantaarn", 'n 2x4 LED -matriks, gebaseer op 'n paar Propeller -demobord. Ek hou van die uitleg, maar die programmering lyk vir my 'n bietjie ingewikkeld. Kyk asseblief self.

- Ek het nou 'n luislangprogram gekry om volledig gekontrakteerde (graad 2) braille te genereer. Ongelukkig is dit beperk tot python 2 en die Amerikaanse Engelse weergawe van 2002:

- 'n meer volledige program blyk liblouis te wees, https://github.com/liblouis/liblouis, maar ek het geen idee hoe ek dit in hierdie oplossing kan integreer nie.

- 'n Interessante python -oplossing kom uit Griekeland, https://github.com/ant0nisk/pybrl kan verskeie tale integreer en graad 2 -braille genereer.

- Ek is nie 'n programmeerder of elektronikus nie, en ek het 'n paar dae gelede nie veel kennis oor braille gehad nie.

Laat weet my dus as u foute, weglatings of idees vir die projek sien.

- As u van hierdie instruksies hou, stem dan daarvoor!

Aanbeveel: