Zedomax DIY121 - Hoe maak je eigen "PS3 SIXAXIS controller" stijl BASIC-programmeerbare USB-apparaat!
Klik hier om in Full Screen Mode
USB-apparaten zijn makkelijk voor de gebruikers te installeren en instellen (zolang alles goed werkt). Vaak je gewoon een USB-apparaat en het werkt meteen. Dit geldt met name voor input-apparaten, zoals muizen en toetsenborden.
Deze apparaten voldoen aan een specificatie lagen boven op de USB-protocol: Human Interface Device. Bijna alle mogelijke type ingang wordt gedefinieerd; een hele "rapport tem 'taal wordt gebruikt om de computer vertellen hoe de input-proces. Dit is niet heel eenvoudig uit te voeren; tientallen specifieke verzoeken moeten naar behoren worden behandeld. Er zijn veel stappen tussen het aansluiten van een USB-apparaat en kunnen gebruiken; deze allemaal plaatsvinden in een paar milliseconden en het falen van een trede, de inrichting zal niet werken.
Wat als je geen zorgen te maken over een van? Wat als u uw favoriete microcontroller, kunnen gebruiken doen "iets" en de input verschijnt op de computer in het juiste formaat? U zou geen zorgen te maken over ingewikkelde USB-code, HID specificaties, of het breken van uw USB-code bij het toevoegen van de andere functies die u nodig hebt. Je zou niet te veel zorgen over het schrijven van geoptimaliseerde code, of altijd in de weg van USB interrupts.
HID Portal
Dat is precies wat ik besloten om te doen. Een paar jaar geleden, ontwikkelde ik een USB-apparaat en ging door alle hoofdpijn op het krijgen van een USB-HID up and running. Aangezien ik al het harde werk gedaan had, besloot ik om een methode voor het ontvangen van gegevens van een andere microcontroller toe te voegen en het gebruik van die gegevens als de input-stroom voor de HID code. Ik wilde het gebruik van een Cubloc BASIC-programmeerbare controller mijn input gegevens te verwerken en te sturen naar de HID Portal. Mijn test applicatie zou een versnellingsmeter op basis HID joystick; gewoon het apparaat aansluiten op de computer en het zal werken.
Het hoeft niet te worden een joystick, het kan een toetsenbord, een muis, of vele andere controles die door de HID-standaard. Het is mogelijk om volume knoppen toe te voegen aan een apparaat ... misschien een circuit dempen uw computer wanneer de telefoon overgaat? Draai een spanning input in een joystick-as, een schakelaar in een knop? Alles is mogelijk!
Update: Ik heb besloten om de CUBLOC hardware tot een CB220 krimpen, en past alles in een vliegtuig model. Het model werd gekozen om overeenkomen met een vliegtuig beschikbaar in de Heroes of the Pacific spel dat we gebruikt om de joystick interface te testen.
Hardware Toelichting
De HID Portal is gebaseerd op een oud project van mij, op basis van een microcontroller MC68HC908JB8 en geprogrammeerd in assembler. Voor bepaalde redenen kan ik eigenlijk niet vrijgeven van de code nu, maar er zijn genoeg andere USB-projecten die er zijn die kunnen worden aangepast voor dit doel. Er is een open-source soft USB-uitvoering voor de ATtiny microcontroller, bijvoorbeeld.
Mijn microcontroller heeft geen ingebouwde I2C of SPI, dus ik moest een van mijn eigen uit te voeren. Ik heb ook niet over onderbreken pinnen beschikbaar, wat betekent dat mijn oplossing diende te worden gebaseerd op de verkiezingsdag. Toen was alles gezegd en gedaan en geoptimaliseerd, kon ik niet randen detecteren sneller dan 16kHz. Dit is ongeveer tien keer langzamer dan de verschuiving van de output beschikbaar CUBLOC controller, zodat ik niet kon gebruiken dat. Uiteindelijk heb ik met het schrijven van mijn eigen shift-out routine in BASIC om de gegevens te krijgen om de HID Portal. Dit kan worden vermeden door gebruik van een microcontroller die SPI of I2C gebouwd in al, maar de JB8 is wat ik had bij de hand.
Ik gebruik drie signalen om te communiceren met de CUBLOC controller. Ten eerste is er een CLK signaal. De HID Portal detecteert een stijgende flank. Op dat punt, leest de waarde aanwezig is op de DATA lijn. Dit is verschoven naar een register tot een byte is ontvangen, en de code naar de volgende byte. De / RST lijn is een manier om het begin van elk datapakket synchroniseren in geval was er geen valse input; wanneer zij stelt de LOW-pakket en wat indexen op nul.
De HID Portal is momenteel geprogrammeerd op te treden als een joystick met drie assen en acht knoppen. Ik heb ook getest als een toetsenbord. In de toekomstige ontwikkeling zou ik graag de HID Portal flexibeler te maken, laat de externe controller selecteert u het type apparaat en hoeveel van elke input nodig zijn. Het zou de meest flexibele indien zij direct aanvaard HID verslag descriptoren, maar dat opent de mogelijkheid om meer fouten te maken en eindigen met een niet werkend apparaat.
De versnellingsmeter is een DE-ACCM3D van Dimension Engineering. De CUBLOC leest gewoon de spanning op haar ADIN havens en converteert naar een waarde tussen -127 en 127.
Vervolg op Next Page

















































