Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Arduino-Umgebung für ESP8266 vorbereiten
- Schritt 2: Erforderliche Bibliotheken einschließen
- Schritt 3: Anpassen der Standardbeispielskizze
- Schritt 4: Laden Sie die Web-Benutzeroberfläche hoch
- Schritt 5: Fügen Sie den BME680-Sensor hinzu
- Schritt 6: Fügen Sie den PMS5003-Sensor hinzu
- Schritt 7: Hinzufügen einiger Netzwerkfunktionen
- Schritt 8: Hinzufügen einiger Protokolle
- Schritt 9: Aktionen
- Schritt 10: Bilder und Konfigurationsdateien
Video: Erstellen Sie einen internen IoT-Luftqualitätssensor ohne Cloud erforderlich - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
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
- Installieren Sie die neueste Version der Arduino IDE (derzeit Version 1.8.2).
- Verwenden Sie den Board Manager, um die esp8266-Unterstützung zu installieren. Eine detaillierte Anleitung finden Sie hier:
- 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
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
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
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
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
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
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:
So verbinden Sie einen ESP32 mit der IoT-Cloud: 8 Schritte
So verbinden Sie einen ESP32 mit der IoT-Cloud: Diese Anleitung enthält eine Reihe von Artikeln zum Anschließen von Hardware wie Arduino und ESP8266 an die Cloud. Ich werde Ihnen erklären, wie Sie Ihren ESP32-Chip mit dem AskSensors IoT-Dienst mit der Cloud verbinden. Warum ESP32?Nach dem großen Erfolg
So suchen Sie mit Microsoft Excel-Makros nach Dingen in Google Chrome (KEINE CODIERUNGSKENNTNISSE ERFORDERLICH): 10 Schritte
So suchen Sie in Google Chrome mit Microsoft Excel-Makros (keine Codierungskenntnisse erforderlich): Wussten Sie, dass Sie Ihrer Excel-Tabelle ganz einfach eine Suchfunktion hinzufügen können?!Ich kann Ihnen in wenigen einfachen Schritten zeigen, wie es geht! Dazu benötigen Sie Folgendes: Einen Computer - (PRÜFEN!) Microsoft Excel Google Chrome auf Ihnen installiert
So erstellen Sie einen Tiefpassfilter für einen Subwoofer mit dem NE5532-IC - DIY (ELECTROINDIA): 4 Schritte
So erstellen Sie einen Tiefpassfilter für einen Subwoofer mit dem NE5532-IC | DIY (ELECTROINDIA): In diesem Projekt zeige ich Ihnen, wie Sie einen Tiefpassfilter für Subwoofer herstellen können. Los geht's
So erhalten Sie Musik von fast jeder (Haha) Website (solange Sie sie hören können, können Sie sie bekommen Okay, wenn sie in Flash eingebettet ist, können Sie es möglicherweise nicht) BEARBEITET!!!!! Hinzugefügte Informationen: 4 Schritte
So erhalten Sie Musik von fast jeder (Haha) Website (solange Sie sie hören können, können Sie sie bekommen … Okay, wenn sie in Flash eingebettet ist, können Sie es möglicherweise nicht) BEARBEITET!!!!! Zusätzliche Informationen: Wenn Sie jemals auf eine Website gehen und ein Lied abspielen, das Sie mögen und es wollen, dann ist hier das anweisbare für Sie, nicht meine Schuld, wenn Sie etwas durcheinander bringen (nur so wird es passieren, wenn Sie ohne Grund anfangen, Dinge zu löschen) ) Ich konnte Musik für
So erstellen Sie einen Großelternkalender & Scrapbook (auch wenn Sie nicht wissen, wie man ein Scrapbook erstellt): 8 Schritte (mit Bildern)
So erstellen Sie einen Großelternkalender & Sammelalbum (auch wenn Sie nicht wissen, wie man Sammelalbum erstellt): Dies ist ein sehr wirtschaftliches (und sehr geschätztes!) Weihnachtsgeschenk für Großeltern. Ich habe dieses Jahr 5 Kalender für weniger als 7 US-Dollar pro Stück gemacht. Materialien: 12 tolle Fotos von Ihrem Kind, Kindern, Nichten, Neffen, Hunden, Katzen oder anderen Verwandten 12 verschiedene Stücke