Raspberry Pi - Bewegingssensor - Servo Motor

Deze handleiding legt uit hoe u met een Raspberry Pi en een bewegingssensor een servo motor kunt aansturen. In detail:

Dit kunt u toepassen in een automatiseringsproces dat acties activeert bij het detecteren van menselijke aanwezigheid.

Hardware Benodigd

1×Raspberry Pi 5
1×HC-SR501 Bewegingssensor
1×Servomotor
1×Jumper Draden
1×(Aanbevolen) Schroefklem Block Shield voor Raspberry Pi
1×(Aanbevolen) Raspberry Pi Prototyping Basisplaat & Breadboard Kit
1×(Aanbevolen) HDMI-Touchscreen-Monitor voor Raspberry Pi

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over Servo Motor en Bewegingssensor

Als u niet vertrouwd bent met servo motoren en bewegingssensoren (inclusief pinout, werking en programmering), kunnen de volgende tutorials u helpen:

Bedradingsschema

Raspberry Pi Bewegingssensor Servo Motor bedrading schema

This image is created using Fritzing. Click to enlarge image

Let op dat het hierboven getoonde bedrading schema alleen geschikt is voor een servo motor met een laag koppel. Als de motor trilt in plaats van draait, dient u een externe voeding te gebruiken om meer vermogen aan de servo motor te leveren. Hieronder wordt het bedrading schema met externe voeding voor de servo motor getoond.

TOE TE VOEGEN AFBEELDING

Vergeet niet om de GND van de externe voeding te verbinden met de GND van de Raspberry Pi.

Initiële Instelling

Time Delay Adjuster Draai deze volledig tegen de klok in.
Detection Range Adjuster Draai deze volledig met de klok mee.
Repeat Trigger Selector Plaats de jumper zoals op de afbeelding te zien is.
arduino bewegingssensor initiële instelling

Raspberry Pi Code - Bewegingssensor bestuurt Servo Motor

Snelle Stappen

  • Zorg dat u Raspbian of een ander Raspberry Pi compatibel besturingssysteem op uw Pi geïnstalleerd heeft.
  • Zorg dat uw Raspberry Pi verbonden is met hetzelfde lokale netwerk als uw PC.
  • Zorg dat uw Raspberry Pi met internet verbonden is als u eventueel libraries moet installeren.
  • Gebruikt u voor het eerst een Raspberry Pi? Bekijk dan de handleiding voor het instellen van de Raspberry Pi.
  • Verbind uw PC met de Raspberry Pi via SSH, gebruikmakend van de ingebouwde SSH-client op Linux en macOS of PuTTY op Windows. Zie hoe u uw PC verbindt met Raspberry Pi via SSH.
  • Zorg dat de RPi.GPIO library geïnstalleerd is. Als dit niet het geval is, 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 motion_sensor_servo.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-motion-sensor-servo-motor import RPi.GPIO as GPIO import time # Constants won't change MOTION_SENSOR_PIN = 14 # Raspberry Pi GPIO pin connected to the OUTPUT pin of the motion sensor SERVO_PIN = 12 # Raspberry Pi GPIO pin connected to the servo motor # Variables will change angle = 0 # The current angle of the servo motor prev_motion_state = None # The previous state of the motion sensor motion_state = None # The current state of the motion sensor # Setup GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(MOTION_SENSOR_PIN, GPIO.IN) GPIO.setup(SERVO_PIN, GPIO.OUT) # Create PWM instance for servo servo_pwm = GPIO.PWM(SERVO_PIN, 50) # 50 Hz frequency # Initialize servo position servo_pwm.start(0) try: while True: prev_motion_state = motion_state # Save the last state motion_state = GPIO.input(MOTION_SENSOR_PIN) # Read new state if motion_state == GPIO.LOW and prev_motion_state == GPIO.HIGH: print("Motion detected!") servo_pwm.ChangeDutyCycle(7.5) # Adjust duty cycle for 90 degrees elif motion_state == GPIO.HIGH and prev_motion_state == GPIO.LOW: print("Motion stopped!") servo_pwm.ChangeDutyCycle(2.5) # Adjust duty cycle for 0 degrees time.sleep(0.1) # Add a small delay to avoid rapid sensor readings except KeyboardInterrupt: servo_pwm.stop() GPIO.cleanup()
  • Sla het bestand op en start het Python-script door het volgende commando in de terminal te typen:
python3 motion_sensor_servo.py
  • Maak een zwaaibeweging voor de sensor.
  • Bekijk de verandering in de hoek van de servo motor.

Het script draait in een oneindige lus totdat u Ctrl + C indrukt in de terminal.

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.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u het proces stap voor stap te volgen.

※ 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!