Wolken

Projekt zu Wolken, Sensoren und neuronalen Netzen

CRC Prüfsumme

Um manche Übertragungsfehler auf dem I2C Bus zu erkennen versendet und erwartet der Sensor SCD41 eine Prüfsumme.

rechner

Die Datenübertragung über den I2C Bus erfolgt für den Sensor SCD41 in Gruppen mit zwei Datenbytes, und einem Byte Prüfsumme. Die Bestätigung der Prüfsumme ist bei vom Sensor gesendeten Daten nicht zwingend notwendig. Bei Übertragung von Befehlen oder Konfigurationsdaten an den Sensor muss die Prüfsumme berechnet und übertragen werden.

Im Mikrocontroller wird die Berechnung in C-Code durchgeführt. Für schnelle Tests in der Entwicklungsphase erlaubt eine Berechnung im Taschenrechner eine manuelle Kontrolle.

Die Berechnung der CRC Prüfsumme im HP-16C ist mit diesem Programm möglich: :

 001    43.22.  1       Lbl 1
 002    45      4       RCL 4
 003    42      A       SL
 004    22      3       GTO 3
 005    43.22.  2       Lbl 2
 006    45      4       RCL 4
 007    42      A       SL
 008    45      3       RCL 3
 009    42      10      XOR
 010    22      3       GTO 3
 011    43.22.  4       Lbl 4
 012    45      1       RCL 1
 013    36              Enter
 014    45      4       RCL 4
 015    42      10      XOR
 016    45      5       RCL 5
 017    42      20      AND
 018    43      40      x=0
 019    22      1       GTO 1
 020    22      2       GTO 2
 021    43.22.  3       Lbl 3
 022    44      4       STO 4
 023    45      1       RCL 1
 024    42      C       RL
 025    44      1       STO 1
 026    45      4       RCL 4
 027    43      21      RTN
 028    43.22.  A       Lbl A
 029    44      1       STO 1
 030            31      R/S
 031    43.22.  B       Lbl B
 032    44      2       STO 2
 033            8       8
 034    44      32      STO I
 035            F       F
 036            F       F
 037    44      4       STO 4
 038            8       8
 039            0       0
 040    44      5       STO 5
 041            3       3
 042            1       1
 043    44      3       STO 3
 044    43.22.  5       Lbl 5
 045    21      4       GSB 4
 046    43      23      DSZ
 047    22      5       GTO 5
 048    45      2       RCL 2
 049    44      1       STO 1
 050            8       8
 051    44      32      STO I
 052    43.22.  6       Lbl 6
 053    21      4       GSB 4
 054    43      23      DSZ
 055    22      6       GTO 6
 056    43      21      RTN 

 R0     7->0    loop
 R1     MSB
 R2     LSB
 R3     0x31    (0b0011 0001)
 R4     0xFF    Initialisierung CRC
 R5     0b1000 0000     Maske

 [MSB] GSB A [LSB] GSB B 

Entsprechend dem Dokument Sensirion_GF_AN_SFM-04_CRC_Checksum_D1.pdf (S.4) wird die Berechnung der CRC Prüfsumme als Generatormodell im HP-16C Code umgesetzt. Im Datenblatt des Sensors Sensirion_SCD4x_Datasheet.pdf (S.21) wird darauf hingewiesen, dass im Algoritmus der CRC Wert initial auf 0xFF zu setzen ist.

Bewölkung und Helligkeit

Die Frage "Wie stark ist aktuelle die Bewölkung?" wird ersetzt durch die Frage: "Ist die Sonne durch Wolken verdeckt?".

Zwei Sensoren, die Helligkeitswerte erfassen werden auf den Himmel ausgerichtet. Ein Sensor wird, falls die Sonne sichtbar ist, sicher von der Sonne beleuchtet. Der zweite Sensor ist mit einer Maske versehen, so dass niemals direktes Sonnenlicht auf den Sensor fällt, also nur das diffuse Licht des Himmels gemessen wird. Aus dem Quotienten der beiden Helligkeitswerte kann die Stärke der Verdeckung der Sonne abgeleitet werden.

Die gelbe Linie im Graph zeigt die Helligkeit des Sensors für Himmel und Sonne, die graue die Helligkeit des Himmels.

Im Beispiel ist ein nahezu wolkenloser Himmel bis 9 Uhr, danach starke Bewölkung abgebildet.

Helligkeitsverlauf

Der Quotient der Sensoren repräsentiert bei Werten um 0,4 eine freie Sicht zur Sonne, bei Werten um 1,1 eine vollkommene Verdeckung der Sonne.

Wolkenverlauf

Die Gruppierung in Zeitfenster im Laufe eines Tages lässt Rückschlüsse auf eine gleichmässige, konturlose Bewölkung (geringe Varianz), oder eine unterschiedlich dichte Wolkendecke. So lassen sich Nebel oder Cirrus-Wolken gegenüber Cumulus-Wolken abgrenzen.

Wolken

Sensorgehäuse 3D-Druck

Das wetterfeste Gehäuse für die Licht- und Wettersensoren

Wolkensensor-Testdruck

Ein erster Testdruck für den Wolkensensor scheint die Konstruktionsidee zu bestätigen. Im oberen Bereich werden die LDR-Lichtsensoren wassergeschützt freien Blick auf den Himmel haben, im unteren Bereich kann durch Lüftungsöffnungen Temperatur, Druck und Feuchte erfasst werden. Der Schutz gegen Eindringen von Wasser bei starkem Wind, oder Insekten muss noch geprüft werden.

Arbeitsbereich A/D Konverter

In extremen Wertebereichen der Spannungswerte der Lichtsensoren zeigen sich gelegentlich untypische Kurvenverläufe.

Analogsensoren

In den Kurven von Sensor 1 (grüne Kurve) ist gelegentlich eine geringere Variation der Messwerte im Vergleich zu den anderen Sensoren zu beobachten. Möglicherweise ist der Spannungsteiler für diesen Sensor ungünstig dimensioniert, und erzeugt diesen nichtlinearen Effekt.

Spannungsteiler

In der ersten Version des Sensoraufbaus sind alle Spannungsteiler gleich ausgelegt. Die LDR erhalten unterschiedliche Lichtmengen durch Maskierung oder Farbfilterung.

Für Sensor 1 ist der Widerstand R1 evtl. zu groß gewählt. Die fixen Widerstände werden nun neu berechnet, so dass die jeweiligen Werte der Spannungsteiler durchschnittlich im mittleren Messbereich des A/D Wandlers liegen.

Wettertaugliches Gehäuse

Für einen dauerhaften Ausseneinsatz müssen die elektronischen Bauteile gegen Feuchtigkeit geschützt werden, der Temperatur- und Feuchtigkeitssensor aber belüftet sein.

sensor

Der obere Teil des Sensorgehäuses ist in einem Glaskolben (Reagenzglas, Ø 3cm) untergebracht. In der unteren belüfteten Sensorkammer ist der Sensor BME280 für Temperatur, Luftdruck und Luftfeuchte platziert. Über schräge Öffnungen kann eindringendes Wasser abfließen. (Bild links)

Die Halterung und Maskierung für die Lichtsensoren ist 3d-gedruckt. Ein kugelförmiger Reflektor wird von Sensor 1 erfasst, Helligkeit der Sonne und des Himmels werden gemessen. Zwei Röhren mit Sensoren (2,3) sind nach oben ausgerichtet, die Helligkeit eines Himmelssegments wird gemessen.(Bild mitte)

Der obere Lichtsensor 1 (LDR) ist nach unten auf die Reflexionsfläche ausgerichtet. Die LDR-Widerstände 2 und 3 (Blaufilter) sind ins Zenit gerichtet. Der Messwinkel ist begrenzt, die Sonne wird nie erfasst. Der kombinierte Temperatur-, Druck- und Feuchtesensor ist möglichst nicht Sonne, Regen oder Wind direkt ausgesetzt. (Bild rechts)

Sensoren über I2C

Ein kombinierter Sensor für Temperatur, Luftfeuchte und Luftdruck wird über eine digitale Schnittstelle angebunden.

bme280

Bei der Berechnung der Wolkendeckung ist der Luftdruck möglicherweise ein wichtiger Faktor. Um meteorologische Grunddaten zu erfassen wird der Sensor BME280 verwendet. Einzelsensoren für Temperatur, Luftfeuchte und Luftdruck sind in einem Gehäuse untergebracht.

Jeder Sensorbaustein wird während der Produktion kalibriert, die Daten werden im Sensor abgespeichert. Für ein korrektes Messergebnis müssen die rohen Messwerte mit den Korrekturdaten verrechnet werden. Bei Luftdruck und Luftfeuchte werden auch Temperatur-Messwerte einbezogen.

Mit der libi2c Bibliothek wird auf die Register des Sensors zugegriffen.

Das Datenblatt des Sensors schlägt aus Performance-Gründen das blockweise Auslesen von Registern vor.

Linkliste

Beaglebone Hardware http://maximebranger.synology.me:180/epubfs.php?data=249&comp=c06.xhtml

bme280 Datasheet https://www.makershop.de/download/bst-bme280-ds002.pdf

bme280 Breakout board https://www.makershop.de/download/bme280-breakout-schematic.jpg

i2c Verdrahtung https://elinux.org/File:BoneGPIO.png

i2c Interface https://www.kernel.org/doc/Documentation/i2c/dev-interface

i2c Code https://github.com/ControlEverythingCommunity/BME280/blob/master/C/BME280.c

i2c Code http://blog.generationmake.de/articles/5/bosch-bme280-luftdr

i2c Code https://elinux.org/Interfacing_with_I2C_Devices

https://de.mathworks.com/help/supportpkg/beagleboneio/ug/the-beaglebone-black-gpio-pins.html

https://stackoverflow.com/questions/29972421/reading-an-input-4096-from-a-directory-to-use-in-c

Elektronik

Operationsverstärker https://www.ti.com/lit/pdf/slyt701

OpAmp LM324N https://www.ti.com/lit/ds/symlink/lm324-n.pdf https://www.ti.com/lit/pdf/sloa277

Meteo

Luftdruck https://rechneronline.de/barometer/

Höhenprofil https://de-de.topographic-map.com/map-95z57/Deutschland/?center=50.12909%2C8.69358&zoom=16

Neuronal

NN https://ai.googleblog.com/2016/06/wide-deep-learning-better-together-with.html

Steve Brunton https://www.youtube.com/c/Eigensteve/videos ML https://www.youtube.com/watch?v=QpzQYDcczRQ NN https://www.youtube.com/watch?v=aIZtJqtzdQs

3blue1brown https://www.youtube.com/c/3blue1brown NN https://www.youtube.com/watch?v=aircAruvnKk&list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi

Michael Nielsen, Neural Networks and Deep Learning neuralnetworksanddeeplearning.com/

C++

https://cplusplus.com/doc/tutorial/files/

http://www.willemer.de/informatik/cpp/timelib.htm

https://wiki.debian.org/DateTime

Netzwerk – Datenbank

Node Red blog.onodera.asia/2020/12/netbsdnode-red.html

Node Red Coap flows.nodered.org/node/node-red-contrib-coap

Sensorwerte in der Datenbank

Die Sensorwerte werden vorverarbeitet in die Datenbank geschrieben.

Datenbank

Für überwachtes Lernen des neuronales Netzes werden die abhängigen Parameter "Kalwolk, Kalcc, Kalreg" als Daten zur Klassifizierung in die Datenbank geschrieben.

Zeitlich zusammenhängende Werte werden, um gemeinsam als zeitinvariante Daten zum Training benutzbar zu sein, mit einer gleichen zID gespeichert.

Um als zeitlicher Parameter "zZeit" als Eingangswert des neuronalen Netzes linear verwendbar zu sein, ist die Tageszeit in "julianischen" Minuten kodiert. ;)

Sensoren für diffuses / direktes Licht

Mit zwei Helligkeitssensoren lässt sich der Grad der Bewölkung abschätzen.

Sensor 1 (Gesamt) misst über die Reflektionsfläche das direkte Licht der Sonne und das Umgebungslicht des Himmels. Sensor 2 (Zenit) misst ein Segment des Himmels, in dem sich die Sonne nie befindet. Bei bewölktem Himmel ist die Helligkeit bei Sensor 2 größer als bei Sensor 1. Bei wolkenlosem Himmel ist die Helligkeit bei Sensor 1 größer. Aus der Differenz lässt sich die Verdeckung der Sonne durch Wolken, also der Bewölkungsgrad ableiten.

Sensor 1 2

Weiter links oder unten liegende Datenpunkte repräsentieren eine höhere Helligkeit. Messwerte bei bewölktem Himmel (rot), und wolkenlosem Himmel (blau) lassen sich gut unterscheiden.

Wolkensensor und neuronale Netze

Ein Projekt zu Erkundung der Möglichkeiten neuronaler Netze. Mit wenigen Helligkeitssensoren wird der Deckungsgrad der Bewölkung gemessen.

sensorphalanx

Das Ziel des Projekts ist, die Programmierung und den Einsatz von künstlichen neuronalen Netzen zu erkunden. Im Versuchsaufbau werden mehrere Sensoren (Helligkeit, Luftdruck, Luftfeuchtigkeit) an einen Einplatinencomputer angeschlossen. Messwerte werden in regelmässigen Abständen in einer Datenbank gespeichert. Ein neuronales Netz berechnet den Deckungsgrad der Bewölkung.

Sensorphalanx
Helligkeitssensoren (LDR) messen verschiedene Lichtparameter des Himmels. In einer Aufbaustufe werden auch Temperatur, Luftdruck und Luftfeuchte gemessen.
Datenaquisition
In z.B fünfminütigem Abstand werden die Sensoren abgefragt, und die Messwerte an die Datenbank geschickt.
Datenbank / Frontend
Aktuelle Messwerte werde ausgelesen und in einem Dashboard angezeigt. In einer Histogrammdarstellung wird ein zeitlicher Verlauf dargestellt.

Für die Berechnung der Bewölkung werden mehrere Helligkeitswerte und andere Parameter erfasst:

Direktes und diffuses Licht
Ein LDR-Sensor ist nach unten auf eine halbkugelförmige Reflexionsfläche gerichtet. Direktes Sonnenlicht, als auch diffuses Umgebungslicht des Himmels werden von der matten Oberfläche reflektiert.
Diffuses Licht
Ein Sensor ist ins Zenit ausgerichtet. Durch Positionierung in einer Röhre wird der Messwinkel begrenzt, direktes Sonnenlicht fällt niemals auf diesen Sensor.
Blaus Licht
Im Messwinkel begrenzt, und mit einer Farbfolie versehen messen zwei Sensoren jeweils den Rot- und Blauanteil des diffusen Lichts.
Tageszeit
Die Wolkendeckung bildet sich zu verschiedenen Uhzeiten u.U. in verschiedenen Farb und Helligkeitskombinationen ab.
(Luftdruck, Temperatur, Luftfeuchte)
Die vorherrschende Wolkenart wird möglicherweise stark durch diese Parameter bestimmt. Die Sensoren werden in einer weiteren Ausbaustufe hinzugefügt.

Als Zielparameter sollen berechnet werden:

Wolkendeckung
Der Grad der Bewölkung, bei Cirrus die Abschwächung des Sonnenlichts durch die Wolken, bei Cumulus der Anteil an Bedeckung der Himmelsfläche.
Bewölkungsart
Das Spektrum von Cumulus- bis Cirrusbewölkung wird berechnet.
Regenwahrscheinlichkeit
Möglicherweise kann eine Aussage über zukünftige Regenfälle abgeschätzt werden.