Forum: Mikrocontroller und Digitale Elektronik Bluetooth Game Controller selber bauen


von Michael S. (stoebich)


Lesenswert?

Guten Abend zusammen!

Als erstes möchte ich anmerken, dass ich neu hier im Forum bin. Nun ich 
bin Schüler an einer Technischen Fachschule für IT (2.Klasse) und sollte 
bis zur 4. Klasse mit einem Klassenkollegen ein Abschlussprojekt auf die 
Beine stellen. Unsere Lehrer weisen uns ständig darauf hin, dass wir 
schön langsam darüber nachdenken sollten, was wir als Abschlussprojekt 
machen wollen. Heute hatte ich eine Idee, die mich irgendwie fasziniert 
hat: Warum nicht mit einem Board wie dem Raspberry Pi oder dem 
leistungsfähigeren Gooseberry eine Spielekonsole ala OUYA nachzubauen. 
Spiele für Android gibt es ja wie Sand am Meer, also an Futter dürfte es 
nicht fehlen, ein Gehäuse können wir möglicherweise sogar in der Schule 
herstellen lassen (CNC usw.).

Des weiteren möchte ich keinen PS3 oder Xbox Controller benutzen, da wir 
ja sonst softwaremäßig praktisch nichts wirklich aufregendes zu tun 
hätten. Nun ist meine Frage:

Kann man einen derartigen Controller selber bauen (insbesondere mit 
Bluetooth), und vor allem wie schwer ist es einen Code dafür zu 
schreiben. (An dieser Stelle möchte ich anmerken, dass wir C# bereits 
können und definitiv kein Problem damit hätten eine neue 
Programmiersprache zu lernen.) Außerdem würde mich noch interessieren, 
in welcher Sprache man etwas derartiges entwickeln müsste.

Im großen und ganzen wäre ein Funktionsumfang eines PS3 Controllers 
wünschenswert, aber ich will realistisch bleiben, die Grundfunktionen 
reichen dicke. (4-Tasten, 2 Analogsticks, ein Steuerkreuz und die 
Rückseitigen Tasten ohne Einschaltfunktion des Systems).

Ja ich weiß, für jemanden, der nicht viel von der Materie versteht will 
ich ganz schön viel machen, aber wir haben immerhin fast 2 Jahre Zeit.

Grüße Michael

von Guest (Gast)


Lesenswert?

Ich weiß nicht wie man Bluetooth HID fährt, aber hingebastelt bekommt 
man das eigentlich recht problemlos. Dafür nehmt ihr einen 
Mikrocontroller (zB AVR) und ein Bluetooth Modul. Programmiert wird in 
C. Im Zweifel, falls HID zu schwierig ist, einfach per CDC seriell 
senden und an der Konsole dann entsprechend per Programm die 
Tastendrücke simulieren oder so.

von Michael S. (stoebich)


Lesenswert?

Gut das heißt also, dass einen Controller programmieren relativ einfach 
ist?
Ich nehme mal an, dass ich intern (Android-Betriessystem) eine App (als 
"Treiber") schreiben müsste die mir die eingehenden Signale vom 
Controller in nutzbare tastenanschläge konvertiert.



Grüße Michael

von Michael (Gast)


Lesenswert?

Michael Stöbich schrieb:
> Kann man einen derartigen Controller selber bauen (insbesondere mit
> Bluetooth), und vor allem wie schwer ist es einen Code dafür zu
> schreiben. (An dieser Stelle möchte ich anmerken, dass wir C# bereits
> können und definitiv kein Problem damit hätten eine neue
> Programmiersprache zu lernen.) Außerdem würde mich noch interessieren,
> in welcher Sprache man etwas derartiges entwickeln müsste.

Also der absolut-easy Einstieg ist ATMEGA. Ein Tutorial hier - gerne 
gemacht - absolut easy 
http://www.mikrocontroller.net/articles/AVR-Tutorial
Programmiert wird so gut wie immer in C. Hier das Tutorial dazu:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Wenn man da garnichts checkt, dann verwendet man Arduino (-> Google). 
Das ist dann wirklich für jeden Menschen verständlich. Das hat aber mit 
Programmieren nix mehr zu tun.

C# ist auch so eine Sache wie vb.NET. Eine Form zusammenklicken und ein 
paar Ereignisse, Timer und Quellcodekopierereien kann jeder. Aber sauber 
C# programmieren tuen sich die wenigsten an. C# / vb.NET ist ja eine 
nette klick-mir-was-zusammen aber so wirklich objektoriertert 
programmieren (Klassen, Methoden, Konstruktoren, ...) das machen die 
wenigsten. Wenn man das nämlich kann dann kann man auch gleich C++ 
machen. Mit C hat C# bis auf den Syntax recht wenig zu tun. Also erstmal 
C lernen. Absolute Grundlage. Ohne das brauchst du garnicht anfangen mit 
RapsberryPi. Da sollte man dringlichst C wenn nicht C++ beherrschen.

Michael Stöbich schrieb:
> Gut das heißt also, dass einen Controller programmieren relativ einfach
> ist?

Das kommt darauf an wie fit du beim Programmieren bist. C# klick-me ist 
ein guter Anfang aber das ist sehr am Anfang. Lies dir mal das oben 
gelinkte C Tutorial das ist auch noch arg Grundlage aber darauf kann man 
gut aufbauen. Oder tu es dir nicht an und nimm Arduino. Das hat zwar mit 
programmieren nix zu tun aber funktioniert halt. Wem das reicht - ok.

Michael Stöbich schrieb:
> Ich nehme mal an, dass ich intern (Android-Betriessystem) eine App (als
> "Treiber") schreiben müsste die mir die eingehenden Signale vom
> Controller in nutzbare tastenanschläge konvertiert.

Wo genau kommt jetzt da Android in Spiel? Also auf einem Mikrocontroller 
läuft das sicher nicht. Zumindest nicht auf einem 8bit Mikrocontroller 
wie man ihn zum Einstieg verwendet. Auf dem Raspberry Pi wäre mir das 
nicht so bekannt mit Android, gibt es zwar aber nicht empfehlenswert 
wenn man auf Hardware zugreifen möchte. Auf dem Raspberry läuft ja ein 
Linux (meist Debian). Ja ja ok Android ist ja auch Linux aber shcon 
deutlich anderst.

von Michael S. (stoebich)


Lesenswert?

>Wo genau kommt jetzt da Android in Spiel?

Nun das läuft auf dem Rasp- oder besser noch gooseberry Board. Da drauf 
wiederum die App, die die Bluetooth Befehle verareitet und als Top Level 
die App bzw. das Spiel.

>C# klick-me

Nein also wir haben bisher nur in der Console gearbeitet und da ist 
nicht so viel mit klick me. Höchsten die Auto- Vervollständigung und das 
wars. Da gabs kein Copy-Paste oder so. Einfach die Vorgabe (als 
laufendes Programm natürlich) auf den Beamer und dann selber schreiben.

Falls jemand den Gooseberry nicht kennt, den gibt's unter 
http://gooseberry.atspace.co.uk/ zu kaufen(Wenn mal wieder welche auf 
Lager wären...).

>Auf dem Raspberry Pi wäre mir das nicht so bekannt mit Android, gibt es zwar 
>aber nicht empfehlenswert wenn man auf Hardware zugreifen möchte.Auf dem 
>Raspberry läuft ja ein Linux (meist Debian)

Hierbei ist aber Android die einfachste Lösung, weil es schon Spiele 
dafür gibt.

von Guest (Gast)


Lesenswert?

Michael Stöbich schrieb:
> Gut das heißt also, dass einen Controller programmieren relativ einfach
> ist?
> Ich nehme mal an, dass ich intern (Android-Betriessystem) eine App (als
> "Treiber") schreiben müsste die mir die eingehenden Signale vom
> Controller in nutzbare tastenanschläge konvertiert.

Relativ einfach, ja, wird einen Anfänger aber trotzdem ein bisschen 
dauern. Guck doch mal nach ob man mit einem AVR einfach so Bluetooth HID 
machen kann. Falls ja bringt Android die nötigen Treiber schon mit.
Ansonsten müsst ihr eben einen Treiber (keine App, einen Treiber) 
schreiben. Android ist ja auch nur Linux. Treiber heißt in dem Fall dann 
halt ein Linux Programm oder bestenfalls einen Linux Kerneltreiber. 
Irgendwo muss man sich die Arbeit halt machen.

von Michael S. (stoebich)


Lesenswert?

Also bisher habe ich (unter anderem hier im Forum)einige Threads 
gefunden, die, mehr oder weniger, das gleiche Vorhaben hatten wie ich. 
Außerdem bin ich auf (bei, in - Was ist hier richtig??) Youtube noch auf 
einige Videos gestoßen, in denen, mit einer Leitfähigen Folie oder 
Platte, ein berührungsempfindlichen Taster gebastelt wurde.

http://www.youtube.com/watch?v=l7wXsJtnsEE

In diesem Video wird, der einfachheit halber, ein stück draht anstatt 
einer platte/Folie verwendet. Funktionieren soll das über die 
Induktivität oder Kapazität der Folie und dem Finger darauf. Im 
Klartext: Verändert sich die Kapazität des Kondensators (Folie und 
Finger) Schaltet der NE555 am Pin3 durch und die LED leuchtet. Als 
Dielektrikum könnte man eigentlich alles nich leitende verwenden. Mir 
persönlich würde (Acryl-/Plexi-)Glas recht gut gefallen. Alles eine 
Frage der beschaffbarkeit. Nun mein bisheriger entwurf würde allerdings 
bis zu 15 Tasten vorsehen und 15xNE555 würde mir den akku recht schnell 
leeren. kennt jemand alternativen zu dieser technik oder einen 
Stromsparenderen aufbau einer derartigen schaltung?

Sollte es jemanden interessieren könnte ich ja mal eine Freihandskizze 
von meinem Entwurf hochladen.

von Hanns (Gast)


Lesenswert?

Oh Kinder,

bringt mal ne LED zum Blinken.

Dann sehen wir weiter...

Hanns

von Michael S. (stoebich)


Lesenswert?

Hanns schrieb:
> Oh Kinder,
>
> bringt mal ne LED zum Blinken.
>
> Dann sehen wir weiter...


Das ist mir schon klar, dass ich hier groß Vorstellungen habe, aber ich 
hab mir das mal überlegt und wenns machbar ist dann kann man ja mal mit 
C anfangen und dann eine LED zum blinken bringen. Ziel von diesem Thread 
wäre, einfach mal ein bisschen infos sammeln, was und wie und wieviel. 
Außerdem würde mich interessieren, ob (mit viieel Geduld und Zeit) das 
Projekt umsetzbar wäre. Ich meine, dass die Konsole nachher auch mit dem 
selbst entwickelten GamePad benutzbar ist. Ich will mir ja auch kein 
Betriebssystem für die Konsole oder sonstigen Schnickschnack, sondern 
nur eine Firmware für das (selbstentwickelte) GamePad.

Natürlich könnten wir auch einfach eine Webseite für die Firma XY 
machen, aber wenns nachher Spaß macht, wie eine eigene Konsole, dann 
macht das ganze Projekt mehr Spaß. Tja und eine Webseite hat außerdem 
nichts wirklich besonderes an sich. Die gibts jedes Jahr bei den 
Projektvorstellungen zu hauf und sowas Außergewöhnliches ist halt doch 
recht rar.

Grüße Michael

von Guest (Gast)


Lesenswert?

Michael Stöbich schrieb:
> In diesem Video wird, der einfachheit halber, ein stück draht anstatt
> einer platte/Folie verwendet. Funktionieren soll das über die
> Induktivität oder Kapazität der Folie und dem Finger darauf. Im
> Klartext: Verändert sich die Kapazität des Kondensators (Folie und
> Finger) Schaltet der NE555 am Pin3 durch und die LED leuchtet. Als
> Dielektrikum könnte man eigentlich alles nich leitende verwenden. Mir
> persönlich würde (Acryl-/Plexi-)Glas recht gut gefallen. Alles eine
> Frage der beschaffbarkeit. Nun mein bisheriger entwurf würde allerdings
> bis zu 15 Tasten vorsehen und 15xNE555 würde mir den akku recht schnell
> leeren. kennt jemand alternativen zu dieser technik oder einen
> Stromsparenderen aufbau einer derartigen schaltung?

Was DU suchst ist Kapazitiver Touch. Ist aber scheiße für Konsolen. 
Wieso nehmt ihr nicht einen alten XBOX360 oder PS3 Controller 
auseinander und bastelt da ne neue Platine rein?

von Ansgar K. (malefiz)


Lesenswert?

ich denke die größten Probleme für dich werden das Gehäuse und das 
Protokoll sein. Weil mit nem Microcontroller ein paar Tasten auslesen 
ist erlernbar in relativ kurzer Zeit.

Ein Gehäuse basteln was gut in der Hand liegt wird da schon viel 
schwerer.

Egal für welche Konsole du dich entscheidest brauchst du das 
Komunikations Modul damit dein Par der Konsole die richtigen Daten 
schicken kann und ohne dies fällt und steht dein Projekt

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.