Isi kandungan:

Semaphore Corak Jenis Braille yang Dikendalikan Suara: 4 Langkah (dengan Gambar)
Semaphore Corak Jenis Braille yang Dikendalikan Suara: 4 Langkah (dengan Gambar)

Video: Semaphore Corak Jenis Braille yang Dikendalikan Suara: 4 Langkah (dengan Gambar)

Video: Semaphore Corak Jenis Braille yang Dikendalikan Suara: 4 Langkah (dengan Gambar)
Video: Sandi semaphore pramuka 2024, Julai
Anonim
Semaphore Corak Jenis Braille yang Dikendalikan Suara
Semaphore Corak Jenis Braille yang Dikendalikan Suara
Semaphore Corak Jenis Braille yang Dikendalikan Suara
Semaphore Corak Jenis Braille yang Dikendalikan Suara
Semaphore Corak Jenis Braille yang Dikendalikan Suara
Semaphore Corak Jenis Braille yang Dikendalikan Suara
Semaphore Corak Jenis Braille yang Dikendalikan Suara
Semaphore Corak Jenis Braille yang Dikendalikan Suara

"Lord Vetinari berdiri di tingkapnya sambil melihat menara semaphore di seberang sungai. Semua lapan jendela besar yang menghadapnya berkedip dengan marah - hitam, putih, hitam, putih, hitam, putih … Maklumat terbang ke udara. Dua puluh batu di belakangnya, di menara lain di Sto Lat, seseorang melihat melalui teleskop dan menjerit nombor. Seberapa cepat masa depan menimpa kami, pikirnya. " T. Pratchett, Gajah Kelima

Setelah membina jack jumping kawalan suara berdasarkan kit suara AIY, saya mempunyai idea untuk membina semaphore kawalan suara, menyatukan teknologi IT terkini dengan permulaan telekomunikasi dan pemindahan data.

Pada mulanya saya mempunyai idea untuk meniru sistem semaphore Perancis oleh Chappe, yang merupakan sistem pertama yang diketahui untuk telekomunikasi seluruh negara menggunakan sistem semaphore. Tetapi ternyata terlalu rumit untuk direalisasikan menggunakan servo standard dalam sehari. Sasaran saya seterusnya adalah sesuatu yang serupa dengan sistem clacks yang diterangkan oleh Terry Pratchett, mis. dalam "Going Postal", sebagai sistem semaphore shutter 2x4 (bukan seperti matriks 4x4 yang digambarkan dalam filem). Sayangnya saya tidak dapat menemui terlalu banyak butiran teknikal yang terdapat pada sistem ini. Oleh itu, saya berakhir dengan sistem semaphore matriks 2x3 yang dikembangkan oleh Lord Murray, yang telah digunakan oleh Tentera Laut Inggeris untuk sementara waktu. Di samping itu, sistem enam rana / bit sesuai dengan enam penyambung servo yang terdapat pada HAT suara AIY. Tetapi, kerana saya tidak mempunyai enam servo di antara tahun-tahun itu, saya akhirnya memutuskan untuk membina simulator yang terbuat dari LED terlebih dahulu.

Mengenai kod yang dipaparkan, seseorang dapat menggunakan sistem Murray, tetapi sekali lagi maklumat yang saya miliki di dalamnya agak terbatas, tidak memungkinkan untuk menunjukkan nombor dan simbol apa pun. Oleh itu, saya ingin menggunakan sistem Braille sebagai gantinya, yang juga menggunakan matriks 2x3 untuk memaparkan huruf, angka dan tanda-tanda lain. Sistem Braille adalah standard antarabangsa untuk mencetak teks yang boleh dibaca oleh orang buta. Ini juga merupakan bahasa markup, yang menggunakan penunjuk angka untuk menentukan bahawa nombor akan ditampilkan seterusnya, dan indikator untuk menentukan satu, atau banyak, huruf berikut ditulis sebagai huruf besar. Oleh itu, saya memutuskan untuk menubuhkan sistem yang sedikit dipermudah, dengan nombor dan beberapa tanda yang ditentukan oleh pelanjutan Nemeth sistem Braille, dan hanya menggunakan huruf besar, sekurang-kurangnya untuk permulaan. Ini memungkinkan untuk mempunyai corak unik untuk setiap huruf, angka atau tanda yang akan ditampilkan dalam aplikasi khas saya, dan untuk menghilangkan analisis teks yang diperlukan untuk Braille sebenar.

Peranti terakhir membolehkan menyebut perkataan atau ayat ke dalam sistem pengecaman suara AIY, kemudian data corak suara dihantar melalui WLAN dan internet ke beberapa rangkaian Google di AS, disahkod di sana, dan, sekurang-kurangnya dalam kes saya, ditafsirkan data dihantar kembali ke Eropah, di mana akhirnya saya mendapat ayat yang dikenali sebagai rentetan teks. Rentetan teks ini kemudian dipecah oleh skrip Python menjadi huruf individu, dan sekarang, dengan membandingkan dengan kamus yang menentukan corak yang sesuai, maklumat corak diambil semula dan coraknya dipaparkan pada matriks LED 2x3. Sila lihat video yang disertakan.

Saya telah menetapkan kadar paparan kepada satu watak per saat, yang seharusnya cukup panjang bagi seseorang yang terlatih untuk mengenal pasti dan menerjemahkan corak. Langkah seterusnya yang mungkin adalah menggunakan alat pengecam corak seperti AIY vision HAT (setakat ini tidak tersedia di Eropah) untuk membaca dan menafsirkan corak secara automatik, sehingga menutup lingkaran.

Konsep lebih lanjut untuk penambahbaikan, beberapa yang lebih relevan dengan dunia nyata, dibincangkan dalam bahagian 'pandangan' dari petunjuk ini.

Langkah 1: Bahan Yang Digunakan

Bahan Yang Digunakan
Bahan Yang Digunakan
Bahan Yang Digunakan
Bahan Yang Digunakan

Raspberry Pi 3

Suara AIY HAT

Lapan LED putih, diameter 5 mm. Ini berjalan pada 3V, oleh itu perintang diperlukan.

Perintang 100kOhm. Mungkin bukan penyelesaian yang tepat, tetapi sudah dekat.

Kabel pelompat

Sekeping wayar pendek

Papan roti, pilihan untuk menguji persediaan.

Kotak plastik untuk kad nama.

Dua keping busa plastik 4 mm, ada yang tinggal di atas sampah.

Sebilangan kepingan plastik membran, seperti penyebar, seperti di atas.

Pateri dan solder, pisau.

Langkah 2: Persediaan dan Penggunaan

Persediaan dan Penggunaan
Persediaan dan Penggunaan
Persediaan dan Penggunaan
Persediaan dan Penggunaan
Persediaan dan Penggunaan
Persediaan dan Penggunaan

Siapkan Raspberry Pi dan AIY HAT seperti yang ditunjukkan dalam manual AIY voice HAT. Saya akan mengesyorkan solder header sekurang-kurangnya ke port servo sebelum anda memasang Pi dan HAT, kerana ini membolehkan anda menyambungkan servos, papan roti atau LED dengan mudah.

Kotak paparan telah dibina dari penutup kotak plastik untuk kad nama, dua keping busa masuk ke dalam kotak dan sekeping membran pembungkusan berukuran serupa sebagai penyebar. Di salah satu bahagian busa, enam lubang ditolak dan LED diletakkan ke dalamnya. Kaki yang lebih pendek (sisi tanah) LED disambungkan antara satu sama lain dengan sekeping kabel, kemudian perintang ditambahkan dan kabel pelompat dipateri pada yang terakhir. Ke kaki lain (tambah sisi) kabel pelompat LED disolder.

Ini kemudian disambungkan ke port servo pada HAT suara AIY melalui kabel pemanjangan, sisi positif ke pin "luar" P in ", penyambung negatif ke salah satu pin tanah / dalam (tolak). Lihat skema yang dilampirkan.

Saya sangat mengesyorkan untuk menguji penyediaan pada papan roti sebelum menyolder.

Sekarang membran, plat LED dan lapisan kedap diletakkan di dalam kotak plastik.

Letakkan skrip Braille_LED_1.py di folder src. Sekiranya berlaku, anda mungkin perlu membuat skrip dapat dilaksanakan terlebih dahulu.

Kini menggunakan terminal Dev (!) Program Braille_LED_1.py telah dimulakan. Masukkan 'src / Braille_LED_1.py' dan tekan 'Enter'.

Anda sekarang akan diminta untuk menekan butang kotak AIY dan menyebut perkataan atau ayat anda. Dengan beberapa kelewatan, sistem akan mengulangi apa yang telah difahami, dan memaparkannya di layar juga, huruf demi huruf, pada enam paparan LED.

Sekiranya anda memberikan kata kunci "Selamat tinggal" dan bukannya ayat, sistem akan memberitahu anda Selamat tinggal, dan program akan ditutup.

Langkah 3: Kodnya

Kod tersebut
Kod tersebut

Di bawah ini anda dapati kod yang membolehkan anda bercakap dengan alat suara AIY dan kalimat yang diiktiraf ditunjukkan huruf demi huruf pada 'semaphore' kecil atau LED matriks jenis 2x3-LED.

Kod tersebut adalah turunan dari skrip yang saya gunakan untuk projek sebelumnya menggunakan AIY voice HAT, yang merupakan turunan dari contoh servo_demo.py yang dijelaskan dalam manual AIY voice HAT.

Anda juga boleh mencari kamus dengan bahagian kod Murray yang saya dapati di internet, sebagai fail teks. Ia tidak mengandungi angka dan menghilangkan beberapa huruf, yang akan menimbulkan masalah di sini.

Satu batasan program dalam keadaannya sekarang adalah bahawa jika tanda tidak termasuk dalam kamus, program itu akan merosakkan. Selain itu, ini bukan perwakilan dari Braille Code yang lengkap sebagai bahasa Markup. Seperti yang anda lihat dalam skrip di bawah ini, kod Nemeth untuk nombor berlebihan dengan beberapa tanda dalam Braille standard, tetapi itu tidak akan memberi masalah bagi aplikasi khusus kami.

#! / usr / bin / env python3

# Skrip ini adalah penyesuaian dari skrip servo_demo.py untuk suara AIY HAT, # dioptimumkan untuk paparan simbol jenis Baille berasaskan AIY import aiy.audio import aiy.cloudspeech import aiy.voicehat dari gpiozero import LED #dari gpiozero import Butang dari time import sleep # Kamus: abjad Braille yang diubah secara artifisial, # nombor dan beberapa simbol yang diambil dari lanjutan Nemeth Braille Braille_6A = {"": "123456", # ruang "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 ", # Awalan Nombor, iaitu tanda seterusnya adalah nombor", ":" 2 ",". ": "256", # Berhenti penuh, akhir ayat (GB) "?": "236", "!": "235", "'": "3", "-": "24", ";": "23", "Cap": "6", # Surat seterusnya ada di Ibu Negara; Nombor-Berhenti? "": "", # Nemeth Braille code adalah pengembangan matematik untuk 6-Point Braille # lihat: https://en.wikipedia.org/wiki/Nemeth_Braille "1": "2", # Nemeth Code '1', Braille 'koma' "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 "# '*' adalah simbol dua corak di Nemeth, di sini digantikan oleh 'x' untuk menghilangkan kemalangan}" "" kerana alasan kesederhanaan, pola nombor Braille standard yang diberikan di bawah digantikan dengan Nemeth-Codes yang berkaitan "1": "1", "2": "12", "3": "14", "4": "145", "5": "15", " 6 ":" 124 "," 8 ":" 1245 "," 9 ":" 24 "," 0 ":" 245 "," "" #Text = "rbhTZkl 9t64 + 34 #!" # Sampletext, untuk tujuan penyahpepijatan def main (): mengenali = aiy.cloudspeech.get_recognizer () recognitionizer.expect_phrase ('selamat tinggal') # kata kunci, mengakhiri butang program = aiy.voicehat.get_button () # AIY Status butang dipimpin = aiy.voicehat.get_led () Status AIY Button-LED aiy.audio.get_recorder (). start () led_1 = LED (26) # penyambung pertama, servo0, GPIO 26 # kiri atas led_2 = LED (6) # penyambung ke-2, servo1, GPIO 06 # kiri kiri tengah_3 = LED (13) # penyambung ke-3, servo2, GPIO 13 # led kiri bawah_4 = LED (5) # penyambung ke-4, servo3, GPIO 05 # led kanan atas_5 = LED (12) # penyambung ke-5, servo4, GPIO 12 # tengah kanan led_6 = LED (24) # 4 penyambung, servo3, GPIO 13 # kanan bawah # jarak = Butang (5) # sensor jarak disambungkan ke servo3 / GPIO 05, tidak digunakan di sini aiy.audio.say ("Hello!",) Aiy.audio.say ("Untuk memulakan, sila tekan butang",) aiy.audio.say ("Sekiranya anda memberitahu saya Selamat tinggal, saya akan menamatkan program",) sementara Benar: # bermula gelung led.set_state (aiy.voicehat. LED. BLINK) cetak ("Untuk mengaktifkan pengecam suara n, tekan butang biru, kemudian sebut ") cetak () butang.wait_for_press () cetak ('Mendengarkan …') aiy.audio.say (" Saya sedang mendengar ",) led.set_state (aiy.voicehat. LED. BLINK_3) text = recognitionizer.recognize () # rentetan teks dari kalimat yang diiktiraf led.set_state (aiy.voicehat. LED. OFF) jika teks Tiada: aiy.audio.say ('Maaf, saya tidak mendengar anda.',) elif 'selamat tinggal' dalam teks: aiy.audio.say ("Selamat tinggal",) aiy.audio.say ('Arriveerci',) aiy.audio.say ('Auf Wiedersehen',) tidur (3) cetak ('bye! ') break # stop loop and berakhir program yang lain: print (' You said "', text,'" ') # Membolehkan anda memeriksa tafsiran sistem, termasuk captialization aiy.audio.say (' Saya rasa anda berkata ',) aiy.audio.say (teks,) # pengesahan akustik Text_up = text.upper () # memindahkan semua ke cetakan huruf besar (Text_up) Text_Len = len (Text_up) print (Text_Len) for i in range (Text_Len): Lett = Text_up # Memilih satu huruf, bermula dengan huruf pertama, iaitu [0] cetak ("Letter =", Lett) Lett_B = Braille_6A [Lett] # Memilih kod yang sesuai dari kamus. Tanda yang hilang akan melanggar kod! print (Lett_B) if ("1" in Lett_B): print ("LED 1") led_1.on () # mengaktifkan LED pada servo0 "jika" 2 "dalam Lett_B: print (" LED 2 ") led_2.on () jika "3" dalam 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 () jika" 6 "dalam Lett_B: print (" LED 6 ") led_6.on () sleep (1) # corak paparan untuk cetakan kedua () led_1.off () # nonaktifkan semua LED pada servos0 -5n led_2.off () led_3.off () led_4.off () led_5.off () led_6.off () sleep (0.3) # rehat gelap pendek, untuk menunjukkan akhir huruf jika _name_ == '_main_ ': utama ()

Langkah 4: Tinjauan dan Catatan

Jadi apa yang seterusnya?

Di samping IT-meta-lelucon dengan kit video AIY atau sistem pengenalan gambar automatik lain yang disebutkan dalam pengenalan, mungkin ada pilihan lain untuk mengembangkan konsep yang dijelaskan dalam arahan ini. Sebilangan dari mereka bahkan mungkin digunakan di dunia nyata. Ini mungkin:

- pengaturcaraan yang lebih baik, sehingga teks ditransfer ke dalam kod Braille standard, dengan semua tanda dan kompres. Itu tidak semestinya banyak usaha untuk pengaturcara python yang mahir. Yang saya tidak, jadi bantuan akan dialu-alukan.

- luaskan sistem ke matriks 2x4. Perlu juga, dan akan membantu menggunakan kod Braille 8 titik yang sesuai, seperti yang digunakan oleh paparan Braille elektronik. Di atas ini, ia akan menjadi lebih dekat dengan sistem klac Dearheart.

- membina paparan Braille 2x3 atau 2x4 sebenar. Sepatutnya boleh dilakukan dengan menggunakan array servos atau array solenoid mini 5V. Cabaran utama ialah jarak standard antara titik taktil adalah 2,45 mm, atau 1/10 inci, pada paparan elektronik, jadi mungkin diperlukan beberapa roda gigi dan mekanik. Cabaran lain adalah dengan mengatur panjang tekan dengan tepat.

Penyelesaian mudah dan murah seperti itu mungkin menarik bagi orang ramai, kerana paparan Braille komersial agak mahal. Mungkin ada manfaat bagi pelajar Braille menggunakan sistem kawalan suara seperti itu. Oleh kerana mereka mungkin memasukkan ayat (Bahasa Inggeris) pilihan mereka, dan mendapatkan teks, huruf dan tanda, dipaparkan di hujung jari mereka.

- membina sistem rana mekanikal yang menyerupai sistem Murray atau Dearheart. Menggunakan servo, itu tidak boleh terlalu rumit dan mungkin dijelaskan dalam petunjuk lain. Atau boleh menjadi projek sekolah yang bagus. Ada yang berminat?

–――――

Beberapa komen dan pautan menarik:

- Ada instruksional yang menggambarkan "DIY semaphore lantern", matriks LED 2x4, berdasarkan beberapa papan demo Propeller. Saya suka susun aturnya, tetapi pengaturcaraan saya agak rumit. Sila lihat diri anda.

- Saya sekarang menjumpai program python untuk menghasilkan Braille Kontrak Sepenuhnya (Gred 2). Sayangnya terhad kepada python 2 dan versi bahasa Inggeris Amerika 2002:

- program yang lebih lengkap nampaknya liblouis, https://github.com/liblouis/liblouis, tetapi saya tidak tahu bagaimana mengintegrasikannya ke dalam penyelesaian ini.

- penyelesaian python yang menarik nampaknya berasal dari Yunani, https://github.com/ant0nisk/pybrl dapat mengintegrasikan beberapa bahasa dan menghasilkan Braille kelas 2.

- Saya bukan pengaturcara, bukan lelaki elektronik, dan saya juga tidak mempunyai banyak pengetahuan mengenai Braille beberapa hari yang lalu.

Oleh itu, jika anda melihat kesilapan, peninggalan, atau anda mempunyai idea untuk projek ini, sila beritahu saya.

- Sekiranya anda suka arahan ini, sila pilih!

Disyorkan: