Zur Hölle mit der Optik!

Wer das Projekt SeeInsight schon etwas verfolgt hat weiß, dass auch die Sichtweite erfasst werden soll. Wenn man im Netz nach Messverfahren sucht, findet man schnell viele Systeme mit Kameras oder Lichtschranken. Wer allerdings schon mal eine Ankerkette von einer Boje rauf geholt hat weiß, dass auf dieser Algen und vieles mehr sich ausgebreitet haben. Daher braucht man ein Verfahren welches ohne Optik auskommt, da es nur gut funktionieren, wenn man die Messung zeitlich begrenzt einsetzt.

Daher brauchte ich einen Ansatz der ohne 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 Widerstand des Wassers über die Strecke der Ankerkette zu messen. In einem Versuch mit einem Eimer Schlamm vom örtlichen See und einem kleinen Arduino Nano konnte ich feststellen, dass der Widerstand des Wassers beim aufwirbeln von den Sedimenten um teilweise mehr als die Hälfte fiel.

Natürlich hat jeder See einen anderen Leitwert. Eine Aussage wie „1kOhm auf 10m = Nullsicht“ kann man daher nicht treffen. Jetzt muss aber erstmal das System sich erstmal im Einsatz bewähren, bevor ich mehr Arbeit in diese Messtechnik investiere.

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

A002 hat Übertragungsprobleme

Auswertung der Daten von A002 weisen eine große Lücke auf

Am 22.01.2020 war gegen 13:33 Uhr der letzte Datensatz von der Testboje eingegangen. Bei einem Besuch vor Ort am frühen Abend war keine Auffälligkeit bei der Sichtprüfung festzustellen. Da die Status LED vom Sim800L blinkte, wurde ein Problem mit der Spannungsversorgung ausgeschlossen.
Der Atmega hat die Aufgabe entweder alle 256 Zyklen oder wenn die Kommunikation mit dem Sim800L abbricht sich selbst und das GSM-Modul zu rebooten. Der Blinkmodus der Status LED vom Sim800L gab an, dass die Verbindung zum Mobilfunknetz besteht. Da der Atmega-328p keine Status-LED besitzt, konnte über seinen Zustand nichts in Erfahrung gebracht werden. Der nächste Neustart des Systems müsste, wenn alles funktioniert, am 23.01.2020 21-23Uhr stattfinden.
Ich entschied den Reset zuwarten, um festzustellen ob das System selbständig den Fehler lösen kann. Am 23.01.2020 um 22:30 Uhr sendete A002 etwas verspätet den ersten Datensatz wieder.

Fazit:
Auf Grund der Symptome lässt sich das Problem auf das Sim800 zurückführen. Zwar antwortet das Modul auf die Anfragen des Atmegas hat aber scheinbar Probleme bei der Umsetzung. Da die Sonde nach dem Neustart wieder sendete lässt sich das Problem mit einem Reboot beheben.
Um das Problem in der Zukunft zu verhindern, arbeite ich aktuell an einem kleinen Update. Dieses soll einen TimeOut-Counter einführen. Sofern bei zwei Sendeversuchen in Folge zu Problemen kommt 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

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 das Fazit sehr gut aus. Der Atmega wurde nach 22,5 Stunden erfolgreich neu gestartet und das Solarpanel hat über den Tag den Akku trotz bewölktem Himmel von 62% auf 80% aufgeladen. Bei einem Temperatursensor gab es eine kleine Anomalie. Da in der bisherigen Entwicklung zuvor nie vorgekommen ist, halte ich das Problem für einen Einzelfall und beobachte es erstmal nur.

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 dabei das Sim800L ebenfalls neustarten lässt. 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 Outdoor-Testlauf 2 startet mit Problemen

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, wurden 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.