Arduino UNO Q - Hinderniserkennung Sensor

Der IR-Hinderniserkennung Sensor verwendet Infrarotlicht, um Objekte vor ihm zu erkennen. Er meldet ein digitales LOW-Signal, wenn ein Hindernis vorhanden ist, und HIGH, wenn der Weg frei ist. Mit Bridge und Telegram kann Ihr Arduino UNO Q sofortige Warnungen senden, wenn ein Objekt in die Erkennungszone eintritt.

In diesem Tutorial erfahren Sie:

Arduino UNO Q Hinderniserkennung Sensor

Erforderliche Hardware

1×Arduino UNO Q
1×USB-Kabel für Arduino Uno Q
1×IR-Hinderniserkennung Sensor
1×(Alternativ) TCRT5000 Obstacle Avoidance Sensor
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Sensors/Servo Expansion Shield for Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über den IR-Hinderniserkennung Sensor

Der Infrarot-Hinderniserkennung Sensor erkennt Objekte mit einem IR-Sender und -Empfänger. Der Sender sendet einen IR-Strahl aus; wenn ein Objekt den Strahl zurückwirft, erkennt der Empfänger dies und der OUT-Pin wird LOW.

IR-Hinderniserkennung Sensor Pinout

Pinout

  • VCC-Pin: Mit VCC verbinden (3,3V oder 5V)
  • GND-Pin: Mit GND verbinden (0V)
  • OUT-Pin: Digitale Ausgabe — LOW = Hindernis erkannt, HIGH = kein Hindernis

So funktioniert es

  • Wenn sich ein Hindernis vor dem Sensor befindet: OUT-Pin = LOW
  • Wenn der Weg frei ist: OUT-Pin = HIGH
  • Erkennungsbereich: 2 cm bis 30 cm — einstellbar über das integrierte Potentiometer
  • Erkennungswinkel: ca. 35°

※ Notiz:

Während des Versands können der IR-Sender und -Empfänger nicht ausgerichtet werden. Wenn der Sensor nicht richtig reagiert, biegen Sie sie sanft so, dass sie parallel zueinander stehen.

Schaltplan

Arduino UNO Q IR-Hinderniserkennung Sensor Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

IR-Hinderniserkennung Sensor Pin Arduino UNO Q MCU
VCC 3,3V
GND GND
OUT D8

Programmierung für IR-Hinderniserkennung Sensor

  • Konfigurieren Sie den Sensor-Pin als digitale Eingabe:
pinMode(SENSOR_PIN, INPUT);
  • Lesen Sie die Ausgabe — LOW bedeutet Hindernis erkannt, HIGH bedeutet frei:
int state = digitalRead(SENSOR_PIN); if (state == LOW) Serial.println("Obstacle detected!"); else Serial.println("No obstacle.");

Arduino UNO Q Code

Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten:

  • Der STM32 MCU liest den Sensor alle 100 ms und meldet das Ergebnis über Serial
  • Der Qualcomm MPU führt Debian Linux mit Wi-Fi aus — in diesem Abschnitt wird nur der MCU programmiert. Ein späterer Abschnitt zeigt, wie beide Prozessoren über Bridge zusammenarbeiten.
/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-obstacle-avoidance-sensor */ // IR Obstacle Avoidance Sensor: // OUT pin: LOW = obstacle detected, HIGH = no obstacle #define SENSOR_PIN 8 // The Arduino UNO Q MCU pin connected to OUT of the IR obstacle sensor void setup() { Serial.begin(9600); pinMode(SENSOR_PIN, INPUT); Serial.println("Arduino UNO Q IR Obstacle Avoidance Sensor ready"); } void loop() { int state = digitalRead(SENSOR_PIN); // LOW = obstacle, HIGH = clear if (state == LOW) Serial.println("Obstacle detected!"); else Serial.println("No obstacle."); delay(100); }

Schnelle Schritte

Erste Schritte mit Arduino UNO Q? Folgen Sie dem Tutorial Getting Started with Arduino UNO Q bevor Sie fortfahren.

  • Verdrahten: Verdrahten Sie den IR-Hinderniserkennung Sensor wie im Schaltplan mit dem Arduino UNO Q MCU gezeigt.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihren Arduino UNO Q erkennt.
  • Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Neue App erstellen.
Erstelle neue App in Arduino App Lab auf Arduino UNO Q
  • Geben Sie der App einen Namen, zum Beispiel: ObstacleSensor
  • Klicken Sie auf Erstellen, um zu bestätigen.
Arduino App Lab App-Ordner und Dateien auf Arduino UNO Q
  • Sketch einfügen: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
  • Hochladen: Klicken Sie in Arduino App Lab auf die Schaltfläche Ausführen.
Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab auf Arduino UNO Q
  • Halten Sie Ihre Hand vor den Sensor und beobachten Sie den Serial Monitor.
  • Passen Sie das Potentiometer an, um den Erkennungsbereich zu ändern.

App Lab Console Ausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-04-29 09:00:01] Arduino UNO Q IR Obstacle Avoidance Sensor ready [2026-04-29 09:00:02] No obstacle. [2026-04-29 09:00:03] No obstacle. [2026-04-29 09:00:04] Obstacle detected! [2026-04-29 09:00:05] Obstacle detected! [2026-04-29 09:00:06] No obstacle.

Bridge: Linux + MCU

Dieser Abschnitt zeigt, wie Sie beide Prozessoren des Arduino UNO Q programmieren, sodass die Linux-Seite den Hinderniszustand lesen und Ereignisse über Bridge empfangen kann:

  • Der Hinderniserkennung Sensor ist mit dem MCU verbunden — der MCU liest den Sensor alle 100 ms
  • Der MPU kann den Sensor-Pin nicht direkt auslesen — er ruft Bridge-Funktionen auf, um den aktuellen Status zu erhalten oder Ereignisse zu empfangen
  • Der MPU hat Wi-Fi — Betriebsvolles Debian Linux, es kann sofortige Telegram-Warnungen senden, wenn ein Hindernis erkannt wird
  • Arduino_RouterBridge ermöglicht RPC-Kommunikation zwischen den beiden Prozessoren
  • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT vom Router — öffnen Sie sie niemals im Benutzercode

MCU Code (Bridge)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-obstacle-avoidance-sensor */ #include "Arduino_RouterBridge.h" #define SENSOR_PIN 8 // The Arduino UNO Q MCU pin connected to OUT of the IR obstacle sensor bool cached_obstacle = false; bool obstacle_event = false; bool prev_obstacle = false; unsigned long last_read_ms = 0; const unsigned long READ_INTERVAL = 100; String get_state(String arg) { return cached_obstacle ? "obstacle" : "clear"; } String get_event(String arg) { if (obstacle_event) { obstacle_event = false; return "obstacle_detected"; } return "none"; } void setup() { Bridge.begin(); Monitor.begin(); pinMode(SENSOR_PIN, INPUT); Bridge.provide("get_state", get_state); Bridge.provide("get_event", get_event); Monitor.println("Arduino UNO Q IR Obstacle Avoidance Sensor Bridge ready"); } void loop() { unsigned long now = millis(); if (now - last_read_ms >= READ_INTERVAL) { last_read_ms = now; int state = digitalRead(SENSOR_PIN); // LOW = obstacle cached_obstacle = (state == LOW); if (cached_obstacle && !prev_obstacle) { obstacle_event = true; Monitor.println("Obstacle detected!"); } else if (!cached_obstacle && prev_obstacle) { Monitor.println("Obstacle cleared."); } prev_obstacle = cached_obstacle; } }

Python Code (Bridge)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-obstacle-avoidance-sensor */ from arduino.app_utils import * import time def loop(): state = Bridge.call("get_state") print(f"Obstacle state: {state}") time.sleep(0.2) App.run(user_loop=loop)

Schnelle Schritte

  • Verdrahten: Verdrahten Sie den IR-Hinderniserkennung Sensor wie im Schaltplan mit Arduino UNO Q gezeigt.
  • Öffnen Sie Arduino App Lab und erstellen Sie eine neue App mit dem Namen ObstacleSensorBridge.
  • Fügen Sie den MCU-Sketch in sketch/sketch.ino ein.
  • Fügen Sie den Python-Code in die Python-Datei ein.
  • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
Add sketch library in Arduino App Lab on Arduino UNO Q
  • Search for Arduino_RouterBridge created by Arduino and click the Install button.
My Apps / DIYables Apps
Run
Bricks
No bricks added...
Sketch Libraries
No sketch libra...
Files
python
sketch
.gitignore
README.md
app.yaml
sketch.ino
Add sketch library
Arduino_RouterBridge Arduino

This library provides a simple RPC bridge for Arduino UNO Q boards, allowing communication between the board and other devices using MsgPack serialization.

0.4.1
Install
More Info
  • Hochladen: Klicken Sie auf die Schaltfläche Ausführen.
Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab auf Arduino UNO Q
  • Platzieren Sie ein Objekt vor dem Sensor und beobachten Sie beide Konsolen.

App Lab Console Ausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-04-29 09:00:01] Arduino UNO Q IR Obstacle Avoidance Sensor Bridge ready [2026-04-29 09:00:04] Obstacle detected! [2026-04-29 09:00:06] Obstacle cleared.
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:02] Obstacle state: clear [2026-04-29 09:00:03] Obstacle state: clear [2026-04-29 09:00:04] Obstacle state: obstacle [2026-04-29 09:00:05] Obstacle state: obstacle [2026-04-29 09:00:06] Obstacle state: clear

Telegram

Erhalten Sie sofortige Telegram-Warnungen, wenn ein Hindernis vor dem Sensor erkannt wird, und fragen Sie seinen Status remote ab.

MCU-Sketch: Behalten Sie denselben MCU-Sketch aus dem vorherigen Bridge-Abschnitt.

Python Code (Telegram)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-obstacle-avoidance-sensor */ from arduino.app_utils import * import requests import time TELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN" CHAT_ID = "YOUR_CHAT_ID" last_update_id = 0 def get_updates(): global last_update_id url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/getUpdates" params = {"offset": last_update_id + 1, "timeout": 5} try: response = requests.get(url, params=params, timeout=10) data = response.json() if data["ok"]: return data["result"] except Exception as e: print(f"Error getting updates: {e}") return [] def send_message(chat_id, text): url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = {"chat_id": chat_id, "text": text} try: requests.post(url, data=payload, timeout=10) except Exception as e: print(f"Error sending message: {e}") def loop(): # Auto-alert on obstacle detected event = Bridge.call("get_event") if event == "obstacle_detected": print("Obstacle detected!") send_message(CHAT_ID, "🚧 Obstacle detected in front of the sensor!") # Handle Telegram commands updates = get_updates() for update in updates: last_update_id = update["update_id"] if "message" not in update: continue message = update["message"] chat_id = message["chat"]["id"] text = message.get("text", "").strip() print(f"Received: {text}") if text == "/start": send_message(chat_id, "Arduino UNO Q Obstacle Sensor Bot\n" "/state - Current obstacle state (obstacle / clear)\n" "Automatic alert when an obstacle is detected!") elif text == "/state": result = Bridge.call("get_state") send_message(chat_id, f"Obstacle state: {result}") else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(0.1) App.run(user_loop=loop)

Schnelle Schritte

  • Ersetzen Sie YOUR_TELEGRAM_BOT_TOKEN durch Ihr tatsächliches Bot-Token von BotFather.
  • Ersetzen Sie YOUR_CHAT_ID durch Ihre Telegram-Chat-ID.
  • Fügen Sie diesen Python-Code in die Python-Datei Ihrer App ein (behalten Sie denselben MCU-Sketch).
  • Klicken Sie auf die Schaltfläche Ausführen — platzieren Sie ein Objekt vor dem Sensor, um die Telegram-Benachrichtigung auszulösen.

App Lab Console Ausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:10:01] Waiting for Telegram messages... [2026-04-29 09:10:04] Obstacle detected! [2026-04-29 09:10:10] Received: /state
Telegram
Telegram 12:45
Welcome to Telegram!
ArduinoBot 10:19
Chatting with Arduino...
telegram-botfather
BotFather Yesterday
Your bot has been created.

ArduinoBot

bot
Today
🚧 Obstacle detected in front of the sensor!
10:15 AM
/state
10:16 AM ✓✓
Obstacle state: clear
10:17 AM

OpenClaw

You can adapt the OpenClaw to this tutorial by refering the instruction on Arduino Uno Q - OpenClaw Tutorial

Projektideen

Sie können viele nützliche Projekte mit dem IR-Hinderniserkennung Sensor und Arduino UNO Q erstellen:

  • Türeingangs-Besucher-Zähler: Montieren Sie den Sensor in einer Türöffnung — jedes Mal, wenn ein Hindernis (Person) vorbeigeht, erhöht sich der Ereigniszähler; der MPU sendet eine Telegram-Zusammenfassung mit der täglichen Anzahl, wenn Sie /count senden
  • Paketlieferungsmelder: Platzieren Sie den Sensor vor einem Postfach oder Lieferbereich — wenn ein Paket abgelegt und erkannt wird, sendet Python eine Telegram-Benachrichtigung "Paket geliefert!" an Ihr Telefon
  • Roboter-Hindernisstopp: Verbinden Sie den Sensor mit einem motorgetriebenen Roboter — wenn der MCU ein Hindernis erkennt, stoppt er sofort die Motoren; der MPU sendet eine Telegram-Benachrichtigung mit der Hinderniserkennung Zeit
  • Automatisierter Gate-Auslöser: Verwenden Sie den Sensor, um ein sich näherndes Fahrzeug zu erkennen — wenn ein Hindernis länger als 200 ms erkannt wird, löst der MCU ein Relais aus, um ein Tor zu öffnen, und Python sendet einen Telegram-Protokolleintrag
  • Industrie-Teile-Zähler: Montieren Sie den Sensor auf einem Förderband einer Montagelinie — zählen Sie, wie viele Teile pro Minute vorbeigehen, und senden Sie die Anzahl jede 5 Minuten per Telegram mithilfe eines Python-Timers

Fordern Sie sich selbst heraus

Bereit, noch weiter mit dem IR-Hinderniserkennung Sensor auf Arduino UNO Q zu gehen? Versuchen Sie diese Herausforderungen:

  • Einfach: Fügen Sie einen /count Telegram-Befehl hinzu, der zurückgibt, wie viele Hinderniserkennung Ereignisse seit dem Start des Programms aufgetreten sind, nachverfolgt als Zähler im Python-Code.
  • Mittel: Implementieren Sie einen Entprellfilter: Ein Hindernis muss mindestens 300 ms lang kontinuierlich erkannt werden, bevor das Ereignis registriert und die Telegram-Benachrichtigung gesendet wird — dies beseitigt falsche Auslöser von Vibrationen oder flackernden Reflexionen.
  • Fortgeschrittene: Erstellen Sie einen bidirektionalen Personenzähler: Verwenden Sie zwei IR-Hinderniserkennung Sensoren mit einigen Zentimetern Abstand in einer Türöffnung — bestimmen Sie die Richtung des Ein- oder Ausstiegs basierend darauf, welcher Sensor zuerst ausgelöst wird, und senden Sie eine Telegram-Aktualisierung mit der aktuellen Belegung Count.

Verwandte Tutorials

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!