Einfache Jeti EX Telemetrie-Library für Arduino Mini Pro 328

Hallo Marc,
danke für die schnelle Reaktion.
Der von dir vorgeschlagene Weg wäre auch eine Lösung für mich, das Vario würde dann lediglich ca. 1,5mm dicker.
Bei Verwendung deiner CPU Platine und einer MS 5611 Platine von Drotek könnte man den auf der Drotek Platine ( 16X18mm ) verbauten
Spannungsregler von 3,3V auch für die CPU Platine verwenden und wäre so nicht an die 5V Versorgung gebunden und könnte
HV Servos mit höherer Spannung verwenden.
Wenn du wie angekündigt deine Platine überarbeitet hast, sehe ich mir die nochmals an und melde mich ggf.

Grüsse Jürgen
 

SPOM

User
Hallo zusammen, ich bin mittlerweile auch so weit. Die ersten Tests waren sehr erfolgreich.
Wie schon geschrieben verwende ich den Arduino Pro Micro, dazu den Atto Pilot Strom und Spannungssensor.
Dazu habe ich nun eine Platine angefertigt, auf der ich die Spannungsteiler für die Einzelzellenspannungsmessung untergebracht habe - 6S. SMD Wiederstände, die grösste Bauform, die erhältlich ist. Die Platine ist kaum größer als der Pro Micro. Da es mir nicht so sehr auf Miniaturisierung ankommt habe ich die mit einer Buchsenleiste unter den Arduino gesteckt, Schrumpfschlauch darüber, fertig.

Ich muss jetzt nur noch den Strom ein bischen korrigieren, die Kapazität ist bei 1000 mAh um ca. 50-60 mAh zu hoch. Die Spannungsmessungen funktionieren einwandfrei, die lassen sich auch leichter abgleichen.

Nochmals vielen Dank für die Library.

MfG
Reinhard
 

M_O_B

User
Micro LTM2EX

Micro LTM2EX

Hallo Zusammen,

wie angekündigt meine verkleinerte Version der Platine (17x17 mm).

Folgende Funktionen sind noch vorhanden:
  • Spg Versorgung über externen BEC
  • Hardserial
  • Softserial
  • Hard und Softserial mit "Angstwiderstand"
  • IIC Schnittstelle
  • SPI Schnittstelle (MISO,MOSI,SS, SCL)
  • Programmierschnittstelle für Arduino IDE
  • Ein Eingang mit oder ohne Spannungsteiler je nach Bestückung

Untitled.jpg

Grüße Marc
 

M_O_B

User
FERTIG LTM to EXBus

FERTIG LTM to EXBus

Ich hab es geschafft.

Die Platine ist fertig und getestet. Scheint alle zu funktionieren. Ist sicher auch für andere Projekte im RC Bereich interessant vom Formfaktor.

Bei Interesse an der Platine bitte bei mir melden. Ich hab noch welche übrig.

IMG_1109.JPG

IMG_1112.JPG

Grüße Marc
 

onki

User
Hallo Marc,

tolle Sache und ultrakompakt.
Wie schwierig war denn die Abuteilbeschaffung und letztlich die Bestückung?
Geht das noch mit einem SMD-Lötkolben oder muss man auf Reflow zurückgreifen?
Würde schon 2 Platinen nehmen wenn die Bauteile vernünftig zu beschaffen sind.

Gruß
Onki
 

M_O_B

User
Die Teilebeschaffung ist unproblematisch. Je weniger Bauteile desto teurer, da Mindermenge bezahlt werden muss oder Versandkosten anfallen.
Die Musterplatine ist einem guten Lötkolben gemacht. Den IC bekommst du nur mit einem Heißluft-Lötkolben auf die Platine. Reflow lohnt sich bei der Stückzahl und den wenigen Bauteilen nicht. Das mach ich erst bei 50 Bauteilen plus.
 

Thomas L

Vereinsmitglied
Hallo Bernd,

finde Deine Realisierung der EX Lib sehr gut und habe sie deshalb für mein Projekt verwendet. Leider habe ich das Problem das die Funktion GetJetiboxKey() anfangs immer einige 0x70 (left) Tastendrücke meldet. Die geschieht abwechselnd mit 0x00.

Auch die von Dir beigelegte Demo (JetiExSensor) Soft meldet beim Eintritt ins JB Menu über MX einen Tastendruck 0x70.

Der Empfänger ist ein R9, Telemtrie ist am Ext Port angeschlossen. Die Sensoranzeige funktioniert.
Am Arudino ist RX/TX mit eine 2K4 gebrückt, der TX mit Impuls des Empfängers verbunden.

Ist Dir das Problem bekannt ?
Wäre dankbar für einen Tipp.


Was mir noch aufgefallen ist, Jeti gibt 9600-9800 Baud für die EX Telemetrie an, die Lib verwendet 9800 Baud. Wäre es nicht besser den UART auf die Mitte bei 9700 Baud einzustellen ? dann wären Toleranzen nach oben und unten gedeckelt.
 

Sepp62

User
Hallo Thomas,

das Problem ist mir so nicht bekannt.

Den Widerstand von 2K4 Ohm finde ich recht hoch. Ich arbeite mit 100 Ohm, im Grunde braucht man den Widerstand gar nicht, wenn man nicht entwickelt und die Gefahr besteht, dass man durch Programmierfehler Ausgang auf Ausgang schaltet.

Die Werte für die Baudrate sind erprobt mit den EX und den REX-Empfängern. Ob das 9700 oder 9800 Baud sind, hat sich in der Praxis als "egal" herausgestellt. Du kannst die Werte aber gerne ändern und Rückmeldung geben, wenn sich dadurch etwas verbessert.

Ich würde den Widerstand mal verkleinern und schauen, ob die Phantom-Tastendrücke dann weg sind. Was hast Du denn für ein Arduino-Board ? (Typ und Versorgungsspannung)

VG Bernd
 

Thomas L

Vereinsmitglied
Hallo Bernd, danke für die flotte Rückmeldung !

Benutze das ProMini in 5V / 16MhZ

Wie gesagt bei deiner Demosoft sehe ich ja auch beim Start das die Taste 0x70 erkannt wurde.
Merkwürdigerweise kommt die Phantomtaste nur beim Start der JB, danach ist Ruhe bzw. kommen nur die richtigen Tasteninfos. Habe mir mal die ersten 16 gesichert und ausgegeben, da kommt 0x70 und 0x00 öfters hintereinander.

Gerade getestet, auch mit Kurzschluss an RX/TX habe ich dieses Phänomen :confused:

Jetzt noch einen RSAT angeschlossen, gleiches verhalten ...
 
Zuletzt bearbeitet:

Sepp62

User
Hallo Thomas,

ich kann es mir gerade nicht erklären. Ich empfehle Dir, die Phantom-Codes vorerst auszufiltern. 0x70 bedeutet ja, dass alle 4 Tasten gleichzeitig gedrückt sind, 0x00 lässt sich mit den Tasten gar nicht erzeugen. D.h. Du solltest Tastencodes nur akzeptieren, wenn genau eines der oberen 4 Bits gelöscht ist.

Bei Gelegenheit werde ich es bei mir nachtesten. Im Moment sieht es bei mir zeitlich aber nicht gut aus...

VG Bernd
 

Thomas L

Vereinsmitglied
Hihi,

die 0x00 kommt ja aus Deinem Treiber wenn kein Tastencode anliegt, das ist OK.

Die 0x70 ist Taste links (0111 0000), da ist das oberste BIT gelöscht. Somit kommt die Taste beim Start ein paar Mal in die Bewertung.
 

Sepp62

User
Ja, da habe ich wohl Mist geschrieben (neben der Arbeit sollte man eben nicht ins Forum schauen :-))

Ich schau's mir mal an, ob ich das nachvollziehen kann. Wird aber ein wenig dauern.

VG Bernd
 
Hallo und guten Tag

Tut mir leid, dass ich hier dazwischen nerve.

Ich bin gerade dabei zu verstehen wie die EX Telemetrie funktioniert.
Ziel ist die EX Telemetrie in EX-Bus eingepackt für meine Kopter Software zu verwenden.

Ich bin in der Lage EX-Bus vom Empfänger zu lesen und die Kanal Daten zu verarbeiten und damit den Kopter zu steuern.
Mir ist klar woran ich eine Anforderung für Telemetrie oder Jetibox Menü erkenne und wann ich senden darf.
Mir ist weiterhin klar wie EX Telemetrie in EX-Bus eingepackt wird.

Mir ist aber nicht wirklich klar wie die Antwort innerhalb von EX Telemetrie aufgebaut sein muss.
Insbesondere ist mir unklar, wie auf die Anforderung für Jetibox Menü mit seinen Tastendrücken reagiert werden muss.
Was soll ich mit den Tastendrücken machen und was muss auf die Anforderung zurück zum Empfänger->Sender geantwortet werden?

Im ersten Ansatz will ich nur die Bordspannung zur Erde funken und eine Alarmschwelle und ein Alarmsignal dafür festlegen.

Kann mir einer eine Erklärung in Blöcken zeigen die verständlicher ist als in "JETI Telemetry communication protocol" V1.06 ?
Ich kann schon Doku lesen aber ein bischen Prosa würde mir hier sehr weiterhelfen.

Gruß
Dieter
 

Thomas L

Vereinsmitglied
Lib Erweiterung

Lib Erweiterung

Hallo Bernd,

mal ein paar Fragen zur Deiner Lib die sich mir auftun:
in Deiner Demosoft (JetiExSensor) steht was von 6 Sensoren und 18 ID's die über die Tabelle adressiert werden können. Laut Library sehe ich aber das dort max. 32 Sensoren verwaltet werden. Ist der Kommentar falsch ? falls nicht welche Bedeutung haben die 6 Sensoren ?
Laut Kommentar soll die max. Textlänge 20 Zeichen betragen. In der struct sind aber 20 für den Sensornamen und 7 für die Unit angelegt. Was ist richtig ?

Dann habe ich noch eine Bitte bzw. Frage, bin dabei mir einen Multisensor zu proggen. Dabei möchte ich aber die nicht benötigten Sensoren ausblenden. Da die Sensortabelle im Flash liegt wäre dies nur mit zusätzlichen Übergabeparameter an die Startfunktion realisierbar. Das habe ich bereits eingepflegt (IdMask). Jedes gesetzte BIT für einen aktiven Sensor.
void JetiExProtocol::Start( long IdMask, const char * name, JETISENSOR_CONST * pSensorArray, enComPort comPort )
In der Schleife dann die nicht aktiven Sensoren ausblenden
for( i = 0; i < MAX_SENSORS; i++ )
{
if( (IdMask & (1<<i)) == 0 )
continue;
...

Funktionieren tut es, habe auch nichts gefunden was dagene spricht. Ist das so auch aus Deiner Sicht OK ?
Wäre es nicht eine schicke Option die Du in die Lib übernehmen könntest ? das wäre mir lieb da ich dann ein Lib Update problemlos übernehmen könnte.
 
Lib

Lib

Hallo Bernd,
habe deine Ex-Lib auch im Gebrauch.

Habe mit Thomas letztes WE schon über deine nützliche Libary gesprochen. Danke fürs bereitstellen.
👍
Wollte/Habe mir einen Durchfluss Sensor (Kraftstoffverbrauch) gebaut. Das letzte Programmieren ist allerdings schon wieder ein halbes Jahr her. Derzeitiger Stand:
Der Arduino verbindet über den ext. Eingang mit dem Empfänger und skaliert mir die vom Sensor abgegebenen Impulse in entsprechende ml die ich dann auf dem Sender (jetibox Mini) angezeigt bekomme. Kram das Zeug die Tage mal raus und mach ein paar Fotos wenn Interesse besteht. Möchte dann in einem die Genauigkeit ermitteln.


Gruss Marco
 

Sepp62

User
Hm, habe hier ein paar Tage nicht mehr reingeschaut. Sorry für die späte Rückmeldung.

@ThomasL:
Über das Ausblenden von Sensoren wurde im Jetiforum schon diskutiert und ich habe auch intensiv darüber nachgedacht und es verworfen.

Der Grund:
- Sensoren lassen sich nicht einfach "nachträglich" ausblenden. D.h. wenn die Sensoren einmal am Sender "angemeldet" sind, sind sie dort auch vorhanden und gespeichert, egal was die Telemetrie dann sendet. Wenn man verhindern will, dass für vorhandene Sensoren Werte gesendet werden, setzt man den Sensorwert einfach auf -1.

- Wenn man mehrere Konfigurationen haben will, kann man entweder mehrere Sensor-Arrays machen und diese dann bei der Initialisierung mitgeben oder man kommentiert einfach die nicht gewünschten im Sensor-Array aus. Alternativ kann man Passagen in den Arrays mit #ifdef ein- und ausblenden.

Zu Deinen anderen Fragen muss ich erst im Code nachschauen. Melde mich dann nochmal.

Viele Grüße
Bernd
 

Sepp62

User
in Deiner Demosoft (JetiExSensor) steht was von 6 Sensoren und 18 ID's die über die Tabelle adressiert werden können. Laut Library sehe ich aber das dort max. 32 Sensoren verwaltet werden. Ist der Kommentar falsch ? falls nicht welche Bedeutung haben die 6 Sensoren ?
Laut Kommentar soll die max. Textlänge 20 Zeichen betragen. In der struct sind aber 20 für den Sensornamen und 7 für die Unit angelegt. Was ist richtig ?

Hallo Thomas,
die Sache verhält sich so:
- Der Kommentar mit den 6 Sensoren ist veraltet und falsch.
- Die Library verwaltet im Default max. 32 Sensoren. Den Wert von MAX_SENSORS kann man bei Bedarf aber erhöhen (max. 255 bzw. limitiert vom verfügbaren RAM).
- Die Definition des Sensor-Arrays im PROGMEM verträgt max. 19 Zeichen für den Sensorname und 6 Zeichen für die Einheit. In Summe dürfen Einheit und Summe aber nur 19 Zeichen haben (das ist die Länge von m_label, die natürlich erhöht werden kann, was aber RAM kostet).

Ich hoffe, das beantwortet Deine Fragen ausreichend.

VG Bernd
 

Thomas L

Vereinsmitglied
Moin Bernd,

vielen Dank für Deine Infos.
Ok, das mit den 32 möglichen Sensoren deckt sich mit meiner "Analyse" Deiner Lib. Ist mW auch das maximum was Jeti unterstützt.


...
@ThomasL:
Über das Ausblenden von Sensoren wurde im Jetiforum schon diskutiert und ich habe auch intensiv darüber nachgedacht und es verworfen.
Der Grund:
- Sensoren lassen sich nicht einfach "nachträglich" ausblenden. D.h. wenn die Sensoren einmal am Sender "angemeldet" sind, sind sie dort auch vorhanden und gespeichert, egal was die Telemetrie dann sendet. Wenn man verhindern will, dass für vorhandene Sensoren Werte gesendet werden, setzt man den Sensorwert einfach auf -1.
- Wenn man mehrere Konfigurationen haben will, kann man entweder mehrere Sensor-Arrays machen und diese dann bei der Initialisierung mitgeben oder man kommentiert einfach die nicht gewünschten im Sensor-Array aus. Alternativ kann man Passagen in den Arrays mit #ifdef ein- und ausblenden.
...

Das ist für mich keine Lösung ;)
Meine Idee ist das ich alle Sensoren über die Jetibox aktivieren und deaktivieren kann und somit nur die nutze und auch im Sender anzeigen lasse welche benötigt werden. Dies ist so dynamisch das nicht mit unterschiedlichen Tabellen gearbeitet werden kann (macht für mich auch keinen Sinn).
Das bei einer Änderung auch die Sensoren neu eingelesen müssen versteht sich von selbst, das sollte aber kein Problem sein, eine automatische Ausblendung wäre super wird von Jeti aber wie Du schon schreibst nicht unterstützt.
Die aktiven Sensoren werden doch von Deiner Lib verwaltet, so sollte es doch mE kein Problem darstellen beim Start einen zusätzlichen Parameter mit zu übergeben der definiert welche Einträge in der Tabelle aktiv sind, oder was spricht dagegen ?


Dann habe ich noch eine Merkwürdigkeit festgestellt. Im Sender alle Sensoren löschen (auto), dann Empfänger (in meinem Fall ein R9ex) einschalten. Der erste Sensor wird dann idR verzögert eingelesen, das dauert eine ganze Weile bis er im Telemenu angezeigt wird. Sensor 2-n erscheinen schnell.
Merkwürdig an der Sache finde ich das es auch stark verzögert wird wenn nur ein Sensor angelegt ist.
Die Erhöhung des Start Delay in Deiner Lib von 2000mS auf 3000mS schien zunächst zu helfen, hatte aber zwischendruch immer wieder Fälle wo es nicht klappte. Vielleicht hast Du ja eine Idee.
 
Zuletzt bearbeitet:

onki

User
Hallo,

da ich bei euren speziellen Problemen nichts nennenswertes beitragen kann hier nur eine winzige Korrektur.

Die DC-16 unterstützt max. 32 Sensorwerte. das musste ich schon einmal leidlich erfahren. Die DC-24 wurde auf 64 Sensoren aufgebohrt.
Problem bei allen Jeti-Sensoren ist die Tatsache, dass immer alle Werte gesendet werden und keine Möglichkeit vorhanden ist hier eine Auswahl zu treffen was übertragen wird.

Hier sind die Fremdhersteller viel weiter weil sie eine Möglichkeit offerieren, Sensorwerte zu deaktivieren, die z.B. gar nicht erfasst werden.
Stephan Merz möchte ich an dieser Stelle einmal positiv herausstellen. Zudem wird einem die Wahl gegeben, wie mit Kapazitätswerten umgegangen wird hinsichtlich Rückstellung.
Das ist ein Grund warum ich keinen einzigen Jeti-Sensor mein Eigen nenne, ich stehe mehr auf Kombisensoren, weil an den R-Empfängern auch nur ein TM-Steckplatz zur Verfügung steht.
Ich persönlich stehe mit der Jetibox auf Kriegsfuß (sehe ich als Auslaufmodell) und bevorzuge kleine Toolprogramme zur Sensorkonfiguration, vielleicht bietet sich aber auch über Lua eine neue Gelegenheit dies direkt im Sender zu erledigen. Der Weg über den Gerätemanager ist ja seitens Jeti nicht freigegeben.
Ansonsten ist die Sache aber super gelöst. Wolfgang Schreiner beschreitet mit dem LinkVario Pro via EX-Bus auch ganz neue Wege. Weiter so.

Daher finde ich es toll das hier fest an der Evolution der Library gearbeitet wird und auch viele Inputs kommen.
Der größte Dank geht natürlich an Bernd.

Ich muss aber zu meiner Schande gestehen, das ich derzeit mehr mit OpenXSensor arbeite. Ich bin halt mehr der Konfigurierer als der Programmierer weil ich letzteres nie richtig gelernt hab.

Gruß
Onki
 
Ansicht hell / dunkel umschalten
Oben Unten