Tartalomjegyzék:

Hangvezérelt, Braille-típusú minta szemafor: 4 lépés (képekkel)
Hangvezérelt, Braille-típusú minta szemafor: 4 lépés (képekkel)

Videó: Hangvezérelt, Braille-típusú minta szemafor: 4 lépés (képekkel)

Videó: Hangvezérelt, Braille-típusú minta szemafor: 4 lépés (képekkel)
Videó: Hangvezérelt forgó LED-es áramkör 2024, November
Anonim
Hangvezérelt, Braille-típusú minta szemafor
Hangvezérelt, Braille-típusú minta szemafor
Hangvezérelt, Braille-típusú minta szemafor
Hangvezérelt, Braille-típusú minta szemafor
Hangvezérelt, Braille-típusú minta szemafor
Hangvezérelt, Braille-típusú minta szemafor
Hangvezérelt, Braille-típusú minta szemafor
Hangvezérelt, Braille-típusú minta szemafor

Lord Vetinari az ablakánál állt, és a folyó túlsó partján lévő szemafor tornyot figyelte. Mind a nyolc, vele szemben álló nagy redőny vadul pislogott - fekete, fehér, fekete, fehér, fekete, fehér… Az információ a levegőbe repült. Húsz mérfölddel mögötte, a Sto Lat másik tornyában valaki távcsövön keresztül nézett, és számokat kiabált. Milyen gyorsan jön ránk a jövő, gondolta. T. Pratchett, Az ötödik elefánt

Miután az AIY hangkészletre építettem egy hangvezérelt ugráló aljzatot, eszembe jutott egy hangvezérelt szemafor építése, amely egyesíti a legújabb informatikai technológiát a távközlés és az adatátvitel kezdeteivel.

Eleinte az volt az ötletem, hogy megismétlem Chappe francia szemaforrendszerét, amely az első ismert szemafor rendszert használó országos távközlési rendszer volt. De kiderült, hogy egy kicsit túl bonyolult ahhoz, hogy egy napon belül szabványos szervókat használjon. A következő célpontom valami hasonló volt a Terry Pratchett által leírt clacks rendszerhez, pl. a "Going Postal" -ban, 2x4 redőnyös szemaforrendszerként (nem úgy, mint a filmben ábrázolt 4x4 -es mátrix). Sajnos nem találtam túl sok technikai információt ezen a rendszeren. Így végül a Lord Murray által kifejlesztett 2x3 mátrixú szemaforrendszerrel végeztem, amelyet a brit haditengerészet már egy ideje használt. Ezenkívül egy hat redőny/bit rendszer jól illeszkedik az AIY Voice HAT hat szervocsatlakozójához. De mivel az évek között nem volt kéznél hat szervó, végül úgy döntöttem, hogy először LED -ekből álló szimulátort építek.

Ami a megjelenített kódot illeti, használhatnánk a Murray rendszert, de a rendelkezésemre álló információk ismét meglehetősen korlátozottak voltak, és nem tették lehetővé számok és szimbólumok megjelenítését. Eljutottam tehát a lényegig, hogy inkább a Braille -rendszert használjam, amely szintén 2x3 -as mátrixot használ betűk, számok és egyéb jelek megjelenítésére. A Braille -rendszer a vakok számára olvasható szövegek nemzetközi szabványa. Ez egy jelölőnyelv is, amely számjelzővel határozza meg, hogy a következő számok jelenjenek meg, és jelzők, amelyek meghatározzák, hogy az alábbi betűk közül egy vagy több nagybetűvel van -e írva. Ezért úgy döntöttem, hogy egy kissé leegyszerűsített rendszert állítok fel, helyette a Braille -rendszer Nemeth -kiterjesztése határozza meg a számokat és néhány jelet, és csak nagybetűket használok, legalábbis az elején. Ez lehetővé teszi, hogy egyedi betűk, számok vagy jelek egyedi mintái megjelenjenek a speciális alkalmazásomban, és kihagyható a valódi Braille -íráshoz szükséges szövegelemzés.

A végső eszköz lehetővé teszi egy szó vagy mondat beszédét az AIY hangfelismerő rendszerbe, majd a hangminta adatait WLAN -on és interneten keresztül elküldi az Egyesült Államokban található Google szervernek, ott dekódolja, és legalábbis az én esetemben az értelmezett az adatokat visszaküldi Európába, ahol végül a felismert mondatot szöveges karakterláncként jelenítem meg. Ezt a szöveges karakterláncot ezután a Python -szkript az egyes betűkre bontja, és most, a megfelelő mintákat definiáló szótárral összehasonlítva, a mintainformációk visszakereshetők, és a minták 2x3 LED -es mátrixon jelennek meg. Kérjük, nézze meg a mellékelt videót.

A megjelenítési sebességet másodpercenként egy karakterre állítottam be, ami elég hosszú ahhoz, hogy egy képzett személy azonosítsa és lefordítsa a mintát. A következő lehetséges lépés egy mintafelismerő eszköz, például az AIY vision HAT (eddig Európában nem elérhető) használata a minták automatikus olvasásához és értelmezéséhez, így a kör bezárásához.

A további fejlesztési koncepciókat, amelyek közül néhány valós jelentőséggel bír, ezen oktatható fejezet „kitekintési” részében tárgyalunk.

1. lépés: Használt anyagok

Felhasznált anyagok
Felhasznált anyagok
Felhasznált anyagok
Felhasznált anyagok

Raspberry Pi 3

AIY hang kalap

Nyolc fehér LED, 5 mm átmérőjű. Ezek 3V -on működnek, ezért ellenállás szükséges.

100 kOhm ellenállás. Talán nem a tökéletes megoldás, de kéznél volt.

Jumper kábelek

Rövid huzaldarab

Kenyeretábla, opcionális a beállítás teszteléséhez.

Műanyag doboz névjegykártyákhoz.

Két darab 4 mm -es műanyag hab, némelyik szemetet hagyott.

Néhány darab műanyag membrán, diffúzorként, mint fent.

Forrasztópáka és forrasztópáka, kés.

2. lépés: Beállítás és használat

Beállítás és használat
Beállítás és használat
Beállítás és használat
Beállítás és használat
Beállítás és használat
Beállítás és használat

Állítsa be a Raspberry Pi -t és az AIY HAT -ot az AIY voice HAT kézikönyvben leírtak szerint. Azt javaslom, hogy a Pi és a HAT összeszerelése előtt legalább a szervóportokhoz forrasztja a fejléceket, mivel ez lehetővé teszi a szervók, a kenyérsütő lap vagy a LED -ek egyszerű csatlakoztatását.

A kijelző dobozt egy névjegykártyák műanyag dobozának fedeléből, két darab habot a dobozba illesztették, és egy hasonló méretű csomagoló membránt, mint a diffúzort. Az egyik habrészben hat lyukat nyomtak, és a LED -eket beléjük helyezték. A LED -ek rövidebb lábát (földoldal) egy darab kábel kötötte össze egymással, majd ellenállást adtak hozzá, és az áthidaló kábelt forrasztották az utóbbira. A LED -ek másik lábához (plusz oldal) az áthidaló kábeleket forrasztották.

Ezeket aztán az AIY hangszóró szervo portjaihoz hosszabbító kábelekkel kötötték össze, a pozitív oldalt a (külső) "P in" csapokhoz, a negatív csatlakozót az egyik (belső) földelő/mínusz csaphoz. Kérjük, nézze meg a mellékelt sémát.

Erősen javaslom, hogy forrasztás előtt tesztelje a beállítást kenyérlapon.

Most a membránt, a LED -lemezt és a tömítő réteget a műanyag dobozba helyezték.

Helyezze a Braille_LED_1.py szkriptet az src mappába. Ebben az esetben előfordulhat, hogy először futtathatóvá kell tennie a szkriptet.

Most a Dev terminál (!) Használatával elindult a Braille_LED_1.py program. Írja be az „src/Braille_LED_1.py” szót, majd nyomja meg az „Enter” gombot.

Most felkérik, hogy nyomja meg az AIY mező gombját, és mondja ki a szavát vagy mondatát. A rendszer némi késleltetéssel megismétli, amit megértett, és megjeleníti azt a képernyőn, valamint betűről betűre a hat LED kijelzőn.

Ha egy mondat helyett a "Goodbye" kulcsszót adja meg, akkor a rendszer elköszön, és a program bezárul.

3. lépés: A kód

A kód
A kód

Az alábbiakban megtalálja a kódot, amely lehetővé teszi, hogy beszéljen az AIY hangberendezéssel, és a felismert mondatot betűről betűre jelenítse meg egy kis 2x3 LED-es „szemafor” vagy Braille-típusú mátrixon.

A kód az AIY Voice HAT segítségével egy korábbi projekthez használt szkript származéka, amely az AIY voice HAT kézikönyvben leírt servo_demo.py példa származéka.

Találhat egy szótárat is a Murray -kód azon részével, amelyet az interneten találtam, szövegfájlként. Nem tartalmaz számokat, és kihagy néhány betűt, ami itt problémát okozna.

A program egyik korlátozása jelenlegi állapotában az, hogy ha egy jel nem szerepel a szótárban, akkor összeomlik a program. Ezenkívül nem a teljes Braille -kód, mint jelölőnyelv. Amint az alábbi szkriptben látható, a Németh -kód a számok számára felesleges, néhány jelzéssel a szabványos Braille -írásban, de ez nem okozhat problémát a konkrét alkalmazásunk számára.

#!/usr/bin/env python3

# Ez a szkript a szervo_demo.py szkript adaptációja az AIY Voice HAT számára, # az AIY alapú Baille típusú szimbólum megjelenítésre optimalizálva import aiy.audio import aiy.cloudspeech import aiy.voicehat a gpiozero import LED -től #from gpiozero import Button from időimport alvás # Szótár: mesterségesen módosított Braille -ábécé, # számok és néhány szimbólum, amelyek a Braille Braille Braille -i Nemet kiterjesztéséből származnak_6A = {"": "123456", # szóköz "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 ", # Szám előtag, azaz a következő jelek a számok", ":" 2 ",". ": "256", # Pont, mondat vége (GB) "?": "236", "!": "235", "" ":" 3 ","-":" 24 ","; ": "23", "Cap": "6", # A következő levél nagybetűs; Számmegállás? "": "", # Németh Braille kód a 6 pontos Braille matematikai bővítése # lásd: https://en.wikipedia.org/wiki/Nemeth_Braille "1": "2", # Németh-kód '1', Braille "vessző" "2": "23", "3": "25", "4": "256", "5": "26", "6": "235", # Németh '6', Braille '!' "7": "2356", "8": "236", # Németh '8', Braille '?' "9": "35", "0": "356", "+": "346", "-": "36", "/": "34", "(": "12356", ") ":" 23456 ","*":" 1346 " # '*' kétmintás szimbólum Németh -ban, itt az" x "helyébe az összeomlások kihagyhatók." "" Az egyszerűség kedvéért a megadott Braille -számminták az alábbiakban a megfelelő Németh-kódok "1": "1", "2": "12", "3": "14", "4": "145", "5": "15", " 6 ":" 124 "," 8 ":" 1245 "," 9 ":" 24 "," 0 ":" 245 "," "" #Text = "rbhTZkl 9t64+34 #!" # Mintaszöveg, hibakeresési célokra def main (): tunnista = aiy.cloudspeech.get_recognizer () felismerő.expect_phrase ('viszlát') # kulcsszó, befejezi a programgombot = aiy.voicehat.get_button () # AIY Gombállapot led = aiy.voicehat.get_led () # AIY Gomb-LED állapot aiy.audio.get_recorder (). start () led_1 = LED (26) # 1. csatlakozó, szervo0, GPIO 26 # bal felső LED_2 = LED (6) # 2. csatlakozó, servo1, GPIO 06 # bal középső led_3 = LED (13) # 3. csatlakozó, szervo2, GPIO 13 # bal alsó led_4 = LED (5) # 4. csatlakozó, szervo3, GPIO 05 # jobb felső LED_5 = LED (12) # 5. csatlakozó, servo4, GPIO 12 # jobb középső led_6 = LED (24) # 4. csatlakozó, szervo3, GPIO 13 # jobb alsó # távolság = Gomb (5) # szervo3/GPIO 05 -hez csatlakoztatott távolságérzékelő, itt nem használatos aiy.audio.say ("Hello!",) Aiy.audio.say ("Kezdéshez, kérjük, nyomja meg a gombot",) aiy.audio.say ("Ha búcsút mondok, befejezem a programot"), míg True: # indul loop led.set_state (aiy.voicehat. LED. BLINK) print ("A hangfelismerés aktiválása n, nyomja meg a kék gombot, majd beszéljen ") print () button.wait_for_press () print ('Listening …') aiy.audio.say (" Hallgatok ",) led.set_state (aiy.voicehat. LED. BLINK_3) text = felismerő.recognize () # felismerhető mondat szöveges karakterlánca led.set_state (aiy.voicehat. LED. OFF), ha a szöveg nincs: aiy.audio.say ('Sajnálom, nem hallottalak.',) elif 'viszlát' szövegben: aiy.audio.say ("Goodbye",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) sleep (3) print ('bye! ') a break # megállítja a ciklust és befejezi a programot: print (' Azt mondtad "', szöveg," "') # Lehetővé teszi a rendszer értelmezésének ellenőrzését, beleértve a lebilincselést aiy.audio.say ('Azt hiszem, te mondtad',) aiy.audio.say (szöveg,) # akusztikus ellenőrzés Text_up = text.upper () # az összeset nagybetűsre helyezi át (Text_up) Text_Len = len (Text_up) print (Text_Len) az i tartományban (Text_Len): Lett = Text_up # egyetlen betűt választ, az elsővel kezdődik, azaz [0] print ("Letter =", Lett) Lett_B = Braille_6A [Lett] # Kiválasztja a megfelelő kódot a szótár. Hiányzó jel megtöri a kódot! print (Lett_B) if ("1" in Lett_B): print ("LED 1") led_1.on () # aktiválja a LED -et a szervo0 "-nál, ha" 2 "a Lett_B -n: print (" LED 2 ") led_2.on () ha "3" a Lett_B -ben: print ("LED 3") led_3.on () ha "4" a Lett_B -ben: print ("LED 4") led_4.on () ha "5" a Lett_B -ben: print ("LED 5" ") led_5.on () if" 6 "in Lett_B: print (" LED 6 ") led_6.on () sleep (1) # display pattern for a second print () led_1.off () # inaktiválja az összes LED -et a szervókon0 -5n led_2.off () led_3.off () led_4.off () led_5.off () led_6.off () alvás (0.3) # rövid sötét szünet, a levél végének jelzésére, ha _name_ == '_main_ ': main ()

4. lépés: Kilátások és megjegyzések

Tehát mi lehet ezután?

A bevezetőben említett, az AIY videokészlettel vagy más automatizált képfelismerő rendszerrel folytatott informatikai meta-vicc mellett az opcióban leírt koncepció kibővítésére más lehetőségek is lehetnek. Némelyikük akár a valós világban is hasznos lehet. Ezek lehetnek:

- továbbfejlesztett programozás, így a szöveg átkerül a szabványos Braille -kódba, minden jelöléssel és tömörítéssel együtt. Ez nem lehet sok erőfeszítés egy képzett python programozó számára. Ami nem vagyok, ezért minden segítséget szívesen fogadunk.

- bővítse ki a rendszert 2x4 mátrixra. Ez is lehetséges, és segítene a megfelelő 8 pontos Braille-kódok használatában, ahogy az elektronikus Braille-kijelzők használják. E fölött egy kicsit közelebb lenne a Dearheart clacks rendszerhez.

- készítsen valódi 2x3 vagy 2x4 Braille kijelzőt. Lehetségesnek kell lennie egy szervo vagy 5 V mini mágnesszelep tömb használatával. Az elsődleges kihívás az lenne, hogy a tapintható pontok közötti szabványos távolság 2,45 mm, azaz 1/10 hüvelyk, elektronikus kijelzőn, ezért szükség lehet bizonyos fokozatokra és mechanikára. A másik kihívás a tolás hosszának pontos szabályozása lehet.

Egy ilyen egyszerű és olcsó megoldás a szélesebb nyilvánosság számára is érdekes lehet, mivel a kereskedelmi Braille -kijelzők meglehetősen drágák. Előnyös lehet az ilyen hangvezérelt rendszert használó Braille-tanulók számára. Lehet, hogy szóban beírnak egy választott (angol) mondatot, és a szöveg, betűk és jelek megjelennek az ujjuk hegyén.

- a Murray vagy a Dearheart rendszerekhez hasonló mechanikus redőnyrendszert építeni. A szervók használatával ez nem lehet túl bonyolult, és egy másik utasításban leírható. Vagy lehet egy szép iskolai projekt. Érdekel valakit?

–――――

Néhány megjegyzés és érdekes link:

- Van egy utasítás, amely leírja a "DIY szemafor lámpást", egy 2x4 LED -es mátrixot, valami Propeller demo tábla alapján. Tetszik az elrendezés, de a programozás kicsit bonyolultnak tűnik számomra. Kérlek nézd meg magad.

- Most találtam egy python programot a teljes mértékben szerződéses (2. fokozat) Braille -írás létrehozására. Sajnos a python 2-re és a 2002-es amerikai angol verzióra korlátozódik:

- úgy tűnik, hogy egy teljesebb program a liblouis, https://github.com/liblouis/liblouis, de fogalmam sincs, hogyan integrálhatom ezt ebbe a megoldásba.

- egy érdekes python megoldás Görögországból származik, a https://github.com/ant0nisk/pybrl több nyelvet is integrálhat, és 2. osztályú Braille -írást hozhat létre.

- Nem vagyok sem programozó, sem elektronikai fickó, és néhány napja nem sok ismeretem volt a Braille -írásról.

Tehát ha bármilyen hibát, hiányosságot lát, vagy ötletei vannak a projekthez, kérjük, tudassa velem.

- Ha tetszik ez az oktatható, kérem, szavazzon rá!

Ajánlott: