Software-Spezialisten (Arduino IDE) gesucht - wer kann helfen einen Fehler zu korrigieren?

  • ich habe von @knusis aus dem Forum64 einen CO2-Raumluftwächter gekauft und bin auch super zufrieden damit:

    Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

    AAber: dieser kann auch mit einem OLED-Display ausgestattet werden, so wie es in diversen Projekten zum Einsatz kommt:

    Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

    dieses kann durch einfaches "Enablen" im Sketch aktiviert werden - leider hängt sich dann aber der Arduino Nano nach ca. 3 - 4 Stunden auf, was nicht passiert, wenn das OLED deaktiviert ist

    weitere Optionen sind RTC und SD-Card - dies hat allerdings jeweils keinen Einfluss auf die "Durchhaltedauer" ...auch wenn alle Optionen aktiviert sind, ausser dem OLED, läuft die Software problemlos mehrere Tage durch

    da ich leider nicht sooo viel von Programmierung verstehe - könnte sich bitte mal jemand von euch Spezialisten den Sketch ansehen?

  • Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.
    - so, ich hab jetzt SOP und DEBUG aktiviert - und er schreibt brav seine Meldungen mit ...bin gespannt, ob dir das was nutzt, wenn er dann abstürzt?


    edit: oh - das hat ja nicht lang gedauert ... nach einigen Sekunden hat er sich in diesem Modus bereits aufgehängt:

  • Zitat von Shadow-aSc

    Meldungen mit ...bin gespannt, ob dir das was nutzt, wenn er dann abstürzt?

    edit: oh - das hat ja nicht lang gedauert ... nach einigen Sekunden hat er sich in diesem Modus bereits aufgehängt:

    Im Logfile ist ersichtlich, dass er rundum läuft, aber nach der letzten Schleife hängen bleibt.

    Könnte sich dabei um Platzmangel im RAM handeln. Geht möglicherweise bei jedem Durchlauf RAM "verloren".

    Siehe dazu z.B. folgenden Artikel: freeMemory

    Habe solches bisher nicht ausprobiert, da ich bis jetzt keine Absturzprobleme mit meinen Arduino-Programmen habe.

    Eventuell pro Schleife den freien RAM-Bereich anzeigen lassen. Wird er pro Schlefe kleiner, dann liegt dort das Problem.

    Grüße

    PAW

  • Eventuell pro Schleife den freien RAM-Bereich anzeigen lassen.

    uuh - wenn du mir jetzt noch sagen könntest, wie ich das machen kann?

    wie gesagt - ich habs nicht so mit Arduino-Programmierung

    edit:

    achso - und der verlinkte Artikel bringt mir leider auch nicht viel - weil mein Englisch ....najaaa - seehr rudimentär ist angst

    ich bin signifikant genug:razz:

    Einmal editiert, zuletzt von Shadow-aSc (24. April 2021 um 09:49)

  • Die wahrscheinlichsten Ursachen sind aber

    * Probleme mit der Versorgungsspannung,

    * Fehlende oder zu große Pull_ups für I²C Leitungen,

    * Schlechte Verkabelung, welche sich Störsignale einfängt; viele Sensoren können darauf mit "Absturz" reagieren, falls Daten(Kommandos) verfälscht werden oder Antworten nicht, weil die Anfrage nicht verstanden wurde.

    Diese 4 Sekunden Meldungen deuten auf so etwas hin.

  • Du musst nur diese freeMemory() Funktion kopieren und in Deinem Programm einfügen und dann in der Schleife bei der Ausgabe der Werte freeMemory(); hinzufügen.

    also - ich hab jetzt diesen Programmcode in meine *.ino am Ende mit eingefügt - Compilieren würde er das so - aber wie bring ich das auf die Anzeige (am besten auch aufs OLED-Display) ?

  • Zitat von Shadow-aSc

    also - ich hab jetzt diesen Programmcode in meine *.ino am Ende mit eingefügt - Compilieren würde er das so - aber wie bring ich das auf die Anzeige (am besten auch aufs OLED-Display) ?

    Hallo Shadow-aSc!

    Ich würde den DBUG dafür benutzen und wieder einen Logfile erstellen.

    Damit könntest Du den Verlauf des Speicherplatzes verfolgen.

    Könnte etwa so aussehen (roten Code einfügen):

    #ifdef DEBUG
    Serial.print(F("Loop: HB:"));
    Serial.print(heartbeat);
    Serial.print(F(" Start, "));

    Serial.print("free:");

    Serial.print(freeMemory());

    Serial.print(" ");

    #endif //DEBUG

    Sollte der Speicherplatz von Durchlauf zu Durchlauf gleichbleiben, dann liegt das Problem wo anders. Sollte der Platz wachsen, dann hast Du einen Hinweis auf das Problem.

    Dann wäre noch interessant, den Speicher mit abgeschalteten OLED zu testen. Dann hast Du einen Vergleich zu einer funktionierenden Konstellation.

    Bitte die beiden Logfiles wieder hochladen.

    Grüße, PAW

  • mit auskommentiertem OLED läuft der Wächter über mehrere Tage hinweg durch

    allerdings hab ich glaube ich schon die Ideallösung für mich gefunden - ich hab heute früh mal aus dem Sketch einfach alles, was mit RTC zu tun hat rausgeschmissen - nicht nur auskommentiert, sondern komplett gelöscht

    somit hab ich auf dem Display jetzt nur noch 3 Zeilen - oberste zeigt die CO2-Konzentration in ppm

    2. zeigt die Luftfeuchtigkeit in %

    3. zeigt die Temperatur

    Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

    der Wächter läuft jetzt seit heute früh um ca. 9:00 ..und jetzt haben wir 18:30 - also schon fast 10 Stunden - ohne Hänger... ich glaub, das ist für mich die beste Lösung

    wenn ich ne Uhr bräuchte, dann gugg ich einfach auf die an der Wand

    und nachdem ich auch keine SD-Karte hab, wo mitgeloggt wird (brauch ich alles nicht)

    funktioniert jetzt aber dafür das Display ...super! :thumbup:

    edit:

    hier ist übrigens das ganze Projekt:

    https://github.com/Doctor-B/CO2-Raumluftwaechter