Benutzer-Werkzeuge

Webseiten-Werkzeuge


coronaluft

Dies ist eine alte Version des Dokuments!


CoronaLuft - Luftqualitäts-Anzeige

Eine Ansteckung mit Corona kann auch durch die Luft erfolgen. Dabei spielt das Raumklima eine wichtige Rolle. Externer Link. Hohe Luftfeuchtigkeit, niedriger CO2-Gehalt und mittlere Temperatur scheinen den Aerosol-Tröpfchen Einhalt zu gebieten.

Mit wenigen Bauteilen und etwas KnowHow habe ich mir eine Corona-Warn-Anzeige gebaut.

Grundlage ist ein ESP8266 (Wemos D1 mini), ein BME280 (Temperatur, Luftfeuchtigkeit und mehr), sowie ein CCS811 (CO2) - zusammen ca. 20€ (wenn man nicht im Ausland bestellt).

Zusätzlich sind inzwischen noch zwei LEDs und ein passiver Buzzer dazu gekommen.

Die Software macht den Rest, und die hat mich (mal wieder) am meisten Zeit und Nerven gekostet.

Funktionen:

  • die blaue OnBoard-LED blinkt jeweils zwei Mal im Intervall. Halbe Helligkeit für 'Wert in Ordnung', volle Helligkeit für 'Wert außerhalb des Normbereiches'. Das ganze mittels Pulsweitenmodulation (PWM).
  • mit den beiden LEDs wird es etwas einfacher. Eine dient zur Anzeige ob die Feuchtigkeit zu niedrig, die andere ob CO2 zu hoch ist. Da die Feuchtigkeit fast immer unter den gewünschten 50% ist, gibt es dort nur an/aus. Bei CO2 steigert sich die Blinkfrequenz bis sie komplett an ist. Da die LEDs ohne Vorwiderstand betrieben werden, zur Sicherheit nicht mit voller Leistung (PWM).
  • Wenn alles OK ist, 'atmet' die blaue LED im 6 Sekunden Rhythmus (Sinus und PWM) und die beiden LEDs sind aus.
  • Es wird ein Access-Point „CoronaLuft“ aufgebaut, an den man sich anmelden kann. Statt einer Anmeldemaske (Captive Portal) erreicht man eine Übersichtsseite, von der aus man die grafische Darstellung der aktuellen Sensordaten erreicht.
  • Die Daten werden im ESP8266-SPIFFS Dateisystem gepuffert und die Grafische Anzeige, die mit Chartjs realisiert wurde, damit aktualisiert.
  • Es wird ein Fake-AccessPoint erstellt, der im WLAN-Fenster den Status der Luftqualität anzeigt. „CoronaLuft:WARN(CO2)“ bzw. „CoronaLuft:WARN(Hyg)“ oder „CoronaLuft:WARNUNG“. Man kann sich mit diesen APs allerdings nicht verbinden!
  • Der Buzzer spielt ein paar Töne, wenn das CO2 extrem hoch ist.

Vorteile:

  • unabhängig von Routern und WiFi-Netzen
  • Grundinfos optisch, Detailinfos über eine Webseite. Smartphone unabhängig.

Nachteile:

  • Man muss sich mit einem 'fremden' WLAN verbinden und verliert damit kurzfristig eine mögliche andere WLAN-Verbindung.

Erweiterungen:

  • erweiterbar um die restlichen Sensor-Informationen. Dann müssen aber weitere Webseiten erstellt werden, da der Platz für Daten und Grafiken nicht reicht.
  • OverTheAir Update
  • Schwellwert Einstellungen
  • Verbindung mit Router

Jetzt brauche ich nur noch jemanden, der ein Gehäuse bastelt und es vermarktet :)

SPIFFS plus RTC plus EEPROM

Ich nutze alle drei, obwohl ich nicht sicher bin, ob die den gleichen Speicherbereich nutzen. RTC um einen zweifachen Reset anders abzufangen; SPIFFS, um die Sensor-Daten zu speichern und die Grafik html-Library. Und jetzt EEPROM, um die Settings der App zu speichern. Könnte ich zwar auch in SPIFFS, aber EEPROM kenne ich noch nicht :)

Es sind wohl maximal 4096 bytes, aber das reicht mir.

|--------------|-------|---------------|--|--|--|--|--|
^              ^       ^               ^     ^
Sketch    OTA update   File system   EEPROM  WiFi config (SDK)

Um im EEPROM eine Zahl größer als 255 zu speichern braucht man 2 Bytes. Das speichert und liest man dann so:

  EEPROM.write(1, highByte(s_co2low));
  EEPROM.write(2, lowByte(s_co2low));


  s_co2low   = EEPROM.read(1)*256+EEPROM.read(2);

Sollten die gelesenen Werte nicht zu den geschriebenen passen, liegt es vielleicht an dem Aufruf, mit dem man die Anzahl der zu bearbeitenden Bytes setzt.

  EEPROM.begin(EEPROM_SIZE);

Ich musste den 'Double Reset Detector' nach dem OTA-Update ausführen, sonst hat er nach dem OTA immer gemeint, er wäre redetet worden

Stand 9/2020

coronaluft.1600119409.txt.gz · Zuletzt geändert: 2020/09/14 21:36 von varnholt