Raspberry Pi - Knop - Relais

Deze tutorial legt uit hoe u de Raspberry Pi en een knop gebruikt om een relais aan te sturen. Door het relais te verbinden met een solenoïde slot, lamp, LED-strip, motor of actuator..., kunnen we deze met een knop bedienen. We leren twee verschillende toepassingen kennen:

Toepassing 1 - De stand van het relais is gesynchroniseerd met de stand van de knop. In detail:

Toepassing 2 - De stand van het relais wordt bij elke druk op de knop omgeschakeld. Meer specifiek:

Bij Toepassing 2 moeten we de knop 'ontbouncen' om ervoor te zorgen dat het goed werkt. We zullen zien waarom dit belangrijk is door het gedrag van het relais te vergelijken bij gebruik van Raspberry Pi code met en zonder ontbouncen van de knop.

Over Relay en Knop

Als u niet bekend bent met relais en knop (inclusief pinout, werking en programmeren), kunnen de volgende tutorials u helpen:

Bedrading Schema

Raspberry Pi Knop relais bedrading schema

This image is created using Fritzing. Click to enlarge image

Toepassing 1 - De relaisstand is gesynchroniseerd met de knopstand

Snelle Stappen

  • Zorg dat u Raspbian of een ander Raspberry Pi compatibel besturingssysteem op uw Pi hebt geïnstalleerd.
  • Zorg dat uw Raspberry Pi verbonden is met hetzelfde lokale netwerk als uw pc.
  • Zorg dat uw Raspberry Pi verbinding heeft met internet als u libraries moet installeren.
  • Als dit de eerste keer is dat u een Raspberry Pi gebruikt, zie hoe u de Raspberry Pi installeert
  • Verbind uw pc via SSH met de Raspberry Pi, gebruik daarbij de ingebouwde SSH-client in Linux en macOS of PuTTY in Windows. Zie hoe u uw pc via SSH verbindt met Raspberry Pi.
  • Controleer of u de RPi.GPIO library geïnstalleerd heeft. Zo niet, installeer deze dan met het volgende commando:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Maak een Python-scriptbestand aan met de naam button_relay.py en voeg de volgende code toe:
# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/tutorials/raspberry-pi/raspberry-pi-button-relay import RPi.GPIO as GPIO # Constants won't change. They're used here to set pin numbers: BUTTON_PIN = 18 # The number of the pushbutton pin RELAY_PIN = 16 # The number of the relay pin # Variables will change: button_state = 0 # Variable for reading the pushbutton status # Set up GPIO GPIO.setmode(GPIO.BCM) # Use BCM GPIO numbering GPIO.setup(RELAY_PIN, GPIO.OUT) # Initialize the relay pin as an output GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Initialize the pushbutton pin as a pull-up input try: while True: # Read the state of the pushbutton value: button_state = GPIO.input(BUTTON_PIN) # Control relay according to the state of the button if button_state == GPIO.LOW: # If the button is pressed GPIO.output(RELAY_PIN, GPIO.HIGH) # Turn on relay else: # Otherwise, the button is not pressed GPIO.output(RELAY_PIN, GPIO.LOW) # Turn off relay except KeyboardInterrupt: # Clean up GPIO on program exit GPIO.cleanup()
  • Sla het bestand op en voer het Python-script uit met het volgende commando in de terminal:
python3 button_relay.py
  • Druk op de knop en houd deze een paar seconden ingedrukt.
  • Bekijk de verandering in de staat van het relais.

U zult zien dat de relaisstand synchroon loopt met de status van de knop.

Het script draait in een oneindige lus tot u Ctrl + C in de terminal drukt.

Code Uitleg

Bekijk de regel-voor-regel uitleg in de comments van de broncode!

Toepassing 2 - Knop schakelt Relais

Snelle Stappen

  • Maak een Python-scriptbestand met de naam button_toggle_relay.py en voeg de volgende code toe:
# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/tutorials/raspberry-pi/raspberry-pi-button-relay import RPi.GPIO as GPIO import time # Constants won't change BUTTON_PIN = 18 # The number of the pushbutton pin RELAY_PIN = 16 # The number of the relay pin # Variables will change relay_state = GPIO.LOW # The current state of the relay prev_button_state = GPIO.LOW # The previous state of the button button_state = GPIO.LOW # The current state of the button # Set up GPIO GPIO.setmode(GPIO.BCM) # Use BCM GPIO numbering GPIO.setup(RELAY_PIN, GPIO.OUT) # Initialize the relay pin as an output GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Initialize the pushbutton pin as a pull-up input try: while True: # Read the state of the pushbutton value prev_button_state = button_state # Save the last state button_state = GPIO.input(BUTTON_PIN) # Read new state if prev_button_state == GPIO.HIGH and button_state == GPIO.LOW: time.sleep(0.1) # 100 milliseconds debounce time print("The button is pressed") # Toggle the state of the relay if relay_state == GPIO.LOW: relay_state = GPIO.HIGH else: relay_state = GPIO.LOW # Control relay according to the toggled state GPIO.output(RELAY_PIN, relay_state) except KeyboardInterrupt: # Clean up GPIO on program exit GPIO.cleanup()
  • Sla het bestand op en voer het Python-script uit met het volgende commando in de terminal:
python3 button_toggle_relay.py
  • Druk meerdere keren op de knop en laat deze weer los.
  • Bekijk de verandering in de staat van het relais. U zult zien dat de relaisstand verandert telkens wanneer u op de knop drukt.

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!