Turinys:

Balsu valdomas Brailio rašto modelio semaforas: 4 žingsniai (su paveikslėliais)
Balsu valdomas Brailio rašto modelio semaforas: 4 žingsniai (su paveikslėliais)

Video: Balsu valdomas Brailio rašto modelio semaforas: 4 žingsniai (su paveikslėliais)

Video: Balsu valdomas Brailio rašto modelio semaforas: 4 žingsniai (su paveikslėliais)
Video: Aklųjų ir silpnaregių bendruomenei – svarbus įvykis: pasaulyje minima Brailio rašto diena 2024, Lapkritis
Anonim
Balsu valdomas Brailio rašto tipo šablonas
Balsu valdomas Brailio rašto tipo šablonas
Balsu valdomas Brailio rašto tipo šablonas
Balsu valdomas Brailio rašto tipo šablonas
Balsu valdomas Brailio rašto tipo šablonas
Balsu valdomas Brailio rašto tipo šablonas
Balsu valdomas Brailio rašto tipo šablonas
Balsu valdomas Brailio rašto tipo šablonas

„Lordas Vetinari stovėjo prie savo lango ir stebėjo semaforo bokštą kitoje upės pusėje. Visos aštuonios didžiosios langinės, nukreiptos į jį, mirė įnirtingai - juoda, balta, juoda, balta, juoda, balta… Informacija skrido į orą. Už dvidešimt mylių už jo, kitame Sto Lat bokšte, kažkas žiūrėjo pro teleskopą ir šaukė skaičius. Kaip greitai ateis mūsų ateitis, pagalvojo jis. T. Pratchett, „Penktasis dramblys“

Sukūręs balsu valdomą šokinėjimo lizdą, pagrįstą AIY balso rinkiniu, man kilo mintis sukurti balsu valdomą semaforą, sujungiantį naujausias IT technologijas su telekomunikacijų ir duomenų perdavimo pradžia.

Iš pradžių man kilo mintis atkartoti Chappe prancūzišką semaforo sistemą, kuri buvo pirmoji žinoma visoje šalyje veikianti telekomunikacijų sistema, naudojant semaforo sistemą. Tačiau tai pasirodė per daug sudėtinga, kad būtų galima tai padaryti naudojant standartinius servo per dieną. Kitas mano taikinys buvo kažkas panašaus į Clary sistemą, aprašytą Terry Pratchett, pvz. „Going Postal“, kaip 2x4 užrakto semaforo sistema (ne kaip 4x4 matrica, pavaizduota filme). Deja, neradau per daug techninių šios sistemos detalių. Taigi aš baigiau lordo Murray sukurta 2x3 matricos semaforo sistema, kurią kurį laiką naudojo Didžiosios Britanijos karinis jūrų laivynas. Be to, šešių langinių/bitų sistema gerai tinka prie šešių „AIY“balso skrybėlės servo jungčių. Tačiau, kadangi tarp metų neturėjau šešių servo, galiausiai nusprendžiau pirmiausia sukurti simuliatorių, pagamintą iš šviesos diodų.

Kalbant apie rodomą kodą, galima būtų naudoti „Murray“sistemą, tačiau vėlgi turima informacija apie ją buvo gana ribota, neleidžiant rodyti jokių skaičių ir simbolių. Taigi aš nusprendžiau naudoti Brailio sistemą, kuri taip pat naudoja 2x3 matricą raidėms, skaičiams ir kitiems ženklams rodyti. Brailio rašto sistema yra tarptautinis standartas, leidžiantis spausdinti akliesiems skaitomus tekstus. Tai taip pat žymėjimo kalba, kuri naudoja skaičių indikatorių, kad nuspręstų, jog skaičiai bus rodomi toliau, o indikatoriai, skirti apibrėžti, kad viena ar kelios iš šių raidžių rašomos didžiosiomis raidėmis. Todėl nusprendžiau sukurti šiek tiek supaprastintą sistemą su skaičiais ir kai kuriais ženklais, apibrėžtais Nemeto Brailio rašto sistemos pratęsimu, ir bent jau pradžioje naudoti didžiąsias raides. Tai leidžia turėti unikalius kiekvienos raidės, skaičiaus ar ženklo modelius, kurie bus rodomi mano specialioje programoje, ir praleisti teksto analizę, reikalingą tikram Brailio raštui.

Galutinis įrenginys leidžia pasakyti žodį ar sakinį į AIY balso atpažinimo sistemą, tada balso modelio duomenys siunčiami per WLAN ir internetą į „Google“serverį JAV, ten iššifruojami ir bent jau mano atveju interpretuojami duomenys siunčiami atgal į Europą, kur pagaliau atpažįstamas sakinys rodomas kaip teksto eilutė. Tada šią teksto eilutę „Python“scenarijus suskaido į atskiras raides, o dabar, palyginus su žodynu, apibrėžiančiu atitinkamus modelius, modelio informacija gaunama ir modeliai rodomi 2x3 LED matricoje. Prašome pažiūrėti į pridedamą vaizdo įrašą.

Nustatiau rodymo dažnį iki vieno simbolio per sekundę, kuris turėtų būti pakankamai ilgas, kad apmokytas asmuo galėtų atpažinti ir išversti modelį. Kitas galimas žingsnis būtų naudoti modelio atpažinimo įrenginį, pvz., AIY vizijos skrybėlę (kol kas nėra Europoje), kad automatiškai skaitytų ir interpretuotų modelius, kad uždarytų ratą.

Kitos tobulinimo koncepcijos, kai kurios labiau susijusios su realiu pasauliu, aptariamos šios instrukcijos dalyje „Perspektyva“.

1 žingsnis: naudojamos medžiagos

Naudotos medžiagos
Naudotos medžiagos
Naudotos medžiagos
Naudotos medžiagos

Raspberry Pi 3

AIY balsas KEPURĖ

Aštuoni balti šviesos diodai, 5 mm skersmens. Jie veikia 3 V įtampa, todėl reikalingas rezistorius.

100 kOhm rezistorius. Galbūt ne idealus sprendimas, bet buvo po ranka.

Trumpieji kabeliai

Trumpas vielos gabalas

Duonos lenta, pasirenkama norint išbandyti sąranką.

Plastikinė dėžutė vizitinėms kortelėms.

Dvi 4 mm plastiko putos, kai kurios liko šiukšlės.

Kai kurie plastikinės membranos gabalai, kaip difuzorius, kaip nurodyta aukščiau.

Lituoklis ir lituoklis, peilis.

2 žingsnis: sąranka ir naudojimas

Sąranka ir naudojimas
Sąranka ir naudojimas
Sąranka ir naudojimas
Sąranka ir naudojimas
Sąranka ir naudojimas
Sąranka ir naudojimas

Nustatykite „Raspberry Pi“ir „AIY HAT“, kaip nurodyta „AIY voice HAT“vadove. Aš rekomenduočiau lituoti antraštes bent jau prie servo prievadų prieš surenkant „Pi“ir „HAT“, nes tai leidžia lengvai prijungti servo, duonos lentą ar šviesos diodus.

Ekrano dėžutė buvo pagaminta iš plastikinės dėžutės, skirtos vizitinėms kortelėms, dangtelio, dviejų dėžutės putplasčio dalių ir panašaus dydžio pakavimo membranos kaip difuzorius. Vienoje iš putplasčio dalių buvo įstumtos šešios skylės ir į jas įdėti šviesos diodai. Trumpesnės šviesos diodų kojelės (įžeminimo pusė) buvo sujungtos viena su kita kabelio gabalu, tada buvo pridėtas rezistorius ir prie pastarojo buvo prilituotas trumpiklis. Prie kitų šviesos diodų kojų (pliuso pusėje) buvo prilituoti jungiamieji kabeliai.

Tada jie buvo prijungti prie AIY balso HAT servo prievadų per pailginimo kabelius, teigiama pusė prie (išorinių) „P in“kaiščių, neigiama jungtis prie vieno iš (vidinių) įžeminimo/minuso kaiščių. Prašome pažvelgti į pridedamą schemą.

Prieš litavimą primygtinai rekomenduoju išbandyti sąranką ant duonos lentos.

Dabar membrana, LED plokštė ir sandarinimo sluoksnis buvo įdėti į plastikinę dėžę.

Įdėkite „Braille_LED_1.py“scenarijų į aplanką src. Tokiu atveju pirmiausia gali tekti scenarijų vykdyti.

Dabar naudojant „Dev“terminalą (!) Pradedama „Braille_LED_1.py“programa. Įveskite „src/Braille_LED_1.py“ir paspauskite „Enter“.

Dabar jūsų bus paprašyta paspausti AIY langelio mygtuką ir pasakyti savo žodį ar sakinį. Su tam tikru vėlavimu sistema pakartos tai, kas buvo suprantama, ir parodys ją ekrane, taip pat raidę po raidės šešiuose LED ekranuose.

Jei vietoj sakinio nurodysite raktinį žodį „Goodbye“, sistema pasakys „Goodbye“ir programa bus uždaryta.

3 žingsnis: Kodas

Kodas
Kodas

Žemiau rasite kodą, leidžiantį kalbėti su AIY balso įtaisu ir atpažįstamą sakinį rodyti raidėmis po raidės ant mažos 2x3 LED „semaforo“arba Brailio rašto tipo matricos.

Kodas yra išvestinis scenarijus, kurį naudojau ankstesniame projekte, naudojant AIY balso HAT, ir yra servo_demo.py pavyzdžio, aprašyto AIY balso HAT vadove, vedinys.

Taip pat galite rasti žodyną su Murray kodo dalimi, kurią radau internete, kaip tekstinį failą. Jame nėra skaičių ir praleidžiamos kai kurios raidės, o tai sukeltų problemų.

Vienas iš dabartinės programos apribojimų yra tas, kad jei į žodyną neįtrauktas ženklas, programa sugenda. Be to, tai nėra viso Brailio rašto, kaip žymėjimo kalbos, vaizdas. Kaip matote toliau pateiktame scenarijuje, Nemeto kodas skaičiams yra nereikalingas, kai kuriuose standartinio Brailio rašto ženkluose, tačiau tai neturėtų kelti problemų mūsų konkrečiai programai.

#!/usr/bin/env python3

# Šis scenarijus yra servo_demo.py scenarijaus pritaikymas AIY balso HAT, # optimizuotas AIY pagrįstam Baille tipo simbolių ekranui importuoti aiy.audio importas aiy.cloudspeech import aiy.voicehat iš gpiozero importo LED #from gpiozero import Button from laiko importavimo miegas # Žodynas: dirbtinai modifikuota Brailio rašto abėcėlė, # skaičiai ir kai kurie simboliai, paimti iš Nemeto Brailio rašto Brailio plėtinio_6A = {"": "123456", # tarpas "A": "1", "B": "12 "," C ":" 14 "," D ":" 145 "," E ":" 15 "," F ":" 124 "," G ":" 1245 "," H ":" 125 ", „Aš“: „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 ", # Skaičių priešdėlis, ty kiti ženklai yra skaičiai", ":" 2 ",". ": "256", # taškas, sakinio pabaiga (GB) "?": "236", "!": "235", "" ":" 3 ","-":" 24 ","; ": "23", "Cap": "6", # Kita raidė yra didžiosiomis raidėmis; Skaičius-Stop? "": "", # Nemeth Brailio kodas yra matematinis 6 taškų Brailio plėtinys # žr.: https://en.wikipedia.org/wiki/Nemeth_Braille "1": "2", # Nemeth kodas '1', Brailio rašto kablelis „2“: „23“, „3“: „25“, „4“: „256“, „5“: „26“, „6“: „235“, # Nemeth '6', Brailio raštas! "7": "2356", "8": "236", # Nemeth '8', Brailio raštas? ' "9": "35", "0": "356", "+": "346", "-": "36", "/": "34", "(": "12356", ") ":" 23456 ","*":" 1346 " # '*" yra dviejų raštų simbolis Nemete, čia pakeistas "x", kad būtų išvengta gedimų} "" "dėl paprastumo, pateikti standartiniai Brailio rašto modeliai žemiau buvo pakeisti atitinkami Nemeto kodai "1": "1", "2": "12", "3": "14", "4": "145", "5": "15", " 6 ":" 124 "," 8 ":" 1245 "," 9 ":" 24 "," 0 ":" 245 "," "" #Text = "rbhTZkl 9t64+34 #!" # Pavyzdinis tekstas, derinimo tikslais def main (): atpažinimo priemonė = aiy.cloudspeech.get_recognizer () atpažintojas.expect_frazė („atsisveikinimas“) # raktinis žodis, baigia programos mygtuką = aiy.voicehat.get_button () # AIY mygtuko būsenos indikatorius = aiy.voicehat.get_led () # AIY Button-LED status aiy.audio.get_recorder (). start () led_1 = LED (26) # 1 jungtis, servo0, GPIO 26 # viršutinis kairysis led_2 = LED (6) # 2 jungtis, servo1, GPIO 06 # vidurinis kairysis led_3 = LED (13) # 3 jungtis, servo2, GPIO 13 # apatinis kairysis led_4 = LED (5) # 4 -oji jungtis, servo3, GPIO 05 # viršutinis dešinysis led_5 = LED (12) # 5 -oji jungtis, servo4, GPIO 12 # vidurinis dešinysis led_6 = LED (24) # 4 -oji jungtis, servo3, GPIO 13 # apatinis dešinysis # atstumas = mygtukas (5) # atstumo jutiklis prijungtas prie servo3/GPIO 05, čia nenaudojamas aiy.audio.say („Sveiki!“,) Aiy.audio.say („Norėdami pradėti, prašome paspausti mygtuką“,) aiy.audio.say („Jei man pasakysite„ Goodbye “, aš užbaigsiu programą“), o tiesa: # prasideda loop led.set_state (aiy.voicehat. LED. BLINK) print ("Norėdami įjungti balso atpažinimą n, paspauskite mėlyną mygtuką, tada pasakykite ") print () button.wait_for_press () print ('Klausau …') aiy.audio.say (" Aš klausau ",) led.set_state (aiy.voicehat. LED. BLINK_3) tekstas = atpažinimo priemonė. atpažinti () # atpažinto sakinio led.set_state (aiy.voicehat. LED. OFF) # teksto eilutė, jei teksto nėra: aiy.audio.say („Atsiprašau, aš tavęs negirdėjau.“,) elif 'goodbye' tekste: aiy.audio.say ("Goodbye",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) sleep (3) print ('bye! ') break # sustabdo ciklą ir baigia programą kitaip: print (' Tu sakei '', tekstas, '' ') # Leidžia patikrinti sistemų aiškinimą, įskaitant įkalinimą aiy.audio.say (' Manau, kad tu sakei ',) aiy.audio.say (tekstas) i] # Parenka vieną raidę, pradedant pirmąja, ty [0] print ("Letter =", Lett) Lett_B = Braille_6A [Lett] # Parenka atitinkamą kodą iš žodynas. Trūkstamas ženklas sulaužys kodą! print (Lett_B) if ("1" in Lett_B): print ("LED 1") led_1.on () # aktyvuoja šviesos diodą servo0 ", jei" 2 "Lett_B: print (" LED 2 ") led_2.on () jei „3“Lett_B: spausdinti („LED 3“) led_3.on () jei „4“Lett_B: spausdinti („LED 4“) led_4.on () jei „5“Lett_B: print („LED 5“") led_5.on () jei" 6 "Lett_B: spausdinti (" LED 6 ") led_6.on () miego režimas (1) # rodinio raštas antram spausdinimui () led_1.off () # neaktyvina visų servo šviesos diodų0 -5n led_2.off () led_3.off () led_4.off () led_5.off () led_6.off () miegas (0.3) # trumpa tamsi pertrauka, nurodanti raidės pabaigą, jei _name_ == '_main_ ': pagrindinis ()

4 žingsnis: perspektyvos ir pastabos

Taigi kas galėtų būti toliau?

Be to įžangoje minėto IT metajuoko su AIY vaizdo rinkiniu ar kita automatine vaizdo atpažinimo sistema, gali būti ir kitų galimybių išplėsti šioje instrukcijoje aprašytą koncepciją. Kai kurie iš jų netgi gali būti naudojami realiame pasaulyje. Tai gali būti:

- patobulintas programavimas, kad tekstas būtų perkeltas į standartinį Brailio rašto kodą su visais žymėjimais ir suspaudimais. Tai neturėtų būti labai daug pastangų kvalifikuotam „Python“programuotojui. Aš nesu, todėl bet kokia pagalba būtų laukiama.

- išplėsti sistemą iki 2x4 matricos. Tai taip pat turėtų būti įmanoma ir padėtų naudoti atitinkamus 8 taškų Brailio rašto kodus, kuriuos naudoja elektroniniai Brailio rašto ekranai. Be to, tai būtų šiek tiek arčiau „Dearheart clacks“sistemos.

- sukurkite tikrą 2x3 arba 2x4 Brailio ekraną. Turėtų būti įmanoma naudoti arba servo masyvą, arba 5 V mini solenoidų masyvą. Pagrindinis iššūkis būtų tas, kad standartinis atstumas tarp lytėjimo taškų elektroniniuose ekranuose yra 2,45 mm arba 1/10 colio, todėl gali prireikti tam tikrų pavarų ir mechanikos. Kitas iššūkis galėtų būti tiksliai sureguliuoti stūmimo ilgį.

Toks paprastas ir pigus sprendimas gali būti įdomus platesnei visuomenei, nes komerciniai Brailio rašto ekranai yra gana brangūs. Brailio rašto mokiniams, naudojantiems tokią balsu valdomą sistemą, gali būti naudinga. Jie gali žodžiu įvesti pasirinktą (anglišką) sakinį ir gauti tekstą, raides ir ženklus ant piršto galiuko.

- sukonstruoti mechaninę langinių sistemą, panašią į „Murray“arba „Dearheart“sistemas. Naudojant servo, tai neturėtų būti pernelyg sudėtinga ir gali būti aprašyta kitoje instrukcijoje. Arba tai gali būti puikus mokyklos projektas. Ar kam nors įdomu?

–――――

Keletas pastebėjimų ir įdomių nuorodų:

- Yra instrukcija, apibūdinanti „pasidaryk pats semaforo žibintą“, 2x4 LED matricą, pagrįstą kokia nors sraigto demonstracine lenta. Man patinka išdėstymas, tačiau programavimas man atrodo šiek tiek sudėtingas. Prašau, pažiūrėkite patys.

- Dabar radau programą „Python“, kuri sugeneruoja visiškai sutrumpintą (2 laipsnio) Brailio raštu. Deja, jis apsiriboja „python 2“ir 2002 m. Amerikos anglų versija:

- atrodo, kad išsamesnė programa yra liblouis, https://github.com/liblouis/liblouis, bet aš neįsivaizduoju, kaip tai integruoti į šį sprendimą.

- atrodo, kad įdomus „Python“sprendimas atkeliavo iš Graikijos, https://github.com/ant0nisk/pybrl gali integruoti kelias kalbas ir generuoti 2 laipsnio Brailio raštu.

- Nesu nei programuotojas, nei elektronikos vaikinas, nei prieš kelias dienas neturėjau daug žinių apie Brailio raštą.

Taigi, jei matote klaidų, praleidimų ar turite idėjų projektui, praneškite man.

- Jei jums patinka ši pamoka, balsuokite už tai!

Rekomenduojamas: