Zedomax DIY121 - Kuinka tehdä oman "PS3 SIXAXIS-ohjain" style BASIC-ohjelmoitava USB-laite!
Klikkaa tästä nähdäksesi koko näytön tilassa
USB-laitteet ovat helposti käyttäjien asentaa ja perustaa (niin kauan kuin kaikki toimii oikein). Usein, voit Kytke USB-laite ja se toimii heti. Tämä pätee erityisesti syöttölaitteet, kuten hiiret ja näppäimistöt.
Nämä laitteet täyttävät tietyt laatuvaatimukset kerroksellinen päälle USB pöytäkirja: Human Interface Device. Lähes kaikki mahdolliset tyyppinen tulo on määritelty, koko "raportti avainsana" kieltä käytetään kertoa tietokoneelle, miten käsitellä panos. Tämä ei ole kovin yksinkertaista toteuttaa, kymmeniä erityisiä pyyntöjä on käsiteltävä asianmukaisesti. On monia vaiheita välillä liität USB-laitteen ja voi käyttää sitä, ja nämä kaikki tapahtuu muutamassa millisekunnissa ja viat askel laitetta ei toimi.
Mitä jos et tarvitse murehtia mitään siitä? Mitä jos voisit käyttää suosikki mikrokontrolleri, ei "jotain" ja panos näkyy tietokoneen oikeassa muodossa? Sinun ei tarvitse huolehtia monimutkaisen USB-koodi, HID eritelmiä tai rikkomatta USB-koodi, kun lisätään muita toimintoja tarvitset. Sinun ei tarvitse huolehtia paljon kirjoittamisesta optimoitua koodia, tai aina saada tavalla USB keskeyttää.
HID Portal
Juuri päätin tehdä. Pari vuotta sitten, olen kehittänyt USB-laite ja kävi läpi kaikki päänsärkyä saada USB-HID vauhtiin. Koska minulla oli jo kovaa työtä, päätin lisätä tapa vastaanottaa tietoja toisesta mikrokontrolleri ja käyttää sitä tietojen syöttö-muotoon HID koodia. Halusin käyttää Cubloc BASIC-ohjelmoitava ohjain käsitellä syötetty tietoja ja lähettää sen HID Portal. Oma testin soveltaminen olisi kiihtyvyysanturi perustuva HID ohjainta, Kytke laite tietokoneeseen ja se toimii.
Se ei tarvitse olla ohjainta, se voisi olla näppäimistö, hiiri, ja monet muut tarkastukset määritellään HID standardia. On mahdollista lisätä äänenvoimakkuus painikkeita laitteeseen ... ehkä on piirin mykistää tietokoneeseen, kun puhelin soi? Käännä kaikki jännite panoksensa ohjainta akselin, joka vaihtaa johonkin painiketta? Kaikki on mahdollista!
Päivitys: Olen päättänyt pienentää CUBLOC laitteiston alas CB220, ja sopivat kaiken huomioon lentokoneen malliin. Malli valittiin ottelun lentokone saatavilla Heroes of the Pacific pelin meidän testata ohjainta liitäntä.
Hardware Selitys
HID Portal perustuu vanhaan hanke minun, joka perustuu MC68HC908JB8 mikro-ja ohjelmoida konekielellä. Tietyistä syistä en voi itse vapauttaa koodi juuri nyt, mutta on paljon muita USB-hanketta siellä, joita voidaan soveltaa tähän tarkoitukseen. There's avoimen peräisin pehmeä USB täytäntöönpano ATtiny mikrokontrolleri, esimerkiksi.
Oma mikrokontrolleri ei ole sisäänrakennettua I2C ja SPI, joten minun piti toteuttaa omani. Olen myös ei ollut keskeyttänyt nastat saatavilla, joten minun ratkaisu tarvitaan perustuu äänestyspaikoille. Kun kaikki on sanottu ja tehty ja optimoitu, en voinut havaita reunoja nopeammin kuin 16kHz. Tämä on noin kymmenen kertaa hitaampaa kuin Siirrätulostetta saatavilla CUBLOC rekisterinpitäjä, joten en voinut käyttää sitä. Päädyin kirjallisesti oman muutos-rutiinitehtäviä BASIC saada tiedot HID Portal. Tämä voidaan välttää käyttämällä mikrokontrolleri joka on SPI-ja I2C rakennetaan jo, mutta JB8, mitä minulla oli kädessä.
Käytän kolme signaalia kommunikoida CUBLOC ohjain. Ensinnäkin on CLK signaali. HID Portal havaitsee nouseva reuna. Tässä vaiheessa, se lukee arvon läsnä Data Line. Tämä on siirtynyt osaksi rekisteriin ennen tavu on saatu, ja koodi siirtyy seuraavaan tavu. / RST linja on tapa synkronoida aloittaa jokaisen datapaketin asiassa ei ollut mitään väärä syöttö, kun LOW siinä paketin ja vähän indeksit nollaan.
HID-portaali on nyt ohjelmoitu toimimaan ohjainta, jossa on kolme akselia ja kahdeksan painiketta. Olen myös testannut sitä näppäimistön. Tulevaisuudessa kehitys, haluaisin tehdä HID Portal joustavuutta, anna ulkopuolisen valvojan valitse laitteen tyyppi ja kuinka monta jokaisen panosta tarvitaan. Se on joustava, jos sitä hyväksytty HID raportin kuvaajia, mutta se avaa mahdollisuuden tehdä enemmän virheitä, ja lopulta ei toimi laitetta.
Kiihtyvyysmittari DE-ACCM3D alkaen ulottuvuuden Engineering. CUBLOC vain lukee jännitteen sen Adin satamia ja muuntaa sen arvo on välillä -127 ja 127.
Jatkuu Next Page
















































