Jump to content
remotecontrol

RC Fernsteuerung über Tablet

Recommended Posts

Nachdem ich in den letzten beiden Wochen auch öfter Fragen in das Forum gestellt habe, möchte ich kurz vorstellen, was aktuell dabei rausgekommen ist:

 

Eine Tablet basierte Fernsteuerung für RC Funktions-Modelle, die Kommunikation erfolgt über WLAN (Modell ist dann ein Access Point).

 

Ich mache hier auch gleich die Einschränkung auf Funktionsmodelle, da sich alles andere nicht recht lohnt. Klassische Fernsteuerungen sind sehr zuverlässig, haben eine gute Reichweite und Reaktionszeiten. Bei der Steuerung vieler Einzelfunktionen wird es aber kompliziert. Eine programmierte Steuerung fürs Tablet kann man optimal auf die Bedürfnisse des jeweiligen Modells anpassen. Momentan ist das auch eher noch ein Softwareprojekt: 90% besteht aus Android-Programmierung. Die Bastelei am Modell momentan auch eher ein geringer Anteil.

 

Mein Testaufbau zur Steuerung eines "THW Unimogs" mit Zusatzfunktionen nutzt aktuell

- Step-Down-Power Supply

- Masterbrick mit WLAN Extension

- Servo Brick

- Industrial Quad Relay

Ergo: schon 11 Kanäle möglich bei dem einfachen Aufbau ...

 

Um den Platz im Modell zu bekommen musste ich leider den Hebemechanismus der Ladefläche entfernen. Ich konnte die im Modell vorhandenen Fahrtregler aber wiederverwenden: alten Empfänger raus, Servos und Fahrtregler ans Servobrick anschließen: tut! :)

 

Damit sind die Kanäle 1,2,3 (Lenkung, Antrieb und Seilwinde) versorgt.

 

Noch ein kleines Soundmodul eingebaut und über Relais ein/aus, wobei auf dem Tablet eine Taste ist (Hupe), die das Relais nur schaltet, solange die Taste gedrückt ist. Dabei ist mir aufgefallen, dass der Fahrmotor Spannungsschwankungen (Brummen) ins System bringt und die Hupe bei Fahrt komisch "brummt". Ein Kondensator am Modul hat Abhilfe gebracht. Dann habe ich das Modul aber mal an den 5V Ausgang der Step-Down-Power Supply angeschlossen: tut auch - ohne extra Kondensator => Ausgangsspannung ist sehr konstant und Kanal 4 verbaut.

 

Kanal 5 ist Fahrlicht ein/aus über einen weiteren Relais-Kontakt.

Was noch kommt ist ein Suchscheinwerfer ein/aus (Kanal 6), der per Servo gedreht werden kann (Kanal 7). Und auf der Ladefläche wäre noch Platz für einen Kran...

 

Die Servosteuerung kann per Benutzer-Einstellung eines Feintunings unterzogen werden

- linear / exponentiell

- Wegbegrenzer

- Taste um den Steuerweg der Oberfläche z. B. auf nur 50% des Servoweges zu begrenzen: gut für sehr feine Steuerungen, per Click geht es dann zurück auf normale Steuerung.

 

In Summe noch ein erster Test, wie zuverlässig das Ganze funktioniert: Kommunikationsabbrüche sind fatal, insbesondere dann, wenn das Modell in voller Fahrt ist und einfach weiter fährt  :(.

 

Was aber schon auffällt: auch hier ist ein "Testsystem für Trockenübungen" hilfreich, sonst muss man immer alles aus dem Modell ausbauen oder z. B. das WLAN umkonfigurieren, also ein zweiter identischer Stack wird notwendig.

 

Anbei noch ein paar Bilder:

im ersten die der Stack liegend im Modell zu sehen. Zuerst wollte ich die externe Antenne aufs Dach platzieren. Dann ist mir aber aufgefallen, dass es auch so geht. Aktuell reicht mir die Reichweite aus.

im_modell.jpg

 

Im zweiten Bild die Steuerung über ein Nexus 7 Tablet: das liegt recht gut in der Hand. Die grauen Kästen simulieren ein zwei-Wege Steuerung (z. B. links/rechts + vor/zurück).

steuerung.jpg

im_modell.thumb.jpg.215e149a000fca760e32123f4907ddc5.jpg

steuerung.jpg.b377d72ab0ae64e6e2e9bf1439373dc1.jpg

Share this post


Link to post
Share on other sites

Sehr cool.

Die Oberfläche auf dem Tablet sieht auch schön aufgeräumt aus.

Wie viel Zeit hast du bisher Software-seitig investiert? (grob über den Daumen ^^)

Share this post


Link to post
Share on other sites

Ich habe daran in den letzten beiden Wochen gearbeitet, immer so ca. 3h pro Tag.

 

Die meiste Zeit habe ich am Anfang damit verbracht, in Android-Foren nach spezifischen Problemlösungen zu suchen. Das Feintuning der Servosteuerung (damit z. B. nicht zu viele Befehle pro Sekunde übers WLAN gesendet werden) war auch aufwendig.

 

Zuletzt habe ich z. B. eine Funktion ergänzt, um das Fahrlicht über Ambi-Light-Sensor automatisch einzuschalten, wenns zu dunkel wird. Das ging straight forward in ca. 1 Stunde.

 

Testfahrten muss man dann aber auch noch machen ...

Share this post


Link to post
Share on other sites

Das GUI sieht richtig gut aus, mit welcher Entwicklungsumgebung hast Du die Implementation für das Android-Tablet gemacht ?

Share this post


Link to post
Share on other sites

Ich nutze die Standard-Android-Umgebung: Eclipse (Java) mit zusätzlichen Google-Tools. Ich arbeite meist unter Linux, auch wenn USB-Debugging dann nicht funktioniert.

 

Der Geräte-Emulator läuft bei mir unter Linux Faktor 5 schneller als unter Windows - warum auch immer ...

Share this post


Link to post
Share on other sites

Danke, remotecontrol.

Lässt sich diese Umgebung nahezu identisch auch unter Win einrichten ?

Die Controls sind aus der AWT-Library ?

Bei der Vielfalt von günstigen Android-Tablets, könnte ich mir vorstellen die TF-Sachen für And. zu entw.

Share this post


Link to post
Share on other sites

Hallo Nic,

 

die Umgebung läuft auch problemlos unter Windows. Ich habe das Projekt aus Linux ohne Änderung nach Windows kopiert, dort im Android-Eclipse importiert => läuft auch dort im Emulator. Nur ist der Emulator zum Testen eben etwas langsamer.

 

Die Controls sind spezielle Android-Controls, kein AWT. Hier ist viel Android-API im Spiel und das kostet mich die meiste Zeit (bin kein Android Experte). Die Tinkerforge-API kann 1:1 verwendet werden. Mit dem Thread-Handling muss man etwas aufpassen.

 

Ich habe keine Rücksicht auf ältere Android-Versionen oder Geräte kleiner 7 Zoll genommen. Ich setze erst bei Android 4.1 oder höher auf (Nexus 7, bzw. 10). Das macht es an ein paar Stellen etwas einfacher.

 

Share this post


Link to post
Share on other sites

Danke remotecontrol.

Nun ja, das GUI kostet mir auch unter Delphi und Windows viel Zeit. Nur gibt es dafür nix schickes und preiswertes als TabletPC.

Verstehe ich richtig, die TF-Bindings für Java lassen sich ohne Anpassung fürs Android 4x benutzen ?

Was meinst Du mit

Mit dem Thread-Handling muss man etwas aufpassen.
Also doch Modif. im Framework ?

Share this post


Link to post
Share on other sites

Was meinst Du mit

Mit dem Thread-Handling muss man etwas aufpassen.
Also doch Modif. im Framework ?

 

Die Funktionsaufrufe der Bindings führen direkt Netzwerkkommunikation und blockieren auch im Zweifelsfall bis zum Timeout. Unter Android darf/soll man im UI Thread aber nichts potentiell blockierendes tun, damit das UI nicht hängen kann. Seit Android 4.2 bekommt man z.B. eine NetworkOnMainThreadException wenn man im UI Thread versucht einen Socket zu öffnen. Die Lösung dafür ist die Bindings in einem AsyncTask oder eigenen Thread zu benutzen.

Share this post


Link to post
Share on other sites

Ich habe auch sehr gute Erfahrungen mit dem USB-Debugging gemacht. Wenn du dein Tablet/Handy hast, einfach anstecken und darauf dein Programm ausführen. Breakpoints und alles andere was du vom Debugging so gewohnt bist funktioniert hervorragend.

Allerdings muss man sich in die Android-API echt einarbeiten, war deswegen auch überrascht, dass remotecontrol selbst Neuling ist, weil das Ergebnis sieht echt gut aus :D

Das was ich bisher gebastelt habe sieht eher weniger hübsch aus ^^

Share this post


Link to post
Share on other sites
Allerdings muss man sich in die Android-API echt einarbeiten

Was heißt das genauer ? Ist die Android-API so schlecht dokum., dass man sich alles googeln muss oder unvollständig, d.h. Standard-Komponenten muss man sich z.T. selbst stricken...

Und wie komfortabel sind die visuellen Komponenten ? Im Falle von Delphi und C# gibt es (fast) alles...

Share this post


Link to post
Share on other sites

Die Android API ist recht gut dokumentiert, aber auch recht umfangreich und ein Tablet (Mobiltelefon) ist eben kein PC. Da gibt es andere Systemdienste, die man auch erstmal kennen muss.

 

Der Haupteinstieg ist http://developer.android.com/index.html.

Darunter sind dann die API Beschreibungen. Weitere Beispiele habe ich in den Foren gesucht.

 

Widgets gibt es relativ viele. Es ist dann eher so, dass ich das Verhalten noch etwas beeinflussen will, z. B. einen Button mit 3 oder mehr Zuständen & Symbolen gibt es im Standard so nicht, ist aber einfach zu realisieren.

 

Das mit dem Thread-Handling wurde schon gut erklärt ("NetworkOnMainThreadException").

Share this post


Link to post
Share on other sites

Dokumentation usw ist super. Auch der Funktionsumfang stimmt.

Du musst halt nur einige Zeit investieren um zu verstehen wie ein Android-Programm läuft, wann es welche Nachrichten bekommt usw. Also das Framework kennenlernen.

 

z.B. wirst du irgendwann erfahren, dass das Rotieren deines Telefons (dann wenn es von Porträit auf Landscape wechselt) die Anwendung quasi neustartet.

 

Das ist nur ein einzelnes Beispiel, es ist einfach ein bisschen Lesestoff bis man insgesamt drin ist, war zumindest bei mir so. Aber kein Hexenwerk und auch nicht weil Android schlecht wäre, sondern einfach nur weil es halt ein vollständiges Betriebssystem mit eigenen Regeln ist, die man kennenlernen möchte :D

 

edit: Remotecontrol hat es über mir schon recht gut erklärt während ich diesen Post getippt habe :D

Share this post


Link to post
Share on other sites

Aha, jetzt verstehe ich, im ersten Moment denkt man an diese Eigenarten eines anderen Betriebssyst. nicht sofort. Besten Dank.

Share this post


Link to post
Share on other sites

Hi,

 

wenn wir bei "Wünsch dir was" wären, dann hätte ich gern ein Bild auf dem man das Tablet mit der Oberfläche + den Unimog sieht. Es geht darum auf einem Bild klarzumachen was bei dem Projekt gemacht wurde.

Detailaufnahmen wie z.B. der Innenaufbau sind da nicht so wichtig.

 

Grüße,

 

Bastian

Share this post


Link to post
Share on other sites

Ein weiteres Bild - mal beides zusammengefasst und aktuelles Bild der Steuerung.

 

Wie kann ich eigentlich direkt über das media-Wiki neue Bilder hochladen? Da habe ich nichts gefunden. Im Forum geht das.

Unimog_mit_Steuerung.thumb.jpg.46273948fd04778dc8ec9d9cb14d7a5e.jpg

Share this post


Link to post
Share on other sites

Hi, danke für die fix und fertig Lösung! Hab sie direkt so eingebaut.

 

Wegen der Bildersache gehe ich immer wie folgt vor:

Ich erstelle nen Link wie folgt:

[[File:project_rc_control_tablet_model_gui.jpg|thumb]]

 

Klicke dann drauf und lade das Bild hoch. Dann ist das Bild im System

und kann auch in einer Gallery verwendet werden:

 

<center>

<gallery widths=150px heights=150px perrow=4 caption="">

File:project_rc_control_tablet_model_gui.jpg

File:project_rc_control_tablet.jpg

File:project_rc_control_mounted.jpg

</gallery>

</center>

 

Grüße,

 

Bastian

Share this post


Link to post
Share on other sites

Das APK bekomme ich nicht ins WIKI, es kommt immer der Fehler

 

File extension ".apk" does not match the detected MIME type of the file (application/zip).

 

Das kommt, wenn ich das APK nochmal zippe (.apk.zip), aber auch, wenn ich das APK (was ja ein zip-File ist) nach '.zip' umbenenne. Die Meldung wundert mich insbesondere beim einfachen Umbenennen.

 

Habt Ihr eine Idee?

Share this post


Link to post
Share on other sites

Hm,

 

musste es auch testen. Ein APK direkt hochzuladen geht in der Tat nicht. Wenn du dieses APK aber Zipst lala.apk -> lala.zip, dann solltest du es hochladen können. hab es gerade nochmal getestet.

 

Grüße

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...