Heute habe ich meinen Drucksensor, mit dem ich bei meinem Projekt SeeInsight den relativen Wasserstand messen will, mit Epoxidharz in ein Teelicht eingegossen. In 3-4 Tagen sollte das Harz dann ausgetrocknet sein.
SeeInsight
Bei dem Projekt SeeInsight geht es darum, Umweltdaten von Seen zu sammeln und jedem Live zur Verfügung zu stellen.
Tiefenmessung über Druck?
Arbeite aktuell etwas an meinem Projekt weiter. Da der nächste Prototyp die Tiefenmessung mit enthalten soll, experimentiere ich aktuell mit etwas Sensoren rum. Hier ein paar Bilder.
Sabine beendet See-Testlauf 1 vorzeitig
Um 03:26Uhr brach der Kontakt zu A002 ab. Das Sturmtief Sabine hat mit Orkanböen die Sonde gewendet. Der vermeintlich wasserdichte Schutzkörper hielt dem Druck in 20cm tiefe nicht stand und lief mit Wasser voll. Die Sonde wurde geborgen und wird aktuell getrocknet. In Moment wird von einem Totalschaden bei der Elektronik ausgegangen. Die Sensorleitung kann wahrscheinlich wiederverwendet werden. Suche jetzt eine neue Konstruktionsidee für die Boje.
Probleme mit der Sensorleitung
Seit zweieinhalb Wochen läuft inzwischen der See-Testlauf 1 im Walldorfer Badesee. Neben einigen kleinen Software-Updates, welche vorallem Probleme mit dem Funkmodul lösen sollten, trat inzwischen ein Problem mit den Temperatur Sensoren auf. So passierte es manchmal, dass scheinbar ein DS18B20-Sensor nicht antwortete, was zur Folge hat, dass die Messwerte 85.00 (BootUp) und -127.00 (nicht gefunden) in die Mittelwertberechnung mit einfließen. Bei einer Kontrolle der Sensorleitung habe ich Feuchtigkeit ab fünf Meter Tiefe in den Sensoren festgestellt. Dies könnte die Ursache für die Fehler sein.
Dem Problem wurde mit einem Software-Patch entgegengewirkt, welches die Sensorabfrage so lange wiederholt, bis keiner der Sensorwerte 85 oder -127 ist.
Für die nächste Sensorleitung überlege ich die luftleeren Räume mit einem Kunstharz auszufüllen.
Neben dem Patch für die Sensoren erhielt das Update auch ein paar Neuerungen für das Funkmodul.
Das Funkmodul hatte trotz dem Patch vom 24.01.2020 wieder über einen Tag ausgesetzt. Dadurch ergab sich folgende Erkenntnis:
Die serielle Kommunikation zwischen dem Atmega und dem Sim800L funktioniert noch. Das Sim800 führt auch soweit die Befehle aus, nur scheitert das Modul scheinbar daran, die finale Verbindung herzustellen. Da der Fehler nur bei einem AT-Befehl auftritt und dadurch die Fehlertoleranz nicht überschritten wird, wurde das Modul auch nicht neu gestartet. Durch die Gewichtung der Fehler sollte dies zukünftig klappen.
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 🙂
Prototyp A002 bekommt ein Softwareupdate
Da die Sonde über ein Tag keinen Datensatz mehr gesendet hat, wurde heute ein kleiner Patch auf den Atmega-328p aufgespielt. Dieser soll den GSM Chip bei Problemen einfach neu starten. Hoffentlich tritt das Problem nicht mehr auf.
Danach hatte ich noch etwas Zeit für dieses schöne Foto 🙂
A002 hat Übertragungsprobleme
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.
See-Testlauf 1 läuft seit einer Woche
Bisher läuft der Test ohne größere Probleme. Hier ein paar Diagramme von der ersten Woche.
See-Testlauf 1 hat begonnen!
Nach erfolgreichem Abschluss vom Outdoor-Testlauf 3 befindet sich A002 jetzt auf einem See in der Nähe von Walldorf. Hier soll die Sonde mindestens einen Monat verbringen, um Langzeit-Erfahrungen mit der Technik zu gewinnen.
Messzyklen für den kommenden See-Test 1
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
- 8x Acht Sekunden SleepMode (PowerDown)
- 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.