Raspberry Pi Pico: Berührungsloser Schalter mit Infrarot-Reflektionssensor FC-51

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.

Es geht darum etwas einzuschalten und auf dem selben Weg wieder auszuschalten. Ein Infrarot-Reflektionssensor soll dabei einen Taster ersetzen.

Anwendungen:

  • Licht
  • Motor
  • Relais

Aufbau und Bauteile

Raspberry Pi Pico: Berührungsloser Schalter mit Infrarot-Reflektionssensor FC-51

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

Programmcode

In diesem Programmcode ist eine Funktion definiert, mit der das Schalten eines GPIO-Ausgangs möglich ist. Was an diesem GPIO-Ausgang dranhängt und geschaltet wird, spielt keine Rolle. Voraussetzung ist, dass es zwei Zustände hat und damit der binären Logik folgt. Beispielsweise die Zuständen EIN und AUS. In diesem Beispiel wird die Onboard-LED eingeschaltet und ausgeschaltet.

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.
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 machine import Pin
from time import sleep

# Initialisierung: Onboard-LED
led_onboard = Pin(25, Pin.OUT, value=0)

# Initialisierung: GPIO22 als Eingang
sensor_d = Pin(22, Pin.IN, Pin.PULL_UP)

# Funktion: Schalten der Onboard-LED (Beispiel)
def switching():
    #led_onboard.toggle()
    led_onboard.value(not led_onboard.value())

# Wiederholung (Endlos-Schleife)
print('Annäherung prüfen')
while True:
    # Sensor-Zustand lesen und prüfen
    value_d = sensor_d.value()
    if value_d == 0:
        print('Annäherung erkannt')
        switching()
        # Entprell-Funktion
        while True:
            sleep(0.5)
            value_d = sensor_d.value()
            # Weiter erst dann, wenn Sensor freigegeben ist
            if value_d == 1: break
        print('Annäherung prüfen')
    # Warten, um versehentliches Auslösen zu verhindern
    sleep(0.2)

Erweiterungen

  1. Eine Idee ist, den Programmcode so umzubauen, dass er die Annäherung erkennt, die Onboard-LED einschaltet und nach einer bestimmten Zeit automatisch ausschaltet.
  2. Die Abschaltzeit soll mit einem Potentiometer einstellbar sein.

Weitere verwandte Themen:

Elektronik-Sets für das Hardware-nahe Programmieren

Elektronik-Sets für das Hardware-nahe Programmieren

Programmieren mit dem Raspberry Pi Pico
Online-Meeting

Programmieren mit dem Raspberry Pi Pico

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

Termine und Newsletter-Anmeldung

Frag Elektronik-Kompendium.de