Benutzer-Werkzeuge

Webseiten-Werkzeuge


elektronik:nodemcu_esp8266_bme280_relay_steuerung

ESP8266 - Anmerkungen Anschluss BME280 unter LUA um eine Relay zu steuern

Aufgabe:

  • Temperatur und Luftfeuchtigkeit in einem Stall überwachen
  • Daten in einer Zeitreihen Datenbank InFlux speichern ( ⇒ Odroid HC1 Monitoring Appliance mit InfluxDB und Grafana
  • - Fällt die Temperatur unter 5Grad, Heizung über Stromstoß Schalter aktivieren, steigt die Temperatur über 6Grad wieder deaktivieren
    • Einsatz des Stromstoß Schalter (Eltako 2078046 ELTA Stromstossschalter S12-100-12V ) , damit kein Dauerstrom über längere Zeit über einfache „billig“ Arduino Relays keine Schaden verursachen können

Basis Schritte siehe ⇒ Erste Schritte mit dem ESP8266 / NodeMCU Board mit Lua - Temperatur und Luftfeuchtigkeit messen

Dieser Sensor scheint nur bedingt mit Lua zu funkionieren, mal geht es mal nicht, verschiede Libs, ungenaue Dokumentation, für diese Sensor ist es wohl besser es dann über C zu lösen da die Fehlerursache nicht so einfach zu debuggen ist.


1. Image erstellen

Build Basis Image über https://nodemcu-build.com/

Gewählte Module:

  • bme280 bme280_math file gpio http i2c net node rtcmem rtctime sntp tmr uart wifi.
  • Keine besonderen Filesystem einstellungen

Sensor und Relay verdrahten

NodeMCU Board ⇒ Relay:

  • GND ⇒ GND
  • Vin ⇒ Vcc
  • 3,3v ⇒ IN

NodeMCU Board ⇒ BMP280:

  • 3,3v ⇒ Vin
  • GND ⇒ GND
  • D4 ⇒ SLC
  • D3 ⇒ SDA

Codieren

Module:bme280,bme280_math,file,gpio,http,i2c,net,node,rtcmem,rtctime,sntp,tmr,uart,wifi

Relay

Relay test weise schalten:

-- Steuerleitung an D1
pin=1
 
---
gpio.mode(pin, gpio.OUTPUT)
 
-- 
gpio.write(pin, gpio.LOW)
 
--status auslesen
stat=gpio.read(pin)
print("Relay Status : " .. stat)

BME280

https://nodemcu.readthedocs.io/en/release/modules/bme280/

Aus der Doku:

  • T temperature in celsius as an integer multiplied with 100
  • P air pressure in hectopascals multiplied by 1000
  • H relative humidity in percent multiplied by 1000
  • QNH air pressure in hectopascals multiplied by 1000 converted to sea level
alt=261-- altitude of the measurement place
 
sda, scl = 3, 4
i2c.setup(0, sda, scl, i2c.SLOW)
 
--
 
bme280_math.setup(0)
 
T, P, H, QNH = bme280.read(alt)
 
--
local Tsgn = (T < 0 and -1 or 1); T = Tsgn*T
print("Roh daten Temperatur   : " .. T)
print(string.format("Temperatur Gerechnet   : %s%d.%02d", Tsgn<0 and "-" or "", T/100, T%100))
 
--
print("Roh daten QFE          : " .. P)
print(string.format("QFE          :  %d.%03d", P/1000, P%1000))
--
print("Roh daten humidity      : " .. H)
print(string.format("humidity      :  %d.%03d%%", H/1000, H%1000))
 
--
print("Roh daten QNH          : " .. QNH)
print(string.format("QNH          :  %d.%03d", QNH/1000, QNH%1000))
--
--
Roh daten Temperatur   : 2367
Temperatur Gerechnet   : 23.67
Roh daten QFE          : 986127
QFE                    : 986.127
Roh daten humidity     : 55320
humidity               : 55.320%
Roh daten QNH          : 1019520
QNH                    : 1019.520

!Achtung in der Doku finden sich zwei Module zum BME280, darauf achten das Beispiel aus obigen Link verwenden!!

Wie finde ich meine aktuelle Höhe über eine Karte, siehe ⇒ https://earth.google.com/web/ aufrufen, den Ort suchen und rechts unten in der Ecke die Höhe ablesen.

Beim nächsten Test hat es nicht mehr funktioniert! Hier scheint etwas mit neu/alt BME280 total schief zu laufen, dies ist eine der negativen Seiten von dem Kapsel von komplexen Dinge in einfache Skriptsprachen, wenn es nicht auf anhieb funktioniert sucht man so lange rum das man es auch hätte in C umsetzen können ..

Umsetzung

Da nun der Sensor und das Relay angesprochen werden können, kann die eigentlich Umsetzung erfolgen


Quellen

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
elektronik/nodemcu_esp8266_bme280_relay_steuerung.txt · Zuletzt geändert: 2021/07/16 15:07 von gpipperr