Python 3 Sensor abschalten

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hi,

    ich bin Neueinsteiger in Sachen Python3 und den Raspberry`s.

    Ich sitze an einem Programm für mein "Erstlingswerk" bei dem ziemlich einfach wie ach schon so oft eine LED anzeigen soll wenn eine Pflanze gegossen werden muß. Dies soll als Einstieg für ein größeres Projekt dienen.

    Ich habe mal die Python Datei mal als Anhang hinzugefügt damit ihr euch das bitte mal ansehen könnt.

    Das ganze funktioniert super, nur möchte ich den Sensor (eingeschaltet über GPIO Pin 4) nach dem Messen gerne ausschalten!

    Füge ich nun "gpio.output(sensor, gpio.OUT)" im Programm ein, funktioniert die LED nicht mehr (habe mehrere Stellen Versucht),
    lasse ich den Befehl weg, zeigt die LED an wenn es zu trocken ist. :s

    Wäre super wenn mir jemand helfen kann, damit der Sensor nach dem Messen abschaltet und die LED den jeweiligen Zustand anzeigt.

    MfG Patrick

  • Moin pi-pat,

    erstmal: Herzlich Willkommen im Forum!

    Du hast in deinem Code

    Code
    gpio.output(led, gpio.OUT)

    stehen.
    Sollte es nicht

    Code
    gpio.output(led, gpio.LOW)

    heissen?

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Ich habe das jetzt geändert, Danke.

    An der ganzen Funktion hat sich allerdings nichts geändert.


    import RPi.GPIO as gpio
    import spidev
    import time


    # LED + Sensor
    led = 21
    sensor = 4
    gpio.setmode(gpio.BCM)
    gpio.setup(led, gpio.LOW)
    gpio.setup(sensor, gpio.LOW)
    gpio.output(sensor, gpio.HIGH)


    # SPI Verbindung herstellen
    spi = spidev.SpiDev()
    spi.open(0,0)

    # Liest Daten vom MCP3008
    def analogEingang(channel):
    adc = spi.xfer2([1,(8+channel)<<4,0])
    data = ((adc[1]&3) << 8) + adc[2]
    return data

    #analysiert Daten und schaltet LED

    def pflanze_messen():
    bodenFeuchtigkeit = analogEingang(0)

    if bodenFeuchtigkeit > 650:
    gpio.output(led, gpio.HIGH)
    else:
    gpio.output(led, gpio.LOW)

    time.sleep(1)


    pflanze_messen()


    Ich hätte gerne den folgenden Ablauf:

    Sensor mit GPIO4 einschalten
    ca 20 Sekunden warten
    die Daten vom MCP3008 auslesen und auswerten (LED an oder aus je nach Bodenfeuchtigkeit)
    Sensor mit GPIO4 ausschalten, LED soll aber weiterhin über die Feuchtigkeit informieren

    Es geht darum, wenn der Sensor dauerhaft an bleibt findet ja eine Elektrolyse statt.
    Dies löst allmählich den Metallanteil des Sensors auf und gut für die Pflanze ist es ja auch nicht.

    Ich habe jetzt schon versucht im Netz irgendetwas zu finden und auch selber viel probiert, den Sensor an sich einzuschalten und nach einer gewissen Zeit abzuschalten ist ja nicht schwer, nur den MCP3008 da mit einzubringen wird mit meinem geringen Wissenstand zu Python leider nichts.

  • Bitte benutz die Code Tags.

    Zu deinem Problem: so weit ich weiß ist der mpc3008 ja nur ein AD-Wandler. Da kann man nichts abschalten. Wie sieht denn deine Sonde aus?


  • Es geht darum, wenn der Sensor dauerhaft an bleibt findet ja eine Elektrolyse statt.
    Dies löst allmählich den Metallanteil des Sensors auf und gut für die Pflanze ist es ja auch nicht.

    Wolfram-, Gold- oder Titan-Elektroden sollten das Problem der elektrolytischen Zersetzung stark reduzieren.

  • Moin pi-pat,
    nun hast du noch mehr falsch gemacht.
    Ich nehme mal dein ursprüngliches Script.

    Nun hast du irgendwo einen Befehl eingebaut, der den Pin sensor ausschaltet. Wie, meinst du, sollte denn die Led an gehen.
    Der Messwert wird doch nie erreicht.
    Mein Vorschlag. Wenn du nur eine periodische Messung machen willst. Beende die if-Schleife und starte sie bei Bedarf neu.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Hi, Danke für eure Hilfe!
    Ich habe jetzt noch etwas an den Python Scripten gebastelt und meinen Sensor dazu gebracht wie gewünscht die gewisse Zeit einzuschalten.

    sensor.py:

    Wärend er dann eingeschaltet ist, mißt das 2. Programm dann die Feuchtigkeit und zeigt per LED an ob die Pflanze Wasser braucht:

    plantexp1.py:

    das ganze habe ich über Cronjobs hinbekommen:

    Code
    0 * * * * python3 /home/pi/plantexp1.py
    59 * * * * python3 /home/pi/sensor.py


    Den sich selbstauflösenden Sensor habe ich mittlerweile auch ab der kleinen Platine mit dem Poti ( http://www.ebay.de/itm/Feuchtigke…HEAAOSwNnRYjKLO ) einfach durch 2 Edelstahldrähte ersetzt, was zusätzlich den Vorteil bringt, das die Messwerte nicht mehr so sehr schwanken.

    Mal schauen wie lange die Drähte das aushalten :shy:

    Ich bin mir sicher das es garantiert noch einen besseren oder einfacheren Weg gibt, aber ich bin recht zufrieden mit der ersten nach meinen Wünschen funktionierenden Programmierung von Elektronik und Minicomputern :D

  • Moin pi-pat,
    das freut mich.
    Nun solltest du dein Thema als erledigt markieren.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!