Sisällysluettelo:

Ääniohjattu pistekirjoitustyyppinen kuviosemafori: 4 vaihetta (kuvilla)
Ääniohjattu pistekirjoitustyyppinen kuviosemafori: 4 vaihetta (kuvilla)

Video: Ääniohjattu pistekirjoitustyyppinen kuviosemafori: 4 vaihetta (kuvilla)

Video: Ääniohjattu pistekirjoitustyyppinen kuviosemafori: 4 vaihetta (kuvilla)
Video: Ääniohjattu bensa-automaatti 2024, Marraskuu
Anonim
Ääniohjattu pistekirjoitustyyppinen kuviosemafori
Ääniohjattu pistekirjoitustyyppinen kuviosemafori
Ääniohjattu pistekirjoitustyyppinen kuviosemafori
Ääniohjattu pistekirjoitustyyppinen kuviosemafori
Ääniohjattu pistekirjoitustyyppinen kuviosemafori
Ääniohjattu pistekirjoitustyyppinen kuviosemafori
Ääniohjattu pistekirjoitustyyppinen kuviosemafori
Ääniohjattu pistekirjoitustyyppinen kuviosemafori

"Herra Vetinari seisoi ikkunansa ääressä katsellen semaforitornia joen toisella puolella. Kaikki kahdeksan häntä kohti seisovasta suuresta ikkunasta vilkkuivat raivokkaasti - musta, valkoinen, musta, valkoinen, musta, valkoinen… Tietoa lensi ilmaan. Kaksikymmentä mailia hänen takanaan, toisessa Sto Latin tornissa, joku katsoi kaukoputken läpi ja huusi numeroita. Kuinka nopeasti tulevaisuus koittaa, hän ajatteli. " T. Pratchett, Viides elefantti

Kun olin rakentanut ääniohjatun hyppypistokkeen AIY-äänipaketin pohjalta, minulla oli ajatus rakentaa puheohjattu semafoori, joka yhdistää uusimman IT-tekniikan televiestinnän ja tiedonsiirron alkuihin.

Aluksi minulla oli idea kopioida Chappen ranskalainen semaforijärjestelmä, joka oli ensimmäinen tunnettu valtakunnallisen televiestinnän järjestelmä, jossa käytettiin semaforijärjestelmää. Mutta se osoittautui hieman liian monimutkaiseksi, jotta se voitaisiin toteuttaa käyttämällä tavallisia servoja päivässä. Seuraava kohteeni oli jotain samanlaista kuin Terry Pratchettin kuvaama clacks -järjestelmä, esim. "Going Postal" -sovelluksessa 2x4 -sulkimen semaforijärjestelmänä (ei elokuvan 4x4 -matriisina). Valitettavasti en löytänyt liikaa teknisiä tietoja tästä järjestelmästä. Joten päädyin Lord Murrayn kehittämään 2x3 -matriisisemaforijärjestelmään, jota Britannian laivasto oli käyttänyt jonkin aikaa. Lisäksi kuusi suljin-/bittijärjestelmä sopii hyvin AIY Voice HATin kuuteen servoliittimeen. Mutta koska minulla ei ollut kuutta servoa käsillä vuosien välillä, päätin vihdoin rakentaa ensin LED -simulaattorin.

Mitä tulee näytettyyn koodiin, voitaisiin käyttää Murray -järjestelmää, mutta taas käytettävissä olevat tiedot olivat melko rajallisia, eikä niissä voinut näyttää mitään numeroita ja symboleja. Joten päädyin käyttämään sen sijaan pistekirjoitusjärjestelmää, joka käyttää myös 2x3 -matriisia kirjainten, numeroiden ja muiden merkkien näyttämiseen. Pistenäyttöjärjestelmä on kansainvälinen standardi sokeille luettavien tekstien tulostamiseen. Se on myös merkintäkieli, joka määrittää numeroindikaattorin avulla, että numerot näytetään seuraavaksi, ja ilmaisimet, jotka määrittelevät, että yksi tai useampi seuraavista kirjaimista kirjoitetaan isoilla kirjaimilla. Päätin siksi perustaa hieman yksinkertaistetun järjestelmän, jossa numerot ja jotkut merkit on määritelty pistekirjoitusjärjestelmän Nemeth -laajennuksella, ja käyttää vain isoja kirjaimia, ainakin aluksi. Tämä mahdollistaa ainutlaatuisten kuvioiden näyttämisen jokaiselle kirjaimelle, numerolle tai merkille erityissovelluksessani ja jättää pois tekstin analyysin, joka vaaditaan todellisessa pistekirjoituksessa.

Lopullinen laite sallii puhua sanan tai lauseen AIY -äänentunnistusjärjestelmään, sitten äänikuvion tiedot lähetetään WLAN -verkon ja Internetin välityksellä jollekin Google -palvelimelle Yhdysvalloissa, dekoodataan siellä ja ainakin minun tapauksessani tulkitaan tiedot lähetetään takaisin Eurooppaan, jossa lopulta saan tunnistetun lauseen näkyviin tekstimerkkijonona. Python -skripti rikkoo tämän tekstimerkkijonon yksittäisiksi kirjaimiksi, ja nyt, verrattuna vastaavia kuvioita määrittelevään sanakirjaan, kuvion tiedot haetaan uudelleen ja kuviot näytetään 2x3 LED -matriisissa. Katso oheinen video.

Olen asettanut näyttönopeudeksi yhden merkin sekunnissa. Sen pitäisi olla riittävän pitkä, jotta koulutettu henkilö voi tunnistaa ja kääntää kuvion. Mahdollinen seuraava askel olisi käyttää kuvantunnistuslaitetta, kuten AIY vision HAT (toistaiseksi ei saatavilla Euroopassa) kuvien lukemiseksi ja tulkitsemiseksi automaattisesti, jolloin ympyrä suljetaan.

Muita parannusehdotuksia, joista joillakin on enemmän todellista merkitystä, käsitellään tämän ohjeen '' näkymät '' -osiossa.

Vaihe 1: Käytetyt materiaalit

Käytetyt materiaalit
Käytetyt materiaalit
Käytetyt materiaalit
Käytetyt materiaalit

Raspberry Pi 3

AIY ääni HAT

Kahdeksan valkoista LEDiä, halkaisija 5 mm. Nämä toimivat 3 V: lla, joten tarvitaan vastus.

100 kOhm vastus. Ei ehkä täydellinen ratkaisu, mutta se oli käsillä.

Käynnistyskaapelit

Lyhyt lanka

Leipälevy, valinnainen asennuksen testaamiseksi.

Muovinen laatikko käyntikorteille.

Kaksi 4 mm: n muovivaahtoa, jotkut jäivät roskaa.

Joku muovikalvo, diffuusorina, kuten yllä.

Juotosrauta ja juote, veitsi.

Vaihe 2: Asennus ja käyttö

Asennus ja käyttö
Asennus ja käyttö
Asennus ja käyttö
Asennus ja käyttö
Asennus ja käyttö
Asennus ja käyttö

Asenna Raspberry Pi ja AIY HAT AIY Voice HAT -oppaan ohjeiden mukaisesti. Suosittelen juottamaan otsikot ainakin servoportteihin ennen Pi- ja HAT -laitteiden kokoamista, koska näin voit helposti liittää servot, leipälevyn tai LEDit.

Näyttölaatikko oli rakennettu käyntikorttien muovilaatikon kannesta, kaksi laatikkoon sopivaa vaahtomuovikappaletta ja saman kokoinen pakkauskalvo kuin hajotin. Yhdessä vaahtomuoviosasta työnnettiin kuusi reikää ja LEDit asetettiin niihin. LEDien lyhyemmät jalat (maanpinta) liitettiin toisiinsa kaapelilla, sitten lisättiin vastus ja jälkimmäiseen juotettiin hyppyjohto. LED -valojen muille jaloille (pluspuoli) hyppyjohdot oli juotettu.

Nämä liitettiin sitten AIY -äänen HAT: n servoportteihin venytyskaapeleiden kautta, positiivinen puoli (ulkoiseen) "P in" -napaan, negatiivinen liitin johonkin (sisäisestä) maadoitus-/miinusnastaan. Katsokaa oheista kaavaa.

Suosittelen lämpimästi testaamaan asetuksia leipälaudalla ennen juottamista.

Nyt kalvo, LED -levy ja tiivistyskerros asetettiin muovilaatikkoon.

Aseta Braille_LED_1.py -skripti src -kansioon. Siinä tapauksessa sinun on ehkä tehtävä komentosarja suoritettavaksi ensin.

Braille_LED_1.py -ohjelma käynnistetään nyt kehitysterminaalin (!) Avulla. Kirjoita 'src/Braille_LED_1.py' ja paina 'Enter'.

Sinua pyydetään nyt painamaan AIY -ruudun painiketta ja sanomaan sana tai lause. Hetken viiveellä järjestelmä toistaa ymmärretyn ja näyttää sen näytöllä sekä kirjaimittain kuuden LED -näytön.

Jos annat avainsanan "Goodbye" lauseen sijasta, järjestelmä sanoo sinulle Goodbye ja ohjelma suljetaan.

Vaihe 3: Koodi

Koodi
Koodi

Alta löydät koodin, jonka avulla voit puhua AIY-äänilaitteelle ja saada tunnistettu lause kirjaimelta kirjaimelle pienelle 2x3-LED-semaforille tai pistekirjoitustyypille.

Koodi on johdannainen komentosarjasta, jota käytin edellisessä projektissa AIY -äänen HAT: n avulla.

Löydät myös sanakirjan, jossa on Internetissä löytämäni Murray -koodin osa tekstitiedostona. Se ei myöskään sisällä numeroita ja jättää pois joitakin kirjaimia, mikä aiheuttaisi ongelman.

Yksi ohjelman rajoituksista sen nykyisessä tilassa on, että jos merkki, joka ei sisälly sanakirjaan, se kaatuu ohjelman. Lisäksi se ei edusta täydellistä pistekirjoituskoodia merkintäkieleksi. Kuten alla olevasta käsikirjoituksesta näet, Nemeth -koodi numeroille on tarpeeton joidenkin merkkien kanssa vakavassa pistekirjoituksessa, mutta sen ei pitäisi aiheuttaa ongelmia sovelluksellemme.

#!/usr/bin/env python3

# Tämä skripti on mukautus servo_demo.py -komentosarjasta AIY -äänikypärälle, # optimoitu AIY -pohjaiselle Baille -tyyppiselle symbolinäytölle tuonti aiy.audio tuonti aiy.cloudspeech tuonti aiy.voicehat gpiozeron tuonti -LED: ltä # grom -tuonnin painike aika tuonti lepotila # Sanakirja: keinotekoisesti muokattu pistekirjoituksen aakkoset, # numerot ja jotkut symbolit, jotka on otettu Nemethin Braille -pistekirjoituksen pistekirjoituksesta_6A = {"": "123456", # välilyönti "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 ", # Numeron etuliite eli seuraavat merkit ovat numeroita", ":" 2 ",". ": "256", # Piste, lauseen loppu (GB) "?": "236", "!": "235", "" ":" 3 ","-":" 24 ","; ": "23", "Cap": "6", # Seuraava kirjain on isoilla kirjaimilla; Numeropysäkki? "": "", # Nemeth-pistekirjoituskoodi on 6-pistekirjoituksen matemaattinen laajennus # katso: https://fi.wikipedia.org/wiki/Nemeth_Braille "1": "2", # Nemeth-koodi '1', Pistenäytteinen pilkku "2": "23", "3": "25", "4": "256", "5": "26", "6": "235", # Nemeth '6', Pistekirjoitus '!' "7": "2356", "8": "236", # Nemeth '8', pistekirjoitus? ' "9": "35", "0": "356", "+": "346", "-": "36", "/": "34", "(": "12356", ") ":" 23456 ","*":" 1346 " # '*' on kahden kuvion symboli Nemethissä, joka korvataan tässä x -kirjaimella kaatumisten poistamiseksi}" "" yksinkertaisuuden vuoksi alla korvattiin vastaavilla Nemeth-koodeilla "1": "1", "2": "12", "3": "14", "4": "145", "5": "15", " 6 ":" 124 "," 8 ":" 1245 "," 9 ":" 24 "," 0 ":" 245 "," "" #Text = "rbhTZkl 9t64+34 #!" # Esimerkkiteksti, virheenkorjausta varten def main (): tunnistin = aiy.cloudspeech.get_recognizer () tunnistaja.expect_phrase ('hyvästi') # avainsana, lopettaa ohjelmapainikkeen = aiy.voicehat.get_button () # AIY -painikkeen tila led = aiy.voicehat.get_led () # AIY-painike-LED-tila aiy.audio.get_recorder (). start () led_1 = LED (26) # 1. liitin, servo0, GPIO 26 # vasen ylimmäinen led_2 = LED (6) # 2. liitin, servo1, GPIO 06 # keskimmäinen vasen led_3 = LED (13) # 3. liitin, servo2, GPIO 13 # vasen alareuna led_4 = LED (5) # 4. liitin, servo3, GPIO 05 # oikea ylävalo led_5 = LED (12) # 5. liitin, servo4, GPIO 12 # oikea keskimmäinen led_6 = LED (24) # 4. liitin, servo3, GPIO 13 # oikea ala # etäisyys = painike (5) # etäisyysanturi kytketty servo3/GPIO 05: een, ei käytetä tässä aiy.audio.say ("Hei!",) Aiy.audio.say ("Aloita painamalla painiketta",) aiy.audio.say ("Jos sanot hyvästit, lopetan ohjelman" "), kun taas True: # alkaa loop led.set_state (aiy.voicehat. LED. BLINK) print ("Äänentunnistuksen aktivointi n, paina sinistä painiketta ja puhu sitten ") print () button.wait_for_press () print ('Listening …') aiy.audio.say (" Minä kuuntelen ",) led.set_state (aiy.voicehat. LED. BLINK_3) text = tunnistin.tunnista () # tekstimerkkijono tunnistetusta lauseesta led.set_state (aiy.voicehat. LED. OFF) jos teksti on Ei mitään: aiy.audio.say ('Anteeksi, en kuullut sinua.',) elif 'hyvästi' tekstissä: aiy.audio.say ("Goodbye",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) sleep (3) print ('bye! ') break # pysäyttää silmukan ja lopettaa ohjelman muut: print (' Sanoit "', teksti," "') # Voit tarkistaa järjestelmän tulkinnan, mukaan lukien kaappauksen aiy.audio.say ('Luulen, että sanoit',) aiy.audio.say (teksti,) # akustinen vahvistus Text_up = text.upper () # siirtää kaikki isot kirjaimet (Text_up) Text_Len = len (Text_up) print (Text_Len) i alueella (Text_Len): Lett = Text_up # Valitsee yhden kirjaimen, joka alkaa ensimmäisestä, eli [0] print ("Letter =", Lett) Lett_B = Braille_6A [Lett] # Valitsee vastaavan koodin sanakirja. Puuttuva merkki rikkoo koodin! print (Lett_B) if ("1" in Lett_B): print ("LED 1") led_1.on () # aktivoi LED: n servo0: ssa "jos" 2 "Lett_B: ssa: print (" LED 2 ") led_2.on () jos "3" Lett_B: ssa (tulosta ("LED 3") led_3.on () jos "4" Lett_B: ssa: tulosta ("LED 4") led_4.on () jos "5" Lett_B: ssa: tulosta ("LED 5" ") led_5.on () jos" 6 "in Lett_B: print (" LED 6 ") led_6.on () sleep (1) # näyttökuvio toista tulostusta varten () led_1.off () # inaktivoi kaikki servojen LEDit -5n led_2.off () led_3.off () led_4.off () led_5.off () led_6.off () uni (0.3) # lyhyt pimeä tauko, joka osoittaa kirjeen lopun, jos _name_ == '_main_ ': main ()

Vaihe 4: Näkymät ja huomautukset

Joten mitä voisi olla seuraavaksi?

Tämän johdannossa mainitun AIY-videopaketin tai muun automaattisen kuvantunnistusjärjestelmän IT-metasanan lisäksi saattaa olla muitakin vaihtoehtoja tässä ohjeessa kuvatun käsitteen laajentamiseksi. Jotkut niistä voivat jopa olla todellisessa käytössä. Nämä voivat olla:

- parannettu ohjelmointi, niin että teksti siirretään tavalliseen pistekirjoituskoodiin, kaikki merkinnät ja pakkaukset. Sen ei pitäisi olla kovin paljon ponnisteluja ammattitaitoiselle python -ohjelmoijalle. Mitä en ole, joten kaikki apu olisi tervetullutta.

- laajenna järjestelmä 2x4 -matriisiksi. Pitäisi myös olla mahdollista, ja se auttaisi käyttämään vastaavia 8 pisteen pistekirjoituskoodeja, kuten elektroniset pistekirjoitusnäytöt. Tämän yläpuolella se olisi hieman lähempänä Dearheart clacks -järjestelmää.

- rakenna todellinen 2x3- tai 2x4 -pistekirjoitusnäyttö Pitäisi olla mahdollista käyttää joko joukkoa servoja tai 5 V: n mini -solenoideja. Ensisijainen haaste olisi, että kosketuskohtien välinen vakioetäisyys on 2,45 mm eli 1/10 tuumaa elektronisissa näytöissä, joten joitain vaihteita ja mekaniikkaa voidaan tarvita. Toinen haaste voisi olla työntöpituuden tarkka säätäminen.

Tällainen yksinkertainen ja halpa ratkaisu saattaa kiinnostaa laajempaa yleisöä, koska kaupalliset pistekirjoitusnäytöt ovat melko kalliita. Tällaista puheohjattua järjestelmää käyttävistä pistekirjoituksen oppijoista voi olla hyötyä. Koska he voivat kirjoittaa suullisesti valitsemansa (englanninkielisen) lauseen ja saada tekstin, kirjaimet ja merkit näkyviin sormenpäihin.

- rakentaa Murray- tai Dearheart -järjestelmiä muistuttava mekaaninen suljinjärjestelmä. Servojen avulla sen ei pitäisi olla liian monimutkaista ja se voidaan kuvata toisessa ohjeessa. Tai se voisi olla mukava kouluprojekti. Kiinnostaako ketään?

–――――

Muutama huomio ja kiinnostavat linkit:

- Siellä on ohje, joka kuvaa "DIY -semaforilanteria", 2x4 LED -matriisia, joka perustuu johonkin potkurin demokorttiin. Pidän ulkoasusta, mutta ohjelmointi näyttää hieman monimutkaiselta. Ole hyvä ja katso itse.

- Löysin nyt python -ohjelman, joka tuottaa täysin supistetun (luokka 2) pistekirjoituksen. Valitettavasti se rajoittuu python 2: een ja vuoden 2002 amerikkalaiseen englanninkieliseen versioon:

- Täydellisempi ohjelma näyttää olevan liblouis, https://github.com/liblouis/liblouis, mutta minulla ei ole aavistustakaan kuinka integroida tämä tähän ratkaisuun.

- mielenkiintoinen python -ratkaisu näyttää tulevan Kreikasta, https://github.com/ant0nisk/pybrl voi integroida useita kieliä ja luoda luokan 2 pistekirjoituksen.

- En ole ohjelmoija, en elektroniikka -kaveri, eikä minulla ollut paljon tietoa pistekirjoituksesta muutama päivä sitten.

Joten jos huomaat virheitä, puutteita tai sinulla on ideoita projektista, kerro siitä minulle.

- Jos pidät tästä ohjeesta, äänestä sitä!

Suositeltava: