Arduino USB HID: nä

Onko mahdollista rakentaa HID-laite (kuten näppäimistö) Arduino unolla?

Tuolloin Minulla on Arduinossa nappituloja, jotka antavat lähtöjä 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 sarjatietoni ja saada Windowsin lukemaan sen HID-syötteenä?
  • Onko olemassa mitään parempaa tapaa saavuttaa tämä, jos se on mahdollista?

Kommentit

  • Voin olla väärässä, mutta kyse ei ole oikeastaan Arduinosta. Tietoja Window ' -laiteajurien kehityksestä.
  • Ensimmäinen vastaus Googlessa: mitchtech.net/arduino -usb-hid-näppäimistö … mutta et määritä, mikä Arduino. Leonardossa se on ' s sisäänrakennettu ja sopiva ohjain on jo olemassa (katso arduino.cc/en/Reference/MouseKeyboard).
  • I ' m käyttämällä Unoa, mutta minä ' tarkastelen lähettämääsi, koska viime kerralla pidimme DFU-päivitystä, mutta ' pelkäsimme tiiliä, koska komponentit eivät ole ' t niin helposti saatavilla ja halpoja omalla alueellani kuten useimmissa paikoissa.
  • @AsheeshR Tämä numero on metassa nyt: meta.arduino.stackexchange.com/q/102/46
  • No, että ' on ehdottomasti mahdollista, koska Arduino Unossa on Atmega16u2 USB-ohjainsiruna, käyttäjä voi käyttää joko DFU: ta tai ICSP: tä vilkkumalla työnnä laitteeseen laiteohjelmisto, joka on lähellä leonardo ' -laitteita, mikä saa Arduinon toimimaan HID-näppäimistönä. ' ei ole Windowsin kehitystyötä, USB / HID-laitteina rakennettavaa ohjainta ei tunnisteta oletusarvoisesti. eli kysymys tulisi avata uudelleen.

Vastaa

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

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

Toistaiseksi minulla on Arduinossa painikkeita, jotka antavat lähtöjä sarjalinjalle. Kuinka siis 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 sinä käynnistät 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}; // press key Serial.write(buf, 8); // emulate key press delay delay(10); buf[1] = 0x00; // release key Serial.write(buf, 8); } 

Se mitä teet täällä, lähetetään tärkeimmistä Arduino-mikrokontrolleritapahtumista sarjajohdon kautta pienempään mikro-ohjaimeen, joka käsittelee USB-viestintää. Tuo mikro-ohjain ottaa nämä avaimet ”puskurit” ja siirtää ne USB HID -näppäimistön näppäimen painalluksella USB: n yli.

Varo, että avainkirjain (chr tässä koodissa ), on itse asiassa USB: n kautta lähetetty avainkoodi, jonka USB HID -ohjaimesi tulkitsee, joka kääntää sen sitten todelliseksi hahmoksi käyttämällä nykyistä näppäimistösi asetusta.

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

  • Kirjoitetaanko uusi ikkuna-laiteohjain?

Ei, et tarvitse! DFU-päivityksen myötä Windows näkee arduinosi USB-näppäimistönä.

  • Luonko ohjelmistokerroksen, joka voisi viedä sarjani tietoja ja anna Windowsin lukea ne HID-syötteenä?

Sinun ei tarvitse tehdä sitä, ja se on todella huono idea monista syistä:

  • ratkaisusi ei olisi kannettava, joten sinun pitäisi hakata jotain jokaiselle käyttämällesi alustalle.
  • ratkaisusi merkitsisi paljon uusi koodi; mitä enemmän koodia kirjoitetaan, sitä enemmän vikoja 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 jopa mahdollista!

Käytän Unoa, mutta katson, mitä lähetit, koska viime kerralla harkitsimme DFU-päivitystä, mutta tavallaan peloissaan muuraussuhteista.

Lopuksi olet kommentissa huolissasi arduinosi muurimisesta.Uskokaa minua ja -artikkelin kirjoittajaa, että ei voi tiilaa arduinoasi suorittamalla laiteohjelmistosalama:

HUOMAUTUS: Ei ole 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ää se toisella arduinolla tai atmel-ohjelmoijalla USB-liitännän vieressä olevalla 6 nastalla.

Loppujen lopuksi tiedä, että vain tapa tiellä AVR, joten 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.

Kommentit

  • Kiitos kaikesta hyödyllisestä tiedosta, päädyimme tähän.
  • No, oikea tapa AVR: n muuraus on yli nykyinen / Sitten se paahdetaan …
  • Mutta sitten sitä ' ei kutsuta muuraus, vaan paistaminen tai kuten sanot paahtamisen. Laita 15amppia MCU: n läpi, ja vedon vetoni, että ' näen sen hyppyvän huoneen läpi 😉
  • Kuinka vapauttaa tietty avain? Haluan jäljitellä avain pidä sitten vapauta. Ja myös linkissä merkki menee taulukkoon [2], kun taas tässä menee kohtaan [1]. Miksi?
  • No, kuten esimerkissäni osoitetaan, teet sen kahtia vaiheet, ensin painat näppäintä, sitten ' s viive, sitten vapautat sen. No, sitten ' sinun on luennoi itsellesi kuinka laitteistonäppäimistö toimii ntation toimii, se ' on tavallaan ei luonnollinen, ja matriisin 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 ☺

Vastaa

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

kommentit

  • 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 dokumentaatiostasi puuttuu hullu. Siellä ' ei ole todellisia asennusohjeita, sikäli kuin voin kertoa, ja kokonaiset wikisi aiheet sanovat vain " TODO " (erityisesti peliohjaimen aihe on tällä tavalla täysin tyhjä). : – /
  • 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.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *