ESP32 S3 - IR-Gabellichtschranke (Geschwindigkeitssensor)
Diese Anleitung zeigt Ihnen, wie Sie den ESP32 S3 mit einer IR-Gabellichtschranke verwenden, um Objekte zu zählen und zu messen, wie schnell sich ein Motor dreht. Ob Sie einen kleinen Drehzahlmesser für ein Roboterrad bauen oder gerade erst mit Sensoren beginnen: Dieses Schritt-für-Schritt-Tutorial bringt Sie zum Ziel.
Was Sie in diesem Tutorial bauen:
- Was die IR-Gabellichtschranke (Photo Interrupter) ist und wie sie funktioniert
- Wie Sie den Sensor sicher mit 3,3V an den ESP32 S3 anschließen
- Ein Sketch, der jedes Objekt zählt, das durch den Schlitz geht
- Ein Sketch, der die Motordrehzahl in U/min (RPM) mit einer Encoderscheibe und einem Interrupt misst
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables ESP32 S3 Starter-Kit (ESP32 S3 enthalten) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Überblick über IR Slotted Optical Speed Sensor
Die IR-Gabellichtschranke ist ein kleines U-förmiges Bauteil. Manche nennen sie Photo Interrupter, Opto Interrupter oder IR-Schlitzsensor. Ein Arm enthält eine Infrarot-LED. Der andere Arm enthält einen NPN-Fototransistor. Beide stehen sich über einem schmalen Spalt gegenüber, und der Sensor meldet dem ESP32 S3, ob sich etwas in diesem Spalt befindet.
Wichtige Spezifikationen
| Merkmal | Wert |
|---|---|
| Sensortyp | Schlitz-Lichtschranke (IR-LED + NPN-Fototransistor) |
| Schlitzbreite | 5,9 mm |
| Betriebsspannung | 3,3V – 5V DC |
| Ausgang | digital (TTL), LOW bei Unterbrechung, HIGH bei freiem Schlitz |
| Signalaufbereitung | eingebauter Schmitt-Trigger |
| Befestigung | M3-Schraubenlöcher an beiden Enden |
| Pins | 3 (VCC, GND, OUT) |
Pinbelegung der IR-Gabellichtschranke
Das Modul hat nur drei Pins, daher ist die Verdrahtung kurz und einfach.
- VCC — Stromeingang, 3,3V bis 5V (verwenden Sie beim ESP32 S3 3,3V)
- GND — Masse (0V)
- OUT — digitales Signal, das zu einem Eingangspin des ESP32 S3 geht

※ Notiz:
Die Reihenfolge der Pins kann sich von Charge zu Charge ändern. Lesen Sie immer die auf Ihrem Modul aufgedruckten Beschriftungen, bevor Sie die Kabel anschließen.
Wie die Gabellichtschranke funktioniert
Stellen Sie sich den Schlitz als winziges Lichttor vor. Ist der Spalt leer, durchquert das Infrarotlicht ihn und erreicht den Fototransistor, und der OUT-Pin ist HIGH. Wenn ein undurchsichtiges Objekt in den Spalt kommt, zum Beispiel ein Stück Karton oder ein Zahn einer Encoderscheibe, blockiert es das Licht und der OUT-Pin fällt auf LOW.
Ein eingebauter Schmitt-Trigger bereinigt das Signal, bevor es das Modul verlässt. Deshalb erhält der ESP32 S3 eine saubere 0 oder 1 ohne Prellen, und Sie brauchen keinen Entprellcode. Beachten Sie eines: Klarer Kunststoff oder Glas kann Infrarotlicht durchlassen. Verwenden Sie daher undurchsichtige Objekte, um zuverlässige Ergebnisse zu erhalten.

Module anderer Hersteller verwenden die umgekehrte Logik. Wenn Ihr Modul „blockiert" meldet, obwohl der Schlitz leer ist, tauschen Sie im ersten Sketch einfach LOW und HIGH. Der RPM-Sketch zählt eine Flanke pro Schlitz und funktioniert daher mit beiden Typen.
Verdrahtungsdiagramm
Der Sensor braucht nur drei Jumper-Kabel zum ESP32 S3. Führen Sie VCC zum 3,3V-Pin, GND zu einem beliebigen GND-Pin und OUT zu GPIO4, den beide Sketches in dieser Anleitung verwenden.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
| Pin der Gabellichtschranke | ESP32-S3-Pin |
|---|---|
| VCC | 3,3V |
| GND | GND |
| OUT | GPIO4 |
Sicherheitshinweise
Der OUT-Pin schwingt bis zu der Spannung hoch, die Sie an VCC anlegen. Die GPIO-Pins des ESP32 S3 sind für 3,3V ausgelegt. Versorgen Sie den Sensor deshalb über den 3,3V-Pin und nicht über 5V. So bleibt das OUT-Signal auf einem Pegel, den das Board ohne Schaden lesen kann. Prüfen Sie außerdem die Beschriftungen auf dem Modul noch einmal, bevor Sie das USB-Kabel einstecken, denn vertauschte VCC und GND können den Sensor beschädigen.
So programmieren Sie die IR-Gabellichtschranke
Der erste Sketch verwendet digitalRead(), um den OUT-Pin immer wieder zu prüfen. Er merkt sich den letzten Zustand und gibt nur dann eine Meldung aus, wenn sich der Zustand ändert, und er erhöht einen Zähler um eins, jedes Mal wenn der Schlitz blockiert wird.
Der zweite Sketch ist für die Drehzahl gemacht. Die Zähne der Scheibe laufen sehr schnell vorbei, daher könnte die Prüfung des Pins in loop() einige davon verpassen. Stattdessen ruft der Sketch attachInterrupt() auf die FALLING-Flanke auf, die jedes Mal einmal auslöst, wenn ein Zahn das Licht blockiert. Die Interrupt-Funktion ist mit IRAM_ATTR markiert, wie es der ESP32 S3 verlangt, und sie erhöht nur einen volatile-Zähler um eins. Einmal pro Sekunde liest loop() den Zähler, setzt ihn zurück und berechnet die Drehzahl.
Die Formel für die Drehzahl ist einfach. Eine Standard-Encoderscheibe hat 20 Schlitze, also ergibt eine volle Umdrehung 20 Impulse. Die in einer Sekunde gezählten Impulse mal 60 ergeben Impulse pro Minute. Teilen Sie das durch 20, und Sie erhalten Umdrehungen pro Minute (U/min, RPM):
ESP32 S3 Code – Objekte im Schlitz zählen
Dieser Sketch überwacht GPIO4 und gibt eine Zeile aus, jedes Mal wenn der Schlitz blockiert wird oder wieder frei ist. Jede neue Unterbrechung erhöht den Zählerstand um eins, sodass Sie ihn als einfachen Objektzähler verwenden können.
Schnelle Schritte
- Neu beim ESP32 S3? Lesen Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3.
- Verdrahten Sie die Gabellichtschranke wie im Verdrahtungsdiagramm gezeigt mit dem ESP32 S3.
- Verbinden Sie den ESP32 S3 über das USB-Typ-C-Kabel mit Ihrem Computer.
- Öffnen Sie die Arduino IDE und wählen Sie unter Tools > Board den Eintrag ESP32S3 Dev Module, dann den richtigen COM-Port.
- Kopieren Sie den obigen Code und fügen Sie ihn in einen neuen Sketch ein.
- Klicken Sie auf die Schaltfläche Upload, um den Code auf das Board zu übertragen.
- Öffnen Sie den Serial Monitor und stellen Sie die Baudrate auf 9600 ein.
- Führen Sie ein Stück Karton oder Ihren Finger einige Male durch den Schlitz.
- Beobachten Sie die Meldungen und den Zählerstand im Serial Monitor.
- Profi-Tipp: Befestigen Sie den Sensor mit M3-Schrauben durch die Löcher an beiden Enden. Ein Sensor, der sich nicht bewegt, liefert stabile Zählwerte, auch wenn Objekte schnell vorbeikommen.
Ausgabe im Serial Monitor
ESP32 S3 Code – Motordrehzahl messen (RPM)
Machen wir den Sensor nun zu einem Drehzahlmesser. Montieren Sie eine Encoderscheibe auf der Motorwelle oder dem Rad, sodass ihre Zähne durch den Schlitz laufen, ohne den Sensor zu berühren. Jeder Zahn ergibt einen Impuls, und der Sketch gibt die Impulszahl und die Drehzahl einmal pro Sekunde aus.
Schnelle Schritte
- Neu beim ESP32 S3? Lesen Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3.
- Behalten Sie die gleiche Verdrahtung wie im ersten Beispiel.
- Befestigen Sie die Encoderscheibe so auf der Welle, dass ihre Zähne durch den Schlitz laufen.
- Kopieren Sie den obigen RPM-Code in die Arduino IDE und klicken Sie auf Upload.
- Öffnen Sie den Serial Monitor mit 9600 Baud.
- Drehen Sie die Scheibe von Hand oder schalten Sie den Motor ein. Wie Sie den Motor ansteuern, sehen Sie im Tutorial ESP32 S3 - Gleichstrommotor.
- Lesen Sie die Impulse und den RPM-Wert ab, die jede Sekunde erscheinen.
- Profi-Tipp: Wenn Ihre Scheibe nicht 20 Schlitze hat, zählen Sie sie und ändern Sie den Wert SLOTS_PER_TURN im Code. Sonst ist die Drehzahl falsch.
Ausgabe im Serial Monitor
Die folgende Ausgabe zeigt einen Motor, der sich mit etwa 300 U/min dreht und dann stoppt.
Wenn Sie wissen möchten, wie weit ein Rad gefahren ist, multiplizieren Sie die Anzahl der Umdrehungen mit dem Umfang des Rades (π × Durchmesser).
Anwendungsideen
Der Geschwindigkeitssensor liefert für jedes Ereignis einen sauberen Impuls und passt daher zu vielen Mess- und Zählprojekten mit dem ESP32 S3.
- Motor-Drehzahlmesser: Zeigen Sie die Drehzahl eines Gleichstrommotors an und prüfen Sie, wie sich die Geschwindigkeit mit der Last ändert.
- Radrückmeldung beim Roboter: Messen Sie die Geschwindigkeit jedes Rades, damit ein Roboter geradeaus fahren kann.
- Entfernungsmesser: Zählen Sie Radumdrehungen und rechnen Sie sie in die zurückgelegte Strecke um.
- Stückzähler: Zählen Sie kleine Teile, die an einer Sortierlinie durch den Schlitz fallen.
- Endlagen- und Positionserkennung: Bringen Sie eine dünne Fahne an einem beweglichen Teil an und stoppen Sie es, wenn die Fahne in den Schlitz eintritt.
- Lüfterdrehzahl überwachen: Verfolgen Sie, wie schnell sich ein Kühllüfter dreht, und warnen Sie, wenn er langsamer wird.
Für Objekte, die weiter entfernt sind und nicht in einen Schlitz passen, ist das Tutorial ESP32 S3 - Hindernissensor die bessere Wahl. Wie Sie einen von Hand gedrehten Knopf samt Drehrichtung auslesen, sehen Sie im Tutorial ESP32 S3 - Drehgeber.
Fordern Sie sich heraus
Probieren Sie diese Aufgaben aus, um auf dem Gelernten aufzubauen.
- Anfänger: Schalten Sie eine LED ein, solange der Schlitz blockiert ist, und aus, wenn er frei ist.
- Fortgeschrittene: Fügen Sie dem RPM-Sketch die Entfernungsberechnung hinzu und geben Sie die Gesamtstrecke in Zentimetern aus.
- Experten: Nutzen Sie die gemessene Drehzahl, um einen Gleichstrommotor auf einer festen Drehzahl zu halten, indem Sie seinen PWM-Wert nach oben oder unten anpassen.