IoT – ESP8266 Wetterstation – akustische und optische Meldung bei überschreiten eines Schwellwertes

In diesem Beitrag möchte ich dir zeigen wie du eine akustische und optische Meldung bei Überschreitung eines Schwellwertes an der ESP8266 Wetterstation implementieren kannst.

Die ESP8266 Wetterstation habe ich dir bereits in den Beiträgen

vorgestellt.

benötigte Bauteile

Für den Nachbau benötigst du folgende Bauteile:

Und natürlich benötigst du auch die ESP8266 Wetterstation mit DHT11 Sensor. Diese kannst du zbsp. über aliexpress.com für 6,59€ inkl. Versandkosten erstehen.

ESP8266 Wetterstation - auf Aliexpress.com
ESP8266 Wetterstation – auf Aliexpress.com

Aufbau der Schaltung

Der ESP8266 auf der IoT Wetterstation verfügt über 9 GPIOs für die digitalen und 1 einen für analoge Signale.
Des Weiteren sind die üblichen Pins wie VCC, GND sowie UART (TX, RX) vorhanden.

Wenn du die von mir gezeigte ESP8266 Wetterstation nicht hast, dann kannst du dir diese recht einfach auch mit einem Wemos D1 Mini aufbauen.

Aufbau - ESP8266 Wetterstation mit Wemos D1 Mini
Aufbau – ESP8266 Wetterstation mit Wemos D1 Mini

Anschluss der LEDs und des Piezo Buzzers

Die drei LEDs sowie der Piezo Buzzer werden auf das Breadboard gesteckt und mit den GPIOs verbunden.

Pins - ESP8266 Wetterstation
Pins – ESP8266 Wetterstation

In meinem Beispiel verbinde ich nun:

  • die rote LED mit IO16,
  • die gelbe LED mit IO12,
  • die grüne LED mit IO13, sowie
  • den Piezo Buzzer mit IO15

Da die I2C Kommunikation über GPIO14 erfolgt kann dieser Pin nicht genutzt werden da sonst das Display nicht “funktionierten” würde!

Das kleine rote Breadboardkabel ist kein VCC Anschluss sondern verdeutlicht in dem Bild nur die Kabelführung zum GPIO Pin!

Programmierung der ESP8266 Wetterstation mit Schwellwert

Wie man den angeschlossenen DHT11 Sensor ausliest habe ich im oben verlinken Beitrag bereits gezeigt jedoch möchte ich in diesem Beitrag ESP Easy nutzen.

Was ist ESP Easy?

ESP Easy ist eine Firmware mit welcher man nicht programmiert sondern konfiguriert d.h. in der Regel entfällt eine aufwändige Programmierung des Microcontrollers.

ESP Easy - Einstellungen für die I2C Pins
ESP Easy – Einstellungen für die I2C Pins

Die ESP8266 habe ich bereits für ESP Easy geflasht und kann somit per Browser auf diesen zugreifen.

Einrichten der I2C Konfiguration sowie des DHT11 Sensors und des OLED Displays

I2C Konfiguration

Bevor wir mit der Konfiguration (in diesem Fall ein Skript) der LEDs und des Piezo Buzzers beginnen können, müssen wir die I2C Pins einstellen. 

Das komplette Beispiel wie du die ESP8266 Wetterstation mit ESP Easy konfigurierst und betreibst findest du unter ESP8266 Wetterstation mit ESP Easy.

ESP Easy - Einstellungen für die I2C Pins
ESP Easy – Einstellungen für die I2C Pins

DHT11 Sensor einrichten

Des Weiteren richten wir den DHT11 Sensor ein.

ESP Easy - Einstellungen für den DHT11 Sensor
ESP Easy – Einstellungen für den DHT11 Sensor

Daten auf dem OLED Display anzeigen

Das verbaute OLED Display wird als “OLED SSD1306/SH1106 Framed” eingerichtet. ACHTUNG es gibt auch einen Eintrag nur “Display – OLED SSD1306” welcher etwas weniger Möglichenkeit zur Einstellung bietet.

Folgende Werte müssen angepasst werden:

  • Name “Display”
  • Enabled (Haken gesetzt)
  • Rotation: “Rotated”
  • Lines per Frame: “2”
  • Scroll: “Instant”
  • Header: “Date”
  • Header (alternate): “Time”
  • Line1: “Temp.: [DHT11#Temp]°C”
  • Line2: “Hum.: [DHT11#Hum]%”
  • Interval: “6”

Einstellen des Schwellwertes in ESP Easy

Anzeigen des Reiters “Rules”

Den Schwellwert konfigurieren bzw. Skripten wir über eine Rule dazu müssen wir zunächst diesen Reiter anzeigen lassen.

aktivieren des Reiters "Rules" in ESPeasy
aktivieren des Reiters “Rules” in ESPeasy

Wenn dieser Reiter angezeigt wir erzeugen wir nun erstmal eine neue Rule damit wir dort den Temperaturwert auslesen und auf diesen reagieren können.

Programm erzeugen

Wenn der Reiter angezeigt wird dann können wir dort unser Skript erzeugen.

Zunächst müssen wir einen Timer beim starten des ESP8266 erzeugen und starten.

On System#Boot do 
   //setze den Timer 1 auf 10 Sekunden 
   timerSet,1,10 
endon

Im nächsten Schritt müssen wir nun darauf reagieren wenn der Timer “abgelaufen” ist.

On Rules#Timer=1 do

Nun können wir unseren Schwellwert skripten, in meinem Fall prüfe ich die Temperatur des DHT11 Sensors.

Wenn der Sensor eine Temperatur kleiner 10°C liefert dann soll

  • die rote LED (GPIO16) aktiviert,
  • die gelbe LED (GPIO12) deaktiviert,
  • die grüne LED (GPIO13) deaktiviert

werden.

Das aktivieren einer LED wird mit “gpio,<PIN>,<STATUS>” gemacht. In meinem ersten Fall wird die LED am GPIO 16 aktiviert (aktiviert = 1, deaktiviert = 0).

if [DHT11#Temp] < 10 
   gpio,16,1 
   gpio,12,0 
   gpio,13,0 
else

Wenn die Temperatur jedoch größer als 10°C ist und kleiner gleich 20°C dann soll

  • die rote LED (GPIO16) deaktiviert,
  • die gelbe LED (GPIO12) aktiviert,
  • die grüne LED (GPIO13) deaktiviert

werden.

if [DHT11#Temp] >= 10 and [DHT11#Temp] <= 20
   gpio,16,0
   gpio,12,1
   gpio,13,0
else

Wenn die Temperatur jedoch größer als 20°C ist dann soll

  • die rote LED (GPIO16) deaktiviert,
  • die gelbe LED (GPIO12) deaktiviert,
  • die grüne LED (GPIO13) aktiviert

werden.

if [DHT11#Temp] > 20
   gpio,16,0
   gpio,12,0
   gpio,13,1
endif

Hier nun das gesamte Skript:

//Wenn das System gestartet ist, dann...
On System#Boot do
   //setze den Timer 1 auf 10 Sekunden
   timerSet,1,10
 endon
//Wenn der Timer 1 abgelaufen ist, dann...
On Rules#Timer=1 do
   if [DHT11#Temp] < 10
     gpio,16,1
     gpio,12,0
     gpio,13,0
   else
     if [DHT11#Temp] >= 10 and [DHT11#Temp] <= 20
        gpio,16,0
        gpio,12,1
        gpio,13,0
     else
        if [DHT11#Temp] > 20
           gpio,16,0
           gpio,12,0
           gpio,13,1
        endif 
     endif
   endif
     
   //setze den Timer 1 auf 10 Sekunden
   timerSet,1,5
 endon

implementieren eines Piezo Buzzers

Nachdem nun die LEDs konfiguriert sind möchten wir noch eine akustische Meldung mit einem Piezo Buzzer ausgeben.

Wie du einen Piezo Buzzer mit ESP Easy konfigurierst wird dir auf der offiziellen Wiki-Seite von ESP Easy https://www.letscontrolit.com/wiki/index.php/Buzzer_(RTTTL) ausführlich erläutert.

Es gibt genau zwei Möglichkeiten einen Ton über ESP Easy auszugeben, einmal mit “tone” und zum anderen mit “rttl”. Beide Funktionen stehen mit dem Update / Build vom 14.01.2021 zuverlässig zur Verfügung. D.h. solltest du deinen ESPx Microcontroller mit einem älteren Build geflasht haben, so solltest du diesen vorher aktualisieren.

Du kannst Töne bzw. Tonfolgen über ESP Easy auf den GPIOs 12 bis 16 ausgegeben!

Ich nutze hier eine kleine Tonfolge (aus dem ESP Easy Wiki Beitrag)

rtttl,15:d=10,o=6,b=180,c,e,g

Diese Tonfolge (c,e und g) wird am digitalen GPIO Pin 15 ausgegeben. 

das fertige Skript

//Wenn das System gestartet ist, dann...
On System#Boot do
   //setze den Timer 1 auf 10 Sekunden
   timerSet,1,10
 endon
//Wenn der Timer 1 abgelaufen ist, dann...
On Rules#Timer=1 do
   if [DHT11#Temp] < 10
     gpio,16,1
     gpio,12,0
     gpio,13,0
     rtttl,15:d=10,o=6,b=180,c,e,g
   else
     if [DHT11#Temp] >= 10 and [DHT11#Temp] <= 20
        gpio,16,0
        gpio,12,1
        gpio,13,0
     else
        if [DHT11#Temp] > 20
           gpio,16,0
           gpio,12,0
           gpio,13,1
        endif 
     endif
   endif
     
   //setze den Timer 1 auf 10 Sekunden
   timerSet,1,5
 endon

Video

 

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.