Die Schlaue Pflanze
Wenn du hier angekommen bist, hast du den MCP3008, den DHT11, den Photowiderstand und den Feuchtigkeitssensor schon behandelt. Alle einzelnen Komponenten führen wir jetzt zusammen. Das Ziel ist es, dass wir nachher mit allen Sensoren die Daten von unserer Pflanze lesen können. Zur Ausgabe haben wir hier noch eine blaue LED angeschlossen. Diese leuchtet immer dann, wenn die Pflanze gegossen werden muss. Damit das Programm regelmäßig die Daten liest, richten wir am Ende dafür noch ein Cronjob an. Als aller erstes müssen wir alle Sensoren anschließen. Am besten machst du das Schritt für Schritt, damit am Ende alles funktioniert.
Anschlüsse Pi | Anschlüsse Sensoren |
---|---|
3,3V | Rote Leisten auf dem Breadboard |
GND | Blaue Leisten auf dem Breadboard |
3,3V | 1. Pin DHT11 |
GPIO4 | 2. Pin DHT11 |
Widerstand 4,7kOhm | Zwischen 1. Pin DHt und 2. Pin DHT |
GND | 3. Pin DHT11 |
GND | DGND |
GPIO 8N | CS/SHD |
GPIO 10 | D_IN |
GPIO 9 | D_OUT |
GPIO 11 | CLK |
GND | AGND |
3,3V | V_REF |
3,3V | VDD |
3,3V + 10KΩ Widerstand + Seite 1 Photowiderstand | |
CH0 + Seite 1 Photowiderstand | |
GND | Seite 2 Photowiderstand |
3,3V | VCC Feuchtigkeitssensor |
Analoges Singal -> CH1 | |
GND | GND Feuchtigkeitssensor |
GPIO21 | langes Bein Blaue LED |
GND | kurzes Bein Blaue LED |
schlaue_pflanze.py
import RPi.GPIO as gpio
import dht11
import spidev
import time
import os
# LED
led = 21
gpio.setmode(gpio.BCM)
gpio.setup(led, gpio.OUT)
# DHT11
sensor = dht11.DHT11(pin=4)
# SPI Verbindung herstellen
spi = spidev.SpiDev()
spi.open(0,0)
spi.max_speed_hz=1000000
# Liest Daten vom MCP3008
def analogEingang(channel):
adc = spi.xfer2([1,(8+channel)<<4,0])
data = ((adc[1]&3) << 8) + adc[2]
return data
def pflanze_messen():
helligkeit = analogEingang(0)
bodenFeuchtigkeit = analogEingang(1)
if bodenFeuchtigkeit > 650:
print("Du solltest deine Pflanze Waessern")
gpio.output(led, gpio.HIGH)
else:
gpio.output(led, gpio.LOW)
print("===========================")
print("Feuchtigkeit: "+str(bodenFeuchtigkeit))
print("Helligkeit: "+str(helligkeit))
result = sensor.read()
if result.is_valid()
print("Temperatur: "+str(result.temperature))
print("Feuchtigkeit: "+str(result.humidity)+"%")
time.sleep(1.2)
pflanze_messen()
Wenn du das Programm jetzt ausführst, sollte bei einer Pflanze, die noch gegossen werden muss, die Blaue LED aufleuchten. Wenn nichts aufleuchtet, ist alles gut. In Zeile 30 kannst du diesen Grenzwert auch anpassen. Denn dieser ist von Pflanze zu Pflanze unterschiedlich.
Damit wir das Programm nicht immer mit der Hand ausführen müssen, richten wir jetzt noch einen Cronjob ein. Vereinfacht gesagt können wir mit einem Cronjob bestimmte Programme zu bestimmten Zeiten automatisch ausführen lassen.
$ crontab -e
@hourly \home\pi\schlaue_pflanze.py