Sie sind vermutlich noch nicht im Forum angemeldet - Klicken Sie hier um sich kostenlos anzumelden Impressum 
Sie können sich hier anmelden
Dieses Thema hat 12 Antworten
und wurde 2.680 mal aufgerufen
 Fernsteuerungen
finch Offline



Beiträge: 9

27.07.2014 14:21
Eigenbau Fernsteuerung Antworten

Hallo zusammen,
ich möchte hier mein aktuelles Software-Bastelprojekt vorstellen:
Eine DSM2 Fernsteuerung, die auf einem gewöhnlichen Gamepad basiert.

Als Sender wird das Modul Tx1-K1 von Deltang verwendet, das sich über eine serielle Schnittstelle ansprechen lässt.

Controller und Sender werden über einen Raspberry Pi miteinander verbunden und angesteuert. Der Raspberry Pi ist ein günstiger Mini-Computer auf Linux-Basis, der viele Möglichkeiten zur Hardwareerweiterung bietet. Er besitzt einen Erweiterungsport, an dessen serielle Schnittstelle der Sender angeschlossen wird.

Als Gamepad wird hier exemplarisch der DualShock 3 Controller der Sony PlayStation verwendet. Er wird über einen Bluetooth-USB-Adapter mit dem Raspberry Pi verbunden.

Ein USB-WiFi-Adapter sowie ein beliebiges Smartphone ermöglichen optional die Konfiguration und Bedienung per Weboberfläche.

Die einzelnen Komponenten werden auf dem Raspberry Pi eingerichtet und über eine in Python geschriebe Software miteinander verknüpft. Bisher sind damit folgende Funktionen umgesetzt:
* Betrieb von 4 unabhängign Modellen mit je 7 Kanälen über das DSM2-Protokoll
* Die Auswahl des aktiven Modells sowie Binden über den Controller oder optional per Weboberfläche
* Steuerparameter der Modelle können über die Weboberfäche im Betrieb verändert werden

P1020960_2.JPG - Bild entfernt (keine Rechte)

Da der Raspberry Pi noch weitere Anschlüsse besitzt sind für den stationären Betrieb auf Modulen/Modellbahnanlagen noch weitere Funktionen denkbar:
* Steuerung von Lichtern und Servos über eine Erweiterungskarte
* Steuerung von Lokomotiven über SRCP

Erste Praxistests mit zwei umschaltbaren Modellen verliefen schon erfolgreich. Nun muss die Software noch verfeinert und die Weboberfläche ausgebaut werden.

Für einen geschätzten Gesamtpreis von 120EUR ist der Aufwand im Vergleich zu einer konventionellen Fernsteuerung schon höher. Mit ein bischen Arbeit in der Softwareentwicklung bietet sich aber auch die Möglichkeit einer individuellen Kanalbelegung und komplexer Mischeinstellungen.

Vielleicht ist diese Spielerei ja für den ein oder anderen auch interessant.

Grüße
Christoph


Toni Offline




Beiträge: 1.473

28.07.2014 08:47
#2 RE: Eigenbau Fernsteuerung Antworten

Interessanter Ansatz.
Das wird quasi das RC Gegenstück zur herkömmlichen digitalen DCCar oder OpenCar bzw. Lokomotiv Steuerung über den Rechner...
Ich werde es mal im Auge behalten...

Nette Grüße vom Toni

> Die Rechtschreib- und Gramatikfehler sind Ausdruck meiner Kreativität ...<


Lasse Offline



Beiträge: 162

29.07.2014 20:18
#3 RE: Eigenbau Fernsteuerung Antworten

Moin!

Auch ein interessantes Projekt! Benutzt der PS-Controller ein eigenes (offenes) Protokoll oder ganz offen als normales HID? Gefühlt hätte ich nämlich immer gesagt das solche Konzerne sich was hübsches proprietäres basteln :-).

Gruß

Lasse


finch Offline



Beiträge: 9

29.07.2014 21:36
#4 RE: Eigenbau Fernsteuerung Antworten

Hallo Lasse,

der Controller lässt sich über Bluetooth verbinden und benötigt dann eine Software, die im Hintergrund läuft. Danach verhält er sich aber wie ein normaler Joystick. Also nicht ganz 'Plug and Play', aber ich weiß auch nicht wie sich das bei anderen Geräten verhält.

Grüße
Christoph


Scotch Offline




Beiträge: 415

12.08.2014 21:35
#5 RE: Eigenbau Fernsteuerung Antworten

Hallo Christoph

ich habe mir vor ca 2 Wochen auch das TX1-K1 gekauft (gibt es auch bei Lipoly.de)
Hatte aber gedacht das ich es einfacher hin bekomme mit der Programmierung als per PPM.
Na ja hab heute mal David (Deltang) angeschrieben und gefragt ob er ein Beispiel Code für mich hat.
Darauf hat er mir den Link zu deinem Projekt geschickt. Wie klein die Welt doch ist ;-)

Ich habe vor das Sendemodul per Arduino und zwei analogen Joysticks anzusprechen.
Ist also die etwas günstigere Variante. (einen Pi habe ich hier auch noch rum liegen)
Ich weiß noch nicht ob ich das mit dem Übertragungsprotokoll richtig verstanden habe.
Wenn ich es richtig verstehe sind das die Min Mid und Max Hexwerte pro Kanal

1
2
3
4
5
6
7
8
9
10
 

Kanal Kanal name Min String Mitte Strg Max Strg
Word Wert Wort Wert Wort Wert
0 Gas / Pitch 0x0000 0x01FF 0x03FF
1 Querruder 0x0400 0x05FF 0x07FF
2 Höhenruder 0x0800 0x09FF 0x0BFF
3 Sitenruder 0x0C00 0x0DFF 0x0FFF
4 Fahrwerk 0x1000 0x11FF 0x13FF
5 Aux 1 0x1400 0x15FF 0x17FF
6 Aux 2 0x1800 0x17FF 0x1BFF
 



Aber wie bilde ich jetzt die Checksumme
Kannst du mir das mal an einem Beispiel zeigen.

Am Besten ein ganze Datenfram für alle Kanäle

Gruß Ingo

------------------------------------------

Meine Webseite


Scotch Offline




Beiträge: 415

13.08.2014 00:25
#6 RE: Eigenbau Fernsteuerung Antworten

Hier mal ein Beispiel wie ich denke das auf allen Kanälen der Max wert ausgegeben werden kann.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
void setup(){
Serial.begin(9600);
}
 

void loop()
{
byte data[16];
data[1] = 0;
 
for(int i = 0; i < 7; i++)
{
unsigned int value = 1023;
 
byte high = highByte(value) | (i << 2);
byte low = lowByte(value);
 
data[i * 2 + 2] = high;
data[i * 2 + 3] = low;
 
Serial.print(high, HEX);
Serial.print(low, HEX);
Serial.print(" ");
Serial.print(high, BIN);
Serial.println(low, BIN);
}
unsigned int checksum = 0;
 
for(int i = 1; i < 16; i++)
{
checksum += data[i];
}
data[0] = (byte)checksum;
Serial.print("Checksumme = ");
Serial.print(data[0], HEX);
Serial.print(" ");
Serial.println(data[0], BIN);
delay(10000);
Serial.println("test");
Serial.write(data, 16);// send 16 bytes from serial
Serial.println("testende");
}
 


Als Ergebnis auf dem Serial Monitor bekomme ich dann das hier.

Zitat

03FF 0001111111111
07FF 0011111111111
0BFF 0101111111111
0FFF 0111111111111
13FF 1001111111111
17FF 1011111111111
1BFF 1101111111111
Checksumme = 62 1100010

(Vorstehende Nullen habe ich der besseren Darstellung ergänzt.)

wenn ich die Bytes hintereinander ausgebe sieht es so aus

Zitat
62,00,03,FF,07,FF,0B,FF,0F,FF,13,FF,17,FF,1B,FF



Gruß Ingo

------------------------------------------

Meine Webseite


Scotch Offline




Beiträge: 415

13.08.2014 21:09
#7 RE: Eigenbau Fernsteuerung Antworten

So habe es jetzt erfolgreich mit Zufallswerten getestet.
Vielen Dank noch mal an Serenifly für die Unterstürzung

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 

/* the TX requires 16 bytes
 
Byte 1 Checksum (sum of bytes 2-16 cast to 1 byte)
Byte 2 Not used (can be any value)
Bytes 3-16 2 bytes per channel with following structure 0b000 CCC 9876543210
- 000 = not used (normally zeros)
- CCC = channel number (0=Thr, 1=Ail, 2=Ele, 3=Rud, 4=Gear, 5=Aux1, 6=Aux2)
- 9876543210 = 10bit channel position
 
so send something like:
 
sum needs calculated
0x00 second byte is not used
 
// all chan send same data PPPPPPPPPP is a 10 bit int
//or 8 would be easier depending on the accuracy you need
B000000PPPPPPPPPP
B000001PPPPPPPPPP
B000010PPPPPPPPPP
B000011PPPPPPPPPP
B000100PPPPPPPPPP
B000101PPPPPPPPPP
B000111PPPPPPPPPP
 
*/
 
void setup(){
Serial.begin(115200);
}
 
void loop()
{
byte data[16]; // Array of 16 Byte
data[1] = 0;
 
for(int i = 0; i < 7; i++)
{
//The Random Value for each channel. value is exklusiv,
//rnd(0, n) generate a value from 0 to n-1
unsigned int value = random(0, 1023

 
byte high = highByte(value) | (i << 2); //Hige and Low Byte
byte low = lowByte(value); //from the 10 Bit of Channlel Value
 
data[i * 2 + 2] = high; // Storing the high and
data[i * 2 + 3] = low; // low share of each channel in byte array
}
unsigned int checksum = 0; // Checksumme set to 0
 
for(int i = 1; i < 16; i++) // Current calculate checksum
{
checksum += data[i];
}
data[0] = (byte)checksum;
delay(500); // can be determined even reduced or eliminated
for(int i = 0; i < 16; i++)
{
 
}
 
Serial.write(data,16); // Output of the byte array at the transmitter module
}
 



Zum Binden des Empfängers muss der Bindestecker auf dem Empfänger gesteckt werden und dann mit Strom versorgt werden.
Dann wird das Sendemodule mit Strom versorgt (Der Arduino muss dafür nicht angeschlossen werden).
Jetzt muss Pin 1 vom Sendemodul mit GND für ca. 2 Sec. verbunden werden (Obere und Untere Pin NICHT den Mitlernen Pin !!!)
Pinbelegung und Beschreibung -> http://www.micronradiocontrol.co.uk/docs/dt/dt-tx1-k1-1.pdf
wen der Bindevorgang abgeschlossen ist, den Empfänger ausschalten und den Bindestecker entfernen.

Nun kann das Sendemodul mit Strom und dem Aruino verbunden werden. zum Schluss den Empfänger mit Strom versorgen.
Wenn alles glatt gegangen ist, solltet ein Angeschlossenes Servo zufällige Positionen anfahren.

Hier ein Video vom Aufbau und Test.
http://youtu.be/zjquOKNkfNU

------------------------------------------

Meine Webseite


finch Offline



Beiträge: 9

19.08.2014 21:05
#8 RE: Eigenbau Fernsteuerung Antworten

Hallo Ingo,

das sieht doch alles schon sehr gut aus. Sind deine Probleme damit gelöst?


Grüße
Christoph

P.S.: Ich war leider die letzten Tage unterwegs und nicht im Forum, sonst hätte ich dir auch früher geantwortet.


Scotch Offline




Beiträge: 415

19.08.2014 21:50
#9 RE: Eigenbau Fernsteuerung Antworten

Hallo Christoph,

ja die Problem sind damit gelöst.
Obwohl ich jetzt doch ein PPM Modul benötige da ich
jetzt ein Andern weg einschlagen werde.
So bald ich dort etwas weiter bin, werde ich hier in einen
eigenen Beitrag berichten.

Gruß Ingo

------------------------------------------

Meine Webseite


Toni Offline




Beiträge: 1.473

05.08.2017 21:33
#10 RE: Eigenbau Fernsteuerung Antworten

Hallo Ingo

Ich war gerade mal am durchstöbern des Forums und bin hier "hängen geblieben"...

Gibts denn schon neue Erkenntnisse bzw. Ergebnisse bei dem Projekt?

Nette Grüße vom Toni

Rechtschreib- und Gramatikfehler sind Ausdruck meiner Kreativität ...

DIES und DAS hilft Leben retten!


Scotch Offline




Beiträge: 415

06.08.2017 13:29
#11 RE: Eigenbau Fernsteuerung Antworten

Hallo Toni,

hab das nicht weiter verfolgt.

Gruß
Ingo

------------------------------------------

Meine Webseite


Toni Offline




Beiträge: 1.473

06.08.2017 15:14
#12 RE: Eigenbau Fernsteuerung Antworten

Schade, aber man kennt das ja selbst auch...

Man tüftelt an einem Projekt, um dann festzustellen, dass es mittlerweile etwas besseres bzw. effizienteres gibt und das begonnene Projekt wird dann meist unvollendet aufgegeben oder anderweitig umfunktioniert bzw. weiter genutzt.

Naja, macht nix, aber hätte ja sein können, dass es da schon ein Endergebnis gibt, was wir nur noch nicht kannten.

Nette Grüße vom Toni

Rechtschreib- und Gramatikfehler sind Ausdruck meiner Kreativität ...

DIES und DAS hilft Leben retten!


maxt Offline




Beiträge: 39

09.02.2018 11:32
#13 RE: Eigenbau Fernsteuerung Antworten

Hallo,

ich bin neu im Mikromodellbau und bin auf dieses Projekt gestoßen.

Da ich selbst noch keine Fernbedienung besitze, dafür aber eine PS4 und einen Arduino, habe ich mir gedacht, da versuche ich das mal.

Der PS4 Controller wird über das Arduino USB-Shield zur Zeit noch per Kabel verbunden. Dafür gibt es auch eine Library. --> Funktioniert super.

Nachdem ich fälschlicherweise zuerst einen TX1-M gekauft hatte, mit dem das so nicht fkt, akzeptiert der TX1-K1 das generierte PPM-Signal.

Als Empfänger kommt ein Deltang RX 43 d 32 zum Einsatz. An diesem sind zur Zeit 3 Motoren angeschlossen.

Die sich auch Problemlos über den Arduino steuern lassen. Weitere Komponenten konnte ich noch nicht testen, da noch nicht vorhanden.

Bei der Verbindung über Bluetooth gibt es aktuell noch Probleme. Grundsätzlich fkt das, allerdings mit einer Verzögerung von ungefähr einer Sekunde.


MfG

Max


«« Flysky FS-i6
 Sprung  

disconnected Mikromodell-Chat Mitglieder Online 3
Xobor Xobor Community Software
Datenschutz