Sadržaj:

Semafor uzorka Brajevog pisma s glasovnom kontrolom: 4 koraka (sa slikama)
Semafor uzorka Brajevog pisma s glasovnom kontrolom: 4 koraka (sa slikama)

Video: Semafor uzorka Brajevog pisma s glasovnom kontrolom: 4 koraka (sa slikama)

Video: Semafor uzorka Brajevog pisma s glasovnom kontrolom: 4 koraka (sa slikama)
Video: Hook Yarn & Dish Episode 356! 2024, Studeni
Anonim
Semafor uzorka Brajevog pisma kontroliranog glasom
Semafor uzorka Brajevog pisma kontroliranog glasom
Semafor uzorka Braillevog pisma kontroliranog glasom
Semafor uzorka Braillevog pisma kontroliranog glasom
Semafor uzorka Braillevog pisma kontroliranog glasom
Semafor uzorka Braillevog pisma kontroliranog glasom
Semafor uzorka Braillevog pisma kontroliranog glasom
Semafor uzorka Braillevog pisma kontroliranog glasom

"Lord Vetinari stajao je na svom prozoru gledajući semaforski toranj s druge strane rijeke. Svih osam velikih kapka okrenutih prema njemu bijesno su treptali - crno, bijelo, crno, bijelo, crno, bijelo … Informacije su letjele u zrak. Dvadeset milja iza njega, na drugom tornju na Sto Latu, netko je gledao kroz teleskop i uzvikivao brojeve. Pomislio je kako brzo dolazi budućnost pred nas. " T. Pratchett, Peti slon

Nakon što sam izgradio skakačku utičnicu s glasovnim upravljanjem na temelju AIY glasovnog kompleta, imao sam ideju izgraditi semafor upravljan glasom, okupljajući najnovije IT tehnologije s počecima telekomunikacija i prijenosa podataka.

Isprva sam imao ideju da repliciram francuski sustav semafora od strane Chappea, koji je bio prvi poznati sustav za telekomunikacije na razini cijele zemlje koji koristi sustav semafora. No, pokazalo se da je to bilo previše komplicirano da bi se realiziralo pomoću standardnih servomotora u roku od jednog dana. Sljedeća mi je meta bila nešto slično sustavu clacks koji je opisao Terry Pratchett, npr. u "Going Postal", kao semaforski sustav 2x4 zatvarača (ne kao matrica 4x4 prikazana u filmu). Nažalost, nisam mogao pronaći previše tehničkih detalja na ovom sustavu. Tako sam završio s 2x3 matričnim sustavom semafora koji je razvio Lord Murray, a koji je neko vrijeme koristila britanska mornarica. Osim toga, sustav sa šest zatvarača/bita dobro pristaje uz šest servo konektora dostupnih na AIY voice HAT -u. No, kako između godina nisam imao pri ruci šest servo upravljača, konačno sam odlučio prvo izgraditi simulator napravljen od LED dioda.

Što se tiče prikazanog koda, mogao se koristiti Murrayjev sustav, ali opet su informacije koje sam imao na raspolaganju bile prilično ograničene, ne dopuštajući prikaz bilo kakvih brojeva i simbola. Pa sam došao do toga da umjesto toga koristim Brailleov sustav, koji također koristi matricu 2x3 za prikaz slova, brojeva i drugih znakova. Brailleov sustav je međunarodni standard za ispis tekstova čitljivih za slijepe. To je također jezik za označavanje, koji koristi indikator broja za definiranje da će se sljedeći prikazivati brojevi, a pokazatelji za definiranje da se jedno ili više sljedećih slova ispisuje velikim slovima. Odlučio sam stoga postaviti malo pojednostavljeni sustav, s brojevima i nekim znakovima definiranim Nemethovim proširenjem Braillevog pisma, i koristiti samo velika slova, barem za početak. To omogućuje jedinstvene uzorke za svako slovo, broj ili znak koji se prikazuju u mojoj posebnoj aplikaciji i izostavljanje analize teksta potrebne za pravi Brajevo pismo.

Posljednji uređaj omogućuje izgovaranje riječi ili rečenice u sustavu prepoznavanja glasa AIY, zatim se podaci o uzorku glasa šalju putem WLAN -a i interneta na neki Google server u SAD -u, tamo se dekodiraju i, barem u mom slučaju, tumače podaci se šalju natrag u Europu, gdje napokon dobivam prepoznatu rečenicu prikazanu kao tekstualni niz. Python skripta ovaj tekstualni niz zatim razbija na pojedina slova, a sada, u usporedbi sa rječnikom koji definira odgovarajuće uzorke, podaci o uzorcima se ponovo uzimaju i uzorci se prikazuju na 2x3 LED matrici. Pogledajte priloženi video.

Postavio sam brzinu prikaza na jedan znak u sekundi, što bi trebalo biti dovoljno dugo da obučena osoba identificira i prevede uzorak. Mogući sljedeći korak bio bi korištenje uređaja za prepoznavanje uzoraka poput AIY vision HAT -a (do sada nije dostupan u Europi) za automatsko čitanje i tumačenje uzoraka, kako bi se zatvorio krug.

O daljnjim konceptima poboljšanja, od kojih su neki značajniji u stvarnom svijetu, raspravlja se u dijelu „izgledi“ovog uputstva.

Korak 1: Korišteni materijali

Korišteni materijali
Korišteni materijali
Korišteni materijali
Korišteni materijali

Malina Pi 3

SVAKI glas ŠEŠIR

Osam bijelih LED dioda, promjera 5 mm. Oni rade na 3V, pa je potreban otpornik.

Otpornik od 100 kOhm. Možda nije savršeno rješenje, ali bilo je pri ruci.

Kratki kabeli

Kratki komad žice

Oglasna ploča, opcionalno za testiranje postavljanja.

Plastična kutija za posjetnice.

Dva komada plastične pjene od 4 mm, neki ostaci smeća.

Neki komad plastične membrane, kao difuzor, kao gore.

Lemilica i lemljenje, nož.

Korak 2: Postavljanje i upotreba

Postavljanje i upotreba
Postavljanje i upotreba
Postavljanje i upotreba
Postavljanje i upotreba
Postavljanje i upotreba
Postavljanje i upotreba

Postavite Raspberry Pi i AIY HAT kako je navedeno u priručniku AIY voice HAT. Preporučio bih da zalemite zaglavlja barem na servo priključke prije nego sastavite Pi i HAT jer vam to omogućuje jednostavno povezivanje servomotora, matične ploče ili LED dioda.

Kutija za prikaz izrađena je od poklopca plastične kutije za posjetnice, dva komada pjene koja se uklapa u kutiju i komada slične veličine membrane za pakiranje kao difuzora. U jednom od dijelova od pjene gurnuto je šest rupa i LED diode su postavljene u njih. Kraće nožice (sa uzemljene strane) LED dioda bile su međusobno povezane komadom kabela, zatim je dodan otpornik i na ovaj drugi je lemljen kratkospojni kabel. Na druge noge (plus strana) LED dioda spajani su kabeli.

Oni su zatim spojeni na servo portove na AIY voice HAT putem produžnih kabela, pozitivna strana na (vanjske) "P in" pinove, negativni konektor na jedan od (unutarnjih) uzemljenih/minus pinova. Molimo pogledajte shemu u prilogu.

Toplo bih preporučio da isprobate postavku na ploči prije lemljenja.

Sada su membrana, LED ploča i brtveni sloj stavljeni u plastičnu kutiju.

Postavite skriptu Braille_LED_1.py u mapu src. U svakom slučaju, skriptu ćete možda morati učiniti izvršnom.

Sada se pomoću Dev terminala (!) Pokreće program Braille_LED_1.py. Unesite 'src/Braille_LED_1.py' i pritisnite 'Enter'.

Od vas će se sada tražiti da pritisnete gumb okvira AIY i izgovorite svoju riječ ili rečenicu. S određenim zakašnjenjem, sustav će ponoviti ono što je shvaćeno i prikazati ga na ekranu, kao i slovo po slovo na šest LED zaslona.

Ako umjesto rečenice date ključnu riječ "zbogom", sustav će vam reći zbogom, a program će se zatvoriti.

Korak 3: Kôd

Kod
Kod

Dolje ćete pronaći kôd koji vam omogućuje da razgovarate s AIY glasovnim uređajem i da se prepoznata rečenica prikazuje slovo po slovo na maloj matrici 2x3-LED 'semafor' ili Brajevo pismo.

Kôd je izvedenica skripte koju sam koristio za prethodni projekt koristeći AIY voice HAT, a izveden je od primjera servo_demo.py opisanog u AIY voice HAT priručniku.

Također možete pronaći rječnik s dijelom Murrayevog koda koji sam pronašao na internetu, kao tekstualnu datoteku. Ne sadrži brojeve i izostavlja neka slova, što bi ovdje predstavljalo problem.

Jedno ograničenje programa u njegovom trenutnom stanju je da ako znak koji nije uključen u rječnik sruši program. Osim toga, to nije prikaz cijelog Brajevog koda kao jezika za označavanje. Kao što možete vidjeti u donjoj skripti, Nemeth kod za brojeve je suvišan s nekim znakovima na standardnom Brajevom pismu, ali to ne bi trebalo predstavljati problem za našu specifičnu aplikaciju.

#!/usr/bin/env python3

# Ova skripta je adaptacija skripte servo_demo.py za AIY glasovni šešir, # optimizirana za AIY zasnovan simbol tipa Baille uvoz aiy.audio uvoz aiy.cloudspeech uvoz aiy.voicehat iz gpiozero import LED #iz gpiozero gumb za uvoz iz time import sleep # Rječnik: umjetno promijenjena azbuka na Brajevom pismu, # brojevi i neki simboli preuzeti iz Nemethovog nastavka na Brajevom pismu Brajevog pisma_6A = {"": "123456", # razmak "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 ", # Prefiks broja, tj. Sljedeći znakovi su brojevi", ":" 2 ",". ": "256", # Tačka, kraj rečenice (GB) "?": "236", "!": "235", "'": "3", "-": "24", ";": "23", "Cap": "6", # Sljedeće slovo je velikim slovima; Broj-Stop? "": "", # Nemeth Brailleov kod je matematičko proširenje za Brailleovo pismo s 6 točaka # vidi: https://en.wikipedia.org/wiki/Nemeth_Braille "1": "2", # Nemeth Code '1', Brajevo pismo 'zarez' "2": "23", "3": "25", "4": "256", "5": "26", "6": "235", # Nemeth '6', Brajevo pismo '!' "7": "2356", "8": "236", # Nemeth '8', Brajevo pismo '?' "9": "35", "0": "356", "+": "346", "-": "36", "/": "34", "(": "12356", ") ":" 23456 ","*":" 1346 " # '*' je simbol s dva uzorka u Nemethu, ovdje zamijenjen s" x "za izostavljanje rušenja}" "" zbog jednostavnosti, dati su standardni uzorci Brajevog pisma ispod zamijenjeni su odgovarajućim Nemeth-kodovima "1": "1", "2": "12", "3": "14", "4": "145", "5": "15", " 6 ":" 124 "," 8 ":" 1245 "," 9 ":" 24 "," 0 ":" 245 "," "" #Text = "rbhTZkl 9t64+34 #!" # Uzorak teksta, u svrhu ispravljanja pogrešaka def main (): prepoznavač = aiy.cloudspeech.get_recognizer () prepoznavač.expect_phrase ('zbogom') # ključna riječ, završava programski gumb = aiy.voicehat.get_button () # Status gumba AIY led = aiy.voicehat.get_led () # AIY tipka-LED status aiy.audio.get_recorder (). start () led_1 = LED (26) # 1. konektor, servo0, GPIO 26 # gornji lijevi led_2 = LED (6) # 2. konektor, servo1, GPIO 06 # srednji lijevi LED_3 = LED (13) # 3. priključak, servo2, GPIO 13 # donji lijevi led_4 = LED (5) # 4. priključak, servo3, GPIO 05 # gornji desni LED_5 = LED (12) # 5. konektor, servo4, GPIO 12 # srednji desni LED_6 = LED (24) # 4. priključak, servo3, GPIO 13 # donji desni # razmak = Gumb (5) # senzor udaljenosti spojen na servo3/GPIO 05, ovdje se ne koristi aiy.audio.say ("Pozdrav!",) Aiy.audio.say ("Za početak, pritisnite gumb",) aiy.audio.say ("Ako mi kažete zbogom, završit ću program",) dok True: # počinje loop led.set_state (aiy.voicehat. LED. BLINK) print ("Za aktiviranje prepoznavanja glasa n, pritisnite plavi gumb, a zatim govorite ") gumb print (). čekajte_pr_press () ispis (" Slušanje … ") aiy.audio.say (" Slušam ",) led.set_state (aiy.voicehat. LED. BLINK_3) tekst = prepoznavač.recognize () # tekstualni niz ponovno prepoznate rečenice led.set_state (aiy.voicehat. LED. OFF) ako je tekst Ništa: aiy.audio.say ('Žao mi je, nisam vas čuo.',) elif 'zbogom' u tekstu: aiy.audio.say ("Zbogom",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) sleep (3) print ('bok! ') break # zaustavlja petlju i završava program else: print (' You said "', text,'" ') # Omogućuje vam provjeru tumačenja sustava, uključujući pisanje velikih slova aiy.audio.say (' Pretpostavljam da ste rekli ',) aiy.audio.say (text,) # akustična provjera Text_up = text.upper () # prenosi sve na velika slova (Text_up) Text_Len = len (Text_up) print (Text_Len) za i u rasponu (Text_Len): Lett = Text_up # Bira jedno slovo, počevši od prvog, tj. [0] print ("Slovo =", Lett) Lett_B = Braille_6A [Lett] # Odabire odgovarajući kôd iz rječnik. Znak koji nedostaje razbit će kôd! ispis (Lett_B) if ("1" u Lett_B): print ("LED 1") led_1.on () # aktivira LED na servo0 "ako je" 2 "u Lett_B: ispis (" 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 () ako je" 6 "u Lett_B: print (" LED 6 ") led_6.on () sleep (1) # uzorak prikaza za drugi ispis () led_1.off () # deaktivirajte sve LED diode na servos0 -5n led_2.off () led_3.off () led_4.off () led_5.off () led_6.off () spavanje (0.3) # kratki tamni prekid, za označavanje kraja slova ako je _name_ == '_main_ ': main ()

Korak 4: Outlook i napomene

Pa što bi moglo biti sljedeće?

Osim IT šale s AIY video kompletom ili drugim automatiziranim sustavom za prepoznavanje slika koji se spominje u uvodu, možda postoje i druge mogućnosti za proširenje koncepta opisanog u ovom uputstvu. Neki od njih čak bi mogli biti korisni u stvarnom svijetu. To mogu biti:

- poboljšano programiranje, tako da se tekst prenosi u standardni Brailleov kod, sa svim oznakama i kompresijama. To ne bi trebao biti veliki napor za iskusnog programera pythona. Što ja nisam, pa bi svaka pomoć bila dobrodošla.

- proširiti sustav na matricu 2x4. To bi također trebalo biti moguće, a pomoglo bi i u korištenju odgovarajućih 8-točkovnih Brajevih abeceda, koje koriste elektronički zasloni na Brajevom pismu. Iznad ovoga, bilo bi nešto bliže sustavu Dearheart clacks.

- konstruirajte pravi 2x3 ili 2x4 Brailleov zaslon. To bi trebalo biti moguće pomoću niza servo upravljača ili niza 5V mini solenoida. Primarni izazov bio bi da je standardna udaljenost između dodirnih točaka 2,45 mm ili 1/10 inča na elektroničkim zaslonima pa bi mogli biti potrebni neki zupčanici i mehanika. Drugi izazov mogao bi biti precizna regulacija duljine guranja.

Ovako jednostavno i jeftino rješenje moglo bi biti od interesa za širu javnost, jer su komercijalni Brailleovi ekrani prilično skupi. Učenici Brajevog pisma koji koriste takav glasovno upravljani sustav mogli bi imati koristi. Budući da mogu usmeno unijeti (englesku) rečenicu po svom izboru, a na vrhovima prstiju prikazati tekst, slova i znakove.

- izgraditi mehanički sustav roleta nalik sustavima Murray ili Dearheart. Korištenje servo upravljača ne bi trebalo biti previše komplicirano i moglo bi se opisati u drugom uputstvu. Ili bi mogao biti lijep školski projekt. Je li tko zainteresiran?

–――――

Neke napomene i veze koje nas zanimaju:

- Postoji instrukcija koja opisuje "DIY semaforski fenjer", 2x4 LED matricu, temeljenu na nekoj propelerskoj demo ploči. Sviđa mi se izgled, ali programiranje mi izgleda malo komplicirano. Molim vas pogledajte sami.

- Sada sam pronašao python program za generiranje Potpuno ugovorenog (2. razred) Brajevog pisma. Nažalost, ograničen je na python 2 i američku englesku verziju iz 2002. godine:

- Čini se da je potpuniji program liblouis, https://github.com/liblouis/liblouis, ali nemam pojma kako to integrirati u ovo rješenje.

- Zanimljivo rješenje za python izgleda dolazi iz Grčke, https://github.com/ant0nisk/pybrl može integrirati nekoliko jezika i generirati Brailleovo pismo 2. stupnja.

- Nisam programer, niti elektroničar, niti sam prije nekoliko dana imao puno znanja o Brajevom pismu.

Stoga, ako vidite bilo kakve pogreške, propuste ili imate neke ideje za projekt, molimo vas da me obavijestite.

- Ako vam se sviđa ova instrukcija, glasajte za nju!

Preporučeni: