Graupner HoTT Telemetrie-Sensoren Eigenbau DIY | Telemetrie-Protokoll entschlüsselt

Das ist klar! / Stand der Dinge

Das ist klar! / Stand der Dinge

Danke für die Stichworte "gewerblich" und "genehmigt"
Ich will und werde keine Sensoren verkaufen, sondern nur Software und How-To's
veröffentlichen. Für mich ist das nur ein Schlechtwetter-Hobby.

Mit Richtlinien kann ich gut verstehen. Da wir hier in Berlin aber sowieso
(unter Duldung der Behörden) ganz wilden Wildflug betreiben,
ist das das geringste Problem :cool:



______________________________________


Übrigens kann der Arduino seit heute Abend ein paar Brocken "Hott" sprechen :D
Spannungs- und Höheninformationen werden mit 19200 Baud übertragen.
Interessanterweise musste ich zwischen zwei Bytes noch 2 ms Extradelay
einbauen :)

Statt eines korrekt berechneten CRC-Bytes habe ich erstmal mit experimentell ermittelten
Prüfbytes gearbeitet. Ich überlege mir echt, ob ich in das reverse-engineering des Prüfsummenalgorithmus noch weitere Arbeit inverstiere.... (hab gestern am späten Abend
3 Stunden alle möglichen Polynome, Initialwerte, XOR, Vorwärts- und Rückwärts, Bit-Umkehrungen per Software durchtesten lassen.... ) *gähn*

Für den 8; Bit großen Zahlenraum der denkbaren Spannungswerte
kann man eben mal schnell alle zulässigen Werte durchprobieren und dann als
Konstanten in Form einer Nachschlage-Tabelle ablegen.
Das geht schneller, spart Speicher und Akku ;)
 

Ulrich Horn

Moderator
Teammitglied
Leute, hier geht es um nicht mehr als um die mit reverse-Engineering gewonnen Informationen über ein Protokoll. 'flying-doctor' zeigt, dass man dafür nicht viel mehr als einen simplen Logic-Analyzer braucht.

Gewerblich ist das nicht verwendbar, denn das zugrundeliegende Protokoll ist nicht in Stein gemeißelt. Würde jemand ein Produkt auf dieser Basis entwickeln und verkaufen, bekommt er ein ernstes Problem, wenn Graupner das Protokoll ändert. Und das können sie jederzeit, denn sie sind Herr des Verfahrens.

Deswegen hat das hier reinen Hobby-Charakter. Wer mag, kann sich darauf einlassen, basteln und lernen, und etwas bauen, was nicht angeboten wird. Es eignet sich jedoch nicht dazu, marktfähige Alternativen zu Graupner-Produkten zu entwickeln ;)

Grüße, Ulrich
 
Hallo Flying-doctor,
ich finde Deine Idee mit den HoTT-Sensoren ja ehrlich klasse! Zumal es dir ja offensichtlich nicht darum geht, Graupner konkurenz zu machen, sondern nur etwas zu entwickeln, was es sonst noch nicht gibt.
Aber Graupner will ja vermutlich auch nicht alles abdecken und gibt daher die Daten frei.

Wenn man die Daten anfordert, dann bekommt man diese auch.

Ich verstehe daher absolut nicht, warum Du dir so eine Arbeit mit dem ´Reverse-Engineering´ machst. Frag doch einfach mal bei Graupner an!!



Dirk
 
@Ulrich
In dem Moment wo er das hier umsetzt:
"Abgabe des fertigen Sensors an interessierte Mitflieger und Forumskollegen"
ist er gewerblich, denn er wird den Sensor wohl kaum verschenken ( selbst das kann als Gewerbe gelten).
Es ist sogar schon ein Gewerbe, wenn man z.B. bei HobbyKing für die Vereinskameraden eine Sammelbestellung aufgibt - mit allen damit verbundenen Pflichten, die ein gewerblicher Importeur so zu erfüllen hat ( WEEE, Gewährleistung, Produkthaftung, etc. ).

@Dirk
So darf er alles veröffentlichen was er heraus findet, während er bei Graupner ein Non-Disclosure Agreement unterschreiben muss und keine Einzelheiten zu seiner Entwicklung veröffentlichen kann.

Aber witzig dass es jetzt für andere Systeme losgeht - fast 3 Jahre ! nachdem findige Leute das Jeti Protokoll ausgemessen haben. :D
 
wollte meine Mittagspause eigentlich anderes verwenden....

wollte meine Mittagspause eigentlich anderes verwenden....

wollte meine Mittagspause eigentlich anderes verwenden....


Aber aus gegebenem Anlass an die Bedenkenträger:


I. Also erstmal zum gewerblichen Interesse:

ich habe NICHT vor, irgendetwas zu verkaufen!
Als Arzt bin ich beruflich voll ausgelastet und finanziell zufrieden.
Aber ich verbringe gerne meine Freizeit mit Klavierspielen,
Lesen, Programmieren und Modellflugzeugbau...

Weder habe ich ein Interesse daran, einen Shop zu eröffnen,
noch mich mit irgendwelchen Elektroschrott-Rücknahmen
oder Abmahnverfahren auseinander zu setzen...
Besonders möchte ich hervorheben, dass ich
der Fa. Graupner nicht schade.

Mit dem Entwickeln von interessanten Anwendungen verfolge
ich keine finanziellen Interessen, sondern halte mein Gehirn fit.
Andere Leute spielen Sudoko oder sowas :p


II. Reverse Engineering
Warum ich lieber eine Schnittstelle analysiere, anstatt sie
in einer Spezifikation nachzulesen, kann ich nicht sicher sagen.
Vielleicht liegen die Ursachen in meiner Sozialisation.


Es gibt jedoch einen rechtlichen Unterschied zwischen

1. der Nutzung eines von mir angeschafften Elektrogeräts (HoTT-Empfänger/Sender)
im Zusammenspiel mit einem quelloffenen Mikroprozessor (Arduino ist Open Source),
wenn ich ein Protokoll selbst analysiert habe.

gegenüber

2 der Nutzung einer von der Firma Graupner bereitgestellten Spezifikation,
die sehr wohl schützenswürdig ist! Auch daraus abgeleitete Software würde
automatisch geschützt.


Rein praktisch dürfte ich meinen Quellcode nicht an dritte weitergeben, da die darin umgesetzte Spezifikation nur in eine andere "Repräsentation" darstellt. Anders gesagt: Ein einfaches serielles Protokoll genießt keinen Schutz, da es im Jahr 2010 keine entsprechende "Schöpfungshöhe" aufweist! Es darf analysiert und genutzt werden.
Zu Zeiten als serielle Protokolle noch neu waren, war das anders!
RS-232 und I2C waren - glaube ich - sogar patentiert.

Schade... Pause ist zuende..
 
@Gregor
Das ist ein Kommentar auf Ulrichs Beitrag, der auf eigenen Erfahrungen aus der Entwicklung eines internen Jeti Displays für die MC-24 beruht. Er plant ja die "Abgabe des fertigen Sensors an interessierte Mitflieger und Forumskollegen", alleine auf RCN gibt es >30.000 "Forumskollegen" zzgl. stiller Mitleser ...

Ulrichs Beitrag bagatellisiert übrigens Verstöße gegen das ElektroG ( Umsetzung der Richtlinien 2002/95/EG (RoHS) und 2002/96/EG (WEEE) ) und fällt damit eigentlich unter FR 1.3 . Damit Du das nachvollziehen kannst, habe ich Dir oben ein paar relevante Links eingefügt. Die sind übrigens für jeden interessant, der so ein Projekt umsetzen möchte und das Projekt mit der Aussage "Abgabe des fertigen Sensors an interessierte Mitflieger und Forumskollegen" beginnt.

Da das Wissen um den rechtlichen Rahmen Einfluß auf die Entwicklung hat, z.B.
- SMD Bauteile (schlecht von Laien zu löten) vs. DIP Bauteile (einfach zu löten)
- eigene Hardware (Herstellung?) vs. fertige Hardware (Arduino - aber gibt's ein passendes Board?)
- Fertiggerät ( müssen wegen der Entsorgung angemeldet werden ) vs Bausatz ( muss ggfs. nicht angemeldet werden )
sollte man sich frühzeitig informieren.

Das meiste kann man allerdings weitgehend ignorieren, wenn man nur für sich selbst entwickelt - aber die Absicht den Sensor weiter zu geben hat er ja inkl. einem Zeitplan der Entwicklungsstufen hier schon veröffentlicht und damit gelten eben andere Rahmenbedingungen als für eine private Bastelei.

ich habe NICHT vor, irgendetwas zu verkaufen!
Dann darfst Du das aber auch nicht ankündigen. Warte mal ab, wenn die Dinger funktionieren und Dir die Leute die Bude einrennen weil sie entweder Geld sparen wollen oder Graupner nichts vergleichbares hat.
Mein Jeti Display habe ich ursprünglich auch nur für mich entwickelt - ich hab es auch nicht nötig, aus dem Hobby Kapital zu schlagen. Aber "Gefälligkeiten" in dem Bereich können schnell sehr teuer werden, wenn Du es nicht richtig angehst. Mal eben "abgeben" geht eben nicht.

Und jetzt weiter zum Protokoll :D
 
Arduino Referenz-Imoplementierung ist fertig! (Alpha-Stadium)

Arduino Referenz-Imoplementierung ist fertig! (Alpha-Stadium)

[Tippfehler: Imoplementierung --> Implementierung ]

Ich freue mich, euch mitteilen zu können, dass der erste "Eigenbausensor"
in der Software-Version 0.092 gerade fertig ist.

Das vollständige Messageprotokoll zur Verbindung mit einem GR-16 Empfänger
ist implementiert und liefert für alle möglichen Telemetrie-Funktionen und Alarme
die korrekten Werte;
hoffentlich ;)

Der Code und das einfach Konzepte kann als Basis für eigene Sensoren verwendet
werden und auch als generische Schnittstelle z.B. für Flyduino oder Ardupilot u.a.
Wer Code und Dokumentation haben möchte, kann mich anschreiben
und mir seine Email mitteilen. Die Benutzung erlaube ich nur zu nicht
kommerziellen Zwecken! (später vielleicht mal GLPL) Ob ich den Code tatsächlich
frei geben kann, muss ich noch rechtlich prüfen.


viele Grüße.
S.
 
heute Schaltplan des Prototypen + Bilder vom Setup (request for comment...)

heute Schaltplan des Prototypen + Bilder vom Setup (request for comment...)

Die Software Version 094 ist verfügbar.

https://docs.google.com/document/d/1eUdOwxmL-dTzQMPYpY1-SOJGABIoKwSTcIz8Az5PyXs/edit?hl=de

Nur mal ein Zwischenstand! wird alles noch viel kleiner und smarter :)
tecodino-0094-schaltplan.jpg

tecodino-0094-setup-alles.jpg

tecodino-0094-setup-nah.jpg
 
Für den Anfang sieht das doch gar nicht mal schlecht aus. :)

Du schreibst aber:
Spannung über dem Analogeingan maximal 4 Volt
Die Arduino-Spezifikation erlaubt max. 50 mA.
50mA Wo? Am Analogeingang oder an den Ausgängen. Wenn das auf den Analogeingang bezogen ist, so wirkt sich das aber nicht direkt auf die Wahl der Widerstände aus.
Du hast das so verstanden, dass der Strom, welcher durch deine Messwiderstände fliesst max 50mA sein darf. Damit hat das aber eigentlich nichts zu tun.
Wenn die Spannung am Analogeingang 4V überschreitet, wird versucht diese über interne Klemmdioden wieder nach unten zu ziehen. Mit den 50mA ist der maximale Strom gemeint, welche dann da hinenfließen kann ohne, dass der Controller beschädigt wird.
Ist das helbwegs verständlich geschrieben? :D

Zum Schutz des Analogeingangs würde ich außen noch 2 Klemmdionden gegen GND und deinen Stabilisierten 4V Vcc einbauen.

Welchen Spannungsregler verwendest du eigentlich?

PS.: Wenn du die Spannung softwaremäßig nicht nur einmal misst sondern öfters und dann Mittelwert oder so ausgiebst kannst du weitestgehend verhindern, dass die Anzeige zwischen Werten "herumspringt". Diese Sprünge könnten durch die Impulsförmige Stromaufnahme eines BL Reglers oder dergleichen hervorgerufen werden. Zeit zum mehrmals messen hast du ja. Dann lagweilt sich dein Microcontroller nicht zu Tode. :D

MfG
Ritschi
 
@Ritschi: kannst Du das mit den zusätzlichen Bauteilen genauer erklären?

@Ritschi: kannst Du das mit den zusätzlichen Bauteilen genauer erklären?

Das klingt sehr interessant!
Mit Deinen anderen Bauteilen bitte ich um mehr Erklärung!! Daaaanke!!
(Bin kein E-Techniker)

Als Spannung habe ich zum Testen mit dem großen Testboard (Freeduino)
3-Zellen Spannung aus einem Lipopack genommen. Jedes Board hat eine
eigene Spannungsstabilisierung. Also ganz einfach, oder?
Habe ich was übersehen?:rolleyes:

Für die kleine Platine (Arduini pro mini) wollte ich die knapp 5 Volt aus
dem Empfänger nehmen. Das sollte doch reichen, oder?
So soll das in ein paar Tagen aussehen: :D
arduino-mini-pro-setup-0095.jpg


LG Stefan
 
Ach so...

Ach so...

Für den Anfang sieht das doch gar nicht mal schlecht aus. :)
Du schreibst aber:
50mA Wo?
i
An allen Inputs (gesamt)
Den Spannungsteiler habe ich so bemessen, dass nur ca. 1 mA fließt.
wir wollen ja nur messen und nicht "braten":)

Zum Schutz des Analogeingangs würde ich außen noch 2 Klemmdioden
gegen GND und deinen Stabilisierten 4V Vcc einbauen.
wie genau?

PS.: Wenn du die Spannung softwaremäßig nicht nur einmal misst sondern öfters und dann Mittelwert oder so ausgiebst kannst du weitestgehend verhindern, dass die Anzeige zwischen Werten "herumspringt".
möchte ich mit gleitenden Mittelwerten lösen.
 
Hallo Stefan,

vielen Dank für Deine Arbeit, die Du in das Projekt steckst! Ich hab mir mal den Code angesehen und bin echt begeistert wie gut Du alles dokumentierst.

Leider hast Du in der Schaltung der Spannungsmessung einige falsche Annahmen gemacht, und bei der Berechnung der ausgegebenen Spannung falsch gerechnet. Hier die entsprechende Textstelle:

Dies ist experimentell, aber funktioniert recht ordentlich.
Am Analogeingang 4 wird eine einfacher hochohmiger Spannungsteiler aus zwei
(Metallschicht)widerständen realisiert. Die Widerstände werden passend zum Spannungsbereich gewählt, der gemessen werden sollen 0.1 - 53.5 Volt)

Spannung über dem Teiler z.B. 12.6 Volt (= 3 Lipozellen)
Spannung über dem Analogeingan maximal 4 Volt
Die Arduino-Spezifikation erlaubt max. 50 mA.
Wir wählen einen maximalen Stom von 1 mA (sicher ist sicher...)

Berechnung mit Hilfe von http://www.shosworld.de/Elektronik/spannungsteiler.html

1. Widerstand 8.2 kOhm
2. Widerstand 3.9 kOhm
=> Spannung am Analogeingang des Arduino max. 4.061 V Volt bei max. ca. 1.04 mA.

Ich arbeite momentan aber mit 10 kOhm und 500 Ohm, was perfekt klappt.
(Messwert einmalig per Software geeicht)

<snip>

// die wahre Spannung meines Testlipos war 12.0 V, arduino misst “126”,
//also muss ich ganz simpel 6 abziehen. Diese manuelle Kalibrierug
//wegen der ungenauen Widerstände soll zukünftig automatisch passieren.
//dazu möchte ich die interne Referenzspanniung (1100 mV oder 4960 mV?)
//nutzen. Muss da mal tüfteln.

Deine erste falsche Annahme ist, das der Arduino bis 4 Volt misst. Er misst aber immer bis 1 Bit unter die Spannung an AVCC , die hier mit der Betriebsspannung verbunden ist oder die interne Referenzspannung von 1,1V. Das müsste man aber mit einem Register einschalten.
Somit kann man von 0-5V messen mit 10 Bit (1024 Stufen) Auflösung. Daraus folgt, das die kleinste zu messende Spannung (und jede Stufe) 4,88mV beträgt.

Weiterhin nimmst Du an das in den Eingang des ATMEGA Strom fließt. Das stimmt im Prinzip schon, es sind aber eher 50nA als 50mA ! Er ist laut Spezifikation für eine Impedanz von 10kOhm oder weniger ausgelegt. Das hat aber keinen Einfluss auf die Genauigkeit, sondern nur auf die Messgeschwindigkeit. Somit sollte der Spannungsteiler so niedrohmig wie möglich gewählt werden, ohne zu viel Strom aus der Batterie fließen zu lassen. Da warst Du mit Deinem 1mA schon im richtigen Bereich.

Um jetzt von 0 bis 20V zu messen (dem vernünftigen Spannungsbereich für einen 3 Zellen Lipo) muss der Spannungsteiler 3:1 ausgelegt werden. z.B. 1kOhm vom Messpin nach Masse und 3x1kOhm zum Akku. Dann fließt bei 20V ein Strom von 5mA durch den Spannungsteiler und entläd den Akku. Das sollte zu verschmerzen sein. Die 20V kann der Controller dann mit 1024 Schritten zu 19,52 mV messen. Den zu sendenden Messwert errechnest Du über ADC*0,01953 Dieser Wert errechnet sich aus 20V/1024 oder 20V/10Bit. Bei anderen Spannungsbereichen musst Du den Spannugsteiler und die Rechnung anpassen. Bei 10V ist der Teiler 1:1 und bei 40V 7:1.

Auch wenn sich einige Fehler eingeschlichen haben finde ich die Entwicklung klasse und werde sie weiter verfolgen! Wenn ich mich getäuscht haben sollte, bitte nicht zu fest hauen :)

Grüße, steve
 
Moin,

ich zitiere Dich mal.

...

Der Empfänger sendet alle 200 ms einen Request.
Und der Sensor antwortet mit einer Gruppe von 36 Bytes,
wenn ich mich nicht verzählt hab. Offenbar unterscheidet
sich die Antwort nur in den Datenbits....

Danach bin ich der Ansicht das Du auch ein Signal am RX-Pin haben mußt um zu wissen wann der RX Daten haben möchte.

Gruß

gecko
 
Hallo Stefan,
Um jetzt von 0 bis 20V zu messen (dem vernünftigen Spannungsbereich für einen 3 Zellen Lipo) muss der Spannungsteiler 3:1 ausgelegt werden. z.B. 1kOhm vom Messpin nach Masse und 3x1kOhm zum Akku. Dann fließt bei 20V ein Strom von 5mA durch den Spannungsteiler und entläd den Akku. Das sollte zu verschmerzen sein.
Grüße, steve


Daanke!
Muss mal zu Conrad und mir diese Widerstände kaufen:)
Habe bisher nur mit alten ausgelöteten aus einem alten Plattenspieler gewerkelt:D
 
Moin,
Danach bin ich der Ansicht das Du auch ein Signal am RX-Pin haben mußt.

Ja, das wäre dann eine komplette Protokollsequenz.
Der Code funktioniert aber wunderbar!

Offenbar verarbeitet der Empfänger zuerst die Antwort,
bevor er einen neuen Request.
Es klappt und daher würde ich jetzt ungerne mit Interrupts arbeiten.
Außerdem ist der aktuelle Code rechtlich einwandfreier (nur "antworten")

:cool:
 
So wie steve habe ich das auch gemeint. In den Eingang fließt nahezu kein Strom. Erst bei Überspannung am Analogeingang beginnt ein Strom zu fließen. Um nun den Eingang im Fall eines Fehlers zu schützen würde ich eben auch noch zu den Klemmdioden raten.

Was hast du nun genau für eine Referenzspannung?
An AVcc mit betriebsspannung verbunden ist, dann sollte diese aber konstant und bekannt sein.

So meinte ich das mit den Klemmdioden:
Anstatt dem BAT54S kann man auch 2 "normale" Schottky Dioden oder dergleichen nehmen.
0.png

Ich finde das Projekt toll. Weitermachen... :)

Wegen dem Protokoll kannst du zur Sicherheit auch mal ne Mail an Graupner senden...
 
Um nun den Eingang im Fall eines Fehlers zu schützen
würde ich eben auch noch zu den Klemmdioden raten.
Vielen Dank für die echt hilfreiche Zeichnung!
Mit den Dioden verstehe ich jetzt.
Das ist so wenig Mehraufwand,
dass man das einbauen sollte.

Was hast du nun genau für eine Referenzspannung?
Die vom Prozessor gemeldete Referenzspannung ist 4960 mV

Ich finde das Projekt toll. Weitermachen... :)
Danke! schön, dass Ihr mitmacht!

Wegen dem Protokoll kannst du zur Sicherheit auch mal ne Mail an Graupner senden...

Formell mache ich nur eine Zweckentfremdung des GR-16-Empfängers,
indem ich sinnvolle Signale einspeise Es macht mir Sorgen, wenn ich mich offiziell an Graupner wende.
Die Firma finde ich toll! Die Produkte sind spitze, nur möchte ich keine non-disclosure-Situation.
Bin doch nur ein einfacher Bastler, der gerne mal experimentiert.

Habe mir die urheberrechtliche Lage angeschaut:
es handelt sich NICHT um "disassembling" von Code, was vom Hersteller sogar geduldet
werden müsste [Jedoch nur, wenn er KEINE Spezifikation liefern würde (was Graupner ja macht)]
Sondern es handelt sich um eine Zweckentfremdung von Hardware, die ich erworben habe.
Man darf einen GR-16 und einen GAM ja auch als Briefbeschwerer verwenden (Eigentum)
Mehr nicht, damit ist es rechtlich absolut unbedenklich!
 
Die Schutzschaltung von Ritschi hilft auf jeden Fall sehr gut gehen alle Arten von Überspannung, insbesondere Statische Aufladungen beim Handeln.

Beim Spannungsteiler kannst Du in Grenzen (1k-10k) die Einzelwerte relativ frei wählen, hauptsache sie sind aus einer Charge (nebeneinander im Gurt) dann hast Du mit der Genauigkeit keinerlei Probleme, da die Werte untereinander kaum abweichen.

Und nicht vergessen die Spannungsberechnung neu zu machen. So funktioniert zeigt sie nur 12V korrekt an. Alle anderen Werte sind durch das "-6" daneben (24V <> 24,6 ; 6V <> 5,7) Aber das ist ja gleich gemacht :)

Außerdem sehe ich Deine Arbeiten eher positiv für Graupner. Bastler kaufen schließlich auch Sender und Empfänger ...

Grüße, steve
 
Ansicht hell / dunkel umschalten
Oben Unten