Arduino Absturz abfangen mit Serial Read

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo Forengemeinde,

    Ich habe ein Projekt, dass schon seid 3 Jahren Reibungslos funktioniert.

    Jetzt habe ich dieses Jahr zum ersten mal Probleme mit meiner Arduino Mega Einheit.

    Das Projekt ist eine Gehegesteuerung und ich Steuere alles mit dem Arduino Mega.

    Zusätzlich habe ich ein Raspberry eingebaut der ein Webinterface zur Verfügung stellt.

    Kommuniziert wird über USB.

    Arduino hängt also über USB am Raspberry.

    Zum Steuern sende ich serielle Befehle ( Zahlen ) an den Arduino und er macht dann gewissen Dinge.

    Das funktioniert wie gesagt seid 3 Jahren wunderbar. Nur jetzt kommt es vor, dass der Arduino ab und zu ( Alle 5 Tage ) hängen bleibt.

    Das ganze ist nicht reproduzierbar.

    Ein Austausch der Arduino Einheit ist nur ab November möglich.


    Jetzt meine Frage.

    Für die Kommunikation muss ich den Seriellen Datenport permanent offen haben damit alles richtig funktioniert.

    Das realisiere ich über minicom.

    Ich kann es auch über Pyton machen. Das funktioniert auch.

    Ich sehe dann die serielle Ausgabe. Und so kann ich auch feststellen wo der Arduino hängen bleibt.

    Die Serielle Ausgabe dem Bild ist was kryptisch. spielt aber keine Rolle.

    alle sekunde tauchen dort neue Zeilen auf. Dann funktioniert der Arduino.

    Alle Paar Tage bleibt das ganze Terminal stehen.

    Dann hängt er. Ich kann ihn dann wieder aufwecken, wenn ich den "Serial Monitor" neu starte.

    Wie kriegen ich das jetzt hin abzufragen ob da Daten kommen oder nicht.

    Wenn 30 Sekunden keine neuen Zeilen kommen muss das neu gestartet werden.

    Ich finde im Moment kein vergleichbares Beispiel.

    Vielleicht kann jemand helfen.


    Danke

  • ziemlich verworren deine Beschreibung,

    es fehlt überall die wwww wer was wann wo

    Mein erster Tipp

    installiere die Arduino IDE 1.8.5 auf dem PI

    Die Arduino Quellen auch, dann könntest du vom PI den Ardu als erste Abhilfe neu flashen,

    1. besser wäre natürlich deine SW Fehler zu finden.

    2. den Arduino watchdog zu aktivieren

    und alle Quellen offenzulegen, wie soll man sonst auf deine Fehlermeldung helfen können?

    Ist deine Stromversorgung stabil, Arduino, PI?

    Behandelst du Serial ordentlich?

    Filterst du alle nicht printbaren Zeichen raus?

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Schwer zu sagen, was da hängt ...

    Allerdings wird der Arduino neu gestartet, wenn Du die serielle Verbindung neu herstellst - es sei denn, Du hast da entsprechende Vorkehrungen getroffen.

    Kann also durchaus ein Fehler in der Arduino-Software sein ...

    cu,

    -ds-

  • Moin!

    Das funktioniert wie gesagt seid 3 Jahren wunderbar. Nur jetzt kommt es vor, dass der Arduino ab und zu ( Alle 5 Tage ) hängen bleibt.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Ja und? Kennst Du den sketch?

    Irgend ein Fehlerfall nicht abgefangen, der jetzt erst (verstärkt) auftritt?

    Kennst Du die Anzahl der Restarts, die beim Arduino durch einen open/close der seriellen Verbindung ausgelöst wurde?

    Oder hat der Arduino sich unbemerkt aufgrund eines Programmfehlers immer wieder selbst neu gestartet?

    Lief der tatsächlich durch oder ist das nur nicht weiter aufgefallen (eben wegen dieser Neustarts)?

    Kleines Beispiel aus der Praxis: vor etlichen Jahren tauchte plötzlich eine Palette mit vergammelter Buttermilch in einer Molkerei auf. Unsere Hochregal-Steuerung lief perfekt ... aber scheinbar doch nicht ganz fehlerfrei ;)

    Das war übrigens die einzige Palette, die "irgendwie" vergessen wurde ... war auch nur irgend ein return-Code, der nicht richtig behandelt wurde und nur in einer ganz bestimmten Konstellation auftreten konnte.

    cu,

    -ds-

  • Moin!

    dreamshader : Du hast ja recht, Fehler können auch nach Jahren auftreten.

    com1992 :Was mir dabei einfällt: Am RPI wurde auch nix geändert?


    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!