Wolken
CRC Prüfsumme
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
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.
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.
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.
Sensorgehäuse 3D-Druck
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 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.
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
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
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
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
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.
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
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.