Mundarija:

Ovoz bilan boshqariladigan, Brayl tipidagi semafor: 4 qadam (rasmlar bilan)
Ovoz bilan boshqariladigan, Brayl tipidagi semafor: 4 qadam (rasmlar bilan)

Video: Ovoz bilan boshqariladigan, Brayl tipidagi semafor: 4 qadam (rasmlar bilan)

Video: Ovoz bilan boshqariladigan, Brayl tipidagi semafor: 4 qadam (rasmlar bilan)
Video: Journey into the Bizarre World of the Weird West 2024, Noyabr
Anonim
Ovoz bilan boshqariladigan, Brayl tipidagi semafor
Ovoz bilan boshqariladigan, Brayl tipidagi semafor
Ovoz boshqariladigan, Brayl tipidagi semafor
Ovoz boshqariladigan, Brayl tipidagi semafor
Ovoz bilan boshqariladigan, Brayl tipidagi semafor
Ovoz bilan boshqariladigan, Brayl tipidagi semafor
Ovoz bilan boshqariladigan, Brayl tipidagi semafor
Ovoz bilan boshqariladigan, Brayl tipidagi semafor

Lord Vetinari derazaning narigi tomonidagi semafor minorasini kuzatib turgan derazasida turibdi. Qarama -qarshi turgan sakkizta katta panjurlar g'azab bilan miltillashardi - qora, oq, qora, oq, qora, oq … Ma'lumotlar havoga uchib ketardi. Uning orqasida yigirma mil narida, Sto Latdagi boshqa minorada, kimdir teleskop orqali qaradi va raqamlarni baqirdi. Kelajak bizni qanchalik tez kutib oladi, deb o'yladi u. T. Pratchett, Beshinchi fil

AIY ovoz to'plami asosida ovoz bilan boshqariladigan o'tish moslamasini qurganimdan so'ng, menda telekommunikatsiya va ma'lumotlarni uzatishning boshlanishi bilan IT-texnologiyasining eng so'nggi yangiliklarini birlashtirgan holda, ovoz bilan boshqariladigan semafora qurish g'oyasi paydo bo'ldi.

Avvaliga men Chappe frantsuz semafor tizimini takrorlash g'oyasiga ega bo'ldim, bu semafora tizimidan foydalangan holda butun mamlakat bo'ylab telekommunikatsiyalar uchun ma'lum bo'lgan birinchi tizim edi. Ammo bir kun ichida standart servolar yordamida amalga oshirish biroz murakkab bo'lib chiqdi. Mening keyingi maqsadim Terri Pratchet tomonidan tasvirlangan klack tizimiga o'xshash narsa edi, masalan. "Going pochtada", 2x4 deklanşör semafor tizimi sifatida (filmda tasvirlangan 4x4 matritsa kabi emas). Afsuski, men bu tizimda juda ko'p texnik tafsilotlarni topa olmadim. Shunday qilib, men Buyuk Britaniya dengiz floti tomonidan bir muddat ishlatilgan Lord Myurrey tomonidan ishlab chiqilgan 2x3 matritsa semafor tizimiga ega bo'ldim. Bundan tashqari, oltita deklanşör tizimi AIY ovozli HAT -da mavjud bo'lgan oltita servo ulagichga yaxshi mos keladi. Ammo yillar mobaynida menda oltita servo yo'q edi, men nihoyat birinchi navbatda LEDlardan yasalgan simulyator qurishga qaror qildim.

Ko'rsatilgan kodga kelsak, Myurrey tizimidan foydalanish mumkin edi, lekin menda mavjud bo'lgan ma'lumotlar juda cheklangan edi, bu raqamlar va belgilarni ko'rsatishga imkon bermadi. Shunday qilib, men Brayl tizimidan foydalanmoqchi bo'ldim, u ham harflar, raqamlar va boshqa belgilarni ko'rsatish uchun 2x3 matritsadan foydalanadi. Brayl tizimi - ko'rlar uchun o'qiladigan matnlarni chop etishning xalqaro standarti. Bu, shuningdek, raqamlar indikatori keyingi raqamlar ko'rsatilishini aniqlash uchun raqamlar indikatoridan foydalangan holda belgilash tili bo'lib, quyidagi harflarning bir yoki bir nechtasini bosh harflar sifatida yozilishini ko'rsatuvchi indikatorlardir. Men shuning uchun bir oz soddalashtirilgan tizimni o'rnatishga qaror qildim, uning o'rniga Brayl tizimining Nemeth kengaytmasi bilan raqamlar va ba'zi belgilar aniqlandi va hech bo'lmaganda boshida katta harflardan foydalaning. Bu mening maxsus ilovamda ko'rsatiladigan har bir harf, raqam yoki belgining o'ziga xos naqshlariga ega bo'lishga va haqiqiy Brayl alifbosida zarur bo'lgan matn tahlilini o'tkazmaslikka imkon beradi.

Oxirgi qurilma AIY ovozni aniqlash tizimida so'z yoki jumlani gapirishga imkon beradi, keyin ovoz namunasi ma'lumotlari WLAN va internet orqali AQShning ba'zi Google xizmatlariga yuboriladi, u erda kod hal qilinadi va hech bo'lmaganda mening holatimda talqin qilinadi. ma'lumotlar Evropaga qaytariladi, u erda men tan olingan jumlani matnli qator sifatida ko'rsataman. Bu matnli satr keyinchalik Python skriptida alohida harflarga bo'linadi va endi tegishli naqshlarni aniqlaydigan lug'at bilan taqqoslaganda, naqsh ma'lumoti qaytariladi va naqshlar 2x3 LEDli matritsada ko'rsatiladi. Iltimos, unga qo'shilgan videoga qarang.

Men ekran tezligini sekundiga bitta belgiga o'rnatdim, bu o'qitilgan odam naqshni aniqlashi va tarjima qilishi uchun etarli bo'lishi kerak. Mumkin bo'lgan keyingi qadam - aylanani yopish uchun naqshlarni avtomatik o'qish va talqin qilish uchun AIY vision HAT (hozirgacha Evropada mavjud emas) kabi naqshlarni aniqlash moslamasidan foydalanish.

Yaxshilash bo'yicha boshqa kontseptsiyalar, ba'zilari haqiqiy hayotiy ahamiyatga ega, ushbu ko'rsatmaning "dunyoqarashi" qismida muhokama qilinadi.

1 -qadam: Ishlatilgan materiallar

Ishlatilgan materiallar
Ishlatilgan materiallar
Ishlatilgan materiallar
Ishlatilgan materiallar

Raspberry Pi 3

AYY HAT ovozi

Sakkizta oq LED, diametri 5 mm. Ular 3Vda ishlaydi, shuning uchun rezistor kerak.

100 kOhm qarshilik. Ehtimol, bu mukammal echim emas, lekin qo'lda edi.

Jumper kabellari

Qisqa sim

Breadboard, sozlashni sinash uchun ixtiyoriy.

Vizit kartalari uchun plastik quti.

Ikki bo'lak 4 mm plastmassa ko'pik, ba'zilari axlat ustida qolgan.

Yuqoridagi kabi diffuzor kabi plastik membrananing bir qismi.

Lehimlash temir va lehim, pichoq.

2 -qadam: O'rnatish va foydalanish

O'rnatish va foydalanish
O'rnatish va foydalanish
O'rnatish va foydalanish
O'rnatish va foydalanish
O'rnatish va foydalanish
O'rnatish va foydalanish

Raspberry Pi va AIY HAT ni AIY ovozli HAT qo'llanmasida ko'rsatilgan tarzda o'rnating. Men Pi va HATni yig'ishdan oldin sarlavhalarni hech bo'lmaganda servo portlarga lehimlashni maslahat berardim, chunki bu servolarni, non paneli yoki LEDlarni osongina ulash imkonini beradi.

Ko'rgazma qutisi vizitkalarga mo'ljallangan plastik qutining qopqog'idan, qutiga ikkita ko'pikli ko'pikdan va diffuzor kabi qadoqlash membranasining o'lchamidan yasalgan. Ko'pikli qismlardan birida oltita teshik bosilib, ularga LEDlar qo'yilgan. LEDlarning qisqaroq oyoqlari (er tomoni) bir -biri bilan simi orqali bog'langan, keyin rezistor qo'shilgan va ikkinchisiga o'tish kabeli lehimlangan. LEDlarning boshqa oyoqlariga (ortiqcha tomoniga) o'tish kabellari lehimlangan.

Keyin ular AIY ovozli HAT -dagi servo portlarga uzaytiruvchi kabellar orqali, ijobiy tomoni (tashqi) "P in" pimlariga, salbiy ulagichi (ichki) topraklama/minus pinlaridan biriga ulangan. Iltimos, ilova qilingan sxemaga qarang.

Lehimlashdan oldin sozlashni non taxtasida sinab ko'rishni qat'iy tavsiya qilaman.

Endi membrana, LED plastinka va muhrlangan qatlam plastik qutiga joylashtirilgan.

Braille_LED_1.py skriptini src papkasiga joylashtiring. Agar kerak bo'lsa, avval siz skriptni bajariladigan qilib qo'yishingiz kerak bo'ladi.

Endi Dev terminali (!) Yordamida Braille_LED_1.py dasturi ishga tushirildi. "Src/Braille_LED_1.py" kiriting va "Enter" tugmasini bosing.

Endi sizdan AIY qutisining tugmachasini bosib, so'z yoki jumlangizni aytishingiz so'raladi. Biroz kechikkanidan so'ng, tizim tushunilgan narsani takrorlaydi va uni ekranda, shuningdek, harfli harf bilan oltita LED displeyda ko'rsatadi.

Agar siz gapning o'rniga "Xayr" kalit so'zini bersangiz, tizim sizga "Xayr" deb aytadi va dastur yopiladi.

3 -qadam: Kod

Kodeks
Kodeks

Quyida siz AIY ovozli qurilmasi bilan gaplashish va taniqli jumlani 2x3 LEDli kichik semafora yoki Brayl tipidagi matritsada harflar bilan ko'rsatishga imkon beruvchi kodni topasiz.

Kod oldingi loyihada AIY ovozli HAT yordamida ishlatilgan skriptning lotinidir, bu AIY ovozli HAT qo'llanmasida tasvirlangan servo_demo.py misolidan olingan.

Siz shuningdek, Internetda men topgan Myurrey kodining bir qismi bo'lgan lug'atni matnli fayl sifatida topishingiz mumkin. U raqamlarni o'z ichiga olmaydi va ba'zi harflarni qoldirmaydi, bu esa bu erda muammo tug'diradi.

Dasturning hozirgi holatidagi cheklovlardan biri shundaki, agar lug'atga kiritilmagan belgi dasturni buzadi. Bundan tashqari, bu markirovka tili sifatida to'liq Brayl kodining vakili emas. Quyidagi skriptda ko'rib turganingizdek, raqamlar uchun Nemeth kodi standart Brayl yozuvidagi ba'zi belgilar bilan ortiqcha, lekin bu bizning maxsus ilovamiz uchun muammo tug'dirmasligi kerak.

#!/usr/bin/env python3

# Bu skript AIY ovozli HAT uchun servo_demo.py skriptining moslashuvi, # AIY asosidagi Baille tipidagi belgi displeyi aiy.audio import aiy.cloudspeech import aiy.voicehat gpiozero import LED dan vaqt import uyqu # Lug'at: Brayl alifbosining sun'iy ravishda o'zgartirilgan alifbosi, # raqamlari va ba'zi belgilar Braille alifbosidagi Nemeth kengaytmasidan olingan_6A = {"": "123456", # bo'sh joy "A": "1", "B": "12 "," C ":" 14 "," D ":" 145 "," E ":" 15 "," F ":" 124 "," G ":" 1245 "," H ":" 125 ", "Men": "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", "V": "2456", "#": "3456 ", # Number Prefix, ya'ni keyingi belgilar", ":" 2 ",". ": "256", # To'liq nuqta, jumla oxiri (GB) "?": "236", "!": "235", "'": "3", "-": "24", ";": "23", "Kepka": "6", # Keyingi harf katta harflar bilan; Raqamni to'xtatish? "": "", # Nemeth Brayl kodi-6 nuqtali Brayl uchun matematik kengaytma # qarang: https://en.wikipedia.org/wiki/Nemeth_Braille "1": "2", # Nemet kodi '1', Brayl "vergul" "2": "23", "3": "25", "4": "256", "5": "26", "6": "235", # Nemet "6", Brayl '! "7": "2356", "8": "236", # Nemeth '8', Brayl '?' "9": "35", "0": "356", "+": "346", "-": "36", "/": "34", "(": "12356", ") ":" 23456 ","*":" 1346 " # '*' - Nemetdagi ikkita naqshli belgi, bu erda nosozliklarni bartaraf etish uchun" x "belgisi bilan almashtirildi}" "", oddiy Brayl raqamlari namunalari berilgan quyida "1", "2": "12", "3": "14", "4": "145", "5": "15", "1", "2" va Nemeth-kodlari o'rnini bosdi. 6 ":" 124 "," 8 ":" 1245 "," 9 ":" 24 "," 0 ":" 245 "," "" #Text = "rbhTZkl 9t64+34 #!" # Namuna matni, nosozliklarni tuzatish maqsadida def main (): tanituvchi = aiy.cloudspeech.get_recognizer () tanib oluvchi.xotirma ("xayr") # kalit so'z, dastur tugmachasini tugatadi = aiy.voicehat.get_button () # AIY tugmachasining holati led = aiy.voicehat.get_led () # AIY tugmasi-LED holati aiy.audio.get_recorder (). start () led_1 = LED (26) # 1-ulagich, servo0, GPIO 26 # yuqori chap led_2 = LED (6) # 2-ulagich, servo1, GPIO 06 # o'rta chap led_3 = LED (13) # 3 -ulagich, servo2, GPIO 13 # pastki chap led_4 = LED (5) # 4 -ulagich, servo3, GPIO 05 # yuqori o'ng LED_5 = LED (12) # 5 -ulagich, servo4, GPIO 12 # o'rta o'ng LED_6 = LED (24) # 4 -ulagich, servo3, GPIO 13 # pastki o'ng # masofa = Tugma (5) # servo3/GPIO 05 ga ulangan masofa sensori, bu erda ishlatilmaydi aiy.audio.say ("Salom!",) Aiy.audio.say ("Boshlash uchun tugmani bosing"), aiy.audio.say ("Agar sen menga xayr desang, men dasturni tugataman"), "True" esa: # boshlanadi loop.set_state (aiy.voicehat. LED. BLINK) chop etish ("Ovozni aniqlash funksiyasini faollashtirish uchun n, ko'k tugmani bosing, keyin gapiring ") print () button.wait_for_press () chop etish ('Tinglayapman …') aiy.audio.say (" Men tinglayman ",) led.set_state (aiy.voicehat. LED. BLINK_3)) text = tanib oluvchi. tanib olish () # tan olingan jumlaning # matnli satri led.set_state (aiy.voicehat. LED. OFF), agar matn yo'q bo'lsa: aiy.audio.say ('Kechirasiz, men sizni eshitmadim.',) elif "xayr" matnida: aiy.audio.say ("Xayr",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) uxlash (3) chop etish ('xayr! ') break # stop loopni to'xtatadi va boshqa dasturni tugatadi: print (' Siz aytdingizmi '', matn, '' ') # # Siz tizim talqinini, shu jumladan aiy.audio.say ("O'ylaymanki, siz aytdingiz",) aiy..audio.say (matn,) # akustik tekshirish Text_up = text.upper () # hammasini katta harflarga o'tkazadi (Text_up) i] # Birinchi harfdan boshlab bitta harfni tanlaydi, ya'ni [0] chop etish ("Letter =", Lett) Lett_B = Braille_6A [Lett] # tegishli kodni tanlaydi lug'at Yo'qolgan belgi kodni buzadi! print (Lett_B) if (Lett_B da "1"): print ("LED 1") led_1.on () # lett_B da "2" bo'lsa, servo0 "da LEDni faollashtiradi: print (" LED 2 ") led_2.on () agar Lett_B da "3" bo'lsa: chop eting ("LED 3") led_3.on () agar Lett_B da "4" bo'lsa: print ("LED 4") led_4.on () agar Lett_B da "5" bo'lsa: chop eting ("LED 5 ") led_5.on () agar Lett_B da" 6 "bo'lsa: chop eting (" LED 6 ") led_6.on () uyqu (1) # ikkinchi chop etish uchun displey namunasi () led_1.off () # servos0dagi barcha LEDlarni o'chirib qo'yadi -5n led_2.off () led_3.off () led_4.off () led_5.off () led_6.off () uxlash (0.3) # qisqa qorong'i tanaffus, agar harfning oxirini ko'rsatish uchun _name_ == '_main_ ': asosiy ()

4 -qadam: Outlook va sharhlar

Xo'sh, keyin nima bo'lishi mumkin?

AIY video to'plami yoki kirish qismida ko'rsatilgan boshqa avtomatlashtirilgan tasvirni aniqlash tizimi bilan IT-hazil qilishdan tashqari, ushbu qo'llanmada tasvirlangan kontseptsiyani kengaytirishning boshqa variantlari bo'lishi mumkin. Ulardan ba'zilari hatto real hayotda ham qo'llanilishi mumkin. Bular bo'lishi mumkin:

- dasturlash takomillashtirildi, shunda matn barcha belgilar va siqilishlar bilan standart Brayl kodiga o'tkazildi. Bu malakali python dasturchisi uchun juda ko'p harakat bo'lmasligi kerak, men emasman, shuning uchun har qanday yordamni qabul qilish mumkin.

- tizimni 2x4 matritsaga kengaytirish. Brayl elektron displeylarida bo'lgani kabi, Brayl yozuvining 8-nuqta kodlaridan foydalanishga yordam berishi mumkin. Buning ustiga, Dearheart clacks tizimiga biroz yaqinroq bo'lardi.

- haqiqiy 2x3 yoki 2x4 Brayl displeyini yarating. Servo yoki 5V mini solenoidlar majmuasidan foydalanish mumkin. Asosiy muammo shundaki, elektron displeyda tegish nuqtalari orasidagi standart masofa 2,45 mm yoki 1/10 dyuymni tashkil qiladi, shuning uchun ba'zi viteslar va mexanika kerak bo'lishi mumkin. Boshqa qiyinchilik, bosish uzunligini aniq tartibga solish bo'lishi mumkin.

Bunday oddiy va arzon echim keng jamoatchilikni qiziqtirishi mumkin, chunki tijorat brayl displeylari ancha qimmat. Ovoz bilan boshqariladigan bunday tizimdan foydalangan Brayl yozuvini o'rganuvchilar uchun foyda bo'lishi mumkin. Ular og'zaki ravishda o'zlari xohlagan (inglizcha) jumlaga kirib, barmoq uchida ko'rsatiladigan matn, harflar va belgilarni olishlari mumkin edi.

- Myurrey yoki Dearheart tizimlariga o'xshash mexanik panjur tizimini qurish. Servolardan foydalanish, bu juda murakkab bo'lmasligi kerak va boshqasida ko'rsatilishi mumkin. Yoki yaxshi maktab loyihasi bo'lishi mumkin. Kimga qiziq?

–――――

Ba'zi izohlar va havolalar:

- Bir nechta Propeller demo taxtasi asosida 2x4 o'lchamli LED matritsali "DIY semaforli chiroq" tasvirlangan. Menga tartib yoqadi, lekin dasturlash men uchun biroz murakkabroq ko'rinadi. Iltimos, o'zingizga qarang.

- Men hozir to'liq kontraktli (2 -darajali) brayl yozuvini yaratish uchun python dasturini topdim. Afsuski, u python 2 va 2002 yildagi Amerika inglizcha versiyasi bilan cheklangan:

- to'liqroq dastur liblouisga o'xshaydi, https://github.com/liblouis/liblouis, lekin men buni bu yechimga qanday qo'shish kerakligini bilmayman.

- Qiziqarli piton echimi Gretsiyadan kelganga o'xshaydi, https://github.com/ant0nisk/pybrl bir nechta tillarni birlashtirishi va 2 -darajali Brayl yozuvini yaratishi mumkin.

- Men na dasturchi, na elektronika sohasida ishlayman, na bir necha kun oldin Brayl alifbosida ko'p ma'lumotga ega emas edim.

Shunday qilib, agar siz biron bir xato, kamchilik yoki kamchiliklarni ko'rsangiz yoki loyihaga oid fikrlaringiz bo'lsa, menga xabar bering.

- Agar sizga bu ko'rsatma yoqsa, iltimos, ovoz bering!

Tavsiya: