Module – RELAIS – Schakelen
Hardware
Met de relaismodule kun je apparaten aansturen met een groter vermogen, bijvoobeeld een lamp of motor van 230V:
Deze relais zijn eenvoudig aan te sturen met het hoog of laag maken van een digitale in/uitgang van de Arduino, er zijn modules met low en high level (of combi) triggers in omloop:
High level trigger:
– Relais AAN (bekrachtigd) = Digitale uitgang hoog
– Relais UIT (bekrachtigd) = Digitale uitgang laag
Low level trigger:
– Relais AAN (bekrachtigd) = Digitale uitgang laag
– Relais UIT (bekrachtigd) = Digitale uitgang hoog
Pinout
Relais module pin: | Functie: |
---|---|
GND | GND |
VCC | +5V |
S | trigger |
S{n} | trigger{n} |
Galvanisch scheiden
Dit geld voor de modellen met een optocoupler ertussen (rechthoekige blokjes)
Het is mogelijk om de stroomkring van de microcontroller te scheiden met de relais op de module, dat doe je door op JD-vcc een aparte voeding aan te sluiten om de relais op de module te voeden, op VCC kan je dan de +5v voeding van een microcontroller aansluiten, je haalt voor deze opstellen de jumper eraf en verbreekt VCC-JDvcc.
Dat geeft:
- Niet gescheiden (zelfde voeding) = VCC-JDvcc gekoppeld (dmv jumper)
- Gescheiden (aparte voeding) = VCC-JDvcc NIET gekoppeld.
LET OP: Zet nooit GND-VCC of GND-JDvcc aan elkaar!!
Arduino
Sluit de module aan volgens onderstaand overzicht:
Relais module pin: | Arduino Pin: |
---|---|
GND | GND |
VCC | +5V |
S | D10 |
S{n} | D{n} |
LET OP: Sommige relais modules hebben relais van 12v deze moeten apart gevoed worden en kunnen niet gevoed worden via de arduino, ook is het vaak raadzaam om altijd een externe voeding te gebruiken i.v.m. de stroom door het relais.
Ps. bij boards met meer dan 2 relais (bijvoorbeeld 8 of 16) is het niet verstandig om deze via de Arduino te voeden ivm met de stroom die er gaat lopen, schakelen je alleen 1 of 2 relais, dan zou het nog net gevoed kunnen worden via de arduino.
Script
1 2 3 4 5 6 7 8 9 10 |
void setup() { pinMode(10, OUTPUT); } void loop() { digitalWrite(10, HIGH); // Relais UIT delay(1000); // wacht een seconde digitalWrite(10, LOW); // Relais AAN delay(1000); // wacht een seconde } |
Raspberry Pi
Sluit de module aan zoals aangegeven op onderstaand schema:
Relais module pin: | Arduino Pin: |
---|---|
GND | GND |
VCC | +5V |
S | D10 |
S{n} | D{n} |
LET OP: Sommige relais modules hebben relais van 12v deze moeten apart gevoed worden en kunnen niet gevoed worden via de Raspberry Pi.
Ps. bij relais boards met meer dan 2 relais (bijvoorbeeld 8 of 16) is het niet verstandig om deze via de Raspberry Pi te voeden ivm de stroom die er gaat lopen, schakelen je alleen 1 of 2 relais, dan zou het nog net gevoed kunnen worden via de arduino.
2+ Relais board
In dit script is de relais module aangesloten op GPIO pin 23 + 24.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#!/bin/python # importeer de GPIO bibliotheek. import RPi.GPIO as GPIO # Importeer de time biblotheek voor tijdfuncties. from time import sleep # Zet de pinmode op Broadcom SOC. GPIO.setmode(GPIO.BCM) # Zet waarschuwingen uit. GPIO.setwarnings(False) # Zet de GPIO pin als uitgang. GPIO.setup(23, GPIO.OUT) GPIO.setup(24, GPIO.OUT) try: while True: GPIO.output(23, GPIO.HIGH) # Zet relais #1 uit. sleep(.5) # Wacht een halve seconde. GPIO.output(24, GPIO.HIGH) # Zet relais #2 uit. sleep(.5) # Wacht een halve seconde. GPIO.output(23, GPIO.LOW) # Zet relais #1 aan. sleep(.5) # Wacht een halve seconde. GPIO.output(24, GPIO.LOW) # Zet relais #2 aan. sleep(.5) # Wacht een halve seconde. except KeyboardInterrupt: # gebruikte GPIO kanalen netjes afsluiten. GPIO.output(23, GPIO.HIGH) # Zet relais #1 uit. GPIO.output(24, GPIO.HIGH) # Zet relais #2 uit. |
1-Relais board
Script voor een 1-relais board mocht bovenstaande code niet goed werken ivm de 3.3v van de Raspberry Pi GPIO pin (ipv 5v), bijvoorbeeld als het relais niet uit gaat, heb ik deze code bedacht, hiervoor heb je geen extra hardware componenten nodig.
Ps. de 2+ relais borden werken met optocouplers en kunnen 3-5 voltages aan!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#!/bin/python # importeer de GPIO bibliotheek. import RPi.GPIO as GPIO # Importeer de time biblotheek voor tijdfuncties. from time import sleep # Zet waarschuwingen uit. GPIO.setwarnings(False) try: while True: # Zet het relais AAN. # Zet de pinmode op Broadcom SOC. GPIO.setmode(GPIO.BCM) # Zet de GPIO pin als uitgang. GPIO.setup(4, GPIO.OUT) GPIO.output(4, GPIO.LOW) # Wacht een seconde. sleep(1) # Zet het relais UIT. GPIO.cleanup() # Wacht een seconde. sleep(1) except KeyboardInterrupt: # GPIO netjes afsluiten. GPIO.cleanup() |
Voorkom inschakelingen bij het opstarten
Bij het opstarten van de Raspberry Pi worden de GPIO pinnen LAAG gezet, resulterende dat de relais worden INGESCHAKELD, men kan dit grotendeels voorkomen door bij het opstarten de pinnen HOOG te zetten.
VOORBEELD: 2 Relais op GPIO 20 en 21
Maak hiervoor een BASH script, een bestand aan genaamd gpiosetup.sh en plaats deze in de home folder (/home/pi) met de volgende inhoud
1 2 3 4 5 6 7 8 9 |
#!/bin/sh /usr/bin/gpio write 20 1 /usr/bin/gpio write 21 1 /usr/bin/gpio mode 20 output /usr/bin/gpio mode 21 output echo "GPIO ports setup" |
Zet dan een regel onderaan in /etc/rc.local om dit bestand te starten bij het opstarten:
/home/pi/setupgpio.sh
Het kan ook met 1 commando gedaan worden m.b.v. sed:
sudo sed -i -e '$i \/home/pi/setupgpio.sh\n' /etc/rc.local
($ betekend de laatste lijn, i betekend voor de huidige lijn, zodoende is $i invoegen voor de laatste lijn.)
Nu zullen de GPIO pinnen HOOG blijven.
ESP8266
Sluit de module aan volgens onderstaand schema:
Script voor NodeMCU
Wat heb je nodig?
1) ESPlorer IDE
Open ESPlorer en maak connectie, gebruik de volgende code om een relais op een gpio pin IN te schakelen:
1 2 3 |
local pin = 4 -- GPIO2 gpio.mode(pin, gpio.OUTPUT) -- zet pinmode als uitgang gpio.write(pin, gpio.LOW) -- Schakel het relais AAN. |
Sla het bestand op als relaisaan.lua en upload deze via ESPlorer, de code hieronder kun je uploaden als relaisuit.lua:
1 2 3 |
local pin = 4 -- GPIO2 gpio.mode(pin, gpio.OUTPUT) -- zet pinmode als uitgang gpio.write(pin, gpio.HIGH) -- Schakel het relais UIT. |
Schakel het relais doormidden van de bestanden te openen:
dofile("relaisaan.lua") en dofile("relaisuit.lua")
Om te voorkomen dat de uitgangen LAAG staan (relais AAN) bij het opstarten van de module, kan je het bestand init.lua aanmaken met de volgende inhoud om de relais uit te schakelen bij het opstarten:
1 2 3 |
local pin = 4 -- GPIO2 gpio.mode(pin, gpio.OUTPUT) -- zet pinmode als uitgang gpio.write(pin, gpio.HIGH) -- Schakel het relais UIT. |
Afmetingen
GEEN GEGEVENS
Schema
Teardown
GEEN GEGEVENS
Datasheet
GEEN GEGEVENS
Fritzing
- Relay 1x module keyes.fzpz 37,70 kb
- 2_Channel_Power_Relay.fzpz 147,28 kb
Downloads
GEEN GEGEVENS