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.

Die Schlaue Pflanze am Raspberry Pi angeschlossen
Anschlüsse PiAnschlüsse Sensoren
3,3VRote Leisten auf dem Breadboard
GNDBlaue Leisten auf dem Breadboard
3,3V1. Pin DHT11
GPIO42. Pin DHT11
Widerstand 4,7kOhmZwischen 1. Pin DHt und 2. Pin DHT
GND3. Pin DHT11
GNDDGND
GPIO 8NCS/SHD
GPIO 10D_IN
GPIO 9D_OUT
GPIO 11CLK
GNDAGND
3,3VV_REF
3,3VVDD
3,3V + 10KΩ Widerstand + Seite 1 Photowiderstand
CH0 + Seite 1 Photowiderstand
GNDSeite 2 Photowiderstand
3,3VVCC Feuchtigkeitssensor
Analoges Singal -> CH1
GNDGND Feuchtigkeitssensor
GPIO21langes Bein Blaue LED
GNDkurzes 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