Cuprins:

Un semafor cu model controlat vocal, tip braille: 4 pași (cu imagini)
Un semafor cu model controlat vocal, tip braille: 4 pași (cu imagini)

Video: Un semafor cu model controlat vocal, tip braille: 4 pași (cu imagini)

Video: Un semafor cu model controlat vocal, tip braille: 4 pași (cu imagini)
Video: Дэнис Хонг: О создании автомобиля для слепых 2024, Noiembrie
Anonim
Un semafor de tip Braille, controlat de voce
Un semafor de tip Braille, controlat de voce
Un semafor de tip Braille, controlat de voce
Un semafor de tip Braille, controlat de voce
Un semafor de tip Braille, controlat de voce
Un semafor de tip Braille, controlat de voce
Un semafor de tip Braille, controlat de voce
Un semafor de tip Braille, controlat de voce

„Lordul Vetinari stătea la fereastra lui, urmărind turnul semaforului de pe cealaltă parte a râului. Toate cele opt obloane mari cu fața către el clipeau cu furie - negru, alb, negru, alb, negru, alb … Informațiile zburau în aer. La douăzeci de mile în spatele lui, pe un alt turn de pe Sto Lat, cineva se uita printr-un telescop și striga numere. Cât de repede vine viitorul asupra noastră, se gândi el. T. Pratchett, Al cincilea elefant

După ce am construit o mufă de săritură controlată prin voce bazată pe kitul vocal AIY, am avut ideea de a construi un semafor controlat prin voce, care să reunească cele mai noi tehnologii IT cu începuturile de telecomunicații și transferul de date.

La început am avut ideea de a replica sistemul de semafor francez de către Chappe, care a fost primul sistem cunoscut pentru telecomunicații la nivel național care utilizează un sistem de semafor. Dar s-a dovedit a fi un pic prea complicat pentru a fi realizat folosind servouri standard într-o zi. Următoarea mea țintă a fost ceva similar cu sistemul de clacks descris de Terry Pratchett, de ex. în „Going Postal”, ca sistem de semafor cu obturator 2x4 (nu ca matricea 4x4 descrisă în film). Din păcate, nu am putut găsi prea multe detalii tehnice disponibile pe acest sistem. Așa că am ajuns la sistemul de semafor matricial 2x3 dezvoltat de Lord Murray, care fusese folosit de Marina Britanică de ceva vreme. În plus, un sistem cu șase obturatoare / biți se potrivește bine celor șase conectori servo disponibili pe AIY voice HAT. Dar, întrucât nu aveam șase servouri la îndemână între ani, am decis în cele din urmă să construiesc mai întâi un simulator din LED-uri.

În ceea ce privește codul afișat, se putea folosi sistemul Murray, dar din nou informațiile pe care le aveam disponibile erau destul de limitate, nepermițând afișarea numerelor și simbolurilor. Așa că am ajuns la punctul de a folosi sistemul Braille în schimb, care folosește și o matrice 2x3 pentru a afișa litere, cifre și alte semne. Sistemul Braille este standardul internațional pentru imprimarea textelor lizibile pentru nevăzători. Este, de asemenea, un limbaj de marcare, care folosește un indicator numeric pentru a defini că numerele vor fi afișate în continuare și indicatori pentru a defini că una sau mai multe dintre literele următoare sunt scrise cu majuscule. Prin urmare, am decis să înființez un sistem ușor simplificat, cu numere și câteva semne definite de extensia Nemeth a sistemului Braille și să folosesc doar litere mari, cel puțin pentru început. Acest lucru permite să aveți modele unice pentru fiecare literă, număr sau semn care să fie afișate în aplicația mea specială și să omiteți analiza textului necesară pentru Braille real.

Dispozitivul final permite să rostească un cuvânt sau o propoziție în sistemul de recunoaștere vocală AIY, apoi datele modelului de voce sunt trimise prin WLAN și internet către unele secțiuni Google din SUA, sunt decodate acolo și, cel puțin în cazul meu, interpretarea datele sunt trimise înapoi în Europa, unde în cele din urmă am afișat propoziția recunoscută ca un șir de text. Acest șir de text este apoi divizat de scriptul Python în litere individuale, iar acum, prin comparație cu un dicționar care definește modelele corespunzătoare, informațiile despre model sunt recuperate și modelele sunt afișate pe o matrice LED 2x3. Vă rugăm să aruncați o privire la videoclipul însoțitor.

Am stabilit rata de afișare la un caracter pe secundă, care ar trebui să fie suficient de lungă pentru ca o persoană instruită să identifice și să traducă tiparul. Un posibil pas următor ar fi utilizarea unui dispozitiv de recunoaștere a modelelor, cum ar fi AIY vision HAT (deocamdată nu este disponibil în Europa) pentru a citi și interpreta automat modelele, astfel încât să închidă cercul.

Alte concepte pentru îmbunătățiri, unele cu relevanță mai reală, sunt discutate în partea „perspectivă” a acestui instructiv.

Pasul 1: Materiale utilizate

Materiale utilizate
Materiale utilizate
Materiale utilizate
Materiale utilizate

Raspberry Pi 3

AIY voice HAT

Opt LED-uri albe, diametru 5 mm. Acestea rulează pe 3V, deci este nevoie de un rezistor.

Rezistor 100kOhm. Poate că nu soluția perfectă, dar era la îndemână.

Cabluri jumper

O bucată scurtă de sârmă

Breadboard, opțional pentru a testa configurarea.

O cutie de plastic pentru cărți de vizită.

Două bucăți de spumă de plastic de 4 mm, unele lăsate peste gunoi.

O bucată de membrană de plastic, ca difuzor, ca mai sus.

Fier de lipit și lipit, un cuțit.

Pasul 2: Configurare și utilizare

Configurare și utilizare
Configurare și utilizare
Configurare și utilizare
Configurare și utilizare
Configurare și utilizare
Configurare și utilizare

Configurați Raspberry Pi și AIY HAT așa cum este indicat în manualul AIY vocal HAT. Aș recomanda să lipiți antetele cel puțin la porturile servo înainte de a asambla Pi și HAT, deoarece acest lucru vă permite să conectați cu ușurință servouri, o placă de măsurare sau LED-uri.

Cutia de afișare a fost construită din capacul unei cutii de plastic pentru cărți de vizită, două bucăți de spumă care se încadrează în cutie și o bucată similară a unei membrane de ambalare ca difuzor. Într-una din piesele de spumă au fost împinse șase găuri și LED-urile plasate în ele. Picioarele mai scurte (partea de la sol) ale LED-urilor au fost conectate între ele printr-o bucată de cablu, apoi s-a adăugat un rezistor și un cablu jumper a fost lipit cu acesta. La celelalte picioare (partea plus) a LED-urilor au fost lipite cablurile jumper.

Acestea au fost apoi conectate la porturile servo de pe AIY voice HAT prin cabluri de alungire, partea pozitivă la pinii (externi) „P in”, conectorul negativ la unul dintre pinii (interiori) de masă / minus. Vă rugăm să aruncați o privire asupra schemei atașate.

Aș recomanda cu tărie să testați configurația pe o pană înainte de lipire.

Acum membrana, placa LED și stratul de etanșare au fost plasate în cutia de plastic.

Plasați scriptul Braille_LED_1.py în folderul src. În cazul în care este posibil să fie necesar să faceți scriptul mai întâi executabil.

Acum, folosind terminalul Dev (!), Programul Braille_LED_1.py este pornit. Introduceți „src / Braille_LED_1.py” și apăsați „Enter”.

Acum vi se va cere să apăsați butonul din caseta AIY și să vă spuneți cuvântul sau propoziția. Cu o oarecare întârziere, sistemul va repeta ceea ce a fost înțeles și îl va afișa pe ecran, precum și, literă cu literă, pe afișajul cu șase LED-uri.

Dacă dați cuvântul cheie „Adio” în locul unei propoziții, sistemul vă va spune Adio și programul va fi închis.

Pasul 3: Codul

Codul
Codul

Mai jos găsiți codul care vă permite să vorbiți cu dispozitivul vocal AIY și să afișați propoziția recunoscută literă cu literă pe un mic „semafor” 2x3-LED sau o matrice de tip Braille.

Codul este un derivat al scriptului pe care l-am folosit pentru un proiect anterior folosind AIY voice HAT, fiind un derivat al exemplului servo_demo.py descris în manualul AIY voice HAT.

De asemenea, puteți găsi un dicționar cu partea din codul Murray pe care o găsisem pe internet, ca fișier text. Nu conține nici cifre și omite unele litere, ceea ce ar da o problemă aici.

O limitare a programului în starea sa actuală este că, dacă un semn care nu este inclus în dicționar ar prăbuși programul. În plus, nu este o reprezentare a codului Braille complet ca limbaj de markup. După cum puteți vedea în scriptul de mai jos, codul Nemeth pentru numere este redundant, cu unele semne în Braille standard, dar acest lucru nu ar trebui să constituie o problemă pentru aplicația noastră specifică.

#! / usr / bin / env python3

# Acest script este o adaptare a scriptului servo_demo.py pentru AIY voice HAT, # optimizat pentru afișarea simbolului de tip Baille bazat pe AIY. time import sleep # Dicționar: un alfabet Braille modificat artificial, # numere și câteva simboluri preluate din extensia Nemeth a Braille Braille_6A = {"": "123456", # spațiu "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 ", # Prefixul numărului, adică semnele următoare sunt cifre", ":" 2 ",". ": "256", # Punct final, sfârșitul propoziției (GB) "?": "236", "!": "235", "'": "3", "-": "24", ";": "23", "Cap": "6", # Următoarea literă este în majuscule; Număr oprire? "": "", # Codul Braille Nemeth este o extensie matematică pentru Braille în 6 puncte # vezi: https://en.wikipedia.org/wiki/Nemeth_Braille "1": "2", # Codul Nemeth '1', "Virgulă" braille "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 "# '*' este un simbol cu două tipare în Nemeth, aici înlocuit cu un 'x' pentru a omite blocările}" "" din motive de simplitate, modelele de număr Braille standard date de mai jos au fost înlocuite cu codurile Nemeth corespunzătoare „1”: „1”, „2”: „12”, „3”: „14”, „4”: „145”, „5”: „15”, „ 6 ":" 124 "," 8 ":" 1245 "," 9 ":" 24 "," 0 ":" 245 "," "" #Text = "rbhTZkl 9t64 + 34 #!" # Sampletext, pentru scopuri de depanare def main (): recognizer = aiy.cloudspeech.get_recognizer () recognizer.expect_phrase ('goodbye') # cuvânt cheie, încheie butonul programului = aiy.voicehat.get_button () # AIY Buton status led = aiy.voicehat.get_led () # AIY Button-LED status aiy.audio.get_recorder (). start () led_1 = LED (26) # 1st connector, servo0, GPIO 26 # upper left led_2 = LED (6) # 2nd connector, servo1, GPIO 06 # mijloc stânga led_3 = LED (13) # 3 conector, servo2, GPIO 13 # jos stânga led_4 = LED (5) # 4 conector, servo3, GPIO 05 # dreapta sus led_5 = LED (12) # 5 conector, servo4, GPIO 12 # mijloc dreapta led_6 = LED (24) # 4 conector, servo3, GPIO 13 # dreapta jos # distanță = Buton (5) # senzor distanță conectat la servo3 / GPIO 05, neutilizat aici aiy.audio.say („Bună ziua!”,) Aiy.audio.say („Pentru a începe, vă rugăm să apăsați butonul”,) aiy.audio.say („Dacă îmi spuneți la revedere, voi încheia programul”,) în timp ce True: # începe loop led.set_state (aiy.voicehat. LED. BLINK) print („Pentru a activa recunoașterea vocală n, apăsați butonul albastru, apoi rostiți ") print () button.wait_for_press () print ('Listening …') aiy.audio.say (" Eu ascult ",) led.set_state (aiy.voicehat. LED. BLINK_3) text = recognizer.recognize () # șir de text al propoziției recunoscute led.set_state (aiy.voicehat. LED. OFF) dacă textul este None: aiy.audio.say („Ne pare rău, nu te-am auzit.”,) elif 'goodbye' in text: aiy.audio.say ("Goodbye",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) sleep (3) print ('bye!) ') break # oprește bucla și termină programul else: print (' Ai spus "', text,'" ') # Vă permite să verificați interpretarea sistemelor, inclusiv captializarea aiy.audio.say (' Cred că ai spus ',) aiy.audio.say (text,) # acustic verification Text_up = text.upper () # transferă toate în litere mari (Text_up) Text_Len = len (Text_up) print (Text_Len) pentru i în raza (Text_Len): Lett = Text_up # Alege o singură literă, începând cu prima, adică [0] print ("Letter =", Lett) Lett_B = Braille_6A [Lett] # Alege codul corespunzător din dicţionar. Un semn lipsă va sparge codul! print (Lett_B) if ("1" în Lett_B): print ("LED 1") led_1.on () # activează LED la servo0 "dacă" 2 "în 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 () dacă" 6 "în Lett_B: print (" LED 6 ") led_6.on () sleep (1) # model de afișare pentru o a doua imprimare () led_1.off () # inactivează toate LED-urile de pe servos0 -5n led_2.off () led_3.off () led_4.off () led_5.off () led_6.off () sleep (0.3) # o scurtă pauză întunecată, pentru a indica sfârșitul scrisorii dacă _name_ == '_main_ ': main ()

Pasul 4: Outlook și Remarci

Deci, ce ar putea fi următorul?

Pe lângă această meta-glumă IT cu kitul video AIY sau alt sistem automat de recunoaștere a imaginii menționat în introducere, ar putea exista și alte opțiuni pentru a extinde conceptul descris în acest instructable. Unele dintre ele ar putea fi chiar de folos din lumea reală. Acestea ar putea fi:

- programare îmbunătățită, astfel încât textul să fie transferat în codul Braille standard, cu toate marcajele și compresiile. Acest lucru nu ar trebui să fie eforturi foarte mari pentru un programator piton priceput. Ceea ce nu sunt eu, așa că orice ajutor ar fi binevenit.

- extindeți sistemul la o matrice 2x4. Ar trebui să fie posibil și ar ajuta la utilizarea codurilor Braille corespunzătoare cu 8 puncte, așa cum sunt utilizate de afișajele electronice Braille. Mai presus de aceasta, ar fi un pic mai aproape de sistemul de clacuri Dearheart.

- construiți un afișaj Braille real 2x3 sau 2x4. Ar trebui să fie posibil folosind fie o serie de servo-uri, fie o serie de mini solenoizi de 5V. Principala provocare ar fi aceea că distanța standard între punctele tactile este de 2,45 mm sau 1/10 inch pe afișajele electronice, deci ar putea fi necesare unele unelte și mecanisme. Cealaltă provocare ar putea fi reglarea precisă a lungimii de împingere.

O astfel de soluție simplă și ieftină ar putea fi de interes pentru un public mai larg, deoarece afișajele Braille comerciale sunt destul de scumpe. S-ar putea să existe un beneficiu pentru cursanții Braille care folosesc un astfel de sistem controlat prin voce. Deoarece ar putea introduce verbal o propoziție (în engleză) la alegerea lor și vor primi textul, literele și semnele, afișate pe vârful (degetele) degetelor.

- construiți un sistem de obturator mecanic asemănător cu sistemele Murray sau Dearheart. Folosind servo-uri, acest lucru nu ar trebui să fie prea complicat și ar putea fi descris într-un alt instructable. Sau ar putea fi un proiect de școală drăguț. Cineva interesat?

–――――

Câteva observații și linkuri de interes:

- Există un instructiv care descrie un "lanternă de semafor DIY", o matrice LED 2x4, bazată pe o placă demo cu elice. Îmi place aspectul, dar programarea mi se pare cam complicată. Te rog să te uiți singur.

- Am găsit acum un program python pentru a genera Braille Fully Contracted (Grade 2). Din păcate, este limitat la Python 2 și la versiunea în engleză americană din 2002:

- un program mai complet pare a fi liblouis, https://github.com/liblouis/liblouis, dar habar n-am cum să integrez acest lucru în această soluție.

- o soluție interesantă de piton pare să vină din Grecia, https://github.com/ant0nisk/pybrl poate integra mai multe limbi și poate genera Braille de gradul 2.

- Nu sunt nici programator, nici tip de electronică și nici nu aveam multe cunoștințe despre Braille acum câteva zile.

Deci, dacă vedeți erori, omisiuni sau aveți câteva idei pentru proiect, vă rugăm să ne anunțați.

- Dacă vă place acest instructable, vă rugăm să votați pentru el!

Recomandat: