Inhaltsverzeichnis:

Erstellen Sie einen internen IoT-Luftqualitätssensor ohne Cloud erforderlich - Gunook
Erstellen Sie einen internen IoT-Luftqualitätssensor ohne Cloud erforderlich - Gunook

Video: Erstellen Sie einen internen IoT-Luftqualitätssensor ohne Cloud erforderlich - Gunook

Video: Erstellen Sie einen internen IoT-Luftqualitätssensor ohne Cloud erforderlich - Gunook
Video: Basiswebinar 14.09.2021: Die Schaltergeneration Valena Life/Allure with NETATMO 2024, November
Anonim
Bauen Sie einen internen IoT-Luftqualitätssensor ohne Cloud erforderlich
Bauen Sie einen internen IoT-Luftqualitätssensor ohne Cloud erforderlich
Bauen Sie einen internen IoT-Luftqualitätssensor ohne Cloud erforderlich
Bauen Sie einen internen IoT-Luftqualitätssensor ohne Cloud erforderlich
Bauen Sie einen internen IoT-Luftqualitätssensor ohne Cloud erforderlich
Bauen Sie einen internen IoT-Luftqualitätssensor ohne Cloud erforderlich
Bauen Sie einen internen IoT-Luftqualitätssensor ohne Cloud erforderlich
Bauen Sie einen internen IoT-Luftqualitätssensor ohne Cloud erforderlich

Die Qualität der Innen- oder Außenluft hängt von vielen Schadstoffquellen und auch vom Wetter ab.

Dieses Gerät erfasst einige der häufigsten und einige der interessantesten Parameter durch die Verwendung von 2 Sensorchips.

  • Temperatur
  • Feuchtigkeit
  • Druck
  • Organisches Gas
  • Mikropartikel

Die hier verwendeten Sensoren sind der BME680 zur Ermittlung von Temperatur-, Feuchtigkeits-, Druck- und organischen Gaswerten und der PMS5003 zur Ermittlung der Dichte der Mikropartikel.

Durch die Verwendung der HomeDing-Bibliothek ist es einfach, ein Gerät zu erstellen, das nur mit Ihrem Heimnetzwerk verbunden ist und von jedem Browser im Netzwerk erreicht und gesteuert werden kann. Es wird mit einer Auswahl an Elementen geliefert, mit denen die gängigsten Sensorchips, Geräte und andere Dienste verwendet werden können.

Es bietet auch eine Komplettlösung zum Hosten einer Webseite im Gerät, anstatt eine Cloud-basierte Lösung zu verwenden, um die Sensordaten anzuzeigen und mit dem Gerät zu interagieren.

Lieferungen

Alles, was Sie brauchen, um dieses Projekt zu bauen, ist ein ESP8266-basiertes Board wie das Nodemcu-Board und ein Satz Sensoren zur Messung der Luftqualität. Die in diesem Projekt verwendete HomeDing-Bibliothek unterstützt einige der gängigen Sensorchips für Temperatur, Feuchtigkeit, Druck und Qualität. Hier kommt der BMP680-Chip zum Einsatz.

  • Ein USB-Stecker und ein Micro-USB-Kabel zur Stromversorgung.
  • 1 Nodemcu-Board mit der ESP8266-CPU.
  • 1 BME680-Sensor-Breakout-Board.
  • 1 PM2.5 Luftpartikellasersensor Typ PMS5003

Es ist einfach, den BME680-Sensor gegen einen DHT22-Sensor auszutauschen, da diese unter anderem auch von der Bibliothek unterstützt werden.

Schritt 1: Arduino-Umgebung für ESP8266 vorbereiten

Vorbereiten der Arduino-Umgebung für ESP8266
Vorbereiten der Arduino-Umgebung für ESP8266
  1. Installieren Sie die neueste Version der Arduino IDE (derzeit Version 1.8.2).
  2. Verwenden Sie den Board Manager, um die esp8266-Unterstützung zu installieren. Eine detaillierte Anleitung finden Sie hier:
  3. Richten Sie die Board-Optionen für eine NodeMCU 1.0 mit 1MByte SPIFFS File System ein, wie im Screenshot gezeigt

Schritt 2: Erforderliche Bibliotheken einschließen

Erforderliche Bibliotheken einschließen
Erforderliche Bibliotheken einschließen

Die HomeDing-Bibliothek basiert auf einigen gebräuchlichen zusätzlichen Bibliotheken, damit Sensoren und Displays funktionieren.

Wenn Sie die HomeDing-Bibliothek installieren, sehen Sie ein Popup mit diesen erforderlichen Bibliotheken, die automatisch installiert werden können, wie im Bild gezeigt, und es ist einfach, sie alle zu installieren.

Manchmal (aus unbekannten Gründen) schlägt die Installation der Bibliotheken fehl, sodass alle erforderlichen Bibliotheken manuell installiert werden müssen.

Weitere Details zu den benötigten Bibliotheken finden Sie auf der Dokumentationswebsite unter

Dies ist die Liste der aktuell benötigten Bibliotheken:

  • Adafruit NeoPixel
  • LiquidCrystal_PCF8574.h
  • ESP8266 und ESP32 Oled-Treiber für SSD1306-Display
  • Drehcodierer
  • DHT-Sensorbibliothek für ESPx
  • OneWire

Der Luftpartikellasersensor PMS5003 kommuniziert über ein serielles Signal mit 9600 Baud. Dieses Signal wird mithilfe der SoftwareSerial-Bibliothek erfasst, die mit der Installation der ESP8266-Tools geliefert wird. Stellen Sie sicher, dass keine ältere Version als Bibliothek installiert ist.

Schritt 3: Anpassen der Standardbeispielskizze

Anpassen der Standardbeispielskizze
Anpassen der Standardbeispielskizze

Das Standardbeispiel enthält bereits einige der gebräuchlicheren Sensoren als Elemente, sodass nur eine gewisse Konfiguration erforderlich ist.

Dies gilt für den BME680-Sensor, der vom BME680-Element unterstützt wird.

Der PMS5003-Sensor ist weniger verbreitet und muss aktiviert werden, indem das PMS-Element in die Firmware aufgenommen wird. Dies geschieht durch die Definition von #define HOMEDING_INCLUDE_PMS im Elementregisterabschnitt des Sketches

#define HOMEDING_INCLUDE_BME680#define HOMEDING_INCLUDE_PMS

Zur Vereinfachung des Hinzufügens des neuen Geräts zum Netzwerk können Sie die SSID und die Passphrase Ihres Heim-WLANs in der Datei secrets.h neben der Sketch-Datei standard.ino hinzufügen. Sie können das Gerät aber auch ohne diese fest codierte Konfiguration mit dem integrierten WiFi-Manager zum Netzwerk hinzufügen.

Nun ist alles bezüglich der Umsetzung des Sketches erledigt und die Firmware kann kompiliert und hochgeladen werden.

Schritt 4: Laden Sie die Web-Benutzeroberfläche hoch

Das Standardbeispiel enthält einen Datenordner, der alle Dateien für die Web-Benutzeroberfläche enthält.

Bevor Sie diese Dateien hochladen, sollten Sie die Dateien env.json und config.json hinzufügen, die Sie in diesem Artikel finden, da dies die Arbeit erleichtert.

Der Inhalt dieser Dateien macht das IoT-Gerät besonders und verhält sich wie ein Luftqualitätssensor. In dieser Geschichte wird es ausführlich erklärt.

Verwenden Sie das Dienstprogramm zum Hochladen von Dateien ESP8266 und laden Sie alle Dateien hoch. Es erfordert einen Neustart, um die Konfiguration zu aktivieren.

Schritt 5: Fügen Sie den BME680-Sensor hinzu

Fügen Sie den BME680-Sensor hinzu
Fügen Sie den BME680-Sensor hinzu
Fügen Sie den BME680-Sensor hinzu
Fügen Sie den BME680-Sensor hinzu
Fügen Sie den BME680-Sensor hinzu
Fügen Sie den BME680-Sensor hinzu

Der BME680-Sensor kommuniziert mit dem Board über den I2C-Bus.

Da dies möglicherweise mit anderen Erweiterungen wie anderen Sensoren oder Displays geteilt wird, wird dies auf Geräteebene in env.json zusammen mit dem Netzwerknamen des Geräts konfiguriert. Hier ist ein extrahiertes Beispiel von Geräte- und I2C-Einstellungen:

"Gerät": {

"0": { "name": "airding", "description": "Air Quality Sensor", … "i2c-scl": "D2", "i2c-sda": "D1" } }

Auf dem Steckbrett sieht man die Anschlusskabel zum Sensor: 3.3V=rot, GND=schwarz, SCL=gelb, SDA=blau

Die Konfiguration für BME680 kann in config.json verwendet werden:

"bme680": {

"bd": { "Adresse": "0x77", "readtime": "10s" } }

Wir werden die Aktionen später hinzufügen.

Um das Setup zu testen, verwenden Sie einfach einen Browser und öffnen Sie https://airding/board.htm und Sie sehen die tatsächlichen Werte des Sensors angezeigt und sie werden etwa alle 10 Sekunden aktualisiert:

Schritt 6: Fügen Sie den PMS5003-Sensor hinzu

Fügen Sie den PMS5003-Sensor hinzu
Fügen Sie den PMS5003-Sensor hinzu

Ich hatte keinen Sensor mit einem Steckbrett-freundlichen Stecker, also musste ich einen der Stecker am Kabel mit meinem Lötkolben abschneiden, um ihn direkt an der Nodemcu-Platine zu befestigen. Auf den letzten Bildern sieht man es noch.

Die Stromversorgung für diesen Sensor muss dem Vin entnommen werden, der normalerweise über den USB-Bus versorgt wird. GND ist gleich, aber auch neben dem Vin-Pin verfügbar.

Die Daten vom Sensor werden in einem standardmäßigen seriellen 9600-Baud-Format übertragen, daher müssen die rx- und tx-Pins und die Lesezeit konfiguriert werden:

"pm": {

"pm25": { "description": "pm25 Partikelsensor", "pinrx": "D6", "pintx": "D5", "readtime": "10s" } }

Wir werden die Aktionen später hinzufügen.

Um das Setup erneut zu testen, starten Sie einfach das Gerät neu und verwenden Sie einen Browser und öffnen Sie https://airding/board.htm und Sie sehen den tatsächlichen pm35-Wert des Sensors angezeigt und sie werden etwa alle 10 Sekunden aktualisiert, aber dieser Wert ist normalerweise nicht oft ändern.

Sie können höhere Werte erzielen, indem Sie ein Kerzenlicht neben dem Sensor platzieren, da eine Kerze einen Großteil dieser Partikel produziert.

Jetzt können Sie alles in ein schönes Gehäuse stecken, denn alle anderen Konfigurationen und sogar Software-Updates können aus der Ferne durchgeführt werden.

Schritt 7: Hinzufügen einiger Netzwerkfunktionen

Der folgende Konfigurationsauszug in env.json aktiviert

  • Aktualisieren der Firmware über die Luft
  • ermöglicht die Erkennung des Netzwerks mithilfe des SSDP-Netzwerkprotokolls und ruft die aktuelle Uhrzeit von einem ntp-Server ab.

{

… "ota": { "0": { "port": 8266, "passwd": "123", "description": "Auf 'over the air' OTA-Updates hören" } }, "ssdp": { "0 ": { "Hersteller": "Ihr Name" } }, "ntptime": { "0": { "readtime": "36h", "zone": 2 } } }

Sie sollten die Zeitzone an Ihren Standort anpassen. Im Zweifelsfall können Sie die Website https://www.timeanddate.com/ verwenden, um den Offset von UTC/GMT zu erhalten. "2" ist richtig für die deutsche Sommerzeit.

Sie können das ota-Passwort auch anpassen, nachdem Sie die Anweisungen zum Speichermodus in der Dokumentation unter https://homeding.github.io/index.htm#page=/savemo gelesen haben.

Nach einem Neustart finden Sie das Sendegerät im Netzwerk und nach einer Antwort vom ntp-Server ist die lokale Zeit verfügbar.

Schritt 8: Hinzufügen einiger Protokolle

Nur die tatsächlichen Werte reichen möglicherweise nicht aus, sodass einige weitere Elemente verwendet werden können.

Für diese Story werden das Log-Element und das NPTTime-Element verwendet, um die Historie der Sensorwerte in einer Protokolldatei aufzuzeichnen und die Web-UI-Karte für dieses Element kann sie als Diagramm anzeigen.

Die folgende Konfiguration erstellt die 2 Log-Elemente für Gas und Partikel:

{

"log": { "pm": { "description": "Log of pm25", "filename": "/pmlog.txt", "filesize": "10000" }, "aq": { "description": " Protokoll der Gasqualität", "filename": "/aqlog.txt", "filesize": "10000" } } }

Schritt 9: Aktionen

Aktionen
Aktionen

Nun müssen wir die Istwerte über Aktionen an die Log-Elemente übertragen. Die Aktionen verwenden eine URL-Notation, um einen Wert und einen Wert an das Zielelement zu übergeben. Viele Elemente unterstützen das Ausgeben von Aktionen bei bestimmten Ereignissen, die wie das Erfassen eines neuen Sensorwerts auftreten.

Aktionen werden an dem Element konfiguriert, das Aktionen ausgibt 2 Einträge sind erforderlich:

  • Das Ereignis pms/p25 onvalue sendet den aktuellen Wert über eine Wertaktion an das log/pm-Element.
  • Das Ereignis bme680/bd ongas sendet den Istwert über eine Wertaktion an das log/pm-Element.

{

"pms": { "pm25": { … "onvalue": "log/pm?value=$v" } }, "bme680": { "bd": { … "ongas": "log/aq?value= $v" } } }

Jetzt sind alle Elemente konfiguriert.

Schritt 10: Bilder und Konfigurationsdateien

Bilder und Konfigurationsdateien
Bilder und Konfigurationsdateien
Bilder und Konfigurationsdateien
Bilder und Konfigurationsdateien
Bilder und Konfigurationsdateien
Bilder und Konfigurationsdateien

Hier sind einige Bilder meines letzten IoT-Luftqualitätssensors.

Die Konfigurationsdateien zum Download müssen vor dem Hochladen in *.json (keine.txt) umbenannt werden.

Links und Referenzen

  • HomeDing-Quellcode-Repository:
  • Dokumentation:
  • Standardbeispiel:
  • BME680-Element:
  • PMS-Element:
  • Log-Element:
  • NtpTime-Element:

Empfohlen: