Ik ben bezig met het maken van een project dat zal bestaan uit een stuk hardware en software. Dit moet gehandicapte mensen in staat stellen Xbox 360 spellen te spelen. Het bestaat eigenlijk gewoon uit een microcontroller aangesloten op een computer via usb en aangesloten op de verbindingen van de buttons, joysticks en triggers van een Xbox 360 controller. Dit stelt de gebruiker in staat om allerlei middelen te gebruiken die aan te sluiten zijn op de computer om de Xbox te besturen (denk aan spraakbesturing, face tracking, vocal joysticks etc.).
Ik heb al een prototype gemaakt waarmee ik de Xbox kan besturen met een computer, maar ik wil het nu nog uitbreiden en ik zou dit graag goed (lees professioneel) aanpakken. Dit is ook de reden dat ik dit verhaal hier post, ik zou namelijk graag jullie ideeën horen zodat het uiteindelijke product (dat tegen kostprijs beschikbaar zal worden gesteld) zo goed mogelijk werkt en zo volledig mogelijk is.
Wat ik nu heb aan ideeën is als volgt:
Als microcontroller ga ik een 18f4550 gebruiken, deze is aangesloten op een computer via usb. De computer draait een programma dat de gebruiker in staat stelt allerlei verschillende inputs (denk aan muis bewegingen, toetsenborden, face tracking, een wii controller noem het maar op) te koppelen aan de inputs van een Xbox 360 controller. De microcontroller is verbonden aan een aangepaste Xbox controller (aangepast in de zin dat er een aansluiting voor een stekker die is aangesloten op de verschillende knoppen is toegevoegd) via een ribbon cable. Van de 18f4550 is dan PORTB verbonden aan de A, B, X, Y en de dpad knoppen. PORTD aan de rest van de digitale knoppen (de connect knop is nergens aan verbonden maar moet handmatig worden bediend). De 18f4550 heeft twee pwm poorten, deze worden door een weerstand en capacitor omgezet in simpele dacs voor de twee triggers. De analoge sticks worden aangestuurd door twee digitale potmeters, doormiddel van SPI met de 18f4550 verbonden.
Daarnaast moet het aantal ingangen nog worden uitgebreid (ze zijn namelijk nu al bijna op), zodat er tenminste 20 inputs zijn zodat de gebruiker speciale knoppen kan aansluiten die dan naar wens kunnen worden gekoppeld aan de verschillende inputs van de controller. De koppelingen moeten worden opgeslagen in het non-volitile deel van het geheugen van de chip, zodat de hardware ook zonder computer kan worden gebruikt als alleen deze koppeling nodig is. Naast de koppeling moet ook kunnen worden ingesteld of een input latching is of niet.
De lag moet natuurlijk zo klein mogelijk zijn, maar toen ik mijn prototype uitprobeerde was de lag zeker acceptabel, dus het is mogelijk.
Voor de software op de computer dacht ik eraan om als inputs waar je uit kunt kiezen (dus die je kunt koppelen aan je controller inputs) alle toetsen van je toetsenbord te nemen, de muis en standaard joysticks. Omdat alle andere input dan (al dan niet via software van derden) kan worden ingesteld toetsen na te bootsen, ofwel als een joystick werkt ofwel als muis kan dienen. Mijn software hoeft dan niet zelf voor de support van al deze verschillende input te zorgen. Ik ben met deze software ook al een heel eind.
Tot slot moet er ook nog support zijn voor macro’s, dus ik dacht eraan om wat extra eeprom geheugen toe te voegen waar deze in kunnen worden opgeslagen. Deze zijn dan ook zonder de computer te gebruiken (al moeten ze wel met behulp van de computer kunnen worden ingesteld, evenals de koppelingen van de inputs aan de controller inputs trouwens). Ik ben er nog niet helemaal uit hoe ik de timing van deze macro’s zal doen (ik zat aan interupts te denken, om de 1ms bijvoorbeeld, en dan de knoppen die niet in de macro voorkomen gewoon blijven pollen terwijl de macro wordt uitgevoerd).
Wat ik ook nog niet weet is of ik een voltage divider moet plaatsen tussen de 18f4550 outputs en de controller inputs, want die werken eigenlijk op een lager voltage, maar ik weet niet of ze ook op een hoger voltage kunnen werken.
Ik heb ook al wat nagedacht over de manier waarop de data is opgebouwd die via usb word verstuurd, maar dat zal ik later posten aangezien dit al heel wat informatie is.
Graag hoor ik wat jullie ervan vinden en wat beter kan of moet worden toegevoegd.
Ik heb al een prototype gemaakt waarmee ik de Xbox kan besturen met een computer, maar ik wil het nu nog uitbreiden en ik zou dit graag goed (lees professioneel) aanpakken. Dit is ook de reden dat ik dit verhaal hier post, ik zou namelijk graag jullie ideeën horen zodat het uiteindelijke product (dat tegen kostprijs beschikbaar zal worden gesteld) zo goed mogelijk werkt en zo volledig mogelijk is.
Wat ik nu heb aan ideeën is als volgt:
Als microcontroller ga ik een 18f4550 gebruiken, deze is aangesloten op een computer via usb. De computer draait een programma dat de gebruiker in staat stelt allerlei verschillende inputs (denk aan muis bewegingen, toetsenborden, face tracking, een wii controller noem het maar op) te koppelen aan de inputs van een Xbox 360 controller. De microcontroller is verbonden aan een aangepaste Xbox controller (aangepast in de zin dat er een aansluiting voor een stekker die is aangesloten op de verschillende knoppen is toegevoegd) via een ribbon cable. Van de 18f4550 is dan PORTB verbonden aan de A, B, X, Y en de dpad knoppen. PORTD aan de rest van de digitale knoppen (de connect knop is nergens aan verbonden maar moet handmatig worden bediend). De 18f4550 heeft twee pwm poorten, deze worden door een weerstand en capacitor omgezet in simpele dacs voor de twee triggers. De analoge sticks worden aangestuurd door twee digitale potmeters, doormiddel van SPI met de 18f4550 verbonden.
Daarnaast moet het aantal ingangen nog worden uitgebreid (ze zijn namelijk nu al bijna op), zodat er tenminste 20 inputs zijn zodat de gebruiker speciale knoppen kan aansluiten die dan naar wens kunnen worden gekoppeld aan de verschillende inputs van de controller. De koppelingen moeten worden opgeslagen in het non-volitile deel van het geheugen van de chip, zodat de hardware ook zonder computer kan worden gebruikt als alleen deze koppeling nodig is. Naast de koppeling moet ook kunnen worden ingesteld of een input latching is of niet.
De lag moet natuurlijk zo klein mogelijk zijn, maar toen ik mijn prototype uitprobeerde was de lag zeker acceptabel, dus het is mogelijk.
Voor de software op de computer dacht ik eraan om als inputs waar je uit kunt kiezen (dus die je kunt koppelen aan je controller inputs) alle toetsen van je toetsenbord te nemen, de muis en standaard joysticks. Omdat alle andere input dan (al dan niet via software van derden) kan worden ingesteld toetsen na te bootsen, ofwel als een joystick werkt ofwel als muis kan dienen. Mijn software hoeft dan niet zelf voor de support van al deze verschillende input te zorgen. Ik ben met deze software ook al een heel eind.
Tot slot moet er ook nog support zijn voor macro’s, dus ik dacht eraan om wat extra eeprom geheugen toe te voegen waar deze in kunnen worden opgeslagen. Deze zijn dan ook zonder de computer te gebruiken (al moeten ze wel met behulp van de computer kunnen worden ingesteld, evenals de koppelingen van de inputs aan de controller inputs trouwens). Ik ben er nog niet helemaal uit hoe ik de timing van deze macro’s zal doen (ik zat aan interupts te denken, om de 1ms bijvoorbeeld, en dan de knoppen die niet in de macro voorkomen gewoon blijven pollen terwijl de macro wordt uitgevoerd).
Wat ik ook nog niet weet is of ik een voltage divider moet plaatsen tussen de 18f4550 outputs en de controller inputs, want die werken eigenlijk op een lager voltage, maar ik weet niet of ze ook op een hoger voltage kunnen werken.
Ik heb ook al wat nagedacht over de manier waarop de data is opgebouwd die via usb word verstuurd, maar dat zal ik later posten aangezien dit al heel wat informatie is.
Graag hoor ik wat jullie ervan vinden en wat beter kan of moet worden toegevoegd.