IoT Relais-Steuerung mit dem Raspberry Pi: So funktioniert’s

IoT Relais-Steuerung mit dem Raspberry Pi: So funktioniert’s

IoT / Smart Tech, Raspberry Pi
12 August 2020

Mit Relaiskarten lassen sich viele tolle Anwendungen realisieren, die du unbedingt ausprobieren solltest. Dieser Beitrag hilft dir bei deinen ersten Schritten der Relais-Steuerung!

Bei einem Relais handelt es sich um elektromagnetische bzw. elektromechanische Schalter, die meist über zwei Schaltregelungen (0/1) verfügen. Sie werden zum Ein-, Aus- und Umschalten von Stromkreisen genutzt. Auch und vor allem für Projekte im Bereich Internet of Things haben sich die Module als äußerst praktisch erwiesen. Der Vorteil dabei: Durch ein Relais kannst du mit deinem Raspberry Pi auch Module mit einer höheren Spannung steuern. Ohne Relais bekommt dein Pi bei maximal 5 Volt Probleme, seine GPIOs vertragen gar nur 3,3 Volt. Mit einem Relais-Modul müsst du hingegen nicht befürchten, dass dein Rechner durchbrennt. Wir zeigen dir die wichtigsten Grundlagen, die es braucht, um ein 4-Kanal-Relais-Modul mit einem Raspberry Pi zu steuern, mithilfe von HTML ein Web Interface zu bauen und mit Flask Framework einen Webserver zu erstellen.

Das brauchst du für dein Projekt Relais-Steuerung

  • Raspberry Pi 3 oder 4: Der vielfältig einsetzbare Minirechner besteht aus einer Platine, die nicht größer ist als eine Kreditkarte. Er dient als Steuerungsplattform.
  • 4-Kanal Relais Modul oder 8-Kanal Relais Modul: Dieses Bauelement wird mit dem Raspberry Pi verbunden. Sämtliche Anschlüsse, die das Ansteuern der Relais ermöglichen, sind auf einer Stiftleiste angebracht. Der Anschluss an die Relais wird mit Schraubklemmen hergestellt.
  • Draht Jumper Kabel für Raspberry Pi & Arduino: (Female To Female, 6 Stück): Mit diesen Dupont Kabeln kannst du deinen Raspberry Pi kinderleicht mit dem 4-Kanal Relais Modul verbinden.
  • Raspberry OS: Das eigens für die Raspberry Pi Reihe entwickelte Betriebssystem ist essentiell für das Projekt.
  • Python 3: Die Programmiersoftware wird benötigt, um die für das Projekt erforderlichen Codes einzugeben.
  • Flask Framwork: Das in Python geschriebene Micro-Webframework verfügt über nützliche Tools und Funktionen für dein Projekt.
WARENKORB

Alle für dieses Projekt notwendigen Artikel landen mit einem Klick auf den Button direkt in deinem Warenkorb, sofern sie in unserem Shop verfügbar sind. Kontrolliere daher deinen Warenkorb genau!

Vier-Kanal Relaiskarte mit Raspberry Pi 4.Relais-Steuerung Projekt.
Vier-Kanal Relaiskarte mit Raspberry Pi 4.

Organisation ist das A und O: So realisierst du dein Projekt ganz leicht

  • Um später einen Webserver erstellen zu können, musst du zunächst Flask auf deinem Raspberry Pi installieren. Gebe dazu im Terminal Folgendes ein:
sudo apt-get install python3-pip &&
sudo apt-get install build-essential python-dev &&
sudo apt-get install python3-dev python3-rpi.gpio && 
sudo apt-get install python3-flask
  • Du möchtest mit einem neuen Projekt loslegen? Dann solltest du erst einmal einen neuen Ordner erstellen, in dem du alle relevanten Dateien organisiert ablegen kannst. So solltest du auch bei diesem Projekt vorgehen.
mkdir Projekt
  • Am besten erstellst du in diesem Ordner noch ein oder zwei weitere Unterordner. Einer der beiden sollte für CSS geeignet und daher statisch sein. In dem anderen Unterordner kannst du JavaScript-Dateien und Vorlagen für HTML-Dateien ablegen.
cd Projekt
mkdir templates 
  • Der neu erstellte Ordner “Projekt” dient zur Speicherung des in Python geschriebenen Code, den wir oben angeführt haben, unter dem Namen relais.py.
  • In dem darin befindlichen Unterordner “templates” legst du den in HTML geschriebenen Code unter dem Namen index.html ab.

Die Ordnerstruktur sieht nun wie folgt aus:

/Projekt
        relais.py
       /templates
               index.html

Um ein Web Interface zu kreieren und einen Webserver zu erstellen, sind ein in HTML verfasster Index-Code sowie der in Python geschriebene Relais-Code erforderlich. Diese stellen wir dir nachfolgend gerne zur Verfügung.

Es existieren zwei Möglichkeiten wie du den Code auf deinen Raspberry Pi bekommst. Entweder du tippst den Code direkt mit Hilfe von “vim” in den Terminal deines Pi’s ein, oder du kopierst den Code von deinem Computer auf den Pi. Beide Alternativen erklären wir dir unterhalb der Codebeispiele.

Der HTML geschriebene Index-Code lautet:

<!DOCTYPE html>
<html>
            <head>
                        <title>IOT Relais Steurung</title>
                        <meta name="viewport" content="width=device-width, initial-scale=1">
            </head>
<style>
table ,td, tr {
                        width: 30%;
}
</style>
            <body>
 
               <table style="float:right; width:100%; max-width: 400px; height:300px;">
                 <tr style="text-align:center">
                    <td >
			    <h4 style="text-align: center; color:Tomato"><center>IOT Relais Steurung<center></h4>
                            </td>                 
                 <tr>
                 <tr>
                             <td style="text-align: center">
                                    <form action="/1" method="POST">
                                  <button id="1" class="rel">Relais1</button>
                                  </br>
                                </form>
                             </td>
                 <tr>
	             <tr>
                             <td style="text-align: left">
				     <form action="/2" method="POST">
                                     <button id="2" class="rel">Relais2</button>
                                     </br>
                                </form>
                             </td>
	         
                             <td style="text-align: right">
                                    <form action="/4" method="POST">
                                     <button id="4" class="rel">Relais4</button>
                                  </br>
                                    </form>
                             </td>
                             <td >
                                    <form action="/5" method="POST">
                                     <button id="5" class="rel">AUS</button>
                                      </br>
                                    </form>
                     	     </td>                          
                 <tr>
                 <tr>
                             <td style="text-align: center">
                                    <form action="/3" method="POST">
                                     <button id="3" class="rel">Relais3</button>
                                     </br>
                                </form>
                             </td>
                 </tr>

               </table>
	
        </body>
</html>

Der in Python geschriebene Relais-Code lautet folgendermaßen:

from flask import Flask, render_template, request, redirect, url_for, make_response
import time
import RPi.GPIO as GPIO


pin1 =32                        #Relais Pins Nummer
pin2 =16
pin3 =18
pin4 =22


GPIO.setmode(GPIO.BOARD)        #GPIO MODE

GPIO.setup(pin1,GPIO.OUT)       #Alle Relais Pins als OUTPUT 
GPIO.setup(pin2,GPIO.OUT)
GPIO.setup(pin3,GPIO.OUT)
GPIO.setup(pin4,GPIO.OUT)

GPIO.output(pin1 , 1)    
GPIO.output(pin2 , 1)
GPIO.output(pin3 , 1)
GPIO.output(pin4 , 1)


app = Flask(__name__)            #Flask Server einrichten 

#Rückgabe der Seite index.html wenn die IP-Adresse ausgewählt ist

@app.route('/')
def index():
    return render_template('index.html')

#Jeder HTML-Taster ergibt einen Nummer zurück

@app.route('/<changepin>', methods=['POST'])

def reroute(changepin):
    
    changePin = int(changepin)   #cast changepin to an int
    
    if changePin == 1:           
        print ("Relais1")        #Relais1 AN
        GPIO.output(pin1 ,0)     #Low-Pegel

    elif changePin == 2:
        print ("Relais2")        #Relais2 AN
        GPIO.output(pin2 ,0)
        
    elif changePin == 3:
        print ("Relais3")        #Relais3 AN
        GPIO.output(pin3 ,0)

    elif changePin == 4:
        print ("Relais4")        #Relais4 AN
        GPIO.output(pin4 ,0)
    else:   
        print("Off")             #Alle Relais AUS
        GPIO.output(pin1 , 1)
        GPIO.output(pin2 , 1)
        GPIO.output(pin3 , 1)
        GPIO.output(pin4 , 1)
    
    response = make_response(redirect(url_for('index')))
    
    return(response)

app.run(debug=True, host='0.0.0.0', port=8000) #Einrichten des Servers im Debug-Modus für Port 8000

So bekommst du den Code auf deinen Raspberry Pi

Möglichkeit 1: Bearbeite deinen Code direkt auf dem Pi:

Installiere zunächst “Vim” auf deinem Pi. Mit Vim kannst du Dateien innerhalb deines Terminals bearbeiten.

sudo apt-get install vim 

Um den Code auf deinen Raspberry Pi zu bekommen, springst du im Terminal zunächst in den für die jeweilige Datei relevanten Ordner, den du zuvor angelegt hast.

/Projekt
        relais.py
       /templates
               index.html

Um in den richtigen Ordner zu springen sind die folgenden Befehle hilfreich:

ls # Auflistung der Verzeichnisse sowie Inhalte
cd # Wechsel des Verzeichnisses 

Im jeweiligen Verzeichnis erstellst du nun die Dateien mit den folgenden Befehlen:

cat > relais.py # dieser Befehl erstellt eine Python-Datei mit dem Namen relais.py
cat > index.html # dieser Befehl erstellt eine HTML-Datei mit dem Namen Index.html

Nun öffnest du mit dem Befehl vim eine der beiden Dateien und kopierst den Code in die Datei.

vim relais.py # dieser Befehl öffnen die relais.py Datei um sie zu bearbeiten

Möglichkeit 2: Kopiere deinen Code vom Notebook auf den Pi:

Wir empfehlen den Code von deinem Notebook aus auf deinen Pi zu kopieren, da dies deutlich einfacher ist. Dabei gehst du wie folgt vor:

Aktiviere den SSH Zugriff in der Konfiguration des Raspberry Pi. Mit dem folgenden Befehl gelangst du in die Konfiguration deines Raspberrys, wo du den SSH-Zugriff aktivieren kannst:

sudo raspi-config # diesen Befehl musst du im Terminal deines Raspberrys eingeben

Nun musst du dir noch WinSCP herunterladen und auf deinem Notebook installieren. Dies kannst du hier machen.

Solltest du auf deinem Laptop Linux nutzen, lade dir bitte FileZilla anstatt WindSCP herunter. Das kannst du hier machen.

Folgende Angaben/Einstellungen sind bei deinem SSH-Client eventuell zu ändern:

Host : hier musst du die IP-Adresse oder DynDNS Domain deines Pis angeben.
username : pi (unter raspian)
password: raspberry 
SSH-Port: 22

Wenn du die richtige IP-Adresse deines Raspberry Pi nicht kennst, benötigst du unter Windows einen IP-Scanner wie etwa den “Advanced IP Scanner”. Unter Linux kannst du die IP deines Pis folgendermaßen herausfinden.

ping raspberrypi.local

Alternativ kannst du auch arp-scan verwenden. Arp-Scan wird folgendermaßen auf deinem Linuxsystem installiert.

sudo apt-get update 
sudo apt-get install arp-scan

Um arp-scan zu öffnen gibst du folgenden Befehl in den Terminal ein:

sudo arp-scan -l

Nachdem du dein Notebook mit dem Raspberry verbunden hast, kannst du nun auf deinen Pi zugreifen.

So verbindest du deinen Raspberry Pi mit dem 4-Kanal Modul

Nicht weniger wichtig als die richtige Programmierung der Software ist die Hardware für dein Projekt. Damit sich das 4-Kanal Modul reibungslos steuern lässt, bedarf es einiger Kniffe. Beim Raspberry Pi liegen die GPIOs (General Purpose Input Output) als Pin in Form einer Stiftleiste vor. Über die oben genannten Draht Jumper Kabel lässt sich der Rechner mit dem 4-Kanal Modul verbinden. Dabei ist es wichtig, dass du stets die richtigen Ein- und Ausgänge verwendest. Die Tatsache, dass die Pins auf dem Modul jeweils mit einer eigenen Bezeichnung versehen wurden, erleichtert dir jedoch die Zuordnung erheblich. Die individuellen Eigenschaften der jeweiligen Pins deines Raspberry Pi kannst du der Produktbeschreibung entnehmen.

Diese solltest du dir auch aufmerksam durchlesen, damit du sowohl für deinen Rechner als auch für das Modul das richtige Equipment verwendest. Denn: So manche Module sind nur für bestimmte Kenngrößen und Volt-Grenzwerte geeignet. Wenn du ein elektrisches Bauteil wie zum Beispiel ein Kabel verwendest, das nicht für dein System geeignet ist, wird die Schaltung möglicherweise nicht funktionieren, und im schlimmsten Fall kann das ganze System Schaden nehmen.

Die Funktion der Kanäle ist relativ simpel erklärt: Jeder einzelne Kanal ist in der Lage, einen bestimmten Zustand zu steuern. Je nachdem, welches Vorhaben du mit dem Relais realisieren möchtest und wie komplex sich dieses gestaltet, bietet sich also auch ein Modul mit mehr oder weniger als vier Kanälen an.

Verschaltung 4-Kanal Relaiskarte mit dem Raspberry Pi 4. Relais-Steuerung
Schaltung 4-Kanal-Relaiskarte und Raspberry Pi 4.

Das 8-Kanal Relaiskarte unterschiedet sich von der kleineren Version nur durch die zusätzlichen Pins IN5 bis IN8, die zu den vier zusätzlichen Relais gehören.

So steuerst du deine Relais

Jetzt möchtest du natürlich deine Relais steuern und spannende Anwendungen realisieren. Um das Programm auf dem Pi zu starten gib folgenden Befehl in den Terminal deines Raspberrys ein:

python 3 relais.py

Wen du lokal vom Pi die grafische Benutzeroberfläche zur Steuerung der Relais laden möchtest gib folgendes in deinen Browser ein: 0.0.0.0:8000

Solltest du dieses vom Smartphone oder vom Notebook durchführen, musst du die Ip Adresse deines Raspberry Pis eingeben plus den Port: Beispielsweise 192.168.1.14:8000

Wenn du nun die Ip-Adresse deines Raspberry zusammen mit dem Port in deinen Browser eingibst siehst du folgendes Interface:

Interface zum Steuern der Relais.Relais-Steuerung Projekt.
Interface zum Steuern der Relais

Selbstverständlich kannst du dein Interface zur Relais-Steuerung noch schöner gestalten, indem du die index.html Datei bearbeitest und entweder CSS intern oder als externe Datei hinzufügst.

Wo findet die Relais-Steuerung Anwendung?

Relais werden in ganz unterschiedlichen Bereichen eingesetzt. Im industriellen Gewerbe werden sie häufig in Schaltschränken großer Maschinenhallen genutzt. Zudem sind die praktischen Schalter unter anderem in der elektronischen Steuerung von Fahrzeugen verbaut. Relais dienen hier beispielsweise als Taktgeber für Blinker und Scheibenwischer, stellen aber auch bei der Steuerung der Benzinpumpe einen wichtigen Faktor dar.

Besonders weit verbreitet ist die Relais-Steuerung jedoch als wichtige Komponente bei Alarmanlagen, genauer gesagt bei der Umsetzung von Sicherheitsschaltungen. Aber auch als praktische Hilfe im privaten Haushalt finden Relais Anwendung. Insbesondere bei der zentralen Steuerung von Beleuchtung und Rollläden hat sich die Technologie als clevere Lösung erwiesen. Die Vorteile der Schaltvorrichtung: In der Regel erwärmen sich Relais nur in geringem Ausmaß und benötigen daher keine Kühlung. Zudem sind Relais verhältnismäßig günstig und leicht zu verbauen.

Herlichen Glückwunsch, deine Relais-Steuerung ist nun fertig!

Wir wünschen dir viel Spaß mit deinen Projekten zum Thema Relais-Steuerung. Alle bei uns im Shop erhältlichen Relaiskarten findest du hier.

Dein BerryBase-Team!

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 4.3 / 5. Anzahl Bewertungen: 6

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Kommentare

    1. Das funktioniert auch mit einem Raspberry Zero.
      Aber statt python 3 relais.py
      sollte man python3 relais.py verwenden.
      Die Relais funktionieren bei mir nur richtig mit einem Treiber-Transistor.
      Vermutlich ist die Stromstärke der GPIO zu gering.

  1. Danke für den Beitrag … und das Schaltbild.
    Wie groß ist den der Vorwiderstand vom Optokoppler?
    In anderen Beiträgen wurde der Koppler mit 3,3V versorgt und der JD-VCC-Anschluss, bei geöffneten Jumper, geht an die 5V vom Raspberry.
    Ein Widerstand zusätzlich zu den Optokoppler hilft zu mindestens Strom zu sparen …

  2. Bei der dargestellten Verkabelung wird doch das Relais mit 5V bestromt. Damit zerstört man sich doch die GPIOs des RPI soweit es mir bekannt ist => probiert habe ich es noch nie 😉

Hinterlasse ein Kommentar

XHTML: Sie können diese Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>