Raspberry Pi Pico: Berührungsloser Schalter mit IR-Sensor FC-51 und Servo-Motor SG90
Berührungslose oder kontaktlose Schalter sind sehr beliebt. Wir finden sie an Wasserhähnen, Klospülungen, Seifenspendern und Lampen. Was in fertigen und kommerziellen Produkten integriert ist, kann man mit Hilfe eines Infrarot-Reflektionssensors selber bauen. In Kombination mit einem Raspberry Pi Pico lässt sich ein Annäherungsschalter bzw. berührungsloser Schalter bauen.
Im folgenden Aufbau wollen wir einen Servo-Motor vom Typ SG90 ansteuern, den man nicht einfach einschalten und ausschalten kann. Ein Servo-Motor soll sich bis zu einem bestimmten Punkt drehen und vielleicht auch wieder zurückdrehen.
Hinweis: Grundsätzlich funktioniert der Aufbau und Programmcode auch ohne Servo-Motor. Er muss nicht angeschlossen sein. Um die Funktion trotzdem testen zu können, wird im Programmcode die Onboard-LED ein- und ausgeschaltet, um eine Steuerung zu signalisieren.
Aufbau und Bauteile
Raspberry Pi Pico | SG90 | |
---|---|---|
Pin 40 | +5V VBUS | VCC |
Pin 38 | GND | GND |
Pin 27 | GPIO 21 | PWM |
Raspberry Pi Pico | FC-51 | |
Pin 36 | 3V3 OUT | VCC |
Pin 33 | GND | GND |
Pin 29 | GPIO 22 | DOUT |
Hinweis: Um den folgenden Programmcode sinnvoll nutzen zu können, muss der IR-Sensor kalibriert werden. Hierfür muss das Potentiometer auf dem Sensor-Modul verwendet werden.
Schnell und einfach alle Bauteile zusammen bestellen
MicroPython-Bibliothek „picozero“
Im folgenden Programmcode wird die MicroPython-Bibliothek „picozero“ für folgende Aufgaben verwendet:
- Steuerung der Onboard-LED
- Steuerung des Servo-Motors
Hierzu ist die Bibliothek herunterzuladen und mit dem Dateinamen „picozero.py“ auf dem Raspberry Pi Pico zu speichern. Alternativ kann man auch mit dem Paketmanager in der Thonny Python IDE die Bibliothek auf dem Pico installieren (Extras / Verwalte Pakete / nach „picozero“ suchen / Installieren).
Programmcode
Im Programmcode wird der Servo-Motor initialisiert und in eine Grundstellung gebracht. Das heißt, wenn man den Programmcode startet, dann wird sich der Motor bewegen, wenn er richtig angeschlossen ist und sich noch nicht in der Grundstellung befindet.
Der eigentliche Hauptteil des Programmcodes befindet sich in der Endlos-Schleife. Hier wird der IR-Sensor kontinuierlich abgefragt. Wenn eine Annäherung erkannt wird, dann wird die Schalt-Funktion aufgerufen, in der der Servo-Motor gesteuert wird.
Um zu verhindern, dass die selbe Annäherung als weiterer Schaltvorgang erkannt wird (Prellen), wird in einer weiteren Endlos-Schleife, solange pausiert, bis der Sensor keine Annäherung mehr erkennt.
# Bibliotheken laden from picozero import pico_led, Servo from machine import Pin from time import sleep # Initialisierung: GPIO22 als Eingang sensor_d = Pin(22, Pin.IN, Pin.PULL_UP) # Initialisierung: Servo an GPIO21 print('Servo: Initialisieren') servo = Servo(21) servo.min() sleep(2) servo.off() print('Servo: Grundstellung') # Funktion: Schalten SG90 def switching(): # Onboard-LED an pico_led.on() print('Servo: Drehen') servo.max() sleep(2) servo.min() sleep(2) servo.off() print('Servo: Grundstellung') # Onboard-LED aus pico_led.off() # Wiederholung (Endlos-Schleife) print('Sensor: Annäherung prüfen') while True: # Sensor-Zustand lesen und prüfen value_d = sensor_d.value() if value_d == 0: print('Sensor: Annäherung erkannt') switching() # Entprell-Funktion while True: sleep(1) value_d = sensor_d.value() # Weiter erst dann, wenn Sensor freigegeben ist if value_d == 1: break print('Sensor: Annäherung prüfen') # Warten, um versehentliches Auslösen zu verhindern sleep(0.2)
Praktische Anwendung
Wie kann man diesen Aufbau sinnvoll verwenden?
- Öffnen und schließen von Deckeln oder Fächern
- Bewegen von Objekten und Bauteilen
Weitere verwandte Themen:
- Raspberry Pi Pico: Objekterkennung mit Infrarot-Reflektionssensor FC-51
- Raspberry Pi Pico: Berührungsloser Schalter mit Infrarot-Reflektionssensor FC-51
- Raspberry Pi Pico: Objekterkennung mit TCRT5000
- Raspberry Pi Pico: Abstandsmessung mit TCRT5000
Teilen:
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.
- LED: Einschalten, ausschalten, blinken und Helligkeit steuern
- Taster: Entprellen und Zustände anzeigen
- LED mit Taster einschalten und ausschalten
- Ampel- und Lauflicht-Steuerung
- Elektronischer Würfel
- Eigene Steuerungen programmieren
Online-Workshop: Programmieren mit dem Raspberry Pi Pico
Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.
Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)