Zur Hölle mit der Optik!

Wer Projekt SeeInsight schon etwas verfolgt hat weiß, das auch die Sichtweite mit gemessen werden soll. Wenn man Online nach Verfahren sucht findet man schnell Systeme mit Kameras oder Lichtschranken. Das Problem daran, diese Systeme funktionieren nur gut wenn man sie Zeitlich begrenzt einsetzt. Wer schon mal eine Ankerkette einer Boje rauf geholt hat weiß, dass auf dieser Algen und vieles mehr sich ausgebreitet haben. Daher braucht man ein Verfahren welches ohne die Optik auskommt.

Meine Idee ist den Leitwert des Wassers zu verwenden. Reines Wasser (H2O) ist an sich kein guter Leiter. Durch hinzufügen von z.B. Salz oder in unserem Fall Schwebstoffe, Sand und Co. kann Wasser plötzlich sehr gut Strom leiten. Durch einen kleinen Spannungsteiler müsste es daher möglich sein den Wiederstand des Wassers über eine Strecke X zu messen. Dies könnte zwischen dem Grundgewicht und der Boje geschehen. In einem Versuch mit einem Eimer Schlamm vom örtlichen See und einem kleinen Arduino Nano konnte ich fest stellen das der Wiederstand des Wassers (ca. bei 11-8 kOhm) beim aufwirbeln von den Sedimenten um teilweise mehr als die Hälfte fiel.

Ob das jetzt die Finale Lösung ist weiß ich nicht. Natürlich hat jeder See einen anderen Leitwert. Eine Aussage wie „1kOhm auf 10m = Nullsicht“ kann man daher nicht treffen. Dazu müsste man evtl. das System etwas laufen lassen und dann Erfahrungswerte sammeln. Jetzt muss aber erstmal das System sich auf dem See sich beweisen bevor ich mehr Arbeit in diese Messtechnik investiere.

Sollte jemand andere Ideen haben, kann er die mir gerne einschicken 🙂

A002 wieder aufgewacht…

Am 22.01.2020 ging gegen 13:33 Uhr der letzte Ping der Sonde ein. Bei einem Besuch vor Ort am frühen Abend gab es bei der Sichtprüfung keine Auffälligkeiten. Da die Status LED vom Sim800L blinkte, wurde ein Problem mit der Spannungsversorgung ausgeschlossen.
Der Arduino hat den Befehl entweder alle 256 Zyklen oder wenn die Kommunikation mit dem Sim800L abbricht (keine Antwort auf „AT“-Ping) sich selbst und das GSM-Modul (per Reset-Pin) zurück zu setzten. Aus dem Blinkmodus der der Status LED vom Sim800L konnte festgestellt werden, dass die Verbindung um Funknetz besteht und kein Reset statt findet. Da der Atmega-328p keine Status-LED besitzt, konnte über seinen Zustand nichts in Erfahrung gebracht werden. Der letzte Neustart des Systems lag 10 Stunden zurück, der nächste Reset wurde grob auf den 23.01.2020 21-22Uhr berechnet.
Ich entschied mich auf den Reset zuwarten, um fest zustellen ob das System selbständig den Fehler lösen kann. Am 23.01.2020 um 22:30 Uhr sendete A002 verspätet den ersten Datensatz wieder.

Fazit:
Auf Grund der Symptome des Problems lässt sich auf ein Problem beim Sim800 zurück schließen. Zwar antwortet das Sim auf Pings aber hat Probleme bei der Umsetzung des Befehls. Dies lässt sich normalerweise mit einem einfachen Reset beheben. Der Atmega hat den Befehl die Anweisungen an das Sim zu wiederholen, sofern dieses nicht die richtige Antwort liefert (TimeOut). Dadurch vergeht Zeit, was zu einem verzögerten Reset geführt hat.

Folgen:
Es wird ein kleines Patch erstellt, welches ein TimeOut-Counter enthält. Sofern die Fehleranzahl bei zwei Sendeversuchen in Folge über 50% liegt startet das System verfrüht neu. Dadurch müsste ein Fehler nach spätestens 30 Minuten sich selbstständig lösen.

Messzyklen für den kommenden See-Test 1 wurden angepasst

A002 kurz nach dem Update

A002 hat eben ein kleines Software Patch bekommen, in welchem der Schlafzyklus zwischen den Messungen von 4 auf 8 Zyklen verdoppelt wurde.
Dadurch ergibt sich folgender Messzyklus:

  • 9x
    • 8x Acht Sekunden SleepMode (PowerDown)
      Wecken über WatchDog Interupt
    • Abfrage der Temperatur Sensoren
    • Messwerte durch 9 teilen und zum Mittelwert dazu addieren
  • GMS Chip aufwecken
  • GMS Chip Kommunikationstest
  • GMS Chip Akkustand messen
  • Datensatz zusammen setzten
  • Datensatz senden
  • GMS Chip schlafen legen

Ein Zyklus ist damit ca.10 Minuten lang. Was 6 Messungen in der Stunde bzw. 144 am Tag ergibt.

Outdoor-Testlauf 3 hat die ersten 30 Stunden gemeistert!

Nach den ersten 30 Stunden sieht es sehr gut aus. Der Arduino wurde nach 22,5 Stunden erfolgreich neu gestartet und das Solarpanel hat über den Tag den Akku von 62% auf 80% aufgeladen. Bei einem Temperatursensor gab es eine Anomalie. Da es sich um ein einmalige Ereignis in der bisherigen Entwicklung handelt, wird das Problem für einen Einzelfall gehalten.

Outdoor-Testlauf 3 ist gestartet!

Betreffendes System: Prototyp A002 (Akkustand bei 60%)

A002 auf dem Schwimmbrett

Nach dem die Probleme mit der Instabilität von der Kommunikation zwischen Atmega382P und dem Sim800L gelöst wurde und die Software 48 Stunden stabil lief, wurde ein neuer Anlauf für den Outdoor Test gestartet. Ein kleiner Patch lässt den Atemega alle 256 Zyklen bzw. alle 22,5 Stunden neustarten, welcher in seiner Setup Programm das Sim800L zurücksetzt. Auf diese Weise sollen evtuelle Probleme mit dem RAM vorzeitig umgangen werden.

Darüber hinaus wurde die Sonde auf einem Schwimmbrett montiert, welches als Schwimmkörper für den ersten Testlauf auf einem See dienen soll.

Der Test soll mindestens 5 Tage laufen. Sofern dieser erfolgreich verläuft, wird A002 demnächst in einem See in der Nähe getestet.

Prototyp A002 Software Probleme und Outdoor-Testlauf 2

Prototyp A002 während dem Outdoor-Testlauf2 auf dem Dach

Leider läuft der Fortschritt etwas schleppend. Nach dem der Atmega seine Programmierung erfolgreich entgegen genommen hatte, wurde direkt der Outdoor Testlauf 2 gestartet. Leider stellte die Sonde nach 4 bis 12 Stunden immer den Betrieb ein. Nach mehreren erfolglosen Lösungsversuchen wurde nach einem Tipp aus dem Arduino-Forum alle Strings in c-Strings umgewandelt.

Dies führte leider nicht zum Erfolg. Nach dem mehrmals versucht wurde mit dem SeriellenMonitor den Fehler zu finden wurde der Serielle Output für den SeriellenMonitor deaktiviert. Danach lief das Programm ohne Probleme. Nach dem das Programm 48h lang erfolgreich lief wird morgen der Outdoor-Testlauf 3 angestrebt.