Switch branches/tags
Find file History
Latest commit 73e7d77 Aug 9, 2018
Permalink
..
Failed to load latest commit information.
lib directory moved up to sensors-software May 23, 2017
.gitignore Code formatting + additional gitignore entries for platformio + Updat… Feb 5, 2018
DHT.cpp changed to local (and modified) version of DHT lib Jul 22, 2018
DHT.h changed to local (and modified) version of DHT lib Jul 22, 2018
LICENSE.md license added Nov 13, 2017
Readme.md DHT lib switched back to 1.1.1 May 28, 2018
Versions.md Beta to Master Aug 9, 2018
airrohr-firmware.ino Beta to Master Aug 9, 2018
astyle.rc added astyle.rc Jul 2, 2017
ext_def.h wrong comparison in reading influx config Jul 24, 2018
html-content.h wrong comparison in reading influx config Jul 24, 2018
intl_bg.h handling of special chars in config Jul 10, 2018
intl_cz.h handling of special chars in config Jul 10, 2018
intl_de.h handling of special chars in config Jul 10, 2018
intl_en.h handling of special chars in config Jul 10, 2018
intl_es.h handling of special chars in config Jul 10, 2018
intl_fr.h handling of special chars in config Jul 10, 2018
intl_it.h handling of special chars in config Jul 10, 2018
intl_lu.h handling of special chars in config Jul 10, 2018
intl_nl.h handling of special chars in config Jul 10, 2018
intl_pl.h handling of special chars in config Jul 10, 2018
intl_pt.h handling of special chars in config Jul 10, 2018
intl_ru.h handling of special chars in config Jul 10, 2018
intl_se.h handling of special chars in config Jul 10, 2018
intl_template.h handling of special chars in config Jul 10, 2018
platformio.ini Update library versions in platformio.ini to match Readme.md file, wi… Jun 9, 2018
platformio_script.py directory moved up to sensors-software May 23, 2017
ppd42ns-wificonfig-ppd-sds-dht.spiffs.bin directory moved up to sensors-software May 23, 2017

Readme.md

Version für Sensoren PPD42NS, SDS011, DHT22, BMP180 und NEO-6M.

Features:

  • gleichzeitiger Betrieb mehrerer Sensoren
  • Konfiguration über WLAN (Sensor als Access Point) möglich
  • Unterstützung von OLED-Displays mit SSD1306
  • Auswahl der API(s), an welche die Daten gesendet werden, inklusive der Möglichkeit, die Daten als CSV über USB auszugeben
  • nutzbar mit ESP8266 (NodeMCU und kompatible Boards)

ToDo's:

  • Optimierungen (eigentlich immer)
  • neue Sensoren

Dateien in diesem Verzeichnis: airrohr-firmware.ino - Sourcecode der eigentlichen Firmware ext_dev.h - grundsätzliche Konfiguration der Parameter (WLAN, Sensoren, APIs) html-content.h - allgemeine HTML-Sourcen und Bilder für HTML- und Text-Ausgaben intl_xx.h - Dateien mit übersetzten Texten für die Internationalisierung, 'xx' ist der 2 letter ISO code der 'Sprache' intl_template.h - Vorlage für Übersetzungen astyle.rc - Formatierungsvorlage für Astyle ppd42ns-wificonfig-ppd-sds-dht.spiffs.bin - Binary mit leerem Dateisystem, zum Löschen der Konfiguration, siehe Anleitung im Wiki

WLAN Konfiguration

siehe auch Wiki-Seite auf Github Konfiguration der Sensoren

Wenn das vorgegebene WLAN nach 20 Sekunden nicht erreichbar ist, wird ein Access-Point eingerichtet, der über "Feinstaubsensor-[Sensor-ID]" erreichbar ist. Nach dem Verbinden zu diesem Accesspoint sollten alle Anfragen auf die Konfigurationsseite umgeleitet werden. Direkte Adresse der Seite ist http://192.168.4.1/ .

Konfigurierbar sind:

  • WLAN-Name und Passwort
  • Auszulesende Sensoren
  • Ziele für den Versand der Daten

Nach 10 Minuten sollte der Access-Point wieder deaktiviert werden (funktioniert zur Zeit noch nicht stabil).

Speichern als CSV

Die Daten können als CSV via USB ausgegeben werden. Dafür sollte sowohl in ext_def.h als auch in der WLAN-Konfiguration Debug auf 0 gesetzt werden, damit die ausgegebenen Daten nur noch die Sensordaten sind. Beim Neustart des ESP8266 erscheinen dann nur noch ein paar wenige Zeichen, die den Startzustand darstellen.

Wiring

Benötigte Software (in Klammern getestete Version und die Art der Lizenz):

Einstellungen Arduino IDE

  • Board: NodeMCU 1.0 (ESP-12E Module)
  • CPU Frequency: 80MHz
  • Flash Size: 4M (3M SPIFFS) Ab "ESP für Arduino 2.4":
  • Debug Port: Disabled
  • Debug Level: NoAssert-NDEBUG
  • lwIP Variant: v1.4 Higher Bandwidth (Prebuild)
  • Erase Flash: Only Sketch

Verwendete Bibliotheken (für ESP8266):

In Arduino enthalten:

  • Wire (GNU Lesser General Public License v2.1)

In ESP8266 für Arduino IDE enthalten:

  • FS (GNU Lesser Public License >=2.1)
  • ESP8266WiFi (GNU Lesser Public License >=2.1)
  • ESP8266WebServer (GNU Lesser Public License >=2.1)
  • ESP8266httpUpdate (1.1.0) (GNU Lesser Public License >=2.1)
  • DNSServer (GNU Lesser Public License >=2.1)

Installierbar über Arduino IDE (Menü Sketch -> Bibliothek einbinden -> Bibliotheken verwalten, in Klammern die getestete Version und die Art der Lizenz):

Manuell zu installieren:

  • TinyGPS++ (0.95) (GNU Lesser Public License >=2.1)

Bis Version NRZ-2016-15:

  • DHT (DHT.cpp und DHT.h downloaden und in das Softwareverzeichnis kopieren)

Ich hoffe, alle Bibliotheken erwischt zu haben. Falls beim Kompilieren eine Bibliothek fehlt, bitte als Issue melden. Ich trage dann die Infos nach.

ACHTUNG: Die DHT sensor library hat ab Version 1.2 ein Problem auf den ESP8266. Daher unbedingt max. Version 1.1.1 benutzen

Anschluss der Sensoren

Beim Anschluss von Sensoren mit 5V bitte die Board-Version beachten. NodeMCU v3 liefert 5V an VU, Version 2 fehlt dieser Anschluss und VIN kann dafür genutzt werden.

SDS011

  • Pin 1 (TX) -> Pin D1 (GPIO5)
  • Pin 2 (RX) -> Pin D2 (GPIO4)
  • Pin 3 (GND) -> GND
  • Pin 4 (2.5m) -> unused
  • Pin 5 (5V) -> VU
  • Pin 6 (1m) -> unused

PPD42NS

  • Pin 1 => GND
  • Pin 2 => Pin D5 (GPIO14)
  • Pin 3 => VU
  • Pin 4 => Pin D6 (GPIO12)
  • Pin 5 => unused

DHT22

  • Pin 1 => 3V3
  • Pin 2 => Pin D7 (GPIO13)
  • Pin 3 => unused
  • Pin 4 => GND

DS18B20 (OneWire interface)

Please check your version (pinout) at [https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf] Uses the same PIN D7 as DHT22, so DHT22 OR DS18B20 can be used.

  • GND -> Pin GND
  • DQ -> Pin D7 (GPIO 13)
  • VCC -> Pin 3V3 or Pin VU

PMS1003 to PMS6003

Pinout: 8 7 6 5 4 3 2 1

  • Pin 1 (VCC) -> VU
  • Pin 2 (GND) -> GND
  • Pin 3 (SET) -> unused
  • Pin 4 (RX) -> Pin D2 (GPIO4)
  • Pin 5 (TX) -> Pin D1 (GPIO5)
  • Pin 6 (RESET) -> unused
  • Pin 7 (NC) -> unused
  • Pin 8 (NC) -> unused

PMS7003

Pinout PMS7003: 9 7 5 3 1 10 8 6 4 2

  • Pin 1/2 (VCC) -> VU
  • Pin 3/4 (GND) -> GND
  • Pin 5 (RESET) -> GND
  • Pin 6 (NC) -> unused
  • Pin 7 (RX) -> Pin D2 (GPIO4)
  • Pin 8 (NC) -> unused
  • Pin 9 (TX) -> Pin D1 (GPIO5)
  • Pin 10 (SET) -> unused

Honeywell PM sensor

Pinout: 8 7 6 5 4 3 2 1

  • Pin 1 (3.3V) -> unused
  • Pin 2 (5V) -> VU
  • Pin 3 (NC) -> unused
  • Pin 4 (NC) -> unused
  • Pin 5 TEST) -> unused
  • Pin 6 (TX) -> Pin D1 (GPIO5)
  • Pin 7 (RX) -> Pin D2 (GPIO4)
  • Pin 8 (GND) -> GND

BMP180 / BMP280 / BME280 (I2C)

  • VCC -> Pin 3V3
  • GND -> Pin GND
  • SCL -> Pin D4 (GPIO2)
  • SDA -> Pin D3 (GPIO0)

HTU21D (I2C)

  • VCC -> Pin 3V3
  • GND -> Pin GND
  • SCL -> Pin D4 (GPIO2)
  • SDA -> Pin D3 (GPIO0)

LCD1602 (I2C, 5V - check your version)

  • VCC -> Pin VU
  • GND -> Pin GND
  • SCL -> Pin D4 (GPIO2)
  • SDA -> Pin D3 (GPIO0)

OLED displays with SSD1306 (I2C, 128x64 pixels)

  • VCC -> Pin VU
  • GND -> Pin GND
  • SCL -> Pin D4 (GPIO2)
  • SDA -> Pin D3 (GPIO0)

GPS NEO 6M (seriell) ACHTUNG: Läuft sehr instabil

Strom und Masse vom Board. (GND und üblicherweise 3,3v, vorher prüfen/Anleitung, Beschreibung GPS!) TX (senden) und RX (empfangen) werden gekreuzt verkabelt!

  • TX von Neo -> Pin D5 (RX)
  • RX von Neo -> Pin D6 (TX)

Luftdaten.info API "Pins"

Bei Aktivierung von mehreren Sensoren, z.B. "gleichzeitig" DHT22 und PPD42NS, benötigt die API zur Zuordnung der Sensorwerte die Angabe eines Pins, an dem der Sensor (virtuell) angeschlossen ist. Diese Firmware definiert die Pins für die verschiedenenen Sensoren wie folgt:

  • PPD42NS => Pin 5
  • DHT22 => Pin 7
  • SDS011 => Pin 1
  • BMP180 => Pin 3
  • BMP280 => Pin 3
  • BME280 => Pin 11
  • GPS(Neo-6M) => Pin 9