Latar belakang
Pada awal tahun ajaran ini (17-18), administrasi lyceum kami yang
tercinta memberi tahu kami, “Pada akhir tahun, Anda masing-masing harus melindungi proyek individu. Mereka yang tidak melindungi proyek akan memiliki akademisi. hutang dan gosy (GIA-9) mereka tidak akan diizinkan. " Ternyata seperti tesis (di kelas 9, hanya super). Dari sekitar bulan September hingga Desember, teman saya Kirill (
kkirra ) dan saya memutuskan proyek seperti apa yang akan kami lakukan: Saya menginginkan sesuatu yang tidak terlalu sulit untuk dilaksanakan, tetapi pada saat yang sama sesuatu yang spektakuler dan asli. Pada akhirnya, kami memutuskan: kami memutuskan untuk membuat model tangan manusia, dan bahkan seperti itu menjalankan perangkat android (tahun ini, saya dan Cyril
secara tidak sengaja memasuki sekolah IT Samsung berdasarkan bacaan kami, jadi kami ingin menggunakan pengetahuan yang diperoleh dalam proyek) dia menerjemahkan teks yang dimasukkan ke dalam bahasa isyarat.
Bagian perangkat lunak
Aplikasi Android
Sekitar sebulan sebelum batas waktu, kami mulai mengerjakan proyek. Tahap pertama pekerjaan adalah pengembangan aplikasi android.
Sejujurnya, tata letak aplikasi adalah dan tetap yang paling sulit bagi saya: Saya punya masalah dengan tata letak ini dan tipenya (saya masih kelas sembilan, dan bahkan dari Fisika dan Matematika). Membuat aplikasi terlihat sama cantiknya di semua perangkat juga cukup sulit.
Tugas lain yang sulit, selain markup, adalah mengacaukan bluetooth ke aplikasi (kami memutuskan untuk menerapkan koneksi antara perangkat Android dan model melalui bluetooth): kami tidak diajarkan ini di kursus sekolah Samsung, tetapi tidak ada banyak informasi tentang hal itu di Internet ( Maksud saya informasi tentang implementasi koneksi antara perangkat android dan Arduino, yang dikendalikan oleh model).
Sekarang sedikit tentang kode itu sendiri (tautan ke GitHub di bagian paling akhir artikel). Program ini terdiri dari empat aktivitas: layar mulai dan satu aktivitas untuk setiap mode kontrol.
- Mode kontrol pertama adalah mode input teks, ketika pengguna memasukkan teks secara manual
- Yang kedua - dengan bantuan suara, aplikasi mengenali ucapan pengguna.
- Yang ketiga adalah mode manual. Pengguna dapat secara manual mengubah posisi jari untuk menggambarkan gerakan yang tidak disediakan oleh program.
Sejujurnya, saya sangat malu dengan kode saya: itu terlihat belum selesai. Faktanya adalah bahwa saya dapat merangkum koneksi bluetooth di kelas yang terpisah, membuat metode koneksi, mengirim data, memutuskan koneksi, dll. Namun, dalam setiap kegiatan, saya mendaftarkan semua hal di atas lagi, karena enkapsulasi menyebabkan beberapa (tidak terlalu besar) masalah. Namun demikian, untuk menyelesaikannya, perlu menghabiskan waktu mempelajari pekerjaan bluetooth, dan saya, seperti, terburu-buru untuk menulis kode sehingga ada waktu untuk mengembangkan dan mengimplementasikan perangkat keras.
Pemrograman Arduino
Dalam proses penerapan bagian perangkat lunak, perlu memprogram mikrokontroler Arduino, yang menerima data dari telepon pintar dan mengendalikan manipulatornya. Sebuah perpustakaan ditulis yang berisi data tentang menghubungkan servos ke Arduino (yang kontak untuk menghubungkan servos) dan metode untuk menerjemahkan teks ke dalam bahasa isyarat. Bagian utama dari perpustakaan adalah matriks, yang berisi informasi tentang posisi masing-masing jari, huruf-huruf yang sesuai dari alfabet Rusia dan berbagai metode untuk menyederhanakan kode. Matriks diberikan di bawah ini.
const int navigate [Hand::n][Hand::m]= { {224, 180, 180, 180, 180, 180},
"Hand" adalah file header perpustakaan (dengan ekstensi ".h") yang berisi prototipe fungsi dan konstanta.
Sekarang beberapa kata tentang metode terjemahan. Metode penerjemahan karakter menerima pengkodean huruf sebagai input, mencari baris yang diinginkan (elemen pertama dari setiap baris matriks adalah kode simbol), dan menetapkan servos sesuai dengan derajat rotasi yang ditunjukkan dalam baris (kode simbol ditempatkan pada tabel sehingga pengkodean dapat diubah jika diinginkan tabel, tanpa mengubah seluruh kode) kemudian menunggu beberapa detik sehingga isyarat dapat dibaca dan mereka tidak mengikuti satu demi satu. Metode terjemahan kalimat membagi kalimat menjadi karakter dan menggunakan metode terjemahan karakter.
Metode terjemahan karakter:
void Hand :: SymbolTranslate(unsigned char a){
Metode terjemahan proposal:
void Hand :: SentenceTranslate(char* s){
Metode juga mencatat pesan dengan teks yang diterima dan hasil terjemahan ("Succsessfull" dicetak), yang banyak membantu kami ketika men-debug kode
idle arduino.
Perangkat keras
Implementasi fase proyek ini dilakukan oleh
kkirra tersebut. Sebelum mulai bekerja, tampaknya mengembangkan gambar-gambar manipulator dan merakitnya akan menjadi tugas yang sangat sederhana, tetapi ini sama sekali tidak terjadi.
Awalnya, kami ingin mencetak detail manipulator pada printer 3D, kami mengambil cetak biru dari bank proyek Prancis yang terbuka (kami juga menggambar sendiri, tetapi kemudian memutuskan bahwa lebih baik mengambilnya dari sumber terbuka), tetapi setelah mengirim cetak biru untuk dicetak, kami belajar bahwa untuk mencetak bagian kita akan memakan waktu beberapa minggu, yang tidak kita miliki saat itu. Kemudian kami memutuskan untuk membuat manipulator dari bahan improvisasi: lengan dari pelat logam, jari-jari dari kayu lapis. Jari membungkuk karena servos di bawah kendali mikrokontroler Arduino. Contoh gambar disajikan di bawah ini.
- Warna merah - sumbu rotasi jari, jika Anda melihat jari-jari orang - ini adalah sendi
- Hijau - pita elastis kecil yang mengembalikan jari ke posisi semula (mis., Tendon)
Kesimpulan
Untuk meringkas. Kami telah mengumpulkan dan memprogram penerjemah bahasa isyarat (kami secara singkat menyebutnya "tunggul" untuk penampilannya). Proyek kami memungkinkan orang yang tidak tahu bahasa isyarat untuk berkomunikasi dengan orang dengan gangguan pendengaran menggunakan alfabet tanda Rusia. Implementasi perangkat lunak memungkinkan Anda untuk dengan cepat mengubah kode dan, tanpa merusak apa pun, menambahkan bahasa isyarat lainnya ke dalamnya (misalnya, bahasa Inggris).
Di masa depan, kami berencana untuk mencetak model yang sebelumnya dipilih pada printer 3D dan merakitnya (kami akan melakukan ini ketika kami mengambil istirahat dari ujian dan omong kosong lainnya).
Secara umum, ternyata cukup bagus, meskipun tidak terlalu cantik dalam hal firmware dan penampilan, tetapi yang utama adalah konsep kerja. Kami belajar banyak saat mengerjakan proyek ini (misalnya, fakta bahwa kami harus mulai mengerjakan proyek yang dirancang sepanjang tahun, di awal tahun, dan tidak beberapa minggu sebelum pengiriman) dan untuk ini kami sangat berterima kasih kepada para guru yang membantu kami dan terutama Damir Muratovich, ilmuwan ilmiah kami, yang membantu kami memecahkan sebagian besar masalah yang terkait dengan proyek.
Terima kasih sudah membaca sampai akhir!
Jika itu menjadi menarik bagi Anda, semua materi proyek (termasuk teks karya, presentasi, dll.) Tersedia untuk akses publik di
sini .
Sekali lagi terima kasih atas perhatian Anda!