In diesem Artikel zeige ich Dir meinen Fortschritt an der Entwicklung des Outdoor-Sensors.
Im ersten Schritt der Weiterentwicklung habe ich das gesamte Board ausgetauscht und den Mikroprozessor durch einen ESP8266 ESP-12E ersetzt. Die Anschlussbelegung der Sensoren wurde dabei belassen, sodass die Software zunächst nicht angepasst werden muss. Der neue Sensor für die Bodenfeuchtigkeit liefert die Daten ebenfalls über den analogen Eingang, sodass hier auch keine Anpassungen gemacht würden. Das folgende Bild zeigt den eigentlichen Sensor nach dem Aufbau.
Im nächsten Schritt wurde das Gehäuse vorbereitet und ein Schlitz für den Bodenfeuchtigkeitssensor sowie Bohrungen für die Kabel-Ausleitungen an der Unterseite des Gehäuses angebracht.
Das folgende Foto zeigt das Sensor-Board im Gehäuse. Nach einem Funktionstest wurden dann alle Öffnungen abgedichtet und der Bodenfeuchtigkeitssensor mit Heißkleber fixiert.
Im Abschluss wurde der Sensor dann im Gemüsebeet installiert.
Verwendete Materialien
- ESP8266 ESP-12E
- Leiterplatten für Board (z.B. diese hier: Leiterplatten-Set)
- Temperatur und Luftfeuchtigkeitssensor DHT22
- Analoger kapazitiver Bodenfeuchtesensor
- TP4056 Lademodul Lithium Akku
- Akku 18650 3,7V 2.600 mAh
- Akkuhalter 18650 – Gibt’s auch günstiger auf ebay 🙂
- Solarmodul 6V, 3Watt
- Gehäuse – In der Liste die gewünschte Größe auswählen
Weitere Links zum Projekt
Sketch
#include <ESP8266WiFi.h> #include <PubSubClient.h> #include "DHT.h" // Define NodeMCU D3 pin to as temperature data pin of DHT22 #define DHTPIN D3 #define DHTTYPE DHT22 DHT dht(DHTPIN,DHTTYPE); const int echoPin = A0; //D3 int Feuchtigkeit; // Update these with values suitable for your network. const char* ssid = "WLAN_SSID"; const char* password = "WLAN_PWD"; const char* mqtt_server = "192.168.2.90"; const char* SensorName = "outdoor2"; WiFiClient espClient; PubSubClient client(espClient); long lastMsg = 0; char msg[50]; int value = 0; void setup_wifi() { delay(100); // We start by connecting to a WiFi network Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); if (client.connect(SensorName)) { Serial.println("connected"); client.subscribe("OsoyooCommand"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 6 seconds before retrying delay(6000); } } } void setup() { pinMode(echoPin, INPUT); Serial.begin(9600); setup_wifi(); client.setServer(mqtt_server, 1883); if (!client.connected()) { reconnect(); } client.loop(); String msg=""; pinMode(A0,INPUT); dht.begin(); delay(2000); // read sensor data float h = dht.readHumidity(); float d = dht.readTemperature(); int bodenfeuchte = analogRead(A0); // publish sensor data to mqtt server delay(10); client.publish("outdoor1_Lufttemperatur", String(d).c_str(),true); delay(10); client.publish("outdoor1_Bodenfeuchtigkeit", String(bodenfeuchte).c_str(),true); delay(10); client.publish("outdoor1_Luftfeuchtigkeit", String(h).c_str(),true); delay(100); // Go sleep for 30 minutes ESP.deepSleep( 30 * 60 * 1000000); delay(100); } void loop() { }
Ich hoffe euch gefällt dieser Artikel. Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer ?