Raspberry Pi: Relais-Schalter per GPIO steuern

5. April 2017
108 Comments

Oftmals will man auch Module mit höheren Spannung mit dem Raspberry Pi steuern. Für diesen Zweck können am Raspberry Pi Relais verwendet werden: Mittels eines niederspannigen Impulses wird der Relais-„Schalter“ umgelegt. Da der Pi nur maximal 5V (die GPIOs sogar nur 3.3V) verträgt bleibt ohne Relais das Risiko vorhanden, den Pi durchbrennen zu lassen. Hat man jedoch zwei voneinander getrennte Stromkreise kann das nicht passieren.

Wie man ein Relais mit dem Raspberry Pi steuert und was dabei beachtet werden muss zeige ich in diesem Tutorial.

Zubehör

 

Die Relais gibt es als 2er, 4er, 8er und sogar als 16er Module, je nachdem was man braucht. Um nicht zu viele GPIOs auf dem Pi zu „verschwenden“ lohnt sich bei mehr als 4 Kanälen die Anschaffung eines GPIO Port Expander.

 

Aufbau

Der Aufbau ist sehr simpel, da alle Pins beschriftet sind. Links (GND) kommt an Pin 6 des Pi’s (GND), der rechte Pin (VCC) kommt an 3V3 (Pin 1) des Pis. Je nachdem wie viele der Relais du steuern willst, musst du entsprechend viele GPIOs mit den IN Pins verbinden. Es empfiehlt sich ein kleiner Widerstand zwischen Pi und Relais zu setzen, ist aber bei 3V3 nicht unbedingt nötig.
Solltest du 5V statt 3.3V an VCC setzen, solltest du auf jeden Fall jeweils einen Widerstand (~1kΩ) zwischen die GPIOs und die IN Pins setzen.

 

Auf der anderen Seite sind an jedem Relais 3 Verbindungen (siehe Bild unten):  Je nachdem ob am IN-Pin eine LOW (0V) oder HIGH (3.3V bzw. 5V) anliegt wird entweder der Schalter zwischen der Mitte und Rechts, bzw. Mitte und Links geöffnet. Falls du alle 3 Pins verbindest kannst du das Relais quasi als Switch verwenden, lässt du rechts oder links frei hat es einfach die Wirkung eines On/Off Schalters. Wo dabei VCC bzw. Ground angeschlossen werden (Mitte bzw. Rechts/Links) spielt keine Rolle.

 

Raspberry Pi Relais: Entweder Mitte-Links oder Mitte-Rechts wird verbunden/"geöffnet".

Entweder Mitte-Links oder Mitte-Rechts wird verbunden / „geöffnet“.

Solltest du Geräte mit hohen Spannungen anschließen wollen, solltest du entweder genaustens wissen was du tust oder einen Elektriker fragen! 230V sind lebensgefährlich. Achte zusätzlich auf die Spezifikationen des Relais und nimm möglichst keine zwielichtigen China-Teile (das ist im Niedrigstrom-Bereich zwar egal, bei höheren Spannungen sollte man aber der Sicherheit zu Liebe den Euro mehr ausgeben und geprüfte Ware nehmen). Ich übernehme keine Haftung für Schäden!

 

 

Raspberry Pi Relais Steuerung

Auch die Steuerung ist nicht sonderlich schwierig, da nur GPIOs geschaltet werden müssen. Du kannst dafür C++ (wiringPi) oder Python verwenden. Ich verwende Python und habe GPIO 17 (Pin 11) verwendet.

sudo python

Liegen 0V am Relais Pin an, leuchtet die entsprechende LED, bei einem HIGH Pegel erlischt die LED. Möchtest du, dass bei einem HIGH Pegel das Relais öffnet musst du also den mittleren und linken Pin mit dem Stromkreis verbinden. Dabei ist die LED aus. Soll das Relais öffnen, wenn die LED auch brennt werden mittlerer und rechter OUT Pin verbunden.

 

Das war es auch schon. Mich würde interessieren, in welchen Anwendungen die Raspberry Pi Relais bei euch Benutzung finden?

108 Kommentare

  1. Ich würde gerne unsere LED-Leisten im Wohnzimmer damit steuern.
    Finde das Tutorial gut beschrieben, würde mich jedoch auch darüber freuen, wie in den anderen gewohnte Tutorials eine Beispielverkabelung oder Schaltpläne zu sehen, wie du das ganze wo angeschlossen hast.

    Gruß!

    Antworten
    • Hi Tim,
      nunja so ein einzelnes Relais hat nur VCC, GND und einen Pin, der das Relais schaltet, wobei alle beschriftet sind. Daher habe ich hier auf einen Schaltplan verzichtet.

      Antworten
  2. Hallo,

    Du hast nur eines wohl vergessen.
    Alle diese Relais die ich kenne werden mit Masse geschaltet und das kann der PI nicht!
    Also werden u. a. eine Transistor-Schaltung gebraucht.

    Klaus

    Antworten
    • Hallo Klaus,
      bei welchen Relais hast du es denn getestet? Eizelne Relais oder verbaute Module?
      Bei den von mir verlinkten Relais Modulen ist eine Masse-Verbindung nicht nötig. Ich nehme an, dass in den Modulen die Verbindung zu Ground bereits eingebaut ist.
      LG Felix

      Antworten
    • Hallo Felix ,

      ich habe 8 von den Relais die möchte ich über die Tastatur schalten z.B bei Taste 1 Relai 1 und 2 Relai 2…… .Ich bin nicht ganz so fit in Python bin Anfänger .
      Hättest Du einen Tipp ,Danke für die Antwort.

      Udo

      Antworten
    • Was du testen kannst: Schließe ganz normal VCC (3.3V) und GND des Relais an den Pi an. Dann verbinde den Schalt-Pin des Relais erst an 3.3V und danach and GND. Die LED des Relais sollte einmal aufleuchten und einmal ausgeschaltet sein. Falls das nicht der Fall ist, ist entweder dein Relais kaputt oder es benötigt eine andere Spannung.

      Antworten
  3. Mit 3,3V an VCC schaltet das Relais garnicht (ist ein 5V Relais) Aber auch mit 5V klappt es nicht. Ein Arduino an das Relais angeschlossen und es klappt.

    Antworten
    • Möglich, dass du ein anderes Relais benutzt. Ich habe aber mit allen getesteten 5V Relais die Erfahrung gemacht, dass auch 3.3V zum schalten ausreichen. Wenn aber auch 5V des Pi’s das Relais nicht schalten, muss das Problem wo anders liegen.

      Antworten
  4. Mit 3,3V schaltet das Relais garnicht. Aber selbst mit 5V klappt es nicht. An einem arduino klappt es aber einwandfrei.

    Antworten
  5. Hi Felix,
    dich interessiert ja was wir mit dem Relais so anfangen.

    Ich hab mir aus einer Heizmatte, einem Relais, einem DHT22 und ner Styroporbox einen Joghurtbereiter gebastelt.
    Der PI muss für 7 stunden die Temperatur zw. 42 und 45 Grad Celsius halten, und das wars eigentlich schon. (wo ist eigentlich das Grad Symbol auf ner Tastatur)
    Das alles mit sehr begrenzten Elektonik und Python Kentnissen.
    Die meisten Zeilen sind bei Dir und Adafruit geklaut.

    http://pastebin.com/uFeBRZxJ

    Ich beschäftige mich jetzt seit knapp 2 Wochen mit Python, ein zwei Rätsel kommen immer wieder auf, aber meistens klappts.

    Antworten
    • Hi Hauschi,
      dein Projekt klingt wirklich interessant, gut möglich, dass ich in Zkunft so etwas auch baue 🙂
      PS: Grad Zeichen (°) oben links neben der 1 auf der Tastatur.

      Antworten
    • Oh man strg c….

      Ich hab mir hier allen möglichen mist mit keyinterrupt auf englisch durchgelutscht und mein englisch ist wirklich für fachbezogenes nicht ausgelegt, eher um ein bier zu bestellen

      Antworten
    • Nochmal zum KeyboardInterrupt:

      Hab noch mit „try: / except KeyboardInterrupt“ gespielt

      Habs jetzt so hinbekommen, daß er bei strg+c noch das relais auf low stellt bzw den gpio cleanup ausführt
      Nicht daß man abbruch macht und die heizmatte grillt weiter oder ähnliches.

      soll ich die Zeilen noch Posten oder war das nur für mich Neuland?

      gruß hauschi

      Antworten
    • Noch was wichtiges, auf jeden Fall muss man mit except bei fehlern zumindesten das relais wieder ausschalten…
      Mir erging es wie folgt: ich hab damit eine heizung für ein minigewächshaus gesteuert, lief wochenlang stabil. Eines morgen waren alle pflänzchen gar gekocht. Der dht22 hatte wohl nen fehler und round (temperature,1) ging schief weil diese auf einmal als string erkannt wurde… programm wurde beendet und relais blieb auf Heizen stehen… hab noch nen 16×2 display dran, das zeigt dann aber ja auch nur die letzte gemessene temperatur.

      Naja aus fehlern lernt man..

      Gruß Hauschi

      P.S. Felix, wenn ich hier nochmal das aktuelle script poste, würdest du mal drüber schauen ob da noch mehr überraschungen lauern?

      Antworten
  6. Hallo zusammen,
    ich steuere über 2 Buttons auf einer html Seite jeweils ein Relai für Auf- und zufahren eines Rollladens. Nun möchte ich auch über einen Stopp Button den Rollladen stoppen. Im moment kann ich nur ganz auf oder zufahren.
    Hier habe ich das sh skript für zufahren mal unten eingefügt. Das für auffahren sieht fast genau so aus.
    Weis jemand wie es möglich ist, durch betätigen des Stopp Buttons die beiden Pins für die Relais daraufhin auf Eingang zu legen?

    Vielen Dank

    LG
    Patrick

    #!/bin/sh
    
    gpio -g write 17 0              #Verriegelung
    gpio export 17 in                #Verriegelung
    
    gpio export 23 out              #Port 23 wird auf Ausgang gelegt
    sleep 10                                    #Rollladen fährt zu
    
    gpio -g write 23 0              #Port 23 wird eine 0 zugewiesen (Relai faellt ab)
    gpio export 23 in               #Port 23 wird auf Eingang gelegt (Grundzustand)
    Antworten
    • Hi Patrick,
      das Problem liegt in dersleep 10 Zeile. Dadurch hast du keine Möglichkeit zu stoppen.
      Ich würde eine Schleife laufen lassen und innerhalb der Schleife lediglich eine halbe Sekunde oder noch weniger warten. Außerdem überprüfst du den Status des Stop-Tasters jedes mal und falls er gedrückt wurde bricht die Schleife ab und das Relais wird geschaltet. Mit Python könntest du auf die nützlichen GPIO Funktionen zugreifen ggf. sogar auf die Schleife verzichten.
      LG Felix

      Antworten
    • Hi Felix,
      das sleep 10 ist ja dazu da, dass das Relai für 10 sec anzieht und anschließend wieder abfällt. Der Rollladen braucht genau 10 sec zum auf bzw. zufahren 🙂

      könntest zu mir ein beispiel code schreiben, wie du das realisieren würdest?

      Antworten
      • Das ist mir klar, aber durch sleep wird alles andere lahmgelegt. Das System pausiert und dadurch kannst du es auch nicht abrrechen.
        Beispielcode in Python (ungetestet):

        import RPi.GPIO as GPIO
        import time
        
        GPIO.setmode(GPIO.BCM) # GPIO Nummern statt Board Nummern
        TASTER_GPIO = 17 # anpassen
        RELAIS_GPIO = 21 # anpassen
        GPIO.setup(TASTER_GPIO, GPIO.IN) # GPIO Modus zuweisen
        GPIO.setup(RELAIS_GPIO, GPIO.OUT) # GPIO Modus zuweisen
        
        def wechsel():
          # abfragen ob wieder starten oder stoppen
          # ...
          GPIO.output(RELAIS_GPIO, GPIO.HIGH)
        
        GPIO.add_event_detect(TASTER_GPIO, GPIO.BOTH, callback=wechsel)
        
        start = time.time()
        dauer = 10 # Sekunden
        while time.time() - dauer < start:
          time.sleep(0.1)
        

        Schau dir ggf. dieses Tutorial auch mal an: Überwachung von Fenstern und Türen mit dem Raspberry Pi und Reed-Relais

  7. ja da hast du recht da wird alles lahmgelegt, dass habe ich noch nicht bedacht gehabt
    okey danke ich teste das mal 🙂

    Antworten
  8. Ne also ich habe eine html Seite mit 3 Buttons:
    Zufahren
    Auffahren
    Stopp

    und ich möchte über den Stopp button auf der Webseite den Rollladen stoppen.
    sorry vll hab ich das vorhin etwas schlecht beschrieben.

    Antworten
    • Achso, ok. Dann musst du es natürlich etwas umschreiben: Überprüfe in der Schleife, ob Stopp gedrückt wurde und setze dann sofort den Relais GPIO auf LOW. Beispiel:

      if ... : # start button pressed
        GPIO.output(RELAIS_GPIO, GPIO.HIGH)
        while time.time() - dauer < start:
          if ... : # anpassen
            GPIO.output(RELAIS_GPIO, GPIO.LOW)
          time.sleep(0.1)
        GPIO.output(RELAIS_GPIO, GPIO.LOW)
      Antworten
  9. #!/bin/sh
    
    if zufahren button pressed : # start button pressed
      GPIO 23.output(RELAIS_GPIO, GPIO.HIGH)
      while time.time() - dauer < start:
        if stopp button pressed : # anpassen
          GPIO 23.output(RELAIS_GPIO, GPIO.LOW)
        time.sleep(0.1)
      GPIO 23.output(RELAIS_GPIO, GPIO.LOW)

    wenn ich den zufahren Button betätige ruft der über php das Shell Skript auf.
    Wenn ich die Schleife so mach funtkioniert gar nichts, und des Relai zieht nicht an. Ich glaube ich denke das is falsch wie ich es gemacht habe, vll denke ich da zu einfach 😀

    Antworten
    • Du deklarierst ein shell Skript, benutzt aber Python Code? Hast du es gekürzt oder fehlen auch die imports der Libraries?
      Btw. was genau ist GPIO 23.output? eine Variable kann nicht durch Leerzeichen getrennt sein bzw. eine Zahl. Falls das alles an Code ist, macht dieser definitiv keinen Sinn (du solltest ihn testen und wirst bestimmt einige Fehlermeldungen bekommen).
      LG Felix

      Antworten
  10. Hallo Felix,

    erstmal.. Du hast hier ne richtig geile Seite aufgebaut. Mach weiter so.
    Und nun zu meiner Frage.
    Ich habe wie hier in diesem Tutorial beschrieben eine 8er relaiskarge angeschlossen und daran wiederum aquariumpumpen.
    Aus einem deiner vorherigen tutorials hatte ich auch schon ein LCD-Display (4×20) in betrieb genommen.
    Nun spinnt mein display jedoch jedes mal rum wenn ich eine Pumpe ansteuere, ich habe schon gedacht das es vllt einen spannungeinbruch gibt, und habe die stromversorgungvom Raspberry und die der Pumpen getrennt.
    Das hat aber leider nicht geholfen. Hast du noch eine Idee an was es liegen könnte?

    Mit freundlichen Grüßen
    M.Krause

    Antworten
  11. Hi,

    vielen Dank für das Tutorial. Hab mich auch auf anderen Seiten eingelesen, aber leider funktioniert mein Skript nicht. Beide Relais schalten nach der Zeile GPIO.setup(….) und nach GPIO.cleanup(…). Das Umschlaten der Pins hat keinen Einfluss, weder auf die LEDs, noch auf das Relais. Wenn ich die Pins des Relais mit 3,3 V und GND direkt verbinde, schalten sie einwandfrei.

    Momentan bin ich noch am ausprobieren. Mein Ziel ist es eine Steuerung für einen Innenraumbelüftung zu bauen, die bei einer gewissen Temperatur meines Holzofens die Lüftung einschaltet, damit es unter dem Dach nicht so warm wird.

    Grüße Johannes

    import RPi.GPIO as GPIO
    import time
    #setup
    GPIO.setmode(GPIO.BOARD)
    pin1 = 7
    pin2 = 11
    GPIO.setup(pin1,GPIO.OUT)
    GPIO.setup(pin2,GPIO.OUT)
    
    #run
    GPIO.output(pin1,GPIO.HIGH)
    GPIO.output(pin2,GPIO.LOW)
    time.sleep(2)
    GPIO.output(pin1,GPIO.LOW)
    GPIO.output(pin2,GPIO.HIGH)
    
    #finish
    GPIO.cleanup([pin1, pin2])
    Antworten
    • Hallo Johannes,
      hast du mal versucht einen Transistor dazwischen zu schalten? Diese brauchen nur eine geringe Stromstärke zum schalten und somit könntest du das Relais auch über 5V schalten. Ist zwar etwas umständlicher, aber vielleicht klappt es ja. Benutzt du irgendein spezielles Relais oder die verlinkten?
      LG Felix

      Antworten
    • Hallo Felix,

      Ich habe die gleichen Relais, auf dem Board sind bei mir aber andere Bausteine verbaut. Die zwei schwarzen rechteckigen fehlen. Könnte natürlich sein, dass das Transistoren sind… Auf dem Relais steht jedenfalls irgendwas von 5 VDC. Mir ist aber nicht ganz einleuchtend, wieso die Relais sauber schalten, wenn ich sie mit 3,3 V verbinde bzw. die Verbindung wieder unterbreche. Kann es sein, dass die Pins des Raspberry Pi nicht „sauber“ geerdet sind? Also dass eben nicht 0 V anliegen, sondern eine „zappelnde“ Spannung?

      Ich besorg mir mal einen Transistor und probiere es aus.

      Grüße
      Johannes

      Antworten
      • Hallo Johannes,
        also eine „zappelnde“ Spannung habe ich bisher nie an den GPIOs gemessen. Ich habe bei vielen Bauteilen die Erfahrung gemacht, dass sie auch mit 3.3V funktionieren. Die Module sind meistens für den Arduino bestimmt und dessen IO Pins liefern 5V Spannung. Allerdings haben die verwendeten Komponenten eben oft einen Spannungsvereich von ca. 3-5.5V. Natürlich gibt es auch Module, die wirklich genau 5V brauchen, aber ich habe das mit solchen Standard Teilen wie Relais bisher nicht erlebt.

      • Scheint wohl wirklich so zu sein, dass dein Relais mehr als 3V braucht. Nunja, hauptsache ist, dass es nun klappt 🙂

  12. Hallo,

    super Tutorial……
    Ich möchte meine 12V LED Aquarium Beleuchtung damit Steuern.

    Frage: Was bräuchte ich, damit ich zusätzlich dimmen kann?

    Ich habe 4LED 12 V Leisten über dem Becken und habe jetzt einen DrehDimmer dran. So kann ich Stufenlos die Helligkeit einstellen, d.h. die LEDs sind einfach Dimmbar.

    Weisst du ob es vielleicht so etwas gibt? Dein Relais macht sicher nur ein/aus.

    Viele Grüße

    Frank

    Antworten
  13. Moin moin, danke für das super Tutorial!

    Ich habe ein bisschen grundsätzliche Ahnung von Elektrotechnik, aber trotzdem eine Frage dazu…

    Du hast geschrieben, dass du, wenn man die Relais mit 5V beschaltet, einen ~1k Widerstand zwischen GPIO und IN einbauen würdest – zur Sicherheit. Wie kommst du genau auf die ~1k?
    Ich habe nämlich ein entsprechendes Board zur Verfügung, das aber mit 12V versorgt wird. Wie müsste ich die Widerstände da dimensionieren?

    Wäre super, wenn du mir da aushelfen könntest.
    Danke!

    Antworten
    • Hey Maurice,
      Im Grunde ist das bei 3.3V nicht wichtig, da der GPIO nur einen Strom sendet, aber keinen bekommt. Das war nur gedacht, falls man etwas falsch angeschlossen hat etc. Aber da sollte es auch eine Diode tun (solange der GPIO nur Output ist).
      Ansonten kannst du dir mal das Prinzip eines Spannungsteiler ansehen: https://de.wikipedia.org/wiki/Spannungsteiler

      Antworten
  14. Hi,
    ich habe nun auch wiringPi installiert und das Relais an den Pi angeschlossen (VCC GND IN) und auf der anderen Seite einen Motor mit eigener Stromversorgung .
    Nun habe ich aber das Problem, dass wenn ich
    GPIO.setuup(RELAIS_1_GPIO, GPIO.OUT) eingebe, das Relais schließt (Motor läuft) und wenn ich
    GPIO.setup(RELAIS_1_GPIO, GPIO.IN) eingebe, das Relais öffnet (Motor aus).
    Also ohne dann GPIO.output ….. auf LOW oder HIGH zu setzen.
    Was mache ich falsch?

    Antworten
    • Ist dieser Blog nicht mehr aktiv?
      Oder warum erhalte ich keine Antwort? Schade eigentlich. Ich würde gerne meinen Fehler finden. Da sollte es doch jemand geben, der einem Anfänger vielleicht helfen kann.

      Antworten
      • Ist noch aktiv 😉 Nur bei so vielen Kommentaren überließt man mal ein, kümnmere mich ja nur in meiner Freizeit darum 🙂
        Zu deiner Frage: Ich vermute folgendes: Durch GPIO.IN agiert der Pin wie GND (oder auch GPIO.LOW). Der andere Zustand ist dann ggf. nicht HIGH sondern „nicht LOW“.
        Dennoch würde ich den Pin als Output deklarieren.
        LG Felix

  15. Habe jetzt dein „AN“ statement und dein „AUS“ statement getauscht, damit die LED am Relais nur brennt wenn das Relais meine Pumpe ansteuert. Spricht etwas dagegen das so zu tun. Wenn ich die Schaltung richtig verstehe liegt damit auf dem GPIO immer eine Spannung an wenn das Relais aus sein soll. Oder hat das negative Auswirkungen wenn der Raspberry vielleicht mal abstürzt und damit das Relais angeht weil die Spannung fehlt?

    Antworten
    • Nein, das kannst du handhaben wie du möchtest. Es gibt auch unterschiedliche Arten von Relais (manche leuchten, wenn Spannung anliegt, manche wenn keine Spannung anliegt). Je nachdem welches du hast wird der Stromkreis unterbrochen, wenn z.B. der Pi keine Spannung mehr liefert (also gar keine – nicht nur LOW am Schalt-Pin).

      Antworten
  16. Hallo Felix,
    ich weiß nun nicht mehr was nun richtig ist, bin leider totaler leihe. Dein Bericht ist nun das gegen teil was ich nun schon mehrfach über dieses Relay Modul gelesen habe. ( Hersteller ArtikelNr.: CP0408A )
    Hier mal eine Beschreibung was man machen soll wen man es mit ein Raspberry pi betreiben möchte. Ich einen Raspberry pi 3
    Was ist Deine Meinung dazu, für eine Antwort wäre ich dankbar.
    ————————————————————————————————–
    Problem: Das Relaismodul besteht aus zwei Stromkreisen, dem Steuerkreis und dem Relaiskreis. Beide sind auf 5V ausgelegt. Betreibt man beide Stromkreise mit 3,3V, so besteht die Gefahr, dass das Relais „hängt“ oder nicht zuverlässig schaltet, denn die Relais brauchen zwingend 5V; außerdem fressen dann die LEDs im Steuerkreis so viel Spannung, dass die dort befindlichen Transistoren (aus irgendwelchen elektrotechnischen Gründen, die ich ehrlich gesagt nicht vollständig verstanden habe…irgendwas mit Sättigung) ironischerweise durch ihre eigene Verlustwärme schleichend geröstet werden und irgendwann ausfallen können. Gibt man stattdessen beiden Stromkreisen 5V, so röstet man den GPIO des Raspberry Pi, da dieser nur 3,3V verkraften kann. Was tun, um aus diesem Dilemma herauszukommen?

    Lösung: Wir arbeiten mit unterschiedlichen Spannungen. Wir betreiben den Relaiskreis mit den erforderlichen 5V, während wir den Steuerkreis mit 3,3V betreiben. Auf diese Weise können auch die GPIOs nur 3,3V abbekommen.

    Howto:
    1.) Die vier LEDs mit einem Lötkolben auslöten. Die Stellen, an denen die LEDs waren, mit ausreichend Lötzinn überbrücken.
    2.) Den Jumper, der JD-VCC und VCC auf dem Board verbindet, abziehen. Wichtig! Solange dieser Jumper gesteckt ist, sind Relaiskreis und Steuerkreis miteinander verbunden. Diese Verbindung muss logischerweise getrennt werden, und das geschieht durch Abziehen des Jumpers.
    3.) 3,3V vom Raspberry Pi an VCC des Boards stecken (Pinleiste mit sechs Pins).
    4.) 5V vom Raspberry Pi an JD-VCC des Boards stecken (einer der Pins, wo der Jumper draufgesteckt hat – den richtigen wählen! Beschriftung JD-VCC!)
    5.) Masse vom Raspberry Pi an GND des Boards stecken (Pinleiste mit sechs Pins)

    Nun fehlt noch die Verbindung von den GPIOs zum Board. Da der Raspberry Pi pro GPIO-Port nur max. 8mA an Strom zur Verfügung stellen kann, der Steuerstrom aber lt. Produktbeschreibung mit 15-20mA angegeben ist, müssen wir verhindern, dass das Relaisboard zu irgendeinem Zeitpunkt mehr ziehen kann als diesen Wert. Nach dem Ohm’schen Gesetz (U=R*I) ergibt sich bei einer Spannung von U = 3,3V und einem Maximalstrom von I = 8mA = 0,008A ein Widerstand von R = 412,5 Ohm. In der Praxis eignet sich ein 470 Ohm-Widerstand, den man in das Kabel vom GPIO zum Board einlötet. Dieser begrenzt dann den Stromfluss auf 7mA. In der Praxis funktioniert das auch nach vielen Tests hervorragend.

    In einem letzten Schritt schließt man nun also ein derart präpariertes Kabel zwischen den GPIO-Pin des Raspberry Pi und dem gewünschten Eingang des Relais (z.B. IN1 für das erste Relais). Fertig!

    Antworten
    • Hallo Winne,
      also vorweg gesagt, ein Relais hat keine eingebaute Transistoren sondern arbeitet mit einem Elektromagnet, der durch die Spannung (3.3V bzw. 5V) geschaltet wird und einen anderen (getrennten!) Stromkreis öffnet (siehe Wikipedia: https://de.wikipedia.org/wiki/Relais ).
      Zu der zweiten Aussage bzgl des Dauerbetriebs: Ich nutze Relais kaum im Dauerbetrieb, kann also dazu keine Aussage treffen. Allerdings haben sich alle bisher von mir getesten Relais auch mit 3.3V schalten lassen. Falls sich dein Relais nicht mit 3.3V schalten lässt oder du 5V anliegen haben möchtest, so kannst du einen Transistor (NPN) benutzen. Dabei schließt du den GPIO an die Basis an (bitte mit Vorwiderstand ~10k), an den Collector kommen die 5V des Pi’s und der Emitter geht zum Schalt Pin des Relais. Damit kannst du mittels eines GPIOs auch 5V schalten. Ein Beispiel zum Transistoren schalten findest du hier, ist aber nichts großes dabei (bzgl Vorwiderstand stimmt alles, was du kopiert hast) 🙂

      Antworten
  17. Hallo Felix,
    erst mal danke für die schnelle Antwort.
    also ich möchte mir dieses Relay Modul kaufen ( http://www.avc-shop.de/epages/64272905.sf/de_DE/?ObjectID=55119743 ).
    Ich habe da nachgefragt, Sie haben gesagt das ich von Rasberry vom PIN 2 die 5v Stromversorgung an DC+ an Relay Modul und Masse vom Rasberry PIN 6 an DC- an Relay Modul ohne was dazwischen anzuschließen und an den IN 1-4 den GPIO anschließen muss ( Beispiel an PIN 7,11,13,15 am Raspberry .
    Nun meine Frage, ist die Aussage richtig, oder muss ich, wie Du geschrieben hast, auch noch ~10k Vorwiderstand dazwischen machen?
    Wie schon geschrieben bin leider totaler leihe.
    Danke im voraus.
    Winne

    Antworten
    • Hallo Winne,
      ich habe gesagt, dass der Vorwiderstand vor die Basis des Transistor (falls du einen verwendest) kommt. Wenn du darauf verzichtest kannst du die GPIOs auch direkt anstecken. Ich würde aber ggf. eine Diode dazwischen schalten, damit du sicher gehen kannst, dass keine 5V an die GPIOs gelangen (falls du ausversehen einen Pin vertauschst oder sonstige Komplikationen auftreten), aber auch das ist kein Muss, aber damit bist du auf der sicheren Seite.

      Antworten
  18. Hallo!
    Ich muss mit einem Raspberry Pi eine Pumpe für eine Fußbodenheizung ein- und ausschalten, je nach Temperatur. Kann ich mit Relias die 230V für die Pumpe ein- und ausschalten oder muss da was anderes her?

    Antworten
    • Es kommt auf die Leistung ( bzw. Stromstärke ) der Pumpe an. Ich glaube diese Relais können maximal 10A schalten bei 250V. Auf dem Typenschild der Pumpe steht normalerweise der benötigte Strom.

      Antworten
  19. Hallo miteinander,
    was ich hier so gelesen habe, finde ich einfach nur toll!
    Ich möchte ein Bastelprojekt starten, obwohl ich keinerlei Ahnung vom Raspberry und Steuerung, geschweige denn vom Programmieren habe. Also frag ich einfach mal drauf los.
    Ich möchte über den Raspberry mit Touchscreen 30 Relais in 3 Zehnergruppen ansteuern, und zwar so, daß bei zwei Zehnergruppen immer nur ein Relais geschlossen ist, bei einer Zehnergruppe sollen es möglich sein, auch 2 oder 3 Relais gleichzeitig anzusteuern.
    Nutzen will ich das als Umschalter meiner Musikanlage. Wie stell ich das an?
    Es gibt ja USB Relaiskarten, gänge sowas?
    Würde mich über eine Antwort freuen, ehe ich das alles kaufe und dann nicht weiter weiß

    Danke, Matthias

    Antworten
  20. Hallo,
    Danke für das Tutorial!
    Habe aber mal eine Frage um sicher zu gehen:
    Wo muss ich am Relais Ausgang die Masse anschließen? In der Mitte oder Rechts/Links?
    Kenne mich damit nicht aus 😀

    Danke,
    Ben

    Antworten
    • Hallo Ben
      Das Relais hat 3 Anschlüsse. Der mittlere Anschluss auf der Seite mit den Klemmkontakten (Ich denke Du meinst diese ) ist der an dem die Phase oder Plus anliegt. Die Klemme zu der der Strich in der Mitte zeigt ist im Ruhezustand geschlossen. Der Andere ist offen und wird bei Ansprache des Relais geschlossen. Die Frage ist nun ob Du Masse schalten willst oder Plus. Wenn Du ein Gerät an oder aus schalten willst musst Du Dich für eine Version entscheiden. Entweder Du schaltest Masse hat Plus an diesen Klemmen nichts verloren. Sonst gibt es einen Kurzschluss. Umgedreht genauso. Das nicht geschaltete Kabel wird am Relais vorbei geführt. Bei 230 V z.B. würde ich immer die Phase also den Stromführenden schalten um das Gerät im ausgeschaltetem Zustand spannungsfrei zu haben.

      Antworten
  21. Hallo Felix,

    dank deines Tutorials konnte ich erfolgreich mein „Neuftech 8-CH 5V 8-Kanäle Relais Modul“ an meinen Pi 2 Model B anschließen und ansteuern 🙂
    Nach etwas rumspielerei ist mir folgendes Problem aufgefallen, dass ich mir nicht erklären kann:
    Ich habe mir ein Script gebaut, mit dem ich alle oder gezielt einzelne Relais ein- bzw. ausschalten kann. Dies geschieht mit mehreren
    „GPIO.output(relais, GPIO.LOW)“ bzw. GPIO.HIGH
    Zeilen hintereinander, wobei Relais1 immer durch die jeweilige GPIO Nummer ersetzt wird. Zwischen den einzelnen Befehlen habe ich zum Test noch einen Sleeptimer von jeweils einer Sekunde eingebaut.
    Nun das für mich kuriose:
    Schalte ich alle Relais ein und nach ca. 30 Sekunden alle Relais aus, bleiben sporadisch Relais 1,3 und 6 an. Schalte ich nun gezielt Relais 1 aus, bleibt Relais 1 an. Schalte ich dann gezielt Relais 1 nochmal an und aus, geht Relais 1 aus. Gleiches Spiel mit Relais 3 und 6.
    Schalte ich alle Relais ein und nach ca. 5 Minuten aus, gehen alle Relais aus.
    Wenn die Relais geschalten werden (alle oder einzeln), ist immer das typische Relais klacken zu hören und die dementsprechende LED auf dem Board geht an bzw. aus.

    Dieses Phänomen tritt nur auf, wenn alle Relais eingeschalten sind. Sind z.B. nur Relais 1,3,4,6 und 8 aktiviert, kann ich diese einzeln aus und einschalten wie ich lustig bin.

    Wo liegt mein Fehler? Bin über jeden Tip dankbar.
    Viele Grüße,
    Tobias

    Antworten
  22. Hallo Felix,
    nein, werde ich aber morgen mal machen 🙂 Habe mein Bauwerk derzeit nicht zu Hause.
    Ergänzend kann ich noch sagen: Das Problem tritt nur auf wenn Verbraucher an den Relais angeschlossen sind.

    Antworten
    • Hallo Felix,
      ich habe nun die Spannung der GPIOs in verschiedenen Konstellationen gemessen (sprich: Relais an/aus wie ich es oben beschrieben habe).
      Die Erkenntnis:
      Wenn der GPIO deaktiviert ist, liegen immer 0,0 V an.
      Wenn der GPIO aktiviert ist liegen immer 3,228V oder 3,229 V an.
      Mit meinem technischen Verständnis würde ich sagen das passt soweit.
      Ich bin nun am überlegen, einen ULN2803 Testweise zwischen GPIOs und Relaiseingänge zu installieren, da ich bei meinen aktuellen Recherchen oft gelesen habe, dass es nicht wirklich ratsam ist, die GPIOs direkt an das Relais anzuschließen.
      Wie siehst du das?

      Viele Grüße

      Antworten
      • Die Spanungen sind soweit in Ordnung.
        Was du machen kannst ist einen normalen NPN Transistor zu verwenden und diesen zu schalten, sodass 5V an das Relais kommen: Basis (3.3V GPIO), Collector (5V Pi), Emitter (zum Relais Pin)

    • Hallo,

      nach einem Dauertest bin ich mir nun sicher, dass das Problem gelöst ist.
      Ich habe nun einen ULN2803A zwischen Pi und Relais eingebaut. Das Relais wird mit einem externen Netzteil mit 5 V versorgt.

      Antworten
  23. Hallo Felix, erstmal Danke dafür, dass Du in diesem Forum so viele interessante Informationen zur Verfügung stellst. Du fragst danach in welchem Zusammenhang die Relaissteuerung am Raspberry eingesetzt wird.
    Ich steuere in unserem Haus eine Vielzahl von Geräten über den Raspberry, so z. B. die Rolläden, NAS, Drucker, Zirkulationspumpe zum Warmwasser, ….; alles in Abhängigkeit des „Betriebszustandes des Hauses“, eingeschalteter Geräte (z. B. PCs) und der Uhrzeit. Basis ist ein C-Programm, dass als eine Art Scheduler funktioniert. Alle Steuerungsinformationen sind dabei in einer mysql-DB hinterlegt und können somit jederzeit ohne Programmunterbrechung verändert werden. Das Programm hat eine eigene Auslastungskontrolle und gibt- wenn immer möglich – die Steuerung an Betriebssystem zurück. Trotz einer erheblichen Anzahl von Steuerungsereignissen, erreiche ich einen Idle-Wert von ca. 99% auf dem Raspberry. Da mir die GPIOs ausgehen plane ich nun eine Ansteuerung der GPIOs über I2C Schieberegister-Module, z.b 2307. Hier fehlt mir noch die Information der Ansteuerung des I2C über die Programmiersprache C, wenn Du hier eine Info-Quelle hast, wäre das super, Gruß André.

    Antworten
    • Hallo Andre,
      dein Projekt klingt interessant. Um dein GPIO Problem zu lösen könntest du einen MCP23017 per I2C ansprechen. Ich habe dazu bereits zwei Artikel geschrieben (Teil1, Teil2), jedoch benutze ich dazu Python. Ich denke allerdings, dass es nicht all zu viel Aufwand sein sollte den Code in C zu übersetzen. Auch auf Github gibt es wahrscheinlich einige Bibliotheken in C.
      LG, Felix

      Antworten
  24. Hier mal ein Hinweis für die Nutzer von Relaiskarten mit einer Steckbrücke (Jumper):
    Wenn Ihr diesen Jumper entfernt, dann wird auf der Karte VCC von JD-VCC getrennt.
    JD-VCC ist die Versorgungsspannung der Relaisspulen (5Volt). Hier könnt Ihr nun die 5Volt (Pin2 und Pin4 des Pi) anlegen. VCC wird mit den 3,3Volt (Pin1 und Pin 17 des Pi) verbunden. Jetzt stehen den Spulen der Relais die richtige Spannung zur Verfügung ohne dass Ihr Eure GPIOs gefährdet.
    Aber vorsicht bei den 8er Relaiskarten, hier überfordert die Last von 8 angezogenen (geschalteten) Relais recht schnell die Kapazität Eures Netzteils und der Pi kann wegen Spannungsschwankungen abstürzen.

    Noch ein Hinweis:
    Wenn Ihr, wie im Tutorial empfohlen, Euren Verbraucher über die NC/C Pins der Relais einschaltet, (LED leuchtet und der Verbraucher ist aus bzw. LED leuchtet nicht und der Verbraucher ist an) dann habt Ihr diesen Zustand immer auch im Ruhe zustand der Relais, also z.B. beim Booten des Pi. Das ist nicht wirklich sinnvoll.

    Besser Ihr nutzt nur die NO/C Kontakte der Relais zum Einschalten der Verbraucher – wenn also via Low-Pegel vom GPIO die LED eingeschaltet ist, und an der Relaisspule Spannung liegt, sollte auch Eure Last mit Strom versorgt werden.
    Solange der GPIO PIN nicht als Output definiert ist (als beim Booten und vor dem Start Eures Programmes) wird auch das Relais nicht ungewollt Euren Verbraucher einschalten. Setzt doch einfach den GPIO Pin auf „ON“ und dann erst teilt Ihr ihm mit dass er ein Output ist, dann wird das Relais erst dann schalten, wenn Ihr den GPIO kontrolliert auf „LOW“ setzt.

    GPIO.output(RELAIS_1_GPIO, GPIO.HIGH) # PIN an aber Relais und LED aus
    GPIO.setup(RELAIS_1_GPIO, GPIO.OUT) # GPIO Modus zuweisen


    GPIO.output(RELAIS_1_GPIO, GPIO.LOW) # PIN aus aber Relais und LED an

    Antworten
    • Wird bei der low activ variante auch ein Widerstand zwischen gebaut und wenn ja wie hoch sollte der ausfallen? Die von mir weiter unten beschriebene transistor bauweise schaltet nicht sauber.

      Antworten
  25. hallo,
    ich baue einen voll automatischen enten/hühnerstall mit solar panel und 12v batterie.
    die tür funktioniert schon seit etwa zwei jahren. aber jetzt kommt noch ein fütterungsautomat hinzu, und da hab ich mir gedacht ich probiers mal mit nem raspberry.
    ich hoffe es klappt.
    danke jedenfalls schonmal für das tutorial.

    Antworten
  26. Hallo,

    im Tutorial-Text steht „und nimm möglichst keine zwielichtigen China-Teile“. Ein guter Hinweis.

    Ich möchte anregen, dann auch die Links zu Relais-Karten bei Amazon etwas zu verwenden. Aktuell verweisen sie auf Chinesische Händler, die über Amazon liefern (und sich, wie in der c’t zu lesen war, dabei an keine deutschen Standards halten müssen).

    Alternativen wären:
    http://www.watterott.com/de/4-Channel-Relay-Module-10A

    Antworten
  27. Hey,

    Gibts in der Steuerung der GPIOs per Bash oder Python einen unterschied?
    Ich komme mit Python einfach nicht klar…
    Da würde ich eher C lernen wolle.

    Wenn ich bei uns mal ein Relais finden würde, würde ich das gerne zwischen Arduino und Stromversorgung hängen, und dann per Bash schalten. Oder notfalls mit einer Python Datei. Denn so könnte ich ganz einfach den Arduino per Datei anschalten, ihn seine Messungen machen lassen bzw. die Simulation starten, und wenn er fertig ist dann wieder per Raspi abschalten.

    LG
    TimeMen

    Antworten
    • Per Bash kannst du auch GPIOs schalten. Bsp für Pin 27:

      sudo echo "27" > /sys/class/gpio/export
      echo "out" > /sys/class/gpio/gpio27/direction
      echo "1" > /sys/class/gpio/gpio27/value

      Alternativ geht es auch mit WiringPi.

      Antworten
  28. Ein freundliches „Hallo“ in die Runde…

    Sehr umfangreiche und gut verständliche Infos die hier zusammengetragen wurden. Ich bin jetzt seit einiger Zeit mit 3 Raspis daheim am herumspielen und steuere bereits erfolgreich einige Dinge in meiner Haussteuerung über den Raspi.
    Aktuell möchte ich meine Lüftungsanlage automatisieren. Diese wird derzeit noch mit einem Bedienteil gesteuert, welches neben einem Ein/Aus-Schalter und einem Betriebsstundenzähler einen Drehschalter zum Wählen der Lüfterstufe enthält.
    Der besagte Drehschalter leitet eine kleine Spannung (ca. 2V) weiter. Mit dem hier besprochenen Relais bzw. seinem Bruder mit 8 Kanälen könnte ich den Schalter ersetzten und der Rest passiert in Software. Das würde ich soweit hinbekommen.
    Ich möchte jedoch hardwareseitig sicher stellen, dass niemals mehr als einer der Kanäle geschaltet ist. Der Drehschalter kann auch immer nur eine Position einnehmen und ich möchte nicht ausprobieren, ob die Steuerung ein Schalten von mehr als einem Kanal gleichzeitig überlebt.

    Ich wäre dankbar für einen Hinweis auf eine Baugruppe die sich quasi verhält wie eine Gruppe Radio-Buttons, also jeweils sicherstellt dass bei einer Betätigung zuvor der aktuell durchgeschaltete Kanal unterbrochen wird. Meine Elektronik-Kenntnisse reichen leider nicht so weit, das ich wüsste wonach ich bei Google & Co suchen müsste.
    Gibt es ein Bauteil oder eine Baugruppe die dies so leistet?

    VG,
    Axel

    Antworten
  29. Hallo Felix,
    wie gewohnt eine super Anleitung von dir.
    Ich möchte das Relais zum an/ausschalten einer IR-Lampe (akkubetrieben) für intervallmäßige Nachtaufnahmen nutzen. Da mein PI samt Kamera und Lichtsensor ebenfall per Akku betrieben wird, wäre es super das Relais wirklich nur dann mit Strom zu versorgen, wenn es die Lampe anschalten soll, d.h. wenn der Lichtsensor ‚dunkel‘ meldet.
    Soweit ich es verstanden habe zieht das Relais aber auch Strom, wenn es nicht angezogen ist.?
    Besteht ggf. Möglichkeit, das Relais von einem gewöhnlichen GPIO Pin (nicht VCC) aus mit Spannung zu versorgen oder ist die Pin-Leistung nicht ausreichend dafür?
    Hast du Ideen zur Umsetzung?
    Danke für deine Hilfe.

    Antworten
  30. Ich würde gerne per cronjob um 6 Uhr morgens ein Relais schalten, aber nur wenn ein Schalter ein GPIO.High Signal ausgibt. ist der schalter Low soll nichts geschehen.
    Mein Code sieht bis jetzt noch sehr schmal aus:

    import time
    import RPi.GPIO as GPIO
    
    
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(17,GPIO.IN)
    GPIO.setup(27,GPIO.OUT)
    
    if GPIO.input(17,GPIO.HIGH):
    	GPIO.output(27, GPIO.HIGH) # an
    else
    	print "Fertig"

    dabei soll das gleiche script auch nochmal um 8 uhr morgens starten aber je nach dem auf welcher position der schalter steht eins von beiden starten und das andere nichts tun. wäre sehr froh über eine korrektur meines scripts. lg und danke

    Antworten
    • Ich habe deinen Code im Kommentar angepasst. Was du allerdings mit „eins von beiden starten und das andere nichts tun“ meinst, verstehe ich nicht. Du hast doch nur ein Relais definiert?

      Antworten
  31. Hallo Felix,
    ich würde gerne einen Türöffner bauen, den ich zusätzlich zum vorhandenen Öffnungstaster an meiner Klingelanlage nutzen kann. Die Türöffnung erfolgt mit 12V. Kann ich diese Konstellation mit den von dir angegebenen Komponenten lösen? Am liebsten wäre mir, wenn ich das Relais ohne externes Netzteil betreiben könnte.
    Bin Neuling auf dem Gebiet der Elektrotechnik und würde mich freuen, wenn du mir helfen würdest.

    Antworten
    • Hallo Jan,
      ja das funktioniert. Die 12V müssen aber natürlich extern angeschlossen werden. Falls dein Relais sich nur mit 5V schalten lässt, so kannst du einen Transistor verwenden. An die Basis kommt der GPIO und an den Kollektor die 5V vom Pi. Emitter an den Relais Input und fertig.

      Antworten
  32. Moin Felix,
    ich bastel grad mit den Relais etwas rum.
    Da stellt sich mir die Frage, wie kann ich am Ende eines Python skripts „sudo shutdown“
    einbauen, damit der RPi sich nach Programmende selbsttätig runterfährt.

    MfG Hauschi

    Antworten
  33. Hi Felix,
    hab schon viel mit 1kanal relais gespielt, auch schön incl transistor usw, hat alles geklappt. nun hab ich mir dieses 2kanal relais bestellt. https://www.amazon.de/gp/product/d/B01EYW5SJM/ref=mp_s_a_1_4?__mk_de_DE=%C3%85M%C3%85Z%C3%95%C3%91&qid=1484996422&sr=8-4&pi=AC_SX236_SY340_FMwebp_QL65&keywords=2+kanal+relais+5v&dpPl=1&dpID=51tiO5y84wL&ref=plSrch

    hab ne ganze weile gebraucht… es schaltete nie, hab auch direkt an 3.3V und 5V angeschlossen und es funzt nicht.
    nun sehr zufällig habe ich VCC an 5v GND an GND und hab IN1 an GND angeschlossen und es hat geschaltet.

    ist das ein fehler oder werden die tatsächlich über masse gesteuert?

    und wie steuer ich die nun sicher über gpio? auch über transistor nur anders rum?

    MfG Hauschi

    Antworten
    • Hallo Hauschi,
      deine Vermutung ist richtig, die Relais schalten sobald Masse-Potential an den Eingangspins liegt. Deshalb musst du auch den zugehörigen GPIO Pin auf High setzen um den Ruhezustand zu definieren. Soll das Relais jetzt schalten, dann setzt du den GPIO Pin auf Low.
      Beachte bitte das zeitliche Verhalten der GPIOs.
      Normalerweise ist die Abfolge der GPIO Initialisierung so, dass du zuerst den Typ (Input oder Output) definierst und dann einen Wert (High oder Low) zuweist. Dabei ist Low der Default-Wert!
      Sobald du einen GPIO als Output definierst, wird dieser Pin somit automatisch auf Low (Default) gesetzt. Das heißt aber, dass dein Relais sofort anzieht! Dieser Zustand bleibt auch so bis du den Pin aus High setzt.
      Willst du einen solchen Zustand vermeiden, kannst du allerdings die Reihenfolge der Initialisierung ändern:
      Setz zuerst den Wert auf High und dann erst definierst du den Pin als Output. Jetzt bleibt auch das Relais im Ruhezustand bis du explizit den GPIO auf Low setzt.

      HTH
      Gunter

      Antworten
    • ich habs jetzt schon anders gelöst. ich hab nen transistor zw eingangspin und gnd gebaut. und schalte den transistor dann mit nem high signal.
      so hab ich sozusagen aus lowactiv wieder ein highactiv gebastelt und die gpios sind in sicherheit.

      LG Hauschi

      Antworten
  34. Hallo liebe Raspberry PI User,
    möchte dieses Relais über ein Monitor-Panel (Touchscreen-Monitor)schalten, also 4 Taster „Ein“ und 4 Taster „Aus“,
    oder 4 Taster, ein Tasterdruck „Ein“ nächster Tasterdruck „Aus“.
    Kann mir bitte da jemand weiter helfen.
    Besten Dank
    Viele Grüße
    Mexico67

    Antworten
  35. Hallo Felix
    vielen Dank für die schnelle Antwort.
    Das Skript ist in Ordnung funktioniert auch einwandfrei.
    Aber der Taster ist auf dem Beard Board installiert. Wie bekomme ich aber den Taster virtuell
    auf den Touchscreen um per Mausklick die LEDs (Relais) schalten ??
    Viele Grüße
    Mexico67

    Antworten
    • „Aber der Taster ist auf dem Beard Board installiert. Wie bekomme ich aber den Taster virtuell … schalten ??“
      Wie willst du den Schalter per Software schalten? Indem du z.B. einen GPIO schaltest, welcher die Funktion übernimmt. Dafür muss der Schalter aber quasi ersetzt werden, weshalb du Kabel dran löten müsstest. Den GPIO kannst du widerum per GUI schalten. Und nein, ich will dich nicht „vergackeiern“…

      Antworten
  36. Hallo Felix
    super, jetzt haben wir uns gedanklich verstanden. Habe mich ein Bisschen umständlich ausgedrückt. Entschuldigung.
    Vielen Dank für die Info “ GUI schalten“ ist genau das, was ich gesucht habe.
    Viele Grüße
    Mexico67

    Antworten
  37. Ich steuere 8 GPIO Ausgänge über PHP! Funktioniert auch soweit gut.

    Es wurde ja schon oft geschrieben, das man Transistor Schaltungen verwenden sollte damit die Relais auf dem 8-Kanal Relais Modul im Ruhezustand nicht ständig geschaltet sind.

    Gibt es da was fertiges in einer 8-Kanal Variante oder muss man selbst löten?

    Vielen Dank vorab!

    Antworten
    • Hallo Dirk, ja, es ist immer eine gute Idee mit Transistoren zu arbeiten.
      – Die Dinger kosten ein paar Cent, der zerstörte Pi ist um ein vielfaches teurer.
      Ich bekomme immer Bauchweh, wenn ich hier die Ansteuerung dieser 4-, 8-, n- Kanal Relais Module direkt über die GPIOs sehe/lese.

      Such bitte mal nach ULN2803A und schau dich in einschlägigen Mikroelektronikforen* um.

      Suchbegriffe: { Raspberry & Relais & ULN2803 }

      Wenn du nicht weiter kommst, melde dich einfach nochmal.

      WinkeWinke.

      *Das soll keine Schleichwerbung oder SPAM sein, ich möchte nur nicht, dass die Leute ihren Pi zerheizen.

      Antworten
    • So, ich hab das mal im Eilverfahren skizziert.

      Schaltplan Pi & ULN2308A & 8 Relay Module (Modul nur die Kontakte skizziert)

      http://up.picr.de/28448345qj.jpg

      Egal was der Pi beim Booten für Faxen macht, die Ansteuerung der Relais erfolgt nur dann, wenn die GPIOs auf HIGH gehen.

      Bei dem verlinkten Schaltplan:
      Die „scheinbaren“ Ausgänge an dem ULN werden auf GND des ULN gezogen, wenn der entsprechende Eingang (vom GPIO kommend) auf HIGH geht, und auch NUR dann!

      Die paar Cent sollte man investieren und seinen geliebten Pi mit dieser sauberen Lösung schützen.

      Gruß…

      Antworten
      • Hallo,
        ich habe deinen Rat mit dem ULN2803a umgesetzt ,Danke noch für deine
        Zeichnung funktioniert sehr gut ,jedoch mit dem Jumper habe ich nicht hin bekommen,
        wenn ich den abziehe leuchten die LED´s die Relais schalten aber nicht .Die Spannung
        bekommen die 8 Relais über die VCC von der Leiste .Ist das richtig ?

        Danke noch einmal

  38. Ich besuche die Seite regelmäßig und gerne, nur leider nervt mich der „Blog abonnieren“ Dialog der JEDES MAL AUFS NEUE erscheint.

    So langsam regt mich das echt auf. Muss doch nicht sein. Irgendwann meide ich diese Seite komplett.

    Ein „Blog abonnieren“ in der Seitenleiste wäre komplett ausreichend und stört​niemand!

    Antworten
    • Hey,
      löschst du evtl. deine Cookies jedes Mal? Normalerweise sollte das Popup nach dem Schließen für die nächsten 30 Tage deaktiviert sein (sofern Cookies aktiviert sind).

      Antworten
  39. Servus,

    ich mich nun durch einiges an Text gekämpft. Vielen Dank für den Support und die Tutorials vorab!

    Ich möcht eine 12V Pumpe mittels Relais steuern und externem 12V Netzteil.
    Schaltung wie hier verkabelt https://youtu.be/xIQI4haTSPE

    Mich wundert das der Jumper zur Trennung nicht gezogen bzw. umgesteckt scheint. 5V vom Pi an das Relais und 12V über die Relais Klemme direkt zur Pumpe.

    Wie ist die Funktion des Jumpers? Was passiert beim umstecken auf GND und was beim abziehen?

    Vielen Dank im Voraus!

    Antworten
  40. Hallo Felix,

    ich habe nun schon einige 2x Relais ausprobiert und so angeschlossen wie oben beschrieben.
    VCC auf Pin1 3,3V
    GND auf Pin6
    Input1 auf Pin11

    Aber kein Relais schaltet. Habe auf Pin 11 eine LED zwischengeschaltet und die leuchtet wenn ich auf Pin 11 ein High gebe.
    Wenn ich , wie weiter oben gelesen aber den Eingangspin des Relais Boards auf einen 2. GND vom RPI lege, dann schaltet das Relais jedes Mal ohne Probleme.
    Also VCC=3,3V , GND auf Pin6 und Input1 (auch mit 2 getestet, immer das Selbe) auf GND Pin25 und das Relais schaltet.
    Woran kann das liegen, weiß nicht mehr so richtig weiter.

    Antworten
  41. Habe mir dieses Relais geholt: https://www.amazon.de/gp/product/B005WR72S4
    Ist das gleiche wie im Bild oben. Es funktioniert soweit auch theoretisch. Die LEDs gehen beim Schalten auch an und aus, ich höre beim Schalten auch einmal ein leises klacken, aber das Relais schaltet nicht. Der Strom fließt immer nur bei einem Kontakt. Mache ich etwas falsch oder ist das Board defekt? Habe es an 2 der 4 Relais getestet.

    Antworten
  42. Hallo Felix ,

    ich habe 8 von den Relais die möchte ich über die Tastatur schalten z.B bei Taste 1 Relai 1 und 2 Relai 2…… .Ich bin nicht ganz so fit in Python bin Anfänger .
    Hättest Du einen Tipp ,Danke für die Antwort.

    Udo

    Antworten

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.