Forum: Mikrocontroller und Digitale Elektronik Wie funktioniert das Graupner GControl Protokoll und hat es schon jemand entschlüsselt


von René B. (reneb)


Lesenswert?

Hallo MC.net Community,

ich habe einen Indoor-Heli mit GControl Modul fürs Handy und würde gerne 
zwei Protokolle/Schnittstellen wissen:
- Wie ist das IR-Protokoll zwischen Heli und GControl-Modul aufgebaut
- Wie ist das Protokoll zwischen Handy und GControl-Modul, welches über 
die Audio-Schnittstelle läuft, aufgebaut. Mein Modul läuft nur über die 
Audioschnittstelle an einem Android und ist NICHT das Steckmodul für die 
Unterseite der Apple Geräte!

Für alle die nicht wissen was gemeint ist, finden hier eine Demo 
(http://www.graupner.de/de/pressdetail/6d20ac55-968a-4300-911b-3f8305267d62)

Bitte nur posten, wenn jemand sich schon die Mühe gemacht hat das zu 
ergründen. Das WIE ich das selbst rauskriege, weiß ich (Oszi, IR-Diode, 
PC-Wave-Editor), aber vielleicht muss ich das Rad ja nicht neu erfinden.

Warum das ganze?
Weil es mich interessiert und sollte es simpel genug sein, würde ich ein 
IR-Sendemodul für meine große Funke über die Lehrer/Schüler Buchse 
designen und umgekehrt einen IR-Empänger der übers Handy läuft. Einfach 
nur weils geht und Spaß macht halt...

von René B. (reneb)


Lesenswert?

Hat keiner mal nachgeschaut?

Dann muss ich wohl selbst ran. Mit Hilfe des Oszis und einer 
IR-Diode+Widerstand moduliert das IR-Signal wohl auf 36kHz. Da ich 
werder am Hubschrauber im eingeschalteten Zustand messen möchten, noch 
das verschweißte Gehäuse des Senders öffnen, besorg ich mir mal einen 
dieser zwei fertig integrierten IR-Empfänger:
- TSOP31236 (reichelt)
- TSOP4836 (conrad)

Die sind fertig abgestimmt auf 36kHz und haben den Bandpass und 
Demodulator fertig eingebaut. So etwas ähnliches verwendet der Heli 
auch, denn auf der Rückseite steht so ein Dreibein in Miniaturbauform.

Vielleicht/hoffentlich ist es ja nur ein RC-5 basiertes Protokoll: 
http://de.wikipedia.org/wiki/RC-5

von dangerousprototypes (Gast)


Lesenswert?

René B. schrieb:
> besorg ich mir mal einen
> dieser zwei fertig integrierten IR-Empfänger:
> - TSOP31236 (reichelt)
> - TSOP4836 (conrad)

Wenn du das selbst dekodieren möchtest, besorg dir lieber das "USB 
Infrared Toy". http://dangerousprototypes.com/docs/USB_Infrared_Toy

@Mods: Ich habe wirklich nichts mit dangerousprototypes.com oder deren 
Produkten zu tun. ;)

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

René B. schrieb:

> Vielleicht/hoffentlich ist es ja nur ein RC-5 basiertes Protokoll:
> http://de.wikipedia.org/wiki/RC-5

Die Wahrscheinlichkeit ist relativ gering, da RC5 total veraltet ist.

Probiere es mal mit IRMP. IRMP kennt 30 Protokolle. Sollte es 
trotzdem nicht erkannt werden, kannst Du mit IRMP sogenannte "Scans" 
erstellen - siehe Artikel. Diese Scans kannst Du mir zuschicken. Sollte 
das Protokoll nicht allzu exotisch sein, baue ich es in IRMP ein.

Gruß,

Frank

von René B. (reneb)


Angehängte Dateien:

Lesenswert?

Das "Protokoll" scheint doch etwas exotisch zu sein. Anscheinend sind 
dort 4 Kanäle mit 6 oder 7 Bits aufkodiert. Den Start des Frames 
markieren je ein 1ms langer Lo und Hi-Pegel. Dann folgt eine Reihe von 
330ms langen Impulsen. Der Abstand zwischen diesen Impulsen scheint dann 
660ms für eine 1 und 330ms für ein 0 zu sein.
Ich fummel damit mal ein 4-Kanal Protokoll zusammen. Die Kanalcodierung 
für A/B hab ich noch nicht untersucht. Das ist aber kein mir bekanntes 
IR-Protokoll.
Im Anhang findet sich ein demodulierter Frame, den ich mit einem LA 
aufgenommen habe. Falls sich sowas in IRMP findet, weiß ich nicht unter 
welchem Namen.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

René B. schrieb:
> Den Start des Frames markieren je ein 1ms langer Lo und Hi-Pegel.

Benutze IRMP, sende mir die LOG-Dateien von ein paar Tasten zu und ich 
baue das Protokoll ein, wenn es von IRMP noch nicht abgedeckt wird.

Wie man LOG-Dateien erstellt, steht im Artikel von IRMP.

von René B. (reneb)


Lesenswert?

Habs gerade ergründet und kann den Heli per AVR fliegen (IR-LED und 
einen Port als 36kHz-Quelle). Codebeispiel und Erklärung folgt.
Es ist ein Puls-Distance-Protokoll, zumindest was die Daten angeht. 
4Bytes mit 0 (300ms Puls, 300ms Pause) und 1 (300ms Puls, 600ms Pause). 
Davon aber nur 3 Bytes "Nutzlast" und da auch nur 7LSBs, das achte ist 
immer 0.
Allerdings wird der Start eines Frames durch einen 2ms Puls mit 2ms 
Pause eingeleitet.
Abgesehen von dem blöden Startimpuls wäre in IRMP dafür das Grundgerüst 
enthalten. Aber wie gesagt, Rest folgt...

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

René B. schrieb:
> Abgesehen von dem blöden Startimpuls wäre in IRMP dafür das Grundgerüst
> enthalten. Aber wie gesagt, Rest folgt...

Fast alle Fernbedienungen benutzen einen Startimpuls. Das ist also 
überhaupt kein Problem für IRMP :-)

von Bernhard M. (boregard)


Lesenswert?

René B. schrieb:
> Es ist ein Puls-Distance-Protokoll, zumindest was die Daten angeht.
> 4Bytes mit 0 (300ms Puls, 300ms Pause) und 1 (300ms Puls, 600ms Pause).

Kommt mir lang vor, meinst Du Mikrosekunden?

von René B. (reneb)


Lesenswert?

> Kommt mir lang vor, meinst Du Mikrosekunden?
Natürlich µS(300 und 600), aber 2mS zu Beginn

von Hannes L. (hannes)


Lesenswert?

René B. schrieb:
> aber 2mS zu Beginn

Milli-Siemens???

...

von René B. (reneb)


Angehängte Dateien:

Lesenswert?

So, das Protokoll ist entschlüsselt und der Nachbau ist sogar besser als 
das Original (siehe Byte 3). Ein AVR entschlüsselt das DSC-Signal 
(Schülersignal) meiner Spektrum Handfunke und übersetzt es in das 
Infrarot-Protokoll. Die Steuerung ist extrem präzise und der kleine Heli 
ist mit dieser Steuerung echt ne Wucht.

Anbei einmal das dekodierte Signal, also ohne die 36kHz 
Modulationsfrequenz. Im Bild ist ein Hi-Pegel eine Sendepause und ein 
Lo-Pegel ein 36kHz IR-Burst. Die Pausen von 60-90ms zwischen den Frames 
müssen eingehalten werden, sonst muckt der Heli. IRMP beherrscht das 
Protokoll auch, mann muss nur die Puls/Pause-Verhältnisse anpassen. 
Start 2ms/2ms, 4Bytes wobei "0" 300µs/300µs und "1" 300µs/600µs sind.

Byte 0: Linksdrehung (0=maximal rechts, 63=neutral, 127=maximal links)
Byte 1: Rückwärts/Vorwärts (0=maximal vorwärts, 63=neutral,
        127=maximal rückwärts)
Byte 2: Hoch/Runter und Kanalwahl (A, B).
        Bei Kanal A ist das MSB=0 (0=aus, 127=max),
        bei Kanal B ist das MSB=1 (128+0=aus, 128+127=max)
Byte 3: Immer 0 (evtl. bei Geräten mit Schussfunktion in Gebrauch?)

Beim letzten Byte ist eigentlich das letzte LSB nicht Teil der 
Übertragung. Wahrscheinlich handelt es sich aber um einen 
Programmierfehler der iPhone/Android App. Beim Nachbau wird
auch das LSB als "0" übertragen und der Heli kommt damit klar.

Ich hab mir mit einem stark unterforderten mega8 mal einen Adapter 
zusammengefummelt. Dieser läuft aber mit einem 7,3732MHz-Quarz (nicht 
wie im Schaltplan mit den internen 8MHz). Wer die internen 8MHz benutzen 
möchte, muss die Flags für den Timer anpassen. Schaltplan und main.c 
liegen bei. Ist ne quick'n'dirty-Implementation, aber mehr wollte ich ja 
auch nicht. Versorgung erfolgt durch 4 leicht entladenen Akkus mit 
Schottky in Reihe. Natürlich kann man auch ne ordentliche stabilisierte 
Versorgung mit 7805/LF50CV oder Schaltreglern bauen.

Die Software für iPhone und Android kommt von UPRTek. Witzigerweise 
funktionieren fast alle Apps aus dem Android Store mit dem Heli, also 
auch die für den "iFly" oder "iCopter". Die jeweils zugehörigen Produkte 
sehen sich dann auch verdammt ähnlich. Ich habe zwar iPhone-IR-Adapter 
mit 4, statt 3 Abgriffen am 3,5mm-Klinkenstecker gefunden. Aber die 
Produkte, bei denen auf der Abbildung die Variante mit 3 Abgriffen 
abgebildet ist, wird meist auch mit Android beworben, während bei den 
anderen nur iPhone/iPad/iPod dabei stehen. Hier mal eine Liste der 
zugehörigen Kandidaten:

Helikopter (wahrscheinlich) kompatibel:
Graupner Nano Star 3 und 3A Gyro (amazon, zusätzlich für Android 
ausgewiesen)
iFly RC-Helikopter (arktis)
i-Helicopter (akshopping, chilitec)
Syma I-Copter S111G (rcmaster, zusätzlich für Android ausgewiesen, nur 
26€)
RC-Helicopter McTrack I-Fly IPhone Edition (electrobi, ts-audio)

Helikopter mit Schussfunktion:
Lujex U810A iHelicopter 3.5CH Mini RC Hubschrauber Gyro Launching 
Missile (amazon)


Vielleicht hat ja jemand noch ein paar Ideen, was man mit einem 
µC-kontrollierten Heli so alles anstellen kann. Ich finds ganz 
praktisch, weil einfach keine Billigfunke und keine Touchscreen oder auf 
Lagesensor basierte Fernbedienung an die Präzision und Ergonomie einer 
ordentlichen Funke herankommt.

von Wolfgang S. (angelusnoctis)


Lesenswert?

Hallo  René B.,
ist zwar schon ne Weile her aber ich interessiere mich für Deinen 
Beitrag und die Umsetzung davon.

Ich habe einen iDroid-Heli der mit einer Android App per Infrarot 
gesteuert wird und möchte diesen mit meiner alten Graupner MC-15 steuern 
wenn möglich.
Weißt Du ob das möglich auch wäre und was ich da eventuell ändern 
müsste?

Gruß
Angel

von René B. (reneb)


Lesenswert?

Es wird wohl nicht von vornherein laufen, ein bissl Nacharbeit ist schon 
notwendig. Evtl. sogar beim Einlesen des Schülersignals, da ich nicht 
die Ausgangscharakteristik deiner Funke kenne.

Prinzipiell ist das von mir eine ziemlich dreckige Umsetzung. Aber du 
kannst im Code sehen, wie die Impulse der Funkfernsteuerung ausgewertet 
werden.
Halt nicht per Funk, sondern eben die Signale, die aus der Schülerbuchse 
kommen,

Dann wird daraus das Signal für den Heli generiert.

Allerdings eben für das Graupner Protokoll. Wahrscheinlich wird es bei 
deinem wieder anders aussehen. Aber wenn du es analysierst, kannst du ja 
den Zusammenbau des Ausgangssignals anpassen.


Der Signalverlauf mit Funke an der Schülerbuchse ist ja:

Knüppel -> Schülerbuchse -> Atmega -> IR-Ausgabe -> Heli

: Bearbeitet durch User
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.