VarioGPS Sensor von NightFlyer

Hi Stephan,
kann gerne versuchen hier ein paar Erläuterungen zum Code zu machen.
Wenn du Werte nicht übertragen möchtest, gibt es 3 Stellen im Code die berücksichtigt werden sollten.
1. in der defaults.h
wird eine sensors array definiert, das die Sensoren mit ID, Namen, Einheit, Datentyp und Kommastelle definiert.
Achtung es gibt 2 Array, ein US- und ein Normal-Definition
Hier habe ich schon über die #ifdef Anweisungen versucht das Array klein zu halten.
2. wenn man in der defaults.h einen Sensor per "löscht", oder per "//" auskommentiert, oder per #ifdef XXXX (man nennt das bedingte Compilierung) unsichtbar macht, muss man im kompletten Code natürlich auch dafür sorgen, dass auch dort die Stellen die diesen Sensor / IDs benutzen auskommentiert, gelöscht oder eben durch bedingte Compilierung ausgeblendet sind.
3. Wenn man allerdings nur die Übertragung der Werte an den Empfänger unterbinden will, reicht auch, dass man in der setup() Methode die nicht gewünschte Sensor-ID per
jetiEx.SetSensorActive( ID_PRESSURE, false, sensors );
deaktivert (man beachte das "false").
Der Sensorwert wird im Code weiterhin ggfs mittels jetiEx.SetSensorValue() gesetzt, wird aber in der
jetiEx.DoJetiSend();
nicht in einen Frame verpackt und nicht an den Empfänger geschickt.
Hoffe es ist einigermaßen verständlich. Wenn nicht einfach nachfragen.

Gruß Rainer
 

VOBO

User
Hallo Rainer, ich verwende grundsätzlich den 3,3V Arduino. Aber ich verarbeite ja nur 8 IDs.
GPS habe ich garnicht. Trotzdem fängt nach kurzer Zeit des Funktionierens das Blinken an und zwar für alle Werte.
Kannst du dir einen Reim auf den als negativ angezeigten absoluten Höhenwert machen?
@Stefan: Welchen Arduino setzt du ein?

Gruß Volker
 
Hallo Rainer, ich verwende grundsätzlich den 3,3V Arduino. Aber ich verarbeite ja nur 8 IDs.
GPS habe ich garnicht. Trotzdem fängt nach kurzer Zeit des Funktionierens das Blinken an und zwar für alle Werte.
Kannst du dir einen Reim auf den als negativ angezeigten absoluten Höhenwert machen?
@Stefan: Welchen Arduino setzt du ein?

Gruß Volker
Ich benutze auch 3.3V Arduinos ohne GPS ohne Probleme.
Frage: benutzt du die aktuelle 2.3.6.1 und die im ZIP enthaltene neue (gefixte) VarioMS5611 lib ?
In der Datei VarioMS5611.h sollte das zu sehen sein
#define VARIO_MS5611_VERSION "V0.1.2"
und es sollte in keinem anderen Verzeichnis unter dem SKETCHBOOK/libraries eine andere Version der Libs vorhanden sein.
Blinkt auch der Variowert? (der darf niemals blinken, da er ohne GPS >10/s übertragen werden sollte)
Bzgl. negativem Höhenwert, wieviel hPa zeigt der Pressure-Wert denn an?
Wird der negative Höhenwert von Anfang an so angezeigt ?
Zeigt der Sensor in der Jetibox die korrekte Version (2.3.6.1) an?
Schick mir mal deine settings.h (kannst auch als PN schicken).
Gruß Rainer
 

VOBO

User
Hallo Rainer, ich werde allen deinen Fragen heute abend nachgehen, bin grad unterwegs.
Danke!
Gruß Volker
 
Hi Rainer,

danke für die Erklärung, ich kann aber leider nur teilweise folgen.

Grundsätzlich habe ich noch nicht verstanden warum ich die Sensoren in 1) und 2) auskommentieren sollte?
Ist es nicht am einfachsten hier immer alle Sensoren vorzusehen und nur über 3) die nicht benötigten mit// auszukommentieren?
Wenn ich deine Erklärung richtig verstehe, reicht dies ja aus, damit die Sensoren nicht übertragen werden und keine Bandbreite verbrauchen.

Wenn ich deinen 3) Punkt weiterverfolgen will, was muss ich konkret machen? In welcher setup methode muss ich den Sensor auf false stellen?
In der Vario GPS.ino Datei finde ich nur folgenden Setup Befehl:
Zwischenablage01.jpg

Im Vergleich zu deinem Setup möchte ich nur "Termperatur" und "Pressure" (ich nehme an, dass die absolute Höhe auch ohne die Übertragung dieses Sensorwertes direkt im Sensor ermittelt wird) ausbedated haben und "Strecke" dafür zusätzlich übermittelt haben.

Kannst du mir an diesem Beispiel kurz zeigen wie ich den Code ändern muss oder ist das zu aufwändig?

@Volker: Ich verwende für die reine Vario Version einen 3,3V/8Mhz und für die Vario-GPS Variante die 5V/16Mhz Arduinos. Den 3,3V habe ich deswegen gewählt, da ich damals noch alte Modelle mit 4x Nimh Empfängerakkus hatte. Mittlerweile würde ich nurmehr die 5V/16Mhz Arduinos nehmen. Aktuell habe ich die neue Version nur mit der 5V Variante getestet.
 
1.) Werte aktivieren:
Verstehe ich es richtig, dass ich in der "def SUPPORT_GPS" einfach die folgende Zeile ergänzen müsst um den Wert "Strecke" zusätzlich zu aktivieren?

if(gpsSettings.mode == GPS_disabled){
jetiEx.SetSensorActive( ID_GPSLAT, false, sensors );
jetiEx.SetSensorActive( ID_GPSLON, false, sensors );
jetiEx.SetSensorActive( ID_GPSSPEED, false, sensors );
jetiEx.SetSensorActive( ID_DIST, false, sensors );
jetiEx.SetSensorActive( ID_TRIP, false, sensors );
Nein das ist nicht korrekt und ist die falsche Stelle. In der oben zu sehenden if-Anweisung sieht man, dass dieser Code nur durchlaufen wird, wenn in der JETIBOX der GPS-Mode auf GPS_disabled gestellt ist.
Zudem wird mit SetSensorActive(.., false, ...) der Sensor-Wert mit der gegeben ID deaktiviert, nicht aktiviert.


Vermutlich wäre es einfacher, du würdest lediglich in der settings.h folgendes einfügen:
#define SUPPORT_GPS_EXTENDED
Damit wären alle Extended-Werte (TRIP, AZIMUT, ...) wieder da.

2.) Werte deaktivieren:
Im umgekehrten Fall, wenn ich z.B. Luftdruck und Temperatur nicht übertragen möchte, lösche ich die Zeile einfach mit "//" raus, oder?

#ifdef SUPPORT_GPS
if(gpsSettings.mode == GPS_basic || pressureSensor.type == unknown){
// jetiEx.SetSensorActive( ID_PRESSURE, false, sensors );
// jetiEx.SetSensorActive( ID_TEMPERATURE, false, sensors );
}
Hier hast du die Logik nicht verstanden. Die Zeile
jetiEx.SetSensorActive( ID_XXXX, false, sensors );
DEAKTIVIERT den Sensor-Wert mit der ID_XXXX, sprich obwohl der Wert ggfs. im Code behandelt und per jetiEx.SetSensorValue() gesetzt wird, wird er nicht an den Empfänger übertragen. Auch hier ist die if-Anweisung sehr wichtig, die oben drüber steht.

Eigentlich würde auch hier ein ein neuer Build mit
#define SUPPORT_GPS_EXTENDED
genügen, da die GPS Werte nur noch selten übertragen und damit kaum noch "stören" würden. So wird der ID_TRIP in der akutellen Implementierung (wenn mit #define SUPPORT_GPS_EXTENDED gebaut ist) nur noch selten übertragen. Wenn du Werte hast die du höher priorisieren möchtest, reicht es dann den letzten Parameter (prio) im Methoden-Aufruf
jetiEx.SetSensorValue( ID_TRIP, tripDist/10 , 15);
zu verkleinern. Je kleiner desto öfter wird übertragen.

Aber noch eine kleine Warnung:
Ich habe das Gefühl, dass evtl. nicht genügend Programmierkenntnisse vorhanden sind.
Der Code ist zu komplex, um hier im Probierverfahren Dinge zu ändern. Wenn man nicht ganz genau weiß was man tut, ist die Wahrscheinlichkeit hoch, dass nicht das gewünschte Resultat erreicht wird.
Es sollten wenigstens Grundkenntnisse in der Programmmierung in C/C++ und im Bereich Arduino vorhanden sein. Diese Grundhürde ist nicht allzu klein.

Gruß Rainer
 

VOBO

User
Hallo Rainer,
Ich habe jetzt deinen neuesten Stand heruntergeladen und alle bisherigen relevanten LIBs erneuert.

Zunächst zu deinen Fragen (bezogen auf die Vorgängerversion!):
Blinkt auch der Variowert? (der darf niemals blinken, da er ohne GPS >10/s übertragen werden sollte) > Alle Werte einschl. Vario
Bzgl. negativem Höhenwert, wieviel hPa zeigt der Pressure-Wert denn an? > Hatte ich nicht in der Anzeige
Wird der negative Höhenwert von Anfang an so angezeigt ? > Ja
Zeigt der Sensor in der Jetibox die korrekte Version (2.3.6.1) an? > Ja


Mit dem neuesten Stand habe ich jetzt kompiliert und geladen.
Das Erste was ich feststelle ist, das die GPS-IDs bei mir im Display angezeigt werden obwohl ich definitiv GPS in der Settings.h nicht defined habe.

settings.JPG

Bevor du dafür nicht eine Erklärung hast, macht es für mich jetzt erst mal keinen Sinn weiter zu testen.

@Stefan:
Ich verwende für die reine Vario Version einen 3,3V/8Mhz und für die Vario-GPS Variante die 5V/16Mhz Arduinos. Den 3,3V habe ich deswegen gewählt, da ich damals noch alte Modelle mit 4x Nimh Empfängerakkus hatte. Mittlerweile würde ich nurmehr die 5V/16Mhz Arduinos nehmen. Aktuell habe ich die neue Version nur mit der 5V Variante getestet.

Ich verwende auch BECs die teilweise nur 4,9V liefern und bei Lastspitzen (z.B. Butterflyeinsatz) noch deutlich tiefer einbrechen. Daher kann ich definitiv keine stabile 5V als Referenzspannung für die Spannungs- und Temperaturmessung erreichen. Ein 3,3V Typ ist daher zwingend.
Machst du keine Spannungsmessungen/Temperaturmessungen?

Gruß Volker
 
Zuletzt bearbeitet:
Hallo Rainer,
Ich habe jetzt deinen neuesten Stand heruntergeladen und alle bisherigen relevanten LIBs erneuert.


Mit dem neuesten Stand habe ich jetzt kompiliert und geladen.
Das Erste was ich feststelle ist, das die GPS-IDs bei mir im Display angezeigt werden obwohl ich definitiv GPS in der Settings.h nicht defined habe.
Das hört sich sehr seltsam an. Irgendwas stimmt in deiner Build-Umgebung nicht.
Bist du sicher, dass du im Sender die Sensoren neu eingelesen hast ? Der Sender merkt sich ansonsten die IDs, die in der Vergangenheit übertragen wurden.
Woran du erkennen kannst, ob du mit oder ohne GPS gebaut hast, ist in der JETIBOX. Wenn du ohne SUPPORT_GPS gebaut hast, erscheint keine "GPS mode"-Abfrage. Taucht diese Abfrage auf und deine settings.h sieht aus wie oben, dann hast du den Build nicht wirklich geuploaded :).


Um deinen suggerierte Aussagen etwas entgegen zu treten:
Wenn man weiss was man tut, funktioniert es absolut vorhersehbar und problemlos.
Ich flashe beim Testen diverse Sensoren, mit und ohne GPS, 5V oder 3.3V, .....
Ich habe niemals unerwartete Sensoren-IDs oder es fehlen welche. Es funktioniert immer und es ist keine "Wackel"-Software.
Habe den Sensor die letzten Tage auf dem Flugfeld getestet und das Resultat war stets wirklich gut.

Es ist eben ein Arduino-Entwicklungs-Projekt und eine gewisse Komplexität ist eben da, ist aber eben kein Plug and Play - Projekt.

Sorry, wenn ich dir nicht weiterhelfen kann.
Gruß Rainer
 

VOBO

User
Hallo Rainer,
ich möchte hier definitiv nichts suggerieren, habe nur festgestellt, das ich solange dieses konkrete Problem nicht gelöst ist, ein weiterer Test für mich keinen Sinn macht, da hier etwas grundlegend im Argen liegt.
Ich habe deine Fragen nochmal aufgegriffen und kann sie folgendermaßen beantworten:

Habe mehrfach mittels Auto-Taste die Telemetrie neu eingelesen, es werden 23 ID-s einschließlich GPS-IDs eingelesen.
-Über Zusatzfunktionen Jetibox gehe ich auf VarioGPS Sensor Version V2.3.6.1
-Reset offset
-Pressure sensor MS5611
-Vario smoothing 96%
-Vario deadzone 3cm
-Rx1 voltage disabled
-Rx2 voltage Enabled
-Ext. Temp Enabled
-Save and restart

Das ist genau das was ich Konfiguriert habe.

Gruß Volker
 

VOBO

User
Habe jetzt noch mal folgendes gemacht:
mit meiner aktuellen IDE das Blink-Programm erfolgreich auf den Arduino geladen.

Anschließend erneut den Code für das Vario compiliert, in der IDE nachgeschaut das auch wirklich die richtige settings und default angezogen wird, dann damit erneut compiliert und erfolgreich hochgeladen.

Ergebnis: Es werden wieder 23 IDs inclusive GPS im Sender-Display angezeigt.

Also mehr kann ich doch nicht machen.
Ich behaupte jetzt einfach mal, das die settingsdatei nicht richtig verarbeitet wird oder es wird ignoriert, das dort GPS nicht defined ist.

Gruß Volker
 
Wie bereit geschrieben, teste und fliege ich mit Sensoren mit und ohne GPS und es funktioniert so wie erwartet.

Was nicht zusammen passt ist, dass wie du schreibst im JETIBOX Menü kein "GPS mode" vorhanden ist, aber GPS Werte über die JetiExSensor Schnittstelle gehen.
Prüfe bitte ob, du im der ino-Datei versehentlich ein "#define SUPPORT_GPS" eingebaut hast. Aus Code-Sicht ist das das Einige, was das beschriebene Verhalten erklären könnte.

Wenn das nicht der Fall sein sollte und du möchtest, dann schreib mir mal ne PN und wir verabreden ne kleine Session bei der wir das Problem gemeinsam suchen.
Gruß Rainer
 
Hi Rainer,

dein Gefühl bzgl. meiner Programmierkentnisse täuscht nicht ;) - die sind nahezu nicht vorhanden bzw. bestehen nur noch aus Halbwissen von ein paar früheren Basic Sessions während dem Studium.

Das Halbwissen ist aber soweit noch vorhanden, dass ich z.B. grundsätzlich schon die Bedeutung von "False" kenne. Ich hatte aber eine, zugegebenermaßen sehr krude, Theorie entwickelt warum in diesem Fall "false" die Sensor ID aktiviert.

Wie auch immer, ich werde mal im Bekanntenkreis rumfragen, ob mir jemand helfen kann den Wert noch zusätzlich zu integrieren.
Der Workaround mit der der geringeren Priorität ist ne Lösung, sauberer finde ich es aber wenn die Werte gar nicht übermittelt werden.

Möchte Dich aber nicht mehr mit meinem Problem stressen. Bin ja schon super dankbar, dass du deine Erweiterung und Verbesserung hier online stellst und so tollen Support leistest 👍!


@Volker: Spannung habe ich doch eh schon über den Empfänger. Ich brauche diese Werte daher nicht auch noch über das Vario/GPS. Aus Gründen der Bandbreite bin ich bzgl. Telemetrie schon seit eh und je recht restriktiv. Daher würde ich es auch begrüßen, wenn man auch bei allen anderen Sensoren frei definieren kann, welche Daten man final senden möchte und welche nicht. Schade, dass Jeti hier nicht aktiv wird.

Ich kann gerne die Tage mal einrd meiner reinen Varios updaten und dann mal zusehen ob ich ebenfalls die GPS ID´s übertragen bekommen.
Wenn Du mir verrätst, welche Hex Datei du benötigst (denke man benötigt die ohne "Bootloader"), dann kann ich dir aber auch gerne schon vorab die HEX mit deinen Settings zukommen lassen.

P.S. Meine Arduino Systeme sind immer clean, ich verwende nach Möglichkeit für jedes Projekt eine eigene Portable Version.

VG
Steph
 
Zuletzt bearbeitet:

VOBO

User
Hallo Rainer,
Ich habe in der .INO-Datei kein #define SUPPORT_GPS gefunden. Habe diese Datei ja auch garnicht geändert.
Ich würde mich freuen wenn wir das Problem mal durchsprechen könnten. Werde dir eine PN zukommen lassen.

Gruß Volker
 
@Volker: Ich hatte gerade ähnliche Probleme, bei mir hat es aber auch nicht mehr mit der originale "Nightflyer HEX Datei" funktioniert.

Die Lösung war nach dem Update erstmal wieder über die "Jetibox" das Vario über "Load default" auf Werkeinstellung zurückzusetzen. Erst dann waren die Daten im Speicher wieder zurückgesetzt und es funktioniert wieder.

@Rainer: die #define SUPPORT_GPS_EXTENDED muss ich zusätzlich zur #define SUPPORT_GPS setzen, richtig? Bei meinen Tests hat das aber leider nicht geklappt. In diesem Fall blinken nach einiger Zeit bei mir ebenfalls alle Werte. Wenn ich sie wieder auskommentiere, dann funktioniert es wieder.
 

VOBO

User
Hallo Stephan, interessanter Aspect, werde ich auch mal kurz versuchen.
Gruß Volker
 
... so hier nun ein kleiner Rückzieher ;-). Die Software ist doch "wackelig" ;-(
Nachdem ich gestern versucht habe einen weiteren meiner Sensoren mit der neuen 2.3.6.1 zu flashen, habe ich viele eurer beschriebenen Fehler-Effekte auch bei mir gesehen (negative Höhe, blinkende Werte, JETIBOX die hängt und connected) und noch einige andere (dubiose Zeichen in bei der Sensor-Werte-Übertragung, ...).
Da ich an diesem Sensor auch noch weitere Sensoren dran habe (Airspeed), ist natürlich auch die Anzahl der Telemtrie-Werte/Ids nochmals höher.
Die große Anzahl an extrem diffusen Fehlerbildern lässt eigentlich nur einen Schluss zu:
Der Speicherverbrauch ist zu groß und Variablem im Stack beginnen den Speicher im Heap zu überschreiben. Das ist leider beim Arduino möglich und kann zu solchen vollkommen diffusen Fehlerbildern führen.
Ich bin sicher, wenn ihr den Sensor ohne GPS baut und uploded, dann sind die Fehler weg.
Ich muss das Prioritätshandling in der JetiExSensor diesbezüglich nochmals modifizieren, da hier in meiner Version 1Byte pro Telemtrie-ID mehr an Heap-Speicher-Verbrauch implementiert wurde. Da der atmega328 nur 2 kByte RAM hat, ist man hier leider sehr leicht über dem Limit. Werde die Tage noch ein wenig testen und schauen, ob ich eine neue Version machen kann.
Gruß
Rainer
 

VOBO

User
Ok, danke für dein transparentes Eingeständnis!
Ich warte dann auf die neue Version, da ich ja auch diese Probleme habe obwohl ich kein GPS verwende.
Schönes Wochenende!

@stephan:
Noch kurz zum Arduino 3.3. Ja, du benötigst den für die Empfängerspannungsmessung nicht, da das ja Jeti-Standard ist.
Ich habe aber in einigen Modellen vor dem BEC einen 2s Lion-Akku und den möchte ich halt auch im Blick behalten. Desweiteren benötige ich nicht unbedingt einen Stromsensor bei meinen E-Seglern, möchte aber trotzdem die Flugakku-Spannung überwachen. Deshalb habe ich geschrieben, das es für mich nur sinnvoll ist den 3,3 Volt Typen einzusetzen.

Gruß Volker
 

VOBO

User
@stephan:
Bin deinem Tip noch mal nachgeganagen. Hat bei mir aber nicht geholfen, habe jetzt sogar einen weitere GPS-Wert in der Anzeige (24 IDs). Nur das du das weißt, das das Problem doch woanders liegt. Aber der Rainer ist ja wohl dran.
Wenn alle Stricke reißen, werde ich eben wieder auf die Original-Nightflyer-Version zurückkehren und das etwas schlechtere Vario in Kauf nehmen.

Gruß Volker
 
Hi Volker,

Da hatte ich mich leider missverständlich ausgedrückt.

Der default Reset in der Firmware ist natürlich keine Lösung für das ID Problem.
Bei mir war das die Lösung um die blinkenden Werte, komische Höhen und Variowerte etc. zu beseitigen.
Dieses Probleme hatte ich unabhängig davon, ob ich die die Nightflyer Version oder Rainers Version aufgespielt hatte. Mit "Load defaults" haben sich diese Probleme gelöst.

Die instabile Jeti Box Anbindung hatte ich aber auch schon mit der Nightflyerversion.

Bei mir funktioniert die reine GPS Vario Version von Rainer in den Trockentests nun ganz gut. Die GPS Extended Version leider nicht.
 
Oben Unten