Versuchsaufbau "Autonome Zelle" #1 & #2: Solar-Feinstaub-Wetter-Vergleichsding

Idee

Selbst-überwachter Solarbetrieb eines Feinstaub-AirRohrs mit unterschiedlichen Temperatur/Feuchte-Sensoren jeweils im AirRohr und in einer Wetterhütte.

  • Experiment #1: Eigenüberwachung eines Solarsystems
    • Spannungen, mittels ADS1115
      • Akku,
      • Solarpanel
      • 3.3V/I²C-Rail
      • 5V-Verbraucher-Rail
      • Akku-Heizung
    • Stromstärke, mittels INA219 (noch nicht in aller Doku enthalten)
      • Akku (Lade- und Entladerichtung)
    • Temperatur, mittels BME280
      • am Akku
  • Experiment #2: Vergleich der Temperatur- & Feuchte-Sensoren DHT22 & BME280
    • je 1x in AirRohr
    • je 1x in Wetterhütte
  • Forschung #1: Auswertung der Temperaturen in Gehäuse AirRohr und Wetterhütte
  • Forschung #2: Kompensation SDS011-Feinstaubwerte mit Feuchtigkeit, evtl Luftdruck?

Die Überlegung “Möglichst identischer Aufbau zu üblichem AirRohr (der ESP8266 bleibt etwa aus thermischen Gründen weiterhin im AirRohr)” wurde zu Autonome Zelle #2 hinsichtlich der ESP-Position verworfen: ESP im festen Gehäuse ist vmtl. deutlich solider und der deep-sleep sollte Eigenerwärmung ohnehin weitgehend vermeiden.

Status

2019-01-18: Release v0.92
2019-01-09: Gesamtaufbau in einfacher Ausführung für Laborbetrieb fertig.
2018-12: Forschung Einzelkomponenten.

Hinweise

  • Positionierung/Abstand der Akku-Thermometer zum Akku: Sind wa gespannt!
  • Separates XLR-Kabel zum Nachladen = sehr praktisch.
  • USB-Serielle funktioniert auch bei Akkubetrieb (ESP8266 hat wohl Schutzdiode).
  • BME280 im AirRohr benötigt die alternative I2C-Adresse (selber Bus wie Akku-BME).
  • Laderegler mittels Widerstand auf maximalen Ladestrom von 2.7/3A eingestellt.
  • Aufpassen: Die “Heizdecken” in Serie ergeben 2x5=10V, Vmax könnte aber bei bis zu 18V liegen! Zweck-optimistische Annahme: Wenn Solarstrom >10V wird sollte Heizphase schon abgeschlossen sein.

Schaltplan

Komponenten

Stromkiste

Wetterhütte

Feinstaub-AirRohr

Software

source-code

Repository: https://git.cicer.de/autonome-zelle/autonome-zelle-sfwv/

pseudo-code

  1. Messung: endet zum Messzeitpunkt
    1.1 Feinstaub (5s)
    1.2 3x BME280
    1.3 2x DHT22
    1.3 1x ADS1115
  2. Sendung: beginnt ab Messzeitpunkt
    2.1 WLAN-Verbindung herstellen
    2.2 Zeit holen (ntp)
    2.3 Messzeitpunkt bestimmen
    2.4 Meldungen senden (mqtt)
    2.5 Schlafzeit bestimmen
  3. Schlafen

Aufbereitung in Grafana

Übersicht im Dashboard: “Autonome Zelle: Vgl. DHT/BME & AirRohr/Wetterhütte”

Ausgewählte Panels:

Serielle Ausgabe

115200 bits/s

[sfwv] Hello & welcome, let's wait 3 seconds ... done.
[SDS011] Firmware version [year.month.day]: 16.11.21
[SDS011] Mode: query, State: sleeping
[BME1/Rohr] testing 0x76 on D3 & D4
[BME1/Rohr] setting forced mode, 1xtemp/1xhum/1xpress oversampling,filter off
[BME2/Hütte] testing 0x77 on D5 & D6
[BME2/Hütte] setting forced mode, 1xtemp/1xhum/1xpress oversampling,filter off
[BME3/Akku] testing 0x76 on D5 & D6
[BME3/Akku] setting forced mode, 1xtemp/1xhum/1xpress oversampling,filter off
-------------------------------------------------------------------------------
[SDS011] starting particle measurement for 5s ... done.
[SDS011] PM10 = 857.0, PM2.5 = 730.2, State: sleeping
[BME1/Rohr] measurement done.
[BME2/Hütte] measurement done.
[BME3/Akku] measurement done.
[BME1/Rohr] t= 19.5°C, h= 41.1RH, p=1019.7hPa
[BME2/Hütte] t= 19.0°C, h= 40.4RH, p=1019.9hPa
[BME3/Akku] t= 19.4°C, h= 52.7RH, p=1019.0hPa
[DHT1/Rohr] t= 18.7°C, h= 42.2RH
[DHT2/Hütte] t= 18.3°C, h= 43.8RH
[ADS1115] Solar: 0.13V, Heizung: -0.01V, Akku: 3.26V, Verbraucher:5.03V
[WLAN] Connect to MyHomeWLAN .... got IP-address 192.168.1.100, RSSI: -73
[ntp] Starting UDP on 2390
[ntp] Sending NTP packet ... packet received, length=48
[ntp] epoch time is 1547170170, UTC time is 1:29:30
[ntp] timestamp of measurement (last hh:m1) in epoch: 1547170140
[mqtt0] sending {"h_bme_t":19.04,"h_bme_h":40.3623,"h_bme_p":1019.881,"h_dht_t":18.3,"h_dht_h":43.8,"bme_t":19.49,"bme_h":41.06641,"bme_p":1019.721,"dht_t":18.7,"dht_h":42.2,"p10":"857.0","p25":"730.2","time":1547170140} ... success.
[mqtt1] sending {"adc0":0.13275,"adc1":-0.00525,"adc2":3.257625,"adc3":5.025375,"s_bme_t":19.35,"s_bme_h":52.74902,"s_bme_p":1019.017,"wifi_rssi":-73,"time":1547170140} ... success.
[WLAN] milliseconds I'll now go to sleep: 20000.00
-------------------------------------------------------------------------------
[SDS011] starting particle measurement for 5s ... done.
...

Aussichten/Ideen

  • Forschung: Messmethode luftdaten.info (15s Leerlauf vor 5s Messung?)
  • Kalibrierung von BME/DHT-Sensoren
  • Clock etablieren, um Schlafzeit nach Sendung zu bestimmen & weniger ntp-Abfragen.
  • RTC für deep-sleep?
  • Buffer-Konzept für gescheiterte Übermittlungen
  • Absenkung der Messfrequenz bei niedriger Akkuladung
  • ESP: deep-sleep zwischen Messungen (ohne dass VCC für SDS011 derweil auf ON geht)
  • Abschaltung des Stroms vorm 3.3>5V-Konverters zwischen Messungen möglich -> TPS2552DBV[T,R] (nicht DRV[T,R]) oder NCP380 o.ä.
  • Messung der Stromstärke (ACS712, INA219)
  • ESP: Eigene Messung der Versorgungsspannung möglich?

Dank

An @roh und @weef für die Beratung in zahlreichen elektrischen und elektronischen Fragen sowie an die oben im Sourcecode genannten Personen und Projekte für die jeweiligen Programm-Komponenten.

siehe auch

3 Likes

Schöne Idee, tolle Umsetzung!

1 Like

Chapeau mit Hut Wetterhütte ab.

Saubere Arbeit, Gratulation zu dieser wunderbaren Wettergerätschaft und vielen Dank fürs Teilen!

30 posts were merged into an existing topic: Diskussion zur Appliance »Autonome Zelle«

Autonome Zelle #2

Das nächste Exemplar hat nunmehr neben einem anderen LiFePO-Akku noch eine DS3231M RTC sowie einen NCP380 load switch bekommen. Damit kann der sleep current der gesamten appliance bis auf den time keeping current der RTC reduziert werden, die RTC weckt beim nächsten Meßzyklus das 5V-rail sowie die daraus abgeleiteten 3,3V auf. Zum Ende der Messung setzt der ESP den RTC-Alarm (nächste Messung), legt sich schlafen, und die RTC macht dann alles aus.
Außerdem ist ein INA219 verbaut, der den Lade- und Entladestrom des Akkus mißt.
Fehlt noch:

  • Sicherungshalter-Einbau
  • Druckausgleichselement
  • mehr Doku

2 Likes

Software-mäßig haben wa das zuletzt in C mit dieser RTClibextended angesprochen.

Zu Beginn sagen wa:

RTC_DS3231 rtc;
byte AlarmFlag = 0;
rtc.begin();
rtc.writeSqwPinMode(DS3231_OFF);
rtc.alarmInterrupt(1, true);

Nachdem wir uns überlegten wann wir wieder angehen wollen (int wakeup_s, wakeup_m, wakeup_h;) wird der Alarm definiert und “ge-armed”:

rtc.setAlarm(ALM1_MATCH_HOURS, wakeup_s, wakeup_m, wakeup_h, 0);
rtc.armAlarm(1, true);

In der RTC lassen sich AFAIR auch (aber etwas eingeschränkt) feste Rhytmen definieren; hier lag das Augenmerk darauf zu einer berechneten/konkreten Uhrzeit wieder aufzuwachen.

1 Like

A post was merged into an existing topic: Diskussion zur Appliance »Autonome Zelle«