Arduino uno kullanarak bir HID cihazı (klavye gibi) oluşturmak mümkün mü?
Evet öyle! Ve burada bunun nasıl yapılacağı konusunda harika bir eğitim var
Şu anda, Arduino'da seri hattan çıktılar veren düğme girişleri var. Peki, mevcut bellenimi nasıl HID klavye gibi davranabilecek bir şeye dönüştürürüm?
Eğitimin size gösterdiği gibi, ürün yazılımı kodunuzu dönüştürmeniz gerekir, böylece olayları yazdırmak yerine olayları tetiklersiniz. Yapmanız gereken, kodunuza eklemek:
void triggerKey(uint8_t mod, uint8_t chr) {
uint8_t buf[8] = {mod, chr, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
// press key
Serial.write(buf, 8);
// emulate key press delay
delay(10);
buf[1] = 0x00;
// release key
Serial.write(buf, 8);
}
Burada yaptığınız şey, ana Arduino mikrodenetleyici olaylarınızdan seri hat üzerinden USB iletişimini yöneten daha küçük mikrodenetleyiciye göndermektir. Bu mikrodenetleyici bu "tampon" tuşlarını alacak ve USB HID Klavye tuşu USB üzerinden bastırdığında transfer edecektir.
Anahtar karakterin ( chr
buradaki kodda), aslında USB HID sürücünüz tarafından yorumlanan ve ardından klavyeniz için ayarladığınız geçerli düzeni kullanarak gerçek bir karaktere dönüştüren USB üzerinden gönderilen bir anahtar kod olduğunu unutmayın.
mod
Karakteri, klavyeden (vardiya, kontrol, alt ...) üzerindeki değiştirici anahtarlarından biridir 0x00
hiçbir değiştirici varlık.
- Yeni bir pencere aygıtı sürücüsü yazayım mı?
Hayır, ihtiyacın yok! DFU yükseltmesiyle, arduino'nuz Windows tarafından bir USB klavye olarak görülecektir.
- Seri verilerimi alabilecek ve pencereleri HID girişi olarak okuyabilecek bir yazılım katmanı oluşturayım mı?
Bunu yapmanıza gerek yok ve aslında birçok nedenden dolayı çok kötü bir fikir:
- çözümünüz taşınabilir olmayacak ve bu nedenle kullanabileceğiniz her platform için bir şeyler kırmanız gerekecek,
- çözümünüz çok sayıda yeni kod anlamına gelir; Bir kod ne kadar çok yazarsa, sisteminizde o kadar çok hata olabilir.
- çözümünüz , bir kullanıcı programından (yani, kullanıcı ülkesi ) girdi alan bir aygıt sürücüsü (yani çekirdek alanı alanı ) gibi davranacağından ve çalışmaması, hata ayıklaması ve güvenlik sorunlarına yatkın olması muhtemel olduğu için son derece yıkıcı olacaktır . .. Bunu yapmak mümkün olsa bile!
Bir Uno kullanıyorum, ancak ne gönderdiğine bakacağım çünkü DFU güncellemesini en son düşündüğümüz zaman, ancak tuğla işlerinden korktuk
Sonunda, bir yorumda, arduino'nuzu örmekle ilgili endişeleriniz var. Beni ve yazarı Lütfen inan makalesinde bunu olamaz tuğla senin arduino bir firmware flaş yapıyor:
NOT: Bu yöntemi kullanarak cihazı 'tuğlalama' olasılığı yoktur. Arduino bootloader üretici yazılımı DFU protokolü kullanılarak her zaman güncellenebilir!
Bir şeylerin gerçekten kötü bir şekilde yanlış gitmesi ve küçük AVR'de (atmega8u2) bir bootloader bozulması olması durumunda , USB fişinin yanındaki 6 pini kullanarak başka bir arduino veya bir
atmel programcısı kullanarak onu tekrar kaldırabilirsiniz .
Sonunda, bir AVR'yi, dolayısıyla bir Arduino'yu tuğlalamanın tek yolunun sigortalarla oynamak ve programlama sigortalarını sıfırlamak olduğunu biliyorum . Ve o zaman bile, cihazınızı kurtarmak için HVSP kullanabilirsiniz
, ancak yeni çip almak genellikle daha az sıkıntı olur.