webwinkelkeur logo

4.7 Ø

5139+ Bewertungen
webwinkelkeur logoAlle ansehen

5139+ Bewertungen

5139+ Bewertungen

Bestellen bis 16:00 Uhr für Versand am selben Tag

14 Tage Rückgabe

DE

Privat

Geschäftlich

GPIO-Projekt 8 – Soundgesteuerter Motor

Anfänger
30 Minuten
114,90

In diesem Projekt lernen Sie, wie Sie mit einem Geräuschsensor (im GPIO-Kit enthalten ) einen Motor steuern. Der Geräuschsensor erkennt Geräusche (beispielsweise ein Klatschen) und sendet ein Signal an den Raspberry Pi , der einen Motor aktiviert.

Anschlussplan

Schließen Sie den Geräuschsensor an:

  1. VCC : An 3,3 V (Pin 1) anschließen.
  2. GND : Mit GND (Pin 6) verbinden.
  3. DO (digitaler Ausgang) : Verbindung mit GPIO 17 (Pin 11) herstellen.

Verbinden Sie den ULN2003-Treiber mit dem Schrittmotor:

  1. Schrittmotor : Verbinden Sie den Schrittmotoranschluss mit dem Header des ULN2003-Treibers.
  2. ULN2003-Treiber :
    • IN1 : Verbindung mit GPIO 27 (Pin 13) .
    • IN2 : Verbindung mit GPIO 22 (Pin 15) .
    • IN3 : Verbindung mit GPIO 23 (Pin 16) .
    • IN4 : Verbindung mit GPIO 24 (Pin 18) .
    • VCC : An 5 V anschließen (Pin 2) .
    • GND : Mit GND (Pin 6) verbinden.

Pinbelegungsreferenz

GPIO

Pin-Nr.

Funktion

Verbindung

GPIO 17 Stift 11 Digitaleingang Schallsensor DO
GPIO 27 Stift 13 Schrittmotor ULN2003 IN1
GPIO 22 Stift 15 Schrittmotor ULN2003 IN2
GPIO 23 Stift 16 Schrittmotor ULN2003 IN3
GPIO 24 Stift 18 Schrittmotor ULN2003 IN4
3,3 V Stift 1 Stromversorgung Schallsensor VCC
5 V Stift 2 Stromversorgung ULN2003 VCC
Masse Stift 6 Erde (Boden) Schallsensor und ULN2003

Python-Code in Thonny

Schritt 1: Schreiben Sie Ihren Code

Öffnen Sie die Thonny Python IDE und geben Sie den folgenden Code ein:

import RPi.GPIO as GPIO
from time import sleep
from collections import deque

# Geluidssensor en motor-pinnen
IN1 = 17
IN2 = 27
IN3 = 22
IN4 = 23
SOUND_SENSOR_PIN = 24

# GPIO instellen
GPIO.setmode(GPIO.BCM)
GPIO.setup(SOUND_SENSOR_PIN, GPIO.IN)  # Geluidssensor als input
GPIO.setup(IN1, GPIO.OUT)
GPIO.setup(IN2, GPIO.OUT)
GPIO.setup(IN3, GPIO.OUT)
GPIO.setup(IN4, GPIO.OUT)

# Stepper motor sequentie (4-fase stappen)
step_sequence = [
    [1, 0, 0, 0],
    [1, 1, 0, 0],
    [0, 1, 0, 0],
    [0, 1, 1, 0],
    [0, 0, 1, 0],
    [0, 0, 1, 1],
    [0, 0, 0, 1],
    [1, 0, 0, 1]
]

# Instellingen voor piekdetectie
HISTORY_SIZE = 10	# Hoeveel metingen we bijhouden
THRESHOLD = 7		# Aantal HIGH's in HISTORY_SIZE om als piek te zien
MINIMUM_ACTIVE_TIME = 1	# Minimal actief blijven (seconden)

# Historie van geluidmetingen
sound_history = deque([1] * HISTORY_SIZE, maxlen=HISTORYSIZE)

def set_step(w1, w2, w3, w4):
    """Stel de status van de motorpinnen in."""
    GPIO.output(IN1, w1)
    GPIO.output(IN2, w2)
    GPIO.output(IN3, w3)
    GPIO.output(IN4, w4)

def step_motor(steps, delay):
    """Draai de motor een aantal stappen."""
    for _ in range(steps):
        for step in step_sequence:
            set_step(*step)
            sleep(delay)

try:
    while True:
       # Lees de huidige status van de geluidssensor
	current_state = GPIO.INPUT(SOUND_SENSOR_PIN)

	# Voeg de huidige meting toe aan de historie
	sound_history.append(current_state)

	# Tel hoeveel keer HIGH (1) in historie
	low_count = sound_history.count(0)

	# Controleer of er een piek is
	if low_count >= THRESHOLD:
		print("Piek in geluid gedetecteerd! Steppermotor draait.")
		step_motor(512, 0.002)	# Draai 512 stappen vooruit
		sound_hitory.clear()	# Reset de historie na een plek
		sound_history.extend([1] * HISTORY_SIZE)	# Vermijd snelle heractivatie	
		sleep(MINIMUM_ACTIVE_TIME)	# Zorg dat de motor niet constant triggert
	sleep(0.01)

except KeyboardInterrupt:
    print("\nProgramma gestopt.")
finally:
    GPIO.cleanup()  # Reset de GPIO-instellingen

Schritt 2: Speichern Sie die Datei

Klicken Sie auf Datei > Speichern unter und nennen Sie die Datei sound_controlled_motor.py .

Schritt 3: Ausführen des Skripts

Klicken Sie oben in der Thonny-Benutzeroberfläche auf die grüne Schaltfläche „Ausführen“ (▶).

Wie funktioniert es?

  1. Geräuschsensor:
    • Der Sensor erkennt Geräusche wie beispielsweise Klatschen und sendet ein High-Signal (HIGH) an GPIO 17.
  2. Schrittmotor:
    • Sobald ein Ton erkannt wird, dreht sich der Motor 512 Schritte (vorwärts).
  3. Geschwindigkeit und Schritte anpassen:
    • Passen Sie den Wert für Verzögerung und Schritte in der Funktion step_motor() an , um die Geschwindigkeit und Distanz der Motordrehung zu ändern.

Ergebnis

  • Ton erkannt : Der Schrittmotor führt eine vollständige Umdrehung aus (512 Schritte).
  • Kein Geräusch erkannt : Der Motor bleibt still.

Experimentieren

  1. Richtung anpassen:
    • Lassen Sie den Motor rückwärts laufen, indem Sie die Reihenfolge der Schrittfolgeliste umkehren .
  2. Verwendung von Licht- oder anderen Sensoren:
    • Ersetzen Sie den Geräuschsensor durch einen anderen Eingang, beispielsweise einen LDR oder einen Druckknopf.
  3. Blinkende LED hinzufügen:
    • Fügen Sie eine LED hinzu, die blinkt, wenn der Motor läuft.