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: Berührungsloser Schalter mit IR-Sensor FC-51 und Servo-Motor SG90

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:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

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

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

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.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren