• Die Forumsregeln und Nutzungsbedingungen findet ihr in der Navbar unter Impressum !
    Bitte unbedingt beachten!
    Wie überall im Leben gibt es Spielregeln, so auch hier!
    Die Datenschutzerklärung zum DSGVO findet ihr ebenfalls in der Navbar unter Datenschutzerklärung !
    Hinweis nach DSGVO :
    Es ist hier keinerlei Angabe erforderlich. Alle Angaben in diesem Bereich sind öffentlich sichtbar und werden freiwillig gemacht. Mit einem Eintrag in diesem Bereich erkenne ich dieses an, und bestätige die Datenschutzerklärung zur DSGVO für das Forum gelesen zu haben.

    Danke
  • Hallo Gast, beschränke dich hier bitte auf den Bereich der Elektronik. Die Fahrzeuge oder Gebäude, wo diese Elektronik eingebaut wird bitte in dem passenden Fachbereiich behandeln. Auch wenn Teile des Projektes dadurch im Forum doppelt vorhanden sind! Danke.

Arduino Trucksteuerung mit XBox-Controller

DaToBi

New member
Registriert
23.09.2015
Beiträge
8
Hallo Zusammen,

da ich zwei linke Hände habe, was alles mechanische betrifft, habe ich meinen King Hauler einfach nur nach Anleitung aufgebaut. Nachdem das auch ohne größere Zwischenfälle geklappt hat, geht es um die inneren Werte. Deshalb hoffe ich, mein Beitrag ist hier richtig angesiedelt.
Auf der Suche nach einer geeigneten Fernsteuerung ist mir mein X-Box Controller aufgefallen: 2 Analogsticks, 2 Analoge Schultertasten, jede Menge normale Tasten, dazu eine meiner Meinung nach hervorragende Ergonomie und im Vergleich zu anderen Fernsteuerungen sogar noch ziemlich günstig.

Hat jemand schon mal so etwas gemacht oder besteht Interesse daran? Oder sagt ihr gleich, „der spinnt doch“. Falls ja, spornt mich das nur noch mehr an. :stoned

Jetzt stellt sich die Frage, wie kommen die "Informationen", welche Taste gedrückt ist, in den Truck?

Das Ganze versuche ich folgendermaßen zu realisieren:
Der Controller hängt via USB-Drahtlosadapter an einem normalen PC oder Laptop. Dieser liest mit einem selbst geschriebenen Programm das Gamepad aus und sendet die Informationen per USB an einen Arduino. Von da geht’s drahtlos mit Hilfe zweier NRF24L01 an einen zweiten Arduino im Truck. Und sind die Informationen erstmal auf dem Arduino im Truck, werden dann diese direkt per PWM an die Servos und den Farhtregler weitergegeben.

konzept.jpg

Die ersten Experimente mit einem kleineren 1:24 Auto waren schon sehr vielversprechend.

Genauere Infos folgen in kürze ...
 
Interresante spielerei, nach dem Motto: "der Weg ist das Ziel".
Zuhause im Wohnzimmer mag das ganz lustig sein, aber wie machst du das, wenn du mal auf einem Pacours fahren willst?
Und preislich wirst du damit nichts sparen.
Warum nimmst du nicht gleich diese Fernsteuerung?


mfg
Rene`
 
Moin Tobias,

klingt interessant, aber wie Rene schon sagt, der PC bzw. Laptop in der Mitte könnte etwas an der Mobilität kratzen... ;)

Ich hätte da eine Alternative. Ich habe mal mit einer Nunchuck von Nintendo experimentiert. Sie bietet auch 2 "Kreuzknüppel", der Stick oben drauf und die Bewegung der Nunchuck. Sie hat den Vorteil dass sie per I²C ausgelesen werden kann.

Mein Ansatz dazu: Um mit der Bewegung der Nunchuck den Truck zu steuern muss man einen der Knöpfe drücken und halten. Sobald man ihn los lässt gehen die Werte in die Nullstellung, der Truck steht. Der Stick oben drauf stellt 2 Kanäle dar, welche über den 2. Knopf auf 2 Ebenen genutzt werden kann. Somit kommt man im Endeffekt auf 6 vollwertige Proportionalkanäle.

Ich habe das Projekt nicht weiter verfolgt, da die Funkmodule (die du auch nutzt) u. U. in Deutschland gar nicht mehr zugelassen sind. Es gab vor einiger Zeit eine Änderung der Funkbestimmungen im 2.4GHz Band und es war nicht zu erfahren ob diese Billigmodule diese neuen Anforderungen erfüllen. Ich möchte nicht schuld sein wenn auf einem Parcours aufgrund meiner Funkmodule andere Funken gestört werden und dadurch u. U. Modelle zu Schaden kommen. Für den Heimbereich ist es witzig und das Projekt ist eine sehr spannende Herausforderung, aber die Risiken in der Öffentlichkeit sind nicht kalkulierbar.
 
[...]
Warum nimmst du nicht gleich diese Fernsteuerung?

Ich kann mir nicht vorstellen dass die Fernsteuerung auf grund der Form gut in der Hand liegt. Muss mich mal schlau machen ob man die in irgend einem Laden in meiner Nhe in die Hand nehmen kann.

Ich hab den X-Box Controller mal mit 0€ veranschlagt, da der ja eh daheim schon rum lag. Und die beiden Arduinos und Funkmodule kommen dank dem großen Auktionshaus auch nur auf ca 20€. Also behaupte ich mal weiterhin dass mich meine Lösung günstiger kommt. Die paar Transistoren, Leitungen, Widerstände und sonstigen elektronischen Bauteile bewegen sich ja auch eher im Cent-Bereich als im €-Bereich. Aber hier soll es weniger usm Geld gehen als vielmerh darum was machbar ist.

Das mit dem Fahren im Parcour ist natürlich ein berechtigter Einwand. Da der Truck aber erstmal nur im Wohmzimmer oder allerhöchstens mal im Garten unterweg sein soll, ist das für mich aber nicht alzu schlimm.

Eine andere Idee, die ich momentan zurückgestellt habe, war dem Truck gleich einen Raspberry Pi zu spendieren und sämtliche drahtlosen Angelegenheiten entweder per Bluetooht oder WLAN zu realisieren. Das würde den PC einsparen.

(Gibts irgendwo ein FAQ zu erlaubten Frequenzen bzw wie diese gehandhabt werden auf Parcours?)
 
Ich kann mir nicht vorstellen dass die Fernsteuerung auf grund der Form gut in der Hand liegt. Muss mich mal schlau machen ob man die in irgend einem Laden in meiner Nhe in die Hand nehmen kann.

Ich hab den X-Box Controller mal mit 0€ veranschlagt, da der ja eh daheim schon rum lag. Und die beiden Arduinos und Funkmodule kommen dank dem großen Auktionshaus auch nur auf ca 20€. Also behaupte ich mal weiterhin dass mich meine Lösung günstiger kommt. Die paar Transistoren, Leitungen, Widerstände und sonstigen elektronischen Bauteile bewegen sich ja auch eher im Cent-Bereich als im €-Bereich. Aber hier soll es weniger usm Geld gehen als vielmerh darum was machbar ist.

Das mit dem Fahren im Parcour ist natürlich ein berechtigter Einwand. Da der Truck aber erstmal nur im Wohmzimmer oder allerhöchstens mal im Garten unterweg sein soll, ist das für mich aber nicht alzu schlimm.

Eine andere Idee, die ich momentan zurückgestellt habe, war dem Truck gleich einen Raspberry Pi zu spendieren und sämtliche drahtlosen Angelegenheiten entweder per Bluetooht oder WLAN zu realisieren. Das würde den PC einsparen.

(Gibts irgendwo ein FAQ zu erlaubten Frequenzen bzw wie diese gehandhabt werden auf Parcours?)

Moin Tobias,

nur ein Tipp: Bei Billigangeboten für Arduino Clones musst du sehr vorsichtig sein. Ich habe anfangs auch mit solchen Billigteilen aus China experimentiert, habe diese aber ganz schnell wieder in die Tonne getreten. Instabiler Lauf, Abstürze, schwankende Signale. Einer kam bei mir an mit einem bereits rostenden USB Stecker.

Da würde ich lieber etwas mehr Geld in die Hand nehmen und Qualität kaufen (z. B. bei EXP-Tech). Dann kannst du wenigstens sicher sein dass wenn etwas nicht funktioniert es in deiner Programmierung oder in der Schaltung liegt und nicht an einem qualitativ minderwertigen Board.

Ich mache es mittlerweile so dass ich die Entwicklung an einer Arduino Uno mache. Danach löte ich mir meine eigenen Platinen mit einem 28er Sockel und da kommt dann ein ATMega328 drauf. In das finale Projekt kommt also kein echtes Arduino Board. Dies hat 2 Vorteile:
1. Ich brauche nur ein Arduino Board für die Entwicklung
2. Die Platinen sind hinterher an meine Platzbedürfnisse angepasst.
 
Hallo gismow,

bisher habe ich zum Glück solche Erfahrungen noch nicht gemacht. Hab auch aber auch nicht in China bestellt sondern immer auf Versand aus Deutschland geachtet. Eher im Gegenteil, meine Selbst gelöteten Lochrasterplatinen waren bisher deutlich unzuverlässiger. Leider habe ich keinen Zugriff mehr auf den Platinenfräser an meiner ehemaligen Hochschule :( Sonst würde ich die Platinen auch wieder selber machen, allerdings nicht mit Sockel sondern gleich mit SMD. ;)

https://youtu.be/kUc1Jc5_lkY

hier könnt ihr übrigens meine ersten Ergebnisse betrachten.

Muss den Motor aber noch etwas Bremsen. Der ist noch deutlich zu schnell. Kann nur etwa 10% des Weges des Analogen Triggers nutzen. Aber das ist ja ein reines Software Problem. Und nen Tempomat will ich auch noch programmieren. und ... und ... und ...

Hardwaremäßig wär dann als nächstes mal das Servo fürs Getriebe dran, dann Licht, dann ein Servo für die Sattelplatte, und dann? Irgendwelche Vorschläge?

http://www.reichelt.de/GP2-0430/3/i...LE=110601&artnr=GP2-0430&SEARCH=distanzsensor

daraus und nem kleinen Buzzer ließe sich doch bestimmt eine Einparkhilfe basteln ... :hfg

Was mir zum Raspberry noch einfällt: der hat ja wenn ich mich nicht Irre eine CSI Schnittstelle für eine Kamera, da ließe sich dch bestimmt ein Livebild aufs Smartphone streamen oder so ...
 
Nach längerer Pause ging es ein wenig vorran. Hab mal das schlechte Wetter genutzt und ein wenig weiter gebaut/gelötet/programmiert.

Die Beleuchtung (bis auf die 5 Positionslamepn auf dem Dach, mir gingen die orangen LEDs aus :sauer) wurde eingebaut.

Bisherige Funktionen:
Rechter Trigger: Gas
Linker Trigger: Bremse/rückwärts (Bremslicht leuchtet beim Bremsen und rückwärts fahren)
Linke Schultertaste: Blinker links (nur so lange die Taste gedrückt ist)
Rechte Schultertaste: Blinker rechts (nur so lange die Taste gedrückt ist)
Taste A: Licht ein/ausschalten
Taste B: Nebelscheinwerfger ein/ausschalten

hier ein kleines Demo Video

Um diese Inhalte anzuzeigen, benötigen wir die Zustimmung zum Setzen von Drittanbieter-Cookies.
Für weitere Informationen siehe die Seite Verwendung von Cookies.


(was im Fahrerhaus rot leuchtet ist übrigens keine absichtliche Fahrerhausbeleuchtung, das sind lediglich die Power LEDs des Arduni Boards und des Lipo Warner :heilig)

sobald das Kabel-Chaos im Inneren geordnet ist, gibts auch Bilder der Elektronik.

als nächstes werd ich mich an der Schaltung und der Sattelplatte versuchen.
Außerdem ist geplant einen Tempomat zu programmieren.

Wie René1988 schon sagte: "Der weg is das Ziel" :cool

to be continued ... :trucker

Schöne Grüße ausm Allgäu
Tobi
 
Na das gefällt doch schonmal. Leider hab ich von dem arduino keine Ahnung. Hatte mir mal ein Buch gekauft und wollte mich da einarbeiten. Dabei ist es auch geblieben.
Ich werde hier weiter mitlesen und wünsch weiter gutes Gelingen
 
Mich würde mal ein Video/ verbaler Eindruck interessieren, wie feinfühlig man die Fahrfunktionen (Fahren/ Lenken) realisieren kann. Im Video habe ich den Eindruck, dass der Gaskanal nur 2 Zustände kennt; voll Gas oder Kein Gas.

Weiterhin wundert mich, dass du die Signalverarbeitung im PC machst und dann auf den Audrino überträgst. Theoretisch sollte der Audrino auch direkt vom X-Boxcontroller kontrolliert werden können und so die "Tot"-Zeit verringern.

Trotz allem, nicht böse sein. Ich bewundere deine Arbeit und dein Engagement und solange es für dich funktioniert, ist es OK. Es wird immer wieder Leute geben, die bestimmte Sachen anders gelöst hätten, aber du hast sie gelöst.

Gruß Uwe
 
Hallo Uwe,

da muss ich dir recht geben, auf dem Video sieht es tatsächlich so aus als gäbs nur ein Gas, nämlich vollgas :hfg

Ich schieb das einfach mal auf die Nervosität vor der Kamera. :heilig

Der XBox-Controller hat zwei Analog Trigger hinten dran. Wie hoch die Auflösung des Analgowertes ist, kann ich auswendig aber grad nicht sagen (sind aber glaub ich 14 Bit). Der Weg der Trigger ist mit etwas mehr als 1 cm überschaubar. Bisher wird der Analogwert nur linear an den Fahrtregler (ein alter Conrad Pro-90C) weitergegeben (und natürlich etwas begrenzt).

Sobald ich Zeit hab, liefer ich ein Video nach, auf dem man das etwas besser sieht. Im ersten Video gings mir nur darum, wie ihc in möglichst kurzer Zeit möglichst viel von den bisher umgesetzten Funkionen demonstrieren kann.

Momentan siehts aber ganz danach aus dass das ganze nicht linear bleibt und ich hab ja noch ein freies Steuerkreuz und ein paar Tasten. Damit würd ich gern zwischen verschidenen "Gas-Kennlinien" umschalten können.

Ich bin auch noch auf der Suche nach einer Möglichkeit, die Drehzahl des Motors zu Messen, damit ich die Geschwindigkeit nicht nur steuern, sondern auch regeln kann. Bin aber noch ziemlich unschlüssig wie ich das am einfachsten Bewerkstellige (Hall-Sensor, Lochscheibe mit Lichtschranke, ..)

Der PC soll auch nicht dauerhaft dazwischen bleiben, es war bisher nur die einfachste Möglichkeit, den Controller auszulesen (MSDN liefert da ein fertiges Beispiel wie man mittels der XInput-API den Controller auslesen kann). Außerdem hat der PC so einen praktischen Monitor mit dem sich besser Debuggen lässt ;)

Die Totzeit ist (für mich) nicht spürbar. Müsste mal das Oszi dazwischen hängen und messen.

Der PC soll auch nicht dauerhaft dazwischen laufen. In meinen Träumen hockt irgend wann mal ein Raspberry oder ähnlicher Mini-PC im Truck der das dann übernimmt. Auf dem soll dann auch noch ein kleiner TCP-Server laufen, der dann alle wichtigen Infos (Ladezustand-Akku, Stromverbrauch, Geschwindigkeit, Temperatur, ...) per Wifi an mein Handy sendet, dass am Controller befestigt wird)

41Ci7Pjm8oL__SX300_QL70_.jpg

So genug des verbalen, bald ist Wochenende. :trucker

schöne Grüße
Tobi

PS: keine Angst, ich bin nicht böse. Das folgende bitte nicht zu ernst nehmen: Nur Zustimmung zu erhalten, wär ja langweilig. Kritik zu wiederlegen macht doch mehr Spaß und motiviert zusätzlich. Also bitte weiter alles kritisch hinterfragen. :bl
 
Hallo Tobi
Das sieht schon recht beeindruckend aus, was du uns da zeigst. Ich möchte dir aber empfehlen, den Baukastenmotor durch einen "Vernünftigen" (z.B. truckPuller, Servonaut, ...) zu ersetzen. Ich denke das bringt die ganze Steuerung in einen Bereich,wo es dann auch Sinn und Spaß macht.
Ansonsten weiterhin gute Gelingen. :ok
 
Hallo Tobi,

verstehe ich es richtig, Dein Fernziel ist es, die Funkstrecke mit den Funkmodulen zu eliminieren und gleich die Funkübertragung vom Gamepad in den "PC", in dem Fall den Onboard Raspi im Truck, zu nutzen?
Oder willst Du weiterhin die "lange Kette" wie im Eingangsthread nutzen und lediglich den PC da rausnehmen?

Ein bißchen offtopic, weil Du hast ja jetzt schon eine funktionierende Lösung auf die Beine gestellt: Bei ndna.de gibt es in der Rubrik "Joysticks" ein PS2-Pad zu kaufen und als empfohlenes Zubehör einen Arduino-Abkömmling, der einen Eingang für den Funkempfänger des PS2-Pads hat und direkt 18 Servos steuern kann.
 
Interessantes Projekt!

Ich nutze selbst Arduino und 2,4 GHz Module. Meine Funkmodule sind von FrSky, die haben auch eine CE Erklärung. Damit bekommt man auch Telemetrie wenn man möchte.
Ich würde einen 2,4 GHz Transmitter nehmen und ihm das PPM Signal (das ist das Standardformat für die Fernsteuerungen) von deinem Gampad oder was immer einspeisen. Als Empfänger kannst du dann den normalen 2,4 Ghz Empfänger verwenden, eventuell noch einen Arduino dran für die Telemetrie und Sonderfunktionen. Da braucht man sich dann über die Signalübertragung, Failsafe... keinen Kopf mehr machen.
Ärgerlich ist bei solchen Lösungen immer, wenn nach 3 Jahren es nicht mehr geht weil ein Bauteil gestorben ist, Ersatz ist dann auch nicht so leicht zu bekommen und wer weis schon was man damals alles programmiert und gelötet hat? :sauer
 
Trucksteuerung mit XBox-Controller V2.0

Hallo zusammen,

nach gut einem Jahr Zwangspause :)sauer) habe ich endlich wieder Zeit gefunden mich dem LKW zu widmen.

Ich bitte zu entschuldigen dass es so lang gedauert habe, aber ich bin noch ein paar Antworten schuldig :heilig:

@Helmut: In dem Jahr ist es mir endlich gelungen etwas Geld auf die Seite zu schaffen und dieses wurde in einen Servonaut TM72 mit Thor 15HF Regler investiert.

@Tömchen: Die Lange Kette wird, bzw wurde etwas "verkürzt". Der PC ist raus geflogen aus der Kette und der Empfänger für das Gamepad befindet sich nun im Truck. Der Raspi-Klon bleibt im Truck. Im Sleeper ist ja mehr als genug Platz und ein Raspberry bietet doch etwas mehr Leistungsreserven und Rechenpower als ein Arduino.

@Bert: Die einzige Funkverbindung die jetzt noch vorhanden ist, ist die des Xbox-Controllers und da ich den baulich nicht verändern will, behält dessen Konformitätserklärung auch ihre Gültigkeit. :heilig Damit muss ich mir auch weniger Sorgen über die Signalübertragung machen. Der Empfänger sagt mir nämlich, ob das Gamepad grad verbunden ist oder nicht. Sollte der Empfänger dei Verbindung verlieren, wird der LKW so sicher gestoppt.
PS: 3 Jahre sind jetzt noch nicht rum, aber fast 1 Jahr. Dabei hat sich das Motte "man kann gar nicht zu viel Kommentare im Code einbauen" bewahrheitet. Ich konnte relativ gut nachvollziehen, was ich damals Programmiert habe. ;(


Jetzt einmal was sich seit damals getan hat:

Im folgendem Bild ein Konzept was sich alles an Hardware im Truck befinden soll. Das einzige was sich nicht im Truck befindet ist das Gamepad (das liegt natürlich ein meinen Händen). Bis auf das Servo für die Sattelplatte ist auch schon alles eingebaut und verkabelt.

konzept.jpg

Momentan befinden sich 2 Arduino-Nano in der Zugmaschine. Da der Arduino in der Karosserie des Fahrerhauses die beiden LEDs der vorderen Blinker steuert und der Arduino im Fahrgestell die Blinker der hinteren Stoßstange, habe ich eine zusätzliche Verbindung zwischen den beiden Arduinos spendiert die dafür sorgt dass die Blinker auch synchron blinken. Die LEDs hab ich übrigens ohne Transistor oder MOSFET direkt an die Arduino Ausgänge gehängt. Da an jedem Ausgang nur eine Low-Current-LED (ca 3mA) mit Vorwiderstand hängt bleib ich so nämlich unter den 120mA Gesamtstrom bzw 20mA pro Ausgang die der Arduino liefert und spar mir eine Menge Löt-Arbeit und hab den Vorteil dass ich jede LED einzeln ansteuern kann (falls ich den LKW in eine blinkende Kirmesbude verwandeln will :rotate)

Bei den 6 LEDs im Fahrgestell handelt es sich um die beiden Nebelscheinwerfer in der Vorderen Stoßstange und die beiden Blinker und Bremslichter in der hinteren Stoßstange.

Die 9 LEDs im Fahrerhaus sind die beiden Frontscheinwerfer, die beiden Blinker über den Radkästen und die 5 Lampen auf dem Dach.

Bei dem Blitzer handelt es sich um eine Resteverwertung von ein paar roten und blauen LEDs. Ich habe jeweils 3 rote und 3 blaue LEDs (diesmal mit BS170 als Verstärker FET) in den Kühlergrill gepackt, da ich miot dem gedanken spiele den Truck in einen Amerikanisches Polizeifahrzeug zu verwandeln.

Zu meinem Stromversorgungschaos vielleicht noch ein paar Worte: Gespeist wir der Truck von einen 2S-Lipo mit 1800mAh. Die 3 Servos werden über Das BEC des Thor 15HF versorgt. der Raspberry hat seinen eigenen kleine Schaltregler bekommen der ihn mit 5V versorgt und die beiden Arduinos haben einen Baugleichen bekommen. Die kleine Regler liefern bei 5V jeweils bis zu 3A. Sollte sich in der Praxis rausstellen dass die Akkulaufzeit recht kurz ist, werde ich einen zweiten Akku, natürlich mtisamt Lipo-Warner nur für den Raspberry einbauen, der ja doch eineiges an Strom braucht. Dazu muss ich ja nur den Spannungsregler von ersten Akku trennen und an den zweiten anschließen.

Bei dem Pegelwandler für den I2C-Bus handelt es sich einfach um zwei BS170 in Basisschaltung (je einen für SDA und SCL).

Soweit zur Hardware, jetzt gehts an die Software:

Beim Programmieren des Raspberry experimentiere ich noch ob ich Python oder C/C++ verwende. Bei Python habe ich aber noch ein Problem mit dem I2C-Bus. Sobald ich da einen Befehl über den Bus schicke muss ich ca 0,2s warten bis ich den nächsten Befehl senden kann, ansonsten meldet mir Python einen Remote-I/O-Fehler. Das heißt ich könnte nur 5 mal Pro Sekunde Befehle wie Lenkeinschlag oder Gas/Bremse aktualisieren. So lässt sich der Truck natürlich nicht sinnvoll steuern. Deshalb werde ich versuchen, das ganze in C/C++ umzusetzen. Da hab ich diese Problem bisher nicht.

Die nächsten Schritte bestehen nun erstmal wieder aus Dokumentation. Damit ich auch in 3 Jahren noch weiß, was ich da verbaut habe werden erstmal ordentliche Stromlaufpläne angefertigt. :heilig
Danach gehts an die Software, wofür ich dann hoffentlich kein weiteres Jahr benötige ... :rotate

schönen Gruß
Tobi
 
Servus Tobias,

schön das es mit Deinem Projekt-X weitergeht. :ok
 
Hallo Tobias
Sehr beeindruckend was du uns da zeigst. :ok
Bin schon gespannt, wie es weiter geht.
 

Servonaut
Zurück
Oben Unten