Arduino UNO Q - Ultraschallsensor mit LCD-Anzeige

In diesem Tutorial erfahren Sie, wie Sie ein Arduino UNO Q mit einem HC-SR04-Ultraschallsensor zum Messen von Entfernungen verwenden und das Ergebnis auf einem LCD I2C-Display anzeigen.

Arduino UNO Q Ultraschallsensor LCD I2C

Erforderliche Hardware

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Ultraschallsensor
1×LCD I2C 16x2
1×(Alternativ) LCD I2C 20x4
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.

Kaufhinweis: Eine weitere Möglichkeit ist, das LCD I2C-Display zu erstellen, indem Sie LCD 1602 Display und PCF8574 I2C Adapter Module kombinieren.

Über Ultraschallsensor und LCD

Erfahren Sie mehr über den Ultraschallsensor und LCD I2C in den folgenden Tutorials:

Schaltschema

Arduino UNO Q Ultraschallsensor LCD Schaltschema

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

MCU-Code

Das Arduino UNO Q hat zwei Prozessoren: die STM32 MCU (verwaltet Echtzeitsteuerung der Hardware) und die Qualcomm MPU (läuft Debian Linux). In diesem Abschnitt wird nur die STM32 MCU programmiert — die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren 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-ultrasonic-sensor-lcd */ #include <DIYables_LCD_I2C.h> DIYables_LCD_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 columns, 2 rows #define TRIG_PIN 4 // The Arduino UNO Q pin connected to the ultrasonic sensor's TRIG pin #define ECHO_PIN 3 // The Arduino UNO Q pin connected to the ultrasonic sensor's ECHO pin float duration_us, distance_cm; void setup() { lcd.init(); lcd.backlight(); pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); } void loop() { // generate 10-microsecond pulse to TRIG pin digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // measure duration of pulse from ECHO pin duration_us = pulseIn(ECHO_PIN, HIGH); // calculate the distance distance_cm = 0.017 * duration_us; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Distance: "); lcd.print(distance_cm); lcd.print(" cm"); delay(500); }

※ Notiz:

Die I2C-Adresse für das LCD kann je nach Hersteller unterschiedlich sein. In diesem Beispiel verwenden wir 0x27 (Standard für DIYables LCD-Module).

Schnelle Schritte

  • Erstes Mal mit Arduino UNO Q? Folgen Sie dem Tutorial Erste Schritte mit Arduino UNO Q, um Ihre Entwicklungsumgebung vorzubereiten, bevor Sie fortfahren.
  • Verdrahten Sie die Komponenten: Verbinden Sie TRIG → Pin 4, ECHO → Pin 3. Verbinden Sie das LCD I2C mit dem I2C-Bus (SDA/SCL).
  • Verbinden Sie: Stecken Sie das Arduino UNO Q mit einem USB-C-Kabel in Ihren Computer ein.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihr Arduino UNO Q erkennt.
  • Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Neue App erstellen.
Neue App im Arduino App Lab auf Arduino UNO Q erstellen
  • Geben Sie der App einen Namen, zum Beispiel: DIYables_UltrasonicLCD
  • Klicken Sie auf Erstellen, um zu bestätigen.
  • Sie sehen einen Satz von Ordnern und Dateien, die in Ihrer neuen App generiert werden.
Arduino App Lab App Ordner und Dateien auf Arduino UNO Q
  • Finden Sie die Datei sketch/sketch.ino — hier fügen Sie die MCU-Skizze ein.
  • Fügen Sie die Skizze ein: Kopieren Sie den MCU-Code oben und fügen Sie ihn in die Skizze-Datei ein. Behalten Sie andere Dateien als Standard bei.
    • 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 DIYables LCD I2C created by DIYables.io 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
    DIYables LCD I2C DIYables.io

    This library is designed for HD44780-based I2C LCD displays. It provides LiquidCrystal-compatible API plus helper functions (text alignment, progress bars, predefined custom characters). Supports multiple I2C buses (Wire, Wire1, Wire2) for advanced boards like Arduino Giga, Due, and ESP32. Compatible with all Arduino-based platforms including Arduino Uno, Mega, Nano, ESP32, ESP8266, STM32, and Raspberry Pi Pico.

    1.0.0
    Install
    More Info
    • 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 Run-Schaltfläche im Arduino App Lab, um zu kompilieren und auf die STM32 hochzuladen.
    Klicken Sie auf Run-Schaltfläche im Arduino App Lab auf Arduino UNO Q
    • Test: Halten Sie Ihre Hand vor den Sensor — die Entfernung sollte sich alle 500 ms auf dem LCD aktualisieren.

    ※ Notiz:

    Linux + MCU Bridge-Programmierung

    Das Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten: die MPU (Qualcomm, läuft Debian Linux) und die MCU (STM32, läuft Zephyr OS mit Ihrer Arduino-Skizze). Sie kommunizieren über RPC über die Arduino_RouterBridge-Bibliothek — niemals über rohe serielle Anschlüsse.

    • Der Ultraschallsensor und das LCD sind beide an die MCU (STM32) angeschlossen — Sensor an den Pins 2/3, LCD über I2C.
    • Die MPU kann diese nicht direkt steuern — sie ruft Bridge.call("read_distance") auf der MCU auf, die die Entfernung misst, auf dem LCD anzeigt und an den Monitor ausgibt.
    • Die MPU hat Wi-Fi — weil die MPU vollständiges Debian Linux mit Wi-Fi läuft, kann sie Telegram-Befehle empfangen und Messungen remote auslösen.
    • Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide_safe() auf der MCU-Seite auf (da digitalWrite() und LCD-Schreibvorgänge Hardware-APIs sind)
    • ⚠️ Reserviert: /dev/ttyHS1 (Linux) und Serial1 (MCU) werden vom Arduino Router verwendet — öffnen Sie sie nie direkt

    Kurz gesagt: MPU fordert Messung an → MCU misst Entfernung → MCU zeigt auf LCD an und gibt an Monitor aus.

    MCU-Skizze — Ultraschallsensor LCD-Anzeige mit 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-ultrasonic-sensor-lcd */ #include "Arduino_RouterBridge.h" #include <DIYables_LCD_I2C.h> DIYables_LCD_I2C lcd(0x27, 16, 2); #define TRIG_PIN 2 #define ECHO_PIN 3 void read_distance() { digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); float duration_us = pulseIn(ECHO_PIN, HIGH); float distance_cm = 0.017 * duration_us; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Distance: "); lcd.print(distance_cm); lcd.print(" cm"); Monitor.print("Distance: "); Monitor.print(distance_cm); Monitor.println(" cm"); } void setup() { Bridge.begin(); Monitor.begin(); lcd.init(); lcd.backlight(); pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); Bridge.provide_safe("read_distance", read_distance); Monitor.println("Ultrasonic Sensor LCD Bridge ready"); lcd.setCursor(0, 0); lcd.print("Ready..."); } void loop() {}

    Python-Skript (Arduino App Lab) — Distanzablesung von Linux alle Sekunde anfordern:

    /* * 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-ultrasonic-sensor-lcd */ from arduino.app_utils import * import time def loop(): Bridge.call("read_distance") time.sleep(1) App.run(user_loop=loop)
    • Hinweis: Stellen Sie sicher, dass Bridge.begin() in der MCU-Skizze aufgerufen wird und die Skizze hochgeladen ist, bevor Sie das Python-Skript auf der Linux-Seite ausführen.
    • ⚠️ Warnung: Öffnen Sie nie direkt /dev/ttyHS1 (auf Linux) oder verwenden Sie Serial1 (auf MCU) in Ihrem Code — diese sind vom Arduino Router reserviert und der Zugriff auf sie unterbricht die Bridge.

    Schnelle Schritte

    • Laden Sie die MCU-Skizze hoch: Öffnen Sie Arduino App Lab, erstellen Sie eine neue App, fügen Sie die Bridge-MCU-Skizze in sketch/sketch.ino ein, installieren Sie die Bibliotheken DIYables_LCD_I2C und Arduino_RouterBridge, und klicken Sie auf Run.
    • Fügen Sie das Python-Skript hinzu: Fügen Sie den Python-Code oben in die Python-Registerkarte derselben App ein.
    • Führen Sie die App aus: Klicken Sie auf Run — Python fordert alle Sekunde eine Messung an; MCU aktualisiert das LCD und den Monitor.
    • Überprüfen Sie die Konsole: Öffnen Sie die Registerkarte Konsole → MCU Monitor Unterregisterkarte, um die Entfernungswerte zu sehen.

    App Lab Konsolenausgabe

    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
    Ultrasonic Sensor LCD Bridge ready Distance: 29.4 cm Distance: 27.6 cm Distance: 14.3 cm Distance: 13.1 cm

    Telegram-Integration

    Lesen Sie die Entfernung und zeigen Sie sie über Telegram remote auf dem LCD an.

    Wenn Sie noch keinen Telegram-Bot haben, lesen Sie Wie man einen Telegram-Bot erstellt, um Ihr Bot-Token zu erhalten, bevor Sie fortfahren.

    MCU-Skizze: Behalten Sie die gleiche MCU-Skizze aus dem vorherigen Bridge-Abschnitt — keine Änderungen erforderlich. Stellen Sie sicher, dass sie bereits auf die STM32 hochgeladen und läuft, bevor Sie fortfahren.

    Python-Skript (Arduino App Lab) — Telegram-Bot für Ultraschall-LCD-Anzeige:

    /* * 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-ultrasonic-sensor-lcd */ from arduino.app_utils import * import requests import time BOT_TOKEN = "YOUR_BOT_TOKEN" API_URL = f"https://api.telegram.org/bot{BOT_TOKEN}" last_update_id = 0 def send_message(chat_id, text): requests.post(f"{API_URL}/sendMessage", json={"chat_id": chat_id, "text": text}) def get_updates(): global last_update_id resp = requests.get(f"{API_URL}/getUpdates", params={"offset": last_update_id + 1, "timeout": 5}) return resp.json().get("result", []) def loop(): global last_update_id updates = get_updates() for update in updates: last_update_id = update["update_id"] msg = update.get("message", {}) chat_id = msg.get("chat", {}).get("id") text = msg.get("text", "").strip() if text == "/read": distance = Bridge.call("read_distance") send_message(chat_id, distance) else: send_message(chat_id, "Commands:\n/read — measure distance and display on LCD") time.sleep(0.5) App.run(user_loop=loop)
    • Hinweis: Ersetzen Sie YOUR_BOT_TOKEN mit dem Token, den Sie von @BotFather auf Telegram erhalten haben.
    • Senden Sie /read, um eine Distanzmessung auszulösen — das Ergebnis erscheint auf dem LCD und im Monitor.

    Schnelle Schritte

    • Laden Sie die MCU-Skizze hoch: Verwenden Sie die Bridge-MCU-Skizze aus dem vorherigen Abschnitt (laden Sie sie zuerst hoch, falls noch nicht geschehen).
    • Fügen Sie das Telegram-Skript ein: Kopieren Sie den Python-Code oben in die Python-Registerkarte Ihrer App im Arduino App Lab.
    • Legen Sie Ihr Token fest: Ersetzen Sie YOUR_BOT_TOKEN im Skript durch Ihren tatsächlichen Bot-Token.
    • Führen Sie die App aus: Klicken Sie auf Run — der Bot beginnt, auf Telegram-Nachrichten zu warten.
    • Testen Sie es: Senden Sie /read — der Bot antwortet mit der gemessenen Entfernung, die auch auf dem LCD angezeigt wird.

    App Lab Konsolenausgabe

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    [2026-04-29 12:00:01] Telegram: /read [2026-04-29 12:00:01] Distance: 29.4 cm [2026-04-29 12:02:05] Telegram: /read [2026-04-29 12:02:05] Distance: 13.1 cm
    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
    /read
    10:15 AM ✓✓
    Distance: 29.4 cm
    10:16 AM

    OpenClaw-Integration

    Sie können die OpenClaw an dieses Tutorial anpassen, indem Sie die Anleitung im Arduino Uno Q - OpenClaw-Tutorial befolgen

    Anwendungs-/Projektideen

    • Parkplatzassistent-Anzeige: Zeigen Sie "Sicher", "Langsam", "Stopp" auf LCD an, wenn sich ein Fahrzeug einer Wand nähert
    • Wasserstands-Anzeige: Montieren Sie den Sensor über einem Tank — zeigen Sie den aktuellen Pegel auf dem LCD an
    • Besucher-Entfernungsprotokoll: Zeigen Sie den nächsten Annäherungsabstand auf einem LCD in einem Museumsausstellung an
    • Intelligentes Messwerkzeug: Verwenden Sie Sensor + LCD als tragbares Messwerkzeug für Entfernungen
    • Objekt-Näherungsanzeige: Zeigen Sie die Annäherungsentfernung in Echtzeit für ein Roboterprojekt an

    Herausfordern Sie Sich Selbst

    • Einfach: Fügen Sie eine zweite Zeile auf dem LCD hinzu — zeigen Sie "Nah!" wenn Entfernung < 20 cm, "Weit" andernfalls
    • Mittel: Zeigen Sie die Entfernung sowohl in Zentimetern als auch in Zoll auf den beiden LCD-Zeilen an
    • Fortgeschritten: Senden Sie den tatsächlichen Entfernungswert (in cm) direkt als Nachricht an den Telegram-Benutzer zurück

    ※ 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!