Sisukord:

Hääljuhtimisega punktkirja tüüpi mustrisemafor: 4 sammu (piltidega)
Hääljuhtimisega punktkirja tüüpi mustrisemafor: 4 sammu (piltidega)

Video: Hääljuhtimisega punktkirja tüüpi mustrisemafor: 4 sammu (piltidega)

Video: Hääljuhtimisega punktkirja tüüpi mustrisemafor: 4 sammu (piltidega)
Video: Hääljuhtimine - kuidas teha? TV, kodukino, valgustus ja muu 2024, November
Anonim
Hääljuhtimisega Braille-tüüpi mustrisemafor
Hääljuhtimisega Braille-tüüpi mustrisemafor
Hääljuhtimisega Braille-tüüpi mustrisemafor
Hääljuhtimisega Braille-tüüpi mustrisemafor
Hääljuhtimisega Braille'i tüüpi mustrisemafor
Hääljuhtimisega Braille'i tüüpi mustrisemafor
Hääljuhtimisega Braille'i tüüpi mustrisemafor
Hääljuhtimisega Braille'i tüüpi mustrisemafor

"Lord Vetinari seisis oma akna juures ja vaatas teisel pool jõge asuvat semaforitorni. Kõik kaheksa tema poole suunatud suurt aknaluuki vilkusid raevukalt - must, valge, must, valge, must, valge… Teave lendas õhku. Kakskümmend miili tema taga, teisel Sto Lati tornil, vaatas keegi läbi teleskoobi ja hüüdis numbreid. Kui kiiresti tulevik meie ette jõuab, mõtles ta. " T. Pratchett, Viies elevant

Pärast AIY häälkomplekti põhjal hääljuhtimisega hüppeliistme ehitamist tekkis mul idee ehitada häälega juhitav semafoor, mis ühendaks uusima IT-tehnoloogia ja telekommunikatsiooni ning andmeedastuse alguse.

Alguses tekkis mul idee korrata Chappe'i prantsuse semaforisüsteemi, mis oli esimene teadaolev süsteem üleriigilise telekommunikatsiooni jaoks, kasutades semaforisüsteemi. Kuid see osutus natuke liiga keeruliseks, et seda tavaliste servode abil ühe päeva jooksul realiseerida. Minu järgmine sihtmärk oli midagi sarnast Terry Pratchetti kirjeldatud klambrite süsteemiga, nt. filmis "Going Postal", 2x4 katiku semafoorisüsteemina (mitte filmis kujutatud 4x4 maatriksina). Kahjuks ei leidnud ma selle süsteemi kohta liiga palju tehnilisi üksikasju. Nii jõudsin lõpuks Lord Murray välja töötatud 2x3 maatriksisemafoorisüsteemi, mida Briti merevägi oli mõnda aega kasutanud. Lisaks sobib kuue katiku/bitiga süsteem hästi kuuele AIO häälmütsil saadaolevale servopistikule. Aga kuna mul polnud aastate jooksul kuut servot käepärast, otsustasin lõpuks kõigepealt LED -idest valmistatud simulaatori ehitada.

Kuvatava koodi osas võiks kasutada Murray süsteemi, kuid jällegi oli mul selle kohta kättesaadav teave üsna piiratud, mis ei võimaldanud kuvada ühtegi numbrit ega sümbolit. Niisiis jõudsin punktini, et kasutan hoopis punktkirja süsteemi, mis kasutab ka tähtede, numbrite ja muude märkide kuvamiseks 2x3 maatriksit. Punktkirjasüsteem on rahvusvaheline standard pimedatele loetavate tekstide printimiseks. See on ka märgistuskeel, mis kasutab numbrinäitajat, et määratleda, kas numbrid kuvatakse järgmisena, ja indikaatoreid, mis määravad, et üks või mitu järgmistest tähtedest kirjutatakse suurtähtedena. Seetõttu otsustasin luua veidi lihtsustatud süsteemi, mille numbrid ja mõned märgid määrab selle asemel punktkirjasüsteem Nemethi laiendus, ning kasutada vähemalt alguses suuri tähti. See võimaldab minu erirakenduses kuvada unikaalseid mustreid iga tähe, numbri või märgi jaoks ja jätta tegeliku punktkirja jaoks vajaliku teksti analüüsi välja.

Viimane seade võimaldab rääkida sõna või lause AIY häältuvastussüsteemi, seejärel saadetakse häälmustri andmed WLAN -i ja Interneti kaudu mõnele Google'i serverile USA -s, dekodeeritakse seal ja vähemalt minu puhul tõlgendatakse andmed saadetakse tagasi Euroopasse, kus lõpuks saan tuvastatud lause tekstistringina kuvada. See tekstistring purustatakse seejärel Pythoni skripti abil üksikuteks tähtedeks ja nüüd, võrreldes vastavaid mustreid määratleva sõnastikuga, saadakse mustriteave uuesti ja mustrid kuvatakse 2x3 LED -maatriksil. Palun vaadake lisatud videot.

Olen määranud kuvamissageduseks ühe tähemärgi sekundis, mis peaks olema piisavalt pikk, et koolitatud inimene saaks mustri tuvastada ja tõlkida. Järgmine võimalik samm oleks mustrite automaatseks lugemiseks ja tõlgendamiseks mustri tuvastusseadme, näiteks AIY visiooni mütsi kasutamine (siiani Euroopas pole saadaval), et ring sulgeda.

Täiendavaid kontseptsioone täiustamiseks, millest mõned on reaalses kontekstis asjakohasemad, käsitletakse selle juhendi väljavaate osas.

Samm: kasutatud materjalid

Kasutatud materjalid
Kasutatud materjalid
Kasutatud materjalid
Kasutatud materjalid

Vaarika Pi 3

AIY hääl MÜTS

Kaheksa valget valgusdioodi, läbimõõt 5 mm. Need töötavad 3 V pingel, seega on vaja takisti.

100kOhm takisti. Võib -olla mitte ideaalne lahendus, kuid oli käepärast.

Jumper kaablid

Lühike traat

Leivalaud, valikuline seadistuse testimiseks.

Visiitkaartide plastkarp.

Kaks tükki 4 mm plastvahtu, mõned jäid prügi alla.

Mõni plastmembraani tükk, hajuti, nagu eespool.

Jootekolb ja jootekolb, nuga.

Samm: seadistamine ja kasutamine

Seadistamine ja kasutamine
Seadistamine ja kasutamine
Seadistamine ja kasutamine
Seadistamine ja kasutamine
Seadistamine ja kasutamine
Seadistamine ja kasutamine

Seadistage Raspberry Pi ja AIY HAT, nagu on näidatud AIY Voice HATi kasutusjuhendis. Soovitan jootada päised vähemalt servoportidesse enne Pi ja HAT kokkupanekut, kuna see võimaldab hõlpsasti ühendada servosid, leivaplaati või LED -e.

Ekraanikarp oli ehitatud visiitkaartide plastkarbi kaanest, kahest karbist sobitatud vahutükist ja sarnase suurusega pakendimembraanist kui hajuti. Ühes vahtosast lükati kuus auku ja LED -id asetati nendesse. Valgusdioodide lühemad jalad (maa pool) ühendati üksteisega kaablitükiga, seejärel lisati takisti ja viimasele jooteti hüppaja. Valgusdioodide teistele jalgadele (pluss külg) joodeti hüppajakaablid.

Seejärel ühendati need pikenduskaablite abil AIY hääl HAT -i servoportidega, positiivne pool (välimise) "P in" tihvtidega, negatiivne pistik ühe (sisemise) maandus-/miinusnõelaga. Palun vaadake lisatud skeemi.

Soovitan tungivalt enne jootmist seadistust testida leivaplaadil.

Nüüd asetati membraan, LED -plaat ja tihenduskiht plastkarpi.

Asetage Braille_LED_1.py skript kausta src. Sellisel juhul peate võib -olla tegema skripti kõigepealt käivitatavaks.

Nüüd, arendusterminali (!) Kasutades, käivitatakse programm Braille_LED_1.py. Sisestage 'src/Braille_LED_1.py' ja vajutage 'Enter'.

Nüüd palutakse teil vajutada kasti AIY nuppu ja öelda oma sõna või lause. Mõne aja pärast kordab süsteem arusaadavat ja kuvab selle nii ekraanil kui ka tähthaaval kuuel LED -ekraanil.

Kui annate lause asemel märksõna "Hüvasti", ütleb süsteem teile hüvasti ja programm suletakse.

3. samm: kood

Kood
Kood

Altpoolt leiate koodi, mis võimaldab teil rääkida AIY häälseadmega ja lasta tuvastatud lausel tähtede kaupa kuvada väikesel 2x3-LED-semafooril või punktkirja tüüpi maatriksil.

Kood on tuletis skriptist, mida kasutasin eelmises projektis, kasutades AIY Voice HAT -i, olles tuletis AIY Voice HAT käsiraamatus kirjeldatud servo_demo.py näitest.

Samuti leiate tekstifailina sõnastiku selle Murray koodi osaga, mille olin Internetist leidnud. See ei sisalda numbreid ja jätab mõned tähed välja, mis tekitaks siin probleemi.

Programmi üks piiranguid selle praeguses olekus on see, et kui sõnaraamatusse ei kaasata märki, kukub see programm kokku. Lisaks ei esinda see täielikku punktkirjakoodi kui märgistuskeelt. Nagu näete allolevas skriptis, on Nemethi numbrikood tavaliste punktkirjas mõne märgiga üleliigne, kuid see ei tohiks meie konkreetse rakenduse jaoks probleeme tekitada.

#!/usr/bin/env python3

# See skript on kohandus servo_demo.py skriptist AIY häälmütsile, # optimeeritud AIY baasil Baille tüüpi sümbolkuvarile import import aiy.audio import aiy.cloudspeech import aiy.voicehat gpiozero import LED #from gpiozero import Button from aja import unerežiim # Sõnastik: kunstlikult muudetud punktkirjas tähestik, # numbrit ja mõned sümbolid, mis on võetud punktkirja punktkiri Nemethi laiendusest_6A = {"": "123456", # tühik "A": "1", "B": "12 "," C ":" 14 "," D ":" 145 "," E ":" 15 "," F ":" 124 "," G ":" 1245 "," H ":" 125 ", "Mina": "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 ", # Numbri eesliide, st järgmised märgid on numbrid", ":" 2 ",". ": "256", # punkt, lause lõpp (GB) "?": "236", "!": "235", "" ":" 3 ","-":" 24 ","; ": "23", "Cap": "6", # Järgmine täht on suurtähtedega; Number-Stop? "": "", # Nemethi punktkirjakood on 6-punktilise punktkirja matemaatiline laiendus # vt: https://en.wikipedia.org/wiki/Nemeth_Braille "1": "2", # Nemethi kood '1', Braille 'koma' "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 " # '*' on kahest mustrist koosnev sümbol Nemethis, siin asendatakse krahhide ärajätmiseks" x "}" "" lihtsuse huvides, antud standardsed punktkirja mustrid allpool asendati Nemethi koodid "1": "1", "2": "12", "3": "14", "4": "145", "5": "15", " 6 ":" 124 "," 8 ":" 1245 "," 9 ":" 24 "," 0 ":" 245 "," "" #Text = "rbhTZkl 9t64+34 #!" # Näidetekst, silumiseks def main (): tunnistaja = aiy.cloudspeech.get_recognizer () tunnistaja.expect_phrase ('hüvasti') # märksõna, lõpetab programmi nupu = aiy.voicehat.get_button () # AIY nupu oleku led = aiy.voicehat.get_led () # AIY nupp-LED olek aiy.audio.get_recorder (). start () led_1 = LED (26) # 1. pistik, servo0, GPIO 26 # vasakpoolne ülemine led_2 = LED (6) # 2. pistik, servo1, GPIO 06 # keskmine vasak LED_3 = LED (13) # 3. pistik, servo2, GPIO 13 # vasakpoolne led_4 = LED (5) # 4. pistik, servo3, GPIO 05 # ülemine parem LED_5 = LED (12) # 5. pistik, servo4, GPIO 12 # parempoolne keskmine led_6 = LED (24) # 4. pistik, servo3, GPIO 13 # paremal # kaugus = nupp (5) # servo3/GPIO 05 -ga ühendatud kaugusandur, siin ei kasutata aiy.audio.say ("Tere!",) Aiy.audio.say ("Alustamiseks palun vajutage nuppu") loop led.set_state (aiy.voicehat. LED. BLINK) print ("Hääletuvastuse aktiveerimiseks n, vajutage sinist nuppu ja seejärel rääkige ") nupp print (). oota_for_press () print (" Kuulan … ") aiy.audio.say (" Ma kuulan ",) led.set_state (aiy.voicehat. LED. BLINK_3) text = tunnistaja.tunnustada () # tunnustatud lause tekstistring led.set_state (aiy.voicehat. LED. OFF) kui tekst on Puudub: aiy.audio.say ('Vabandust, ma ei kuulnud sind.',) elif 'hüvasti' tekstis: aiy.audio.say ("Goodbye",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) sleep (3) print ('bye! ') break # peatab tsükli ja lõpetab programmi muul viisil: print (' Sa ütlesid '', tekst, '' ') # Võimaldab kontrollida süsteemide tõlgendust, sealhulgas kaasamist aiy.audio.say (' Ma arvan, et sa ütlesid ',) aiy.audio.say (tekst,) # akustiline kontroll Text_up = text.upper () # teisaldab kõik suurtähtedele (Text_up) Text_Len = len (Text_up) print (Text_Len) i vahemikus (Text_Len): Lett = Text_up # Valib ühe tähe, alustades esimesest, st [0] print ("Letter =", Lett) Lett_B = Braille_6A [Lett] # Valib vastava koodi sõnaraamat. Puuduv märk rikub koodi! print (Lett_B) if ("1" in Lett_B): print ("LED 1") led_1.on () # aktiveerib LED servo0 "kui" 2 "Lett_B -s: print (" LED 2 ") led_2.on () kui "3" Lett_B -s: print ("LED 3") led_3.on () kui "4" Lett_B -s: print ("LED 4") led_4.on () kui "5" Lett_B -s: print ("LED 5" ") led_5.on () kui" 6 "Lett_B -s: print (" LED 6 ") led_6.on () unerežiim (1) # kuvamuster teise printimise jaoks () led_1.off () # inaktiveerib kõik servode LED -id -5n led_2.off () led_3.off () led_4.off () led_5.off () led_6.off () uni (0.3) # lühike pime paus, mis näitab kirja lõppu, kui _name_ == '_main_ ': peamine ()

Samm: väljavaated ja märkused

Mis siis võiks olla järgmine?

Lisaks IT-metanaljale AIY videokomplekti või mõne muu sissejuhatuses mainitud automatiseeritud pildituvastussüsteemi kõrval võib selles juhendis kirjeldatud kontseptsiooni laiendamiseks olla ka teisi võimalusi. Mõned neist võivad isegi olla reaalses maailmas kasulikud. Need võivad olla:

- täiustatud programmeerimine, nii et tekst kantakse tavalisse punktkirjakoodi koos kõigi juurdehindluste ja tihendustega. See ei tohiks olla oskusliku python -programmeerija jaoks palju pingutusi. Mida ma pole, nii et igasugune abi oleks teretulnud.

- laiendage süsteem 2x4 maatriksiks. See peaks olema samuti võimalik ja aitaks kasutada vastavaid 8-punktilisi punktkirjakoode, nagu kasutatakse elektroonilistes punktkirjades. Eespool oleks see natuke lähemal klapisüsteemile Dearheart.

- ehitada tõeline 2x3 või 2x4 punktkirjakuva. Peaks olema võimalik kasutada kas servode või 5 V mini -solenoidide massiivi. Esmane väljakutse oleks see, et standardne kaugus puutetundlike punktide vahel on elektroonilistel näidikutel 2,45 mm ehk 1/10 tolli, seega võib vaja minna mõningaid käike ja mehaanikat. Teine väljakutse võib olla tõuke pikkuse täpne reguleerimine.

Selline lihtne ja odav lahendus võib huvi pakkuda laiemale avalikkusele, kuna kaubanduslikud punktkirjad on üsna kallid. Sellist hääljuhtimisega süsteemi kasutavatest punktkirjaõppijatest võib kasu olla. Kuna nad võivad suuliselt sisestada enda valitud (ingliskeelse) lause ja näevad teksti, tähti ja märke sõrmeotstel.

- ehitada Murray või Dearheart süsteeme meenutav mehaaniline aknaluugisüsteem. Servode kasutamine ei tohiks olla liiga keeruline ja seda võib kirjeldada teises juhendis. Või võib see olla tore kooliprojekt. Kedagi huvitab?

–――――

Mõned tähelepanekud ja huvitavad lingid:

- Seal on juhend, mis kirjeldab "DIY semaforlaternat", 2x4 LED -maatriksit, mis põhineb mingil propelleri demotahvlil. Paigutus mulle meeldib, kuid programmeerimine tundub mulle natuke keeruline. Palun vaadake ise.

- Nüüd leidsin python -programmi, et genereerida täiel määral lepinguline (2. klass) punktkiri. Kahjuks piirdub see python 2 ja 2002. aasta Ameerika ingliskeelse versiooniga:

- täielikum programm tundub olevat liblouis, https://github.com/liblouis/liblouis, kuid mul pole aimugi, kuidas seda sellesse lahendusse integreerida.

- tundub, et huvitav püütonilahendus pärineb Kreekast, https://github.com/ant0nisk/pybrl saab integreerida mitu keelt ja genereerida 2. klassi punktkirja.

- Ma ei ole programmeerija ega elektroonikamees ega teadnud paar päeva tagasi palju punktkirja.

Nii et kui näete vigu, puudusi või teil on projekti jaoks ideid, andke mulle sellest teada.

- Kui teile meeldib see juhend, palun hääletage selle poolt!

Soovitan: