Kysymys:
Arduino USB PID -laitteena
Anomaly
2014-02-27 20:37:49 UTC
view on stackexchange narkive permalink

Voiko HID-laitteen (kuten näppäimistön) rakentaa Arduino unolla?

Minulla on tällä hetkellä Arduinossa painikkeita, jotka antavat ulostuloja sarjajohdolle. Joten miten voin muuttaa nykyisen laiteohjelmistoni sellaiseksi, joka voi toimia kuten HID-näppäimistö?

  • Kirjoitetaanko uusi ikkuna-laiteohjain?
  • Pitäisikö minun luoda ohjelmisto taso, joka voisi ottaa sarjatietani ja saada Windowsin lukemaan sen HID-syötteenä?
  • Onko olemassa mitään parempaa tapaa saavuttaa tämä, jos se on mahdollista?
Olen väärässä, mutta tämä ei oikeastaan ​​koske Arduinoa. Se kertoo Windowsin puolen laiteajurin kehityksestä.
Ensimmäinen vastaus Googlessa: http://mitchtech.net/arduino-usb-hid-keyboard/ ... mutta et määritä, mikä Arduino. Leonardossa se on sisäänrakennettu ja sopiva ohjain on jo olemassa (katso http://arduino.cc/en/Reference/MouseKeyboard).
Käytän Unoa, mutta katson, mitä lähetit, koska viime kerralla harkitsimme DFU-päivitystä, mutta olemme melko peloissamme muurausmateriaaleista, koska komponentit eivät ole niin helposti saatavilla ja halpoja alueellani kuin useimmissa paikoissa.
@AsheeshR No, nyt olet lisännyt lisätietoja tukesi vaatimuksellesi, mutta se on vain linkki. Joten miksi et lähettänyt kommentista tarkempaa versiota vastauksena (jota ei pidetä linkkivastauksena) ja odottanut äänestyksiä? Se olisi ollut paljon rakentavampaa kuin äänestäminen sen sulkemisesta.
@AsheeshR Tämä numero on metassa nyt: http://meta.arduino.stackexchange.com/q/102/46
No, se on ehdottomasti mahdollista, koska Arduino Unolla on Atmega16u2 USB-ohjainsiruna, käyttäjä voi joko vilkkuvalla DFU: lla tai ICSP: llä työntää laitteelle Leonardin lähellä olevan laiteohjelmiston, joka saa Arduinon toimimaan HID-näppäimistönä. Windows-kehitykseen ei ole kyse, eikä ohjaimia rakenneta, koska USB / HID-laitteet tunnistetaan oletusarvoisesti. eli kysymys olisi avattava uudelleen.
Kaksi vastused:
#1
+16
zmo
2014-03-01 22:15:12 UTC
view on stackexchange narkive permalink

Voiko HID-laitteen (kuten näppäimistön) rakentaa Arduino unolla?

kyllä ​​se on! Ja siellä on loistava opetus siitä, miten se tehdään täällä

Minulla on tällä hetkellä Arduinossa painikkeita, jotka antavat ulostuloja sarjajohdolle. Joten miten voin muuttaa nykyisen laiteohjelmistoni sellaiseksi, joka voi toimia kuten HID-näppäimistö?

Kuten opetusohjelma näyttää, sinun on muutettava laiteohjelmakoodisi, joten tapahtumien tulostamisen sijaan sinun on todella laukaista tapahtumia. Sinun tarvitsee vain lisätä koodisi:

  void triggerKey (uint8_t mod, uint8_t chr) {uint8_t buf [8] = {mod, chr, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // paina Serial.write-näppäintä (buf, 8); // emuloida näppäimen painoviive (10); buf [1] = 0x00; // vapauta avain Serial.write (buf, 8);}  

Mitä täällä teet, lähetetään tärkeimmistä Arduino-mikrokontrolleritapahtumista sarjaliitännän kautta pienempään mikro-ohjaimeen, joka käsittelee USB: tä viestintä. Tuo mikrokontrolleri ottaa nämä avaimet "puskurit" ja siirtää ne, kun USB HID -näppäinpainike painaa USB: n yli.

Varo, että avaimen merkki ( chr tässä olevassa koodissa) on itse asiassa avainkoodi lähetin USB, jonka USB HID -ohjaimesi tulkitsee ja joka kääntää sen sitten todelliseksi hahmoksi käyttämällä näppäimistön nykyistä asettelua.

mod -merkki on yksi näppäimistöllä olevat muokkausnäppäimet (shift, control, alt ...), 0x00 ei ole modifikaattori.

  • kirjoitan uuden ikkunan laiteajuri?

Ei, et tarvitse! DFU-päivityksen myötä arduino nähdään Windows-näppäimistönä.

  • Pitäisikö minun luoda ohjelmistokerros, joka voisi ottaa sarjatietoni ja pyytää Windows lukemaan sen HID-tulona?

Sinun ei tarvitse tehdä sitä, ja se on itse asiassa erittäin huono idea monista syistä:

  • ratkaisusi ei olisi kannettava, ja sinun on siis hakkeroitava jokaiselle käyttämällesi alustalle.
  • ratkaisusi merkitsisi paljon uutta koodia; mitä enemmän koodia kirjoitetaan, sitä enemmän virheitä todennäköisesti on järjestelmässäsi,
  • ratkaisusi olisi todella hakkeroiva, koska se käyttäytyisi laiteajurina (ts. ytimen maa ) ottaa syötteen käyttäjäohjelmasta (ts. käyttäjän maa ) ja todennäköisesti ei toimi, ole helvetin virheenkorjaus ja altis turvallisuusongelmille ... Jos se on edes mahdollista!

Käytän Unoa, mutta katson, mitä lähetit, koska viime kerralla harkitsimme DFU-päivitystä, mutta pelkäämme tavallaan muurata

Lopuksi olet kommentissa huolissasi arduinosi muurimisesta. Uskokaa minua ja artikkelin kirjoittajaa, ettet voi tiilittää ohjelmointisalamaasi:

HUOMAUTUS: Ei ole mitään mahdollisuutta muurata laitetta tällä menetelmällä. Arduino-käynnistyslataimen laiteohjelmisto voidaan aina päivittää DFU-protokollalla!

Jos jokin menee pahasti vikaan ja saat käynnistyslataimen vioittumisen pienessä AVR: ssä (atmega8u2), voit silti päivittää sen käyttämällä toista arduinoa tai atmel-ohjelmoijaa käyttämällä USB-liitännän vieressä olevia 6 nastaa.

Loppujen lopuksi tiedä, että vain tapa virittää AVR, siis myös Arduino, on pelata sulakkeilla ja nollata ohjelmointisulakkeet. Ja silloinkin voit käyttää HVSP: tä laitteen tallentamiseen, vaikka uuden sirun ottaminen on usein vähemmän vaivaa.

Kiitos kaikesta hyödyllisestä tiedosta, päädyimme tähän.
No, oikea tapa virittää AVR on yli- / ylijännitteellä. Sitten se paahdetaan ...
Mutta sitten sitä ei kutsuta muuraus, vaan paistaminen tai kuten sanot paahtamista. Laita 15amppia MCU: n läpi, ja lyön vetoa, että näet sen hyppevän huoneen läpi ;-)
Kuinka vapauttaa tietty avain? Haluan jäljitellä avainta HOLD ja sitten vapauttaa. Ja myös linkissä merkki menee taulukkoon [2], tässä taas [1]. Miksi?
No, kuten esimerkissäni on esitetty, teet sen kahdessa vaiheessa, ensin painat näppäintä, sitten on viive, sitten vapautat sen. No, sitten sinun on luennoitava itsesi siitä, kuinka laitteiston näppäimistön toteutus toimii, se ei ole tavallaan luonnollista, ja ryhmän jokaisella arvolla on merkitys. Anteeksi, että minulla ei ole linkkiä atm: n jakamiseen, mutta aina kun löydät jotain etsimässä verkosta, lähetä uusi kommentti ☺
Selvyyden vuoksi. Tämä kyky riippuu Atmega16u2: sta, joten esim. tämä ei ole mahdollista Arduino nanolla?
#2
+8
user3486
2014-08-07 07:13:24 UTC
view on stackexchange narkive permalink

Loin projektin, joka korvaa Arduino Bootloaderin kokonaan. Voit ladata luonnoksia ja käyttää niitä piilotettuina. Katso Project HID Githubissa: https://github.com/NicoHood/HID

Tervetuloa Arduino SE: hen! Voitteko lisätä hieman kirjaston käytöstä? Kiitos!
Lue readme ja kokeile esimerkkejä? Sen kaikki siellä, ei tarvitse pettää kaikkea täällä. Kaikki Githubissa on ajan tasalla :)
Anteeksi jätkä, se näyttää hyvältä kirjastolta, mutta dokumentaatiosi puuttuu hullusti. Sikäli kuin voin kertoa, ei ole todellisia asennusohjeita, ja kokonaiset wikisi aiheet sanovat vain "TODO" (erityisesti peliohjaimen aihe on täysin tyhjä näin). : - /
Itse asiassa tässä on esitettävä peruskuvaus: vastausten vaaditaan olevan merkityksellisiä myös ilman ulkoista linkkiä, joka voi kuolla. Ja tämä ei ole.


Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...