Taula de continguts:

Un semafor de patrons controlats per veu, en braille: 4 passos (amb imatges)
Un semafor de patrons controlats per veu, en braille: 4 passos (amb imatges)

Vídeo: Un semafor de patrons controlats per veu, en braille: 4 passos (amb imatges)

Vídeo: Un semafor de patrons controlats per veu, en braille: 4 passos (amb imatges)
Vídeo: Blood and Dust | Critical Role | Campaign 3, Episode 33 2024, Desembre
Anonim
Un semafor de patrons controlats per veu i en braille
Un semafor de patrons controlats per veu i en braille
Un semafor de patrons controlats per veu i en braille
Un semafor de patrons controlats per veu i en braille
Un semafor de patrons controlats per veu i en braille
Un semafor de patrons controlats per veu i en braille
Un semafor de patrons de tipus Braille, controlat per veu
Un semafor de patrons de tipus Braille, controlat per veu

"Lord Vetinari es va quedar a la finestra mirant la torre del semàfor a l'altra banda del riu. Les vuit persianes grans que tenien enfront d'ell parpellejaven furiós: negre, blanc, negre, blanc, negre, blanc … La informació volava a l'aire. A vint quilòmetres darrere d'ell, en una altra torre de Sto Lat, algú mirava a través d'un telescopi i cridava números. Va pensar que la rapidesa amb què ens ve el futur ". T. Pratchett, El cinquè elefant

Després de construir un jack de salt controlat per veu basat en el kit de veu AIY, vaig tenir la idea de construir un semàfor controlat per veu, que reunís l’últim en tecnologia de TI amb els inicis de les telecomunicacions i la transferència de dades.

Al principi vaig tenir la idea de reproduir el sistema de semàfors francès de Chappe, que era el primer sistema conegut per a les telecomunicacions a nivell nacional que utilitzava un sistema de semàfor. Però va resultar ser una mica massa complicat per fer-ho servir servos estàndard en un dia. El meu següent objectiu era quelcom similar al sistema de clics descrit per Terry Pratchett, per exemple. a "Going Postal", com a sistema de semàfor d'obturació 2x4 (no com la matriu 4x4 representada a la pel·lícula). Malauradament, no he pogut trobar massa detalls tècnics disponibles en aquest sistema. Així doncs, vaig acabar amb el sistema de semàfor matricial 2x3 desenvolupat per Lord Murray, que havia estat utilitzat per la Marina britànica durant un temps. A més, un sistema de sis obturadors / bits s’adapta bé als sis servoconectors disponibles al AIY voice HAT. Però, com que no tenia sis servos a mà entre els anys, finalment vaig decidir construir primer un simulador de LEDs.

Pel que fa al codi que es mostra, es podria utilitzar el sistema Murray, però de nou la informació que tenia disponible era bastant limitada, no permetent mostrar cap número ni símbol. Així que vaig arribar al punt d’utilitzar el sistema Braille, que també utilitza una matriu de 2x3 per mostrar lletres, números i altres signes. El sistema Braille és l’estàndard internacional per imprimir textos llegibles per a invidents. També és un llenguatge de marques, que utilitza un indicador numèric per definir que els números es mostraran a continuació i indicadors per definir que una o moltes de les lletres següents s’escriuen en majúscules. Per tant, vaig decidir establir un sistema lleugerament simplificat, amb números i alguns signes definits per l'extensió Nemeth del sistema Braille, i simplement utilitzar lletres majúscules, almenys per al començament. Això permet tenir patrons únics per a cada lletra, número o signe que es mostri a la meva aplicació especial i ometre l’anàlisi de text requerit per al braille real.

El dispositiu final permet pronunciar una paraula o una frase al sistema de reconeixement de veu AIY; després, les dades del patró de veu s’envien a través de WLAN i Internet a alguns servidors de Google als EUA, s’hi descodifiquen i, almenys en el meu cas, s’interpreten les dades es tornen a Europa, on finalment apareix la frase reconeguda com a cadena de text. Aquesta cadena de text es trenca després amb l’escriptura Python en lletres individuals i, ara, en comparació amb un diccionari que defineix els patrons corresponents, es recupera la informació del patró i es mostren en una matriu LED de 2x3. Feu una ullada al vídeo que l’acompanya.

He establert la velocitat de visualització a un caràcter per segon, que hauria de ser prou llarg perquè una persona entrenada identifiqui i tradueixi el patró. Un possible següent pas seria utilitzar un dispositiu de reconeixement de patrons com el AIY vision HAT (fins ara no disponible a Europa) per llegir i interpretar els patrons automàticament, de manera que es tanqui el cercle.

Altres conceptes de millora, alguns amb més rellevància en el món real, es discuteixen a la part "perspectiva" d'aquest instructiu.

Pas 1: materials utilitzats

Materials utilitzats
Materials utilitzats
Materials utilitzats
Materials utilitzats

Raspberry Pi 3

BARREIG de veu AIY

Vuit LEDs blancs de 5 mm de diàmetre. Aquests funcionen a 3V, per tant es necessita una resistència.

Resistència de 100kOhm. Potser no era la solució perfecta, però estava a mà.

Cables de pont

Un tros curt de filferro

Tauler de pa, opcional per provar la configuració.

Una caixa de plàstic per a targetes de visita.

Dues peces d’escuma de plàstic de 4 mm, algunes restes d’escombraries.

Alguna peça de membrana de plàstic, com a difusor, com l'anterior.

Soldador i soldador, un ganivet.

Pas 2: Configuració i ús

Configuració i ús
Configuració i ús
Configuració i ús
Configuració i ús
Configuració i ús
Configuració i ús

Configureu Raspberry Pi i AIY HAT tal com s’indica al manual AIY de veu HAT. Recomanaria soldar capçaleres almenys als ports servo abans de muntar Pi i HAT, ja que això us permet connectar fàcilment servos, una placa de control o LED.

La caixa de visualització s’havia construït a partir de la tapa d’una caixa de plàstic per a targetes de visita, dues peces d’escuma que s’adaptaven a la caixa i una peça de mida similar d’una membrana d’embalatge com a difusor. En una de les parts d'escuma es van empènyer sis forats i es van col·locar els LED. Els peus més curts (costat de terra) dels LED es van connectar entre ells mitjançant un tros de cable, després es va afegir una resistència i es va soldar un cable jumper a aquest últim. Als altres peus (costat més) dels LED es van soldar els cables de pont.

Aquests llavors es van connectar als ports servo del AIAT de veu HAT mitjançant cables d’allargament, el costat positiu als pins (externs) "P in", el connector negatiu a un dels pins (terra) (menys) de terra (menys). Consulteu l’esquema adjunt.

Recomanaria encaridament provar la configuració en una taula abans de soldar.

Ara la membrana, la placa LED i la capa de segellat es van col·locar a la caixa de plàstic.

Col·loqueu l'script Braille_LED_1.py a la carpeta src. En el cas, potser haureu de fer que el guió sigui executable primer.

Ara, mitjançant el terminal Dev (!), S'inicia el programa Braille_LED_1.py. Introduïu "src / Braille_LED_1.py" i premeu "Retorn".

Ara se us demanarà que premeu el botó del quadre AIY i que digueu la vostra paraula o frase. Amb un cert retard, el sistema repetirà allò que s’havia entès i el mostrarà a la pantalla, així com, lletra per lletra, a la pantalla LED de sis.

Si doneu la paraula clau "Adéu" en lloc d'una frase, el sistema us dirà Adéu i el programa es tancarà.

Pas 3: el codi

El codi
El codi

A continuació trobareu el codi que us permet parlar amb el dispositiu de veu AIY i fer que la frase reconeguda es mostri lletra per lletra en un petit 'semàfor' 2x3-LED o matriu tipus Braille.

El codi és un derivat de l'script que he utilitzat per a un projecte anterior que utilitzava el AIAT de veu AIAT, essent un derivat de l'exemple servo_demo.py descrit al manual AIAT de veu d'AIY.

També podeu trobar un diccionari amb la part del codi Murray que havia trobat a Internet, com a fitxer de text. Tampoc conté números i omet algunes lletres, cosa que donaria problemes aquí.

Una de les limitacions del programa en el seu estat actual és que si un signe no inclòs al diccionari faria fallar el programa. A més, no és una representació del codi Braille complet com a llenguatge de marques. Com podeu veure a l'script següent, el codi de números Nemeth és redundant amb alguns signes en braille estàndard, però això no hauria de suposar cap problema per a la nostra aplicació específica.

#! / usr / bin / env python3

# Aquest script és una adaptació de l'script servo_demo.py per a AIY voice HAT, # optimitzat per a la visualització del símbol de tipus Baille basat en AIY importació aiy.audio importació aiy.cloudspeech importació aiy.voicehat des de la importació gpiozero LED # des de la importació gpiozero Botó de time import sleep # Diccionari: un alfabet Braille modificat artificialment, # números i alguns símbols extrets de l'extensió Nemeth del Braille Braille_6A = {"": "123456", # espai "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 ", # Prefix de número, és a dir, els signes següents són números", ":" 2 ",". ": "256", # Punt final, final de frase (GB) "?": "236", "!": "235", "'": "3", "-": "24", ";": "23", "Cap": "6", # La següent lletra està en majúscules; Vols aturar el número? "": "", El codi braille # Nemeth és una expansió matemàtica per al braille de 6 punts # veure: https://en.wikipedia.org/wiki/Nemeth_Braille "1": "2", # codi Nemeth '1', Braille 'coma' "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 "# '*' és un símbol de dos patrons a Nemeth, aquí substituït per una 'x' per ometre els bloquejos}" "" per raons de simplicitat, es donen els patrons estàndard de número en braille a continuació es van substituir pels corresponents codis Nemeth "1": "1", "2": "12", "3": "14", "4": "145", "5": "15", " 6 ":" 124 "," 8 ":" 1245 "," 9 ":" 24 "," 0 ":" 245 "," "" #Text = "rbhTZkl 9t64 + 34 #!" # Sampletext, a efectes de depuració def main (): recognizer = aiy.cloudspeech.get_recognizer () recognizer.expect_phrase ('goodbye') # paraula clau, finalitza el botó del programa = aiy.voicehat.get_button () # AIY Estat del botó 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 # central esquerre led_3 = LED (13) # 3r connector, servo2, GPIO 13 # inferior esquerre led_4 = LED (5) # 4è connector, servo3, GPIO 05 # superior dret led_5 = LED (12) # 5è connector, servo4, GPIO 12 # mitja dreta led_6 = LED (24) # 4t connector, servo3, GPIO 13 # inferior dreta # distància = Botó (5) # sensor de distància connectat a servo3 / GPIO 05, no utilitzat aquí aiy.audio.say ("Hola!",) Aiy.audio.say ("Per començar, premeu el botó",) aiy.audio.say ("Si em dieu adéu, acabaré el programa"), mentre que True: # s'inicia loop led.set_state (aiy.voicehat. LED. BLINK) print ("Per activar el reconeixement de veu n, premeu el botó blau i després digueu ") print () button.wait_for_press () print ('Listening …') aiy.audio.say (" Estic escoltant ",) led.set_state (aiy.voicehat. LED. BLINK_3) text = recognizer.recognize () # cadena de text de la frase reconeguda led.set_state (aiy.voicehat. LED. OFF) si el text és Cap: aiy.audio.say ("Ho sento, no us he sentit.",) elif 'adéu' al text: aiy.audio.say ("Adéu",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) dormir (3) imprimir ('bye!) ') break # stops loop and ends program else: print (' Has dit "', text,'" ') # Permet verificar la interpretació del sistema, inclosa la captialització aiy.audio.say (' Suposo que has dit ',) aiy.audio.say (text,) # acustic verification Text_up = text.upper () # transfereix tot a majúscules (Text_up) Text_Len = len (Text_up) imprimeix (Text_Len) per a l’interval (Text_Len): Lett = Text_up # Selecciona una sola lletra, començant per la primera, és a dir, [0] imprimir ("Letter =", Lett) Lett_B = Braille_6A [Lett] # Selecciona el codi corresponent de la diccionari. Un senyal que falta trencarà el codi. print (Lett_B) if ("1" a Lett_B): print ("LED 1") led_1.on () # activa el LED a servo0 "si" 2 "a Lett_B: print (" LED 2 ") led_2.on () si "3" a Lett_B: print ("LED 3") led_3.on () si "4" a Lett_B: print ("LED 4") led_4.on () si "5" a Lett_B: print ("LED 5" ") led_5.on () si" 6 "a Lett_B: print (" LED 6 ") led_6.on () sleep (1) # patró de visualització per a una segona impressió () led_1.off () # inactiva tots els LED dels servos0 -5n led_2.off () led_3.off () led_4.off () led_5.off () led_6.off () sleep (0.3) # un breu descans fosc, per indicar el final de la carta si _name_ == '_main_ ': main ()

Pas 4: perspectiva i observacions

Què podria ser el següent?

A més d’aquesta meta-broma de TI amb el kit de vídeo AIY o un altre sistema automatitzat de reconeixement d’imatges esmentat a la introducció, hi podria haver altres opcions per ampliar el concepte descrit en aquest instructiu. Alguns d’ells fins i tot poden ser d’ús real. Aquests podrien ser:

- Millora de la programació, de manera que el text es transfereix al codi Braille estàndard, amb totes les marques i compressions. Això no hauria de suposar gaire esforç per a un programador de python hàbil. El que no sóc, de manera que qualsevol ajuda seria benvinguda.

- amplieu el sistema a una matriu de 2x4. També hauria de ser possible i ajudaria a utilitzar els codis Braille de 8 punts corresponents, tal com s’utilitzen a les pantalles Braille electròniques. Per sobre d’això, estaria una mica més a prop del sistema de clacks Dearheart.

- Construir una pantalla Braille real de 2x3 o 2x4. Hauria de ser possible utilitzant una sèrie de servos o una sèrie de mini solenoides de 5V. El principal desafiament seria que la distància estàndard entre els punts tàctils sigui de 2,45 mm o 1/10 de polzada en pantalles electròniques, de manera que és possible que siguin necessaris alguns engranatges i mecanismes. L’altre repte podria ser regular amb precisió la longitud d’empenta.

Una solució tan senzilla i econòmica pot ser d’interès per a un públic més ampli, ja que les pantalles braille comercials són bastant cares. Podria haver-hi un avantatge per als estudiants de Braille que utilitzen un sistema controlat per veu. Com que poden introduir verbalment una frase (en anglès) que triïn i obtenir el text, les lletres i els signes que es mostren a la punta dels dits.

- Construir un sistema d'obturació mecànica semblant als sistemes Murray o Dearheart. Utilitzant servos, això no hauria de ser massa complicat i es podria descriure en una altra instrucció. O podria ser un bon projecte escolar. Hi ha algú interessat?

–――――

Algunes observacions i enllaços d'interès:

- Hi ha una instrucció que descriu una "llanterna de semàfor de bricolatge", una matriu LED de 2x4, basada en una placa de demostració de l'hèlix. M’agrada el disseny, però la programació em sembla una mica complicada. Si us plau, mireu-vos.

- Ara he trobat un programa Python per generar braille completament contractat (grau 2). Malauradament, es limita a Python 2 i a la versió anglesa del 2002:

- Un programa més complet sembla ser liblouis, https://github.com/liblouis/liblouis, però no tinc ni idea de com integrar-ho en aquesta solució.

- Una solució python interessant sembla que prové de Grècia, https://github.com/ant0nisk/pybrl pot integrar diversos idiomes i generar Braille de segon grau.

- Jo no sóc programador, ni un home electrònic, ni tenia molts coneixements en Braille fa uns dies.

Per tant, si veieu errors, omissions o teniu algunes idees per al projecte, feu-m'ho saber.

- Si us agrada aquesta instrucció, voteu-la.

Recomanat: