Arduino ca USB HID

Este posibil să construiți un dispozitiv HID (cum ar fi o tastatură) folosind un Arduino uno?

La momentul respectiv fiind, am intrări de butoane pe Arduino care dau ieșiri pe linia serială. Deci, cum pot transforma firmware-ul meu actual în ceva care se poate comporta ca o tastatură HID?

  • Să scriu un nou driver de dispozitiv pentru fereastră?
  • Să creez un software strat care ar putea lua datele mele seriale și ferestrele să le citească ca intrare HID?
  • Există vreo modalitate mai bună de a realiza acest lucru, dacă este posibil?

Comentarii

  • S-ar putea să mă înșel, dar nu este vorba despre Arduino. Este vorba despre dezvoltarea driverului de dispozitiv lateral Window '.
  • Primul răspuns în google: mitchtech.net/arduino -usb-hid-keyboard … dar nu ați specificat ce Arduino. Pe un computer Leonardo ' este încorporat, iar driverul corespunzător există deja (consultați arduino.cc/en/Reference/MouseKeyboard).
  • Eu ' m folosind un Uno, dar ' mă voi uita la ceea ce ai postat pentru că data trecută am considerat actualizarea DFU, dar ' ne e teamă de lucrurile de cărămidă, deoarece componentele nu sunt ' t ca fiind ușor disponibile și ieftine în zona mea ca în majoritatea locurilor.
  • @AsheeshR Această problemă este acum pe meta: meta.arduino.stackexchange.com/q/102/46
  • Ei bine, ' este cu siguranță posibil, deoarece Arduino Uno are un Atmega16u2 ca cip de driver USB, utilizatorul poate folosi fie DFU, fie ICSP intermitent apăsați pe dispozitiv un firmware aproape de leonardo ' care va face ca Arduino să se comporte ca o tastatură HID. ' nu implică dezvoltarea de Windows, nu există driver care să fie construit ca dispozitive USB / HID sunt recunoscute implicit. adică acea întrebare ar trebui redeschisă.

Răspuns

Este posibil să construiți un dispozitiv HID (ca o tastatură) folosind un Arduino uno?

da, este! Și „există un tutorial minunat despre cum să faci asta peste aici

La Deocamdată, am intrări de butoane pe Arduino care dau ieșiri pe linia serială. Deci, cum pot transforma firmware-ul meu actual în ceva care se poate comporta ca o tastatură HID?

După cum vă arată tutorialul, trebuie să vă transformați codul de firmware, astfel încât, în loc să imprimați evenimentele, să declanșați evenimente. Ce trebuie să faceți este să adăugați la codul dvs.:

Ce faceți aici, este să trimiteți de la evenimentele dvs. principale de microcontroler Arduino pe linia serială la microcontrolerul mai mic care gestionează comunicațiile USB. Microcontrolerul respectiv va prelua acele „buffere” ale tastelor și le va transfera pe măsură ce tasta USB HID Keyboard apasă peste USB.

Atenție la caracterul cheie (chr din cod aici ), este de fapt un cod de cheie trimis prin USB care este interpretat de driverul USB HID, care îl traduce apoi într-un caracter real folosind aspectul curent pe care l-ați configurat pentru tastatură.

mod este una dintre tastele modificatoare pe care le aveți pe tastatură (shift, control, alt …), 0x00 nefiind un modificator.

  • Să scriu un nou driver de dispozitiv pentru fereastră?

Nu, nu ai nevoie! Odată cu actualizarea DFU, arduino-ul dvs. va fi văzut ca o tastatură USB de către Windows.

  • Să creez un strat software care ar putea lua seria mea date și Windows le-a citit ca intrare HID?

Nici nu trebuie să faceți acest lucru și este de fapt o idee foarte proastă pentru multe motive:

  • soluția dvs. nu ar fi portabilă și, prin urmare, ar trebui să hack ceva pentru fiecare platformă pe care o puteți utiliza,
  • soluția dvs. ar implica o mulțime de cod nou; cu cât mai multe coduri se scriu, cu atât este mai probabil să existe bug-uri în sistemul dvs.,
  • soluția dvs. ar fi cu adevărat prost, deoarece s-ar comporta ca un driver de dispozitiv (adică kernel land ) preluarea de intrări dintr-un program de utilizator (adică landul utilizatorului ) și este probabil să nu funcționeze, să fie un drac de depanat și predispus la probleme de securitate … Dacă asta este chiar posibil!

Eu folosesc un Uno, dar mă voi uita la ceea ce ați postat pentru că data trecută am luat în considerare actualizarea DFU, dar „re mi-e frică de lucrurile de cărămidă

În sfârșit, într-un comentariu, vă faceți griji cu privire la blocarea arduino-ului.Vă rog să mă credeți și autorul articol pe care nu îl puteți caramidați-vă arduino-ul făcând o bliț de firmware:

NOTĂ: Nu există nicio șansă de „blocare” a dispozitivului folosind această metodă. Firmware-ul Arduino bootloader poate fi oricând actualizat utilizând protocolul DFU!

În cazul în care ceva nu se înrăutățește cu adevărat și veți obține o corupție a bootloader-ului în micul AVR (atmega8u2), puteți totuși reface utilizând un alt arduino sau un programator atmel utilizând cei 6 pini de lângă mufa USB.

La final, știți că numai mod de a face cărămizi un AVR, deci și un Arduino , este să joci cu siguranțele și să resetezi siguranțele de programare. Și chiar și atunci, puteți utiliza HVSP pentru a vă salva dispozitivul, deși este adesea mai puțin dificil să luați doar un nou cip.

Comentarii

  • Vă mulțumim pentru toate informațiile utile, am ajuns să obținem acest lucru.
  • Ei bine, modul corect de a împiedica un AVR este cu supracurent / supratensiune. Apoi va fi prăjit …
  • Dar apoi, ' nu se numește cărămidă, ci prăjire sau, după cum spui, prăjire. Introduceți 15amp-uri prin MCU și pun pariu că ' îl veți vedea sări prin cameră 😉
  • Cum să eliberați o anumită cheie? Vreau să imit o cheie HOLD apoi eliberați. Și, de asemenea, în link, personajul merge la matrice [2] în timp ce aici merge la [1]. De ce?
  • Ei bine, așa cum se arată în exemplul meu, o faceți în două pași, mai întâi apăsați tasta, apoi ' este întârzierea, apoi o eliberați. Ei bine, atunci ' trebuie să vorbiți-vă despre modul în care funcționează tastatura hardware funcționează, ' nu este natural și fiecare valoare a matricei are un sens. Scuzați-mă că nu am un link pentru a distribui monedă automată, dar ori de câte ori găsiți ceva care caută pe web, vă rugăm să postați un comentariu nou ☺

Răspunde

Am creat un proiect care înlocuiește complet Arduino Bootloader. Puteți încărca schițe și o puteți folosi ca HID. Vezi Project HID pe Github: https://github.com/NicoHood/HID

Comentarii

  • Bine ați venit la Arduino SE! Puteți adăuga un pic despre cum să utilizați biblioteca dvs.? Mulțumim!
  • Citiți readme și încercați exemplele? Totul este acolo, nu este nevoie să înșele totul aici. Totul de pe Github este actualizat 🙂
  • Ne pare rău, tipule, pare o bibliotecă grozavă, dar documentația dvs. lipsește nebunesc. ' nu există instrucțiuni reale de instalare din câte îmi dau seama și subiecte întregi din wiki-ul tău spun doar " TODO " (în mod specific, subiectul gamepad este complet gol ca acesta). : – /
  • De fapt, este nevoie să prezentăm o descriere de bază aici: răspunsurile trebuie să fie semnificative chiar și fără legătura externă, care ar putea muri. Și acesta nu este.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *