Forum: Mikrocontroller und Digitale Elektronik Rc Arduino Fernsteuerung Xbee


von Steffen N. (steffen_n)


Lesenswert?

Hallo Leute,
ich möchte eine RC Fernsteuerung für einen Panzer bauen,
das ganze auf Arduino Basis. Ich verwende zwei Mega 2560 Boards
und 2 2,4GHz Xbee Module. Über diese möchte ich eine normale
Serielle Kommunikation der beiden Arduinos herstellen.
Dies funktioniert einwandfrei, ich konnte bereits eine Verbindung
herstellen und die Kommunikation war vorhanden. Als Test habe ich
die xbees durch kabel ersetzt, dies funktionierte ebenfalls.
Im Prinzip soll jeder Eingang ausgelesen werden, der Wert übertragen
werden und wieder ausgegeben werden.
Nun meine Fragen:
1. Wie kann ich (welche(r) Befehl(e)?) mehr als eine Variable
übertragen, bzw. wir kann ich die Werte codieren.
2. Sollte ich das Programm (z.B. wenn 2 Inputs an, dann mach am 
Empfänger Output x an oder so)besser auf den Empfänger oder Sender 
schreiben oder aufteilen?
3. Kann ich auch die Analogen Signale übertragen und als PWM ausgeben,
z.B. für die ansteuerung von Motoren?

Vielen Dank im Vorraus,

Steffen_N

von Karl H. (kbuchegg)


Lesenswert?

Was du überträgst, bleibt ganz alleine dir überlassen.
Denk dir halt zb eine Kommando-Sprache aus. Zum Beispiel nach dem Muster
1
<Schlüsselbuchstabe> <Wert> <Zeilenvorschub>

zum Beispiel sendet der Sender
1
L 128
2
R 128
3
T 20
4
S 0
5
B 0
6
L 127
7
R 128
8
...

und das bedeutet:
'L' wie 'Geschwindigkeit der linken Kette'
'R' wie 'Geschwindigkeit der rechten Kette'
'T' wie 'Neigung des Geschützrohres im Turm'
'S' wie 'Helligkeit des SCheinwerfers'
'B' wie 'Helligkeit des Bremslichtes

also hat der Sender gerade zum Empfänger übertragen:
Linke Kette mit der Geschwindigkeitsstufe 128 fahren lassen. Und zwar 
vorwärts (rückwärts wären dann zb negative Werte)
Rechte Kette ebenfalls mit 128 vorwärts fahren lassen
Geschützrohr soll einigermassen waagrecht sein
Licht ist aus, Bremslicht ist auch aus.

Der Empfänger holt sich das Zeile für Zeile in einen String und wenn er 
eine Zeile beisammen hat, sieht er sich den ersten Buchstaben der Zeile 
an, der Aufschluss darüber gibt, was mit dem nachfolgenden Wert 
geschehen soll.

Du bist der Programmierer. An dieser Stelle bist du Gott. Du definierst 
Kraft deines Amtes, wie die Dinge funktionieren sollen.

> 3. Kann ich auch die Analogen Signale übertragen und als PWM ausgeben,
Wer sollte dich daran hindern? Was die Zahlen ausdrücken und was der 
Empfänger damit macht, programmierst ja schliesslich du. Wenn der Sender 
eine SPannung misst und die sich daraus ergebende Zahl vom ADC zusammen 
mit dem richtigen Schlüsselbuchstaben auf der Kommunikationsstrecke 
ausgibt und der Empfänger mit dieser Zahl dann eine PWM füttert, dann 
ist das eben so. Im Endeffekt kannst du dann im Sender durch drehen 
eines Potis die Helligkeit der Scheinwerfer einstellen. Das da 
zwischendurch aus der Potistellung eine Spannung wurde, aus der Spannung 
ein Zahlenwert, aus dem Zahlenwert ein Text der auf die Reise ging, beim 
Empfänger wieder in eine Zahl umgewandelt und auf die Scheinwerfer-PWM 
gelegt wurde, muss dich ja als Fahrer nicht interessieren. Der dreht nur 
um Poti und die Scheinwerfer werden heller oder dunkler.

: Bearbeitet durch User
von Steffen N. (steffen_n)


Lesenswert?

Danke schon mal für deine Antwort,
das hat mir schon sehr geholfen.
Wie lautet den der Befehl zum auslesen?

Serial.read(???);

und wie kann ich die verschiedenen Kanäle
voneinander trennen?
Gruß, Steffen

von PittyJ (Gast)


Lesenswert?

Es gib nur eine serielle Schnittstelle.
Alles andere muss durch dein Protokoll getrennt werden.

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.