Küsimus:
Arduino USB-peidikuna
Anomaly
2014-02-27 20:37:49 UTC
view on stackexchange narkive permalink

Kas Arduino uno abil on võimalik HID-seadet (näiteks klaviatuuri) ehitada?

Praegu on mul Arduinos nuppude sisendid, mis annavad väljundeid jadaliinile. Niisiis, kuidas ma saan oma praeguse püsivara muuta selliseks, mis võib käituda nagu HID-klaviatuur?

  • Kas ma pean kirjutama uue akna seadme draiveri?
  • Kas ma pean looma tarkvara kiht, mis võiks minu seeriandmeid võtta ja lasta akendel neid HID-sisendina lugeda?
  • Kas selle saavutamiseks on mõni parem viis, kui see üldse võimalik on?
Ma võin eksida, kuid see pole tegelikult Arduino kohta. Selle kohta Windowsi küljel seadme draiveri arendamine.
Esimene vastus Google'is: http://mitchtech.net/arduino-usb-hid-keyboard/ ... kuid te ei täpsustanud, milline Arduino on. Leonardos on see sisseehitatud ja sobiv draiver on juba olemas (vt http://arduino.cc/en/Reference/MouseKeyboard).
Ma kasutan Unot, kuid vaatan, mida te postitasite, sest eelmine kord kaalusime DFU värskendust, kuid me kardame üsna palju müüritise värke, kuna komponendid pole minu piirkonnas nii kergesti kättesaadavad ja odavad kui enamikus kohtades.
@AsheeshR Noh, nüüd lisasite oma nõude varundamiseks rohkem teavet, kuid see on lihtsalt link. Miks te siis ei postitanud vastuseks selle kommentaari täpsemat versiooni (seda ei saa pidada lingivastuseks) ja ei oodanud poolthääli? See oleks olnud palju konstruktiivsem kui selle sulgemise hääletamine.
@AsheeshR See väljaanne on nüüd metas: http://meta.arduino.stackexchange.com/q/102/46
Noh, see on kindlasti võimalik, kuna Arduino Unol on USB-draiveri kiibina Atmega16u2, saab kasutaja kasutada vilkuvat DFU-d või ICSP-d, et suruda seadme leonardo lähedane püsivara, mis paneb Arduino käituma HID-klaviatuurina. See ei hõlma Windowsi arendust, ühtegi draiverit ei saa ehitada, kuna vaikimisi tuvastatakse USB / HID-seadmed. st see küsimus tuleks uuesti avada.
Kaks vastused:
#1
+16
zmo
2014-03-01 22:15:12 UTC
view on stackexchange narkive permalink

Kas Arduino uno abil on võimalik HID-seadet (näiteks klaviatuuri) ehitada?

jah see on! Ja seal on suurepärane õpetus, kuidas seda teha siin

Praegu on mul Arduinos nuppude sisendid, mis annavad väljundeid jadajoonele. Niisiis, kuidas ma saan oma praeguse püsivara muuta selliseks, mis võib käituda nagu HID-klaviatuur?

Nagu õpetus näitab, peate oma püsivara koodi teisendama, nii et sündmuste printimise asemel peate tegelikult käivitavad sündmused. Peate oma koodile lisama:

  void triggerKey (uint8_t mod, uint8_t chr) {uint8_t buf [8] = {mod, chr, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // vajutage klahvi Serial.write (buf, 8); // jäljendada klahvivajutuse viivitust (10); buf [1] = 0x00; // vabastage võti Serial.write (buf, 8);}  

Mis te siin teete, saadetakse teie peamistest Arduino mikrokontrolleri sündmustest üle jadaliini väiksemale mikrokontrollerile, mis haldab USB-d suhtlemine. See mikrokontroller võtab need võtme "puhvrid" ja edastab need, kui USB HID-klahviklahv vajutab USB-d.

Pidage meeles, et võtmemärk (siin olevas koodis chr ) on tegelikult võtmekood saatja USB, mida tõlgendab teie USB HID draiver, mis seejärel tõlgib selle tegelikuks tähemärgiks, kasutades praegust paigutust, mille olete oma klaviatuuri jaoks seadistanud.

Märk mod on üks klaviatuuril olevad muutmisklahvid (tõstuklahv, juhtklahv, alt ...), 0x00 pole modifikaator.

  • Kas kirjutan uue akna seadme draiver?

Ei, te ei vaja seda! DFU värskenduse korral nähakse teie arduino Windowsi USB-klaviatuurina.

  • Kas peaksin looma tarkvarakihi, mis võiks minu seeriandmeid võtta ja lasta Windowsil neid HID-sisendina lugeda?

Teil pole seda vaja teha ja see on tegelikult väga halb idee mitmel põhjusel:

  • teie lahendus ei oleks kaasaskantav ja seega peate iga kasutatava platvormi jaoks midagi häkkima,
  • teie lahendus tähendaks palju uut koodi; mida rohkem koodi kirjutada, seda rohkem vigu on teie süsteemis tõenäoliselt,
  • teie lahendus oleks tõepoolest häkkinud, kuna see käituks seadme draiverina (st kernel land ) võttes sisendit kasutajaprogrammist (st kasutaja maa ) ja tõenäoliselt ei tööta, olge paganama silumiseks ja altid turvaküsimustele ... Kui see on isegi võimalik!

Kasutan Unot, kuid vaatan, mida te postitasite, sest viimati kaalusime DFU värskendust, kuid me kardame üsna palju müüritise värke

Lõpuks on teil kommentaaris muret oma arduino müürimise pärast. Uskuge mind ja artikli autorit, et te ei saa oma püsivara välklambi kasutamist tellida:

MÄRKUS. Pole mingit võimalust selle meetodi abil seadme müüritamine. Arduino alglaaduri püsivara saab alati värskendada DFU-protokolli abil!

Juhul kui midagi läheb väga valesti ja teil on väikeses AVR-is (atmega8u2) alglaadija rikutud, saate selle siiski uuendada teise arduino abil või atmeli programmeerijaga, kasutades USB-pistiku kõrval asuvaid 6 tihvti.

Lõpuks teadke, et ainult AVR-i, seega ka Arduino, tellistamise viis on mängida kaitsmetega ja lähtestada programmeerimiskaitsmed. Ja isegi siis võite seadme salvestamiseks kasutada HVSP, kuigi sageli on uue kiibi võtmisega vähem probleeme.

Täname kogu kasuliku teabe eest, jõudsime lõpuks selleni.
Noh, AVR-i tellimise õige viis on üle- või ülepinge. Siis röstitakse ...
Kuid siis ei nimetata seda müüritiseks, vaid selle praadimiseks või nagu te ütlete röstimiseks. Pange 15ampi läbi MCU ja vean kihla, et näete, kuidas see ruumist läbi hüppab ;-)
Kuidas konkreetne võti vabastada? Ma tahan jäljendada võtit HOLD ja seejärel vabastada. Ja ka lingis läheb märk massiivi [2], siin aga [1]. Miks?
noh, nagu minu näites näidatud, teete seda kahes etapis, kõigepealt vajutate klahvi, siis on viivitus, siis vabastate selle. Noh, siis peate loengut looma riistvara klaviatuuri rakendamise kohta, see pole omamoodi loomulik ja massiivi igal väärtusel on tähendus. Andke andeks, et mul pole linki atm-i jagamiseks, kuid alati, kui leiate midagi veebis otsivat, postitage palun uus kommentaar ☺
Lihtsalt, et oleks selge. See võime sõltub Atmega16u2-st, nii et nt. see pole Arduino nanoga võimalik?
#2
+8
user3486
2014-08-07 07:13:24 UTC
view on stackexchange narkive permalink

Ma lõin projekti, mis asendab täielikult Arduino alglaaduri. Saate visandeid üles laadida ja kasutada HID-na. Vaadake projekti HID Githubis: https://github.com/NicoHood/HID

Tere tulemast Arduino SE-sse! Kas saaksite lisada natuke oma teegi kasutamise kohta? Aitäh!
Loe readme-i ja proovige näiteid? Kõik see on olemas, siin pole vaja kõike petta. Githubis on kõik ajakohane :)
Vabandust kutt, tundub, et see on lahe raamatukogu, kuid teie dokumentatsioon on hullumeelne. Minu teada pole tõelisi installimisjuhiseid ja kogu teie vikis olevad teemad ütlevad lihtsalt "TODO" (täpsemalt on gamepadi teema niimoodi täiesti tühi). : - /
Tegelikult on siin vaja esitada põhikirjeldus: vastused peavad olema tähendusrikkad ka ilma välise seoseta, mis võib surra. Ja see pole nii.


See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...