Apakah mungkin untuk membangun perangkat HID (seperti keyboard) menggunakan Arduino uno?
Saat ini, saya memiliki input tombol pada Arduino yang memberikan output pada baris serial. Jadi, bagaimana saya bisa mengubah firmware saya saat ini menjadi sesuatu yang dapat berperilaku seperti keyboard HID?
- Haruskah saya menulis driver perangkat jendela baru?
- Haruskah saya membuat lapisan perangkat lunak yang dapat mengambil data serial saya dan meminta windows membacanya sebagai input HID?
- Apakah ada cara yang lebih baik untuk mencapai ini, jika memungkinkan?
arduino-uno
serial
Anomali
sumber
sumber
Jawaban:
ya itu! Dan ada tutorial yang bagus tentang bagaimana melakukannya di sini
Seperti yang ditunjukkan oleh tutorial, Anda perlu mengubah kode firmware sehingga alih-alih mencetak acara, Anda malah memicu peristiwa. Yang perlu Anda lakukan, adalah menambahkan kode Anda:
Apa yang Anda lakukan di sini, adalah mengirim dari peristiwa mikrokontroler Arduino utama Anda melalui saluran serial ke mikrokontroler yang lebih kecil yang menangani komunikasi USB. Mikrokontroler itu akan mengambil "buffer" kunci itu dan mentransfernya saat tombol Keyboard HID USB ditekan melalui USB.
Hati-hati dengan karakter kunci (
chr
dalam kode di sini), sebenarnya kode kunci yang dikirim melalui USB yang ditafsirkan oleh driver USB HID Anda, yang kemudian menerjemahkannya menjadi karakter nyata menggunakan tata letak saat ini yang telah Anda siapkan untuk keyboard Anda.The
mod
karakter salah satu kunci pengubah Anda miliki di keyboard (shift, kontrol, alt ...),0x00
yang tidak ada modifier.Tidak, kamu tidak perlu! Dengan pemutakhiran DFU, arduino Anda akan dianggap sebagai keyboard USB oleh windows.
Anda tidak perlu melakukan itu, dan itu sebenarnya ide yang sangat buruk karena berbagai alasan:
Akhirnya, Anda memiliki masalah, dalam komentar, tentang melapisi arduino Anda. Tolong percayalah kepada saya dan penulis artikel bahwa Anda tidak dapat menghapus arduino Anda dengan melakukan flash firmware:
CATATAN: Tidak ada kemungkinan 'bricking' perangkat menggunakan metode ini. Firmware bootloader Arduino selalu dapat diperbarui menggunakan protokol DFU!
Seandainya ada sesuatu yang sangat salah, dan Anda mendapatkan bootloader rusak di AVR kecil (atmega8u2), Anda masih dapat mem-reflash-nya menggunakan arduino lain atau pemrogram atmel menggunakan 6 pin di sebelah colokan USB.
Pada akhirnya, ketahuilah bahwa satu - satunya cara untuk memblokir AVR, demikian juga Arduino, adalah dengan bermain dengan sekering dan mengatur ulang sekering pemrograman. Dan bahkan kemudian, Anda dapat menggunakan HVSP untuk menyimpan perangkat Anda, meskipun seringkali lebih sulit untuk mengambil chip baru.
sumber
Saya membuat proyek yang sepenuhnya menggantikan Arduino Bootloader. Anda dapat mengunggah sketsa dan menggunakannya sebagai HID. Lihat HID Proyek di Github: https://github.com/NicoHood/HID
sumber