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:

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

    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?

  • - 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 ()

  • 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 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