Bewässerungssystem für Zimmerpflanzen mit Bodenfeuchtigkeitsüberwachung und MQTT-Kommunikation
11.12.2024 - Engine: Gemini

Bewässerungssystem für Zimmerpflanzen mit Bodenfeuchtigkeitsüberwachung und MQTT-Kommunikation
Materialien:
- Arduino (z.B. Uno oder Nano)
- Bodenfeuchtesensor (z.B. FC-28 oder MH-Z19C)
- Wasserpumpe
- Relaismodul
- MQTT-Broker (z.B. Mosquitto)
- MQTT-Client (z.B. MQTT.js oder Paho.js)
Aufbau:
- Verbinden Sie den Bodenfeuchtesensor mit dem Arduino:
- Analoger Anschluss: VCC an 5V, GND an GND, Signal an A0
- Digitaler Anschluss: VCC an 5V, GND an GND, Signal an D2
- Verbinden Sie die Wasserpumpe mit dem Relaismodul:
- VCC an 5V, GND an GND, Signal an IN
- Verbinden Sie das Relaismodul mit dem Arduino:
- VCC an 5V, GND an GND, IN1 an D3 (oder anderer digitaler Pin)
- Verbinden Sie den Arduino mit dem MQTT-Broker:
- Ethernet-Shield oder Wi-Fi-Modul
- Verbinden Sie den MQTT-Client mit dem MQTT-Broker:
- Installieren Sie die MQTT-Client-Bibliothek (z.B. MQTT.js)
- Erstellen Sie eine Verbindung zum Broker
Funktionalität:
- Bodenfeuchtigkeitsüberwachung:
- Der Bodenfeuchtesensor misst die Feuchtigkeit im Boden.
- Die Messwerte werden über die serielle Schnittstelle an den Arduino übertragen.
- MQTT-Kommunikation:
- Der Arduino veröffentlicht die Bodenfeuchtigkeitswerte über MQTT beim Broker.
- Der MQTT-Client abonniert das Thema, um diese Werte zu empfangen.
- Bewässerung:
- Wenn die Bodenfeuchtigkeit unter einen bestimmten Schwellenwert fällt, sendet der MQTT-Client eine Nachricht an den Arduino, um die Wasserpumpe einzuschalten.
- Der Arduino schaltet das Relaismodul ein und schaltet die Wasserpumpe ein.
- Überwachung und Steuerung:
- Der MQTT-Client kann verwendet werden, um die Bodenfeuchtigkeit in Echtzeit zu überwachen und das Bewässerungssystem aus der Ferne zu steuern.
Codebeispiel:
MQTT-Broker:
# Mosquitto Broker starten
mosquitto -c /etc/mosquitto/mosquitto.conf
Arduino-Code:
#include <MQTT.h>
const char *broker = "mqtt.example.com";
const char *topic = "bodenfeuchtigkeit";
MQTTClient client(broker, 1883);
void setup() {
Serial.begin(9600);
client.connect("arduino-1");
client.subscribe(topic);
}
void loop() {
int feuchtigkeit = analogRead(A0);
client.publish(topic, String(feuchtigkeit));
}
MQTT-Client-Code (JavaScript):
const mqtt = require('mqtt');
const client = mqtt.connect('mqtt://mqtt.example.com');
client.on('connect', () => {
client.subscribe(topic);
});
client.on('message', (topic, message) => {
console.log('Bodenfeuchtigkeit:', message.toString());
});