Arduino UNO Q - Temperatursensor - LCD

Möchten Sie Live-Temperaturmessungen auf einem LCD mit Ihrem Arduino UNO Q anzeigen — und Telegram-Benachrichtigungen erhalten, wenn es zu heiß wird? Dieses Tutorial kombiniert den DS18B20-Temperatursensor mit einem I2C-LCD, um eine komplette Temperaturüberwachungsstation zu schaffen.

In diesem Tutorial lernen Sie:

Arduino UNO Q Temperature Sensor LCD

Erforderliche Hardware

1×Arduino UNO Q
1×USB-Kabel für Arduino Uno Q
1×LCD I2C 16x2
1×(Alternativ) LCD I2C 20x4
1×DS18B20-Temperatursensor (MIT Adapter)
1×DS18B20-Temperatursensor (OHNE Adapter)
1×Verbindungsdrähte
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: Viele DS18B20-Sensoren auf dem Markt sind von geringer Qualität. Wir empfehlen dringend den Kauf des Sensors von der Marke DIYables über den obigen Link. Wir haben ihn getestet und er funktionierte gut.

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

Über den Temperatursensor und das LCD

Wenn Sie mit dem DS18B20-Sensor oder dem I2C-LCD-Display neu sind, schauen Sie sich zuerst diese Tutorials an:

Schaltplan

Arduino UNO Q Temperature Sensor LCD Wiring Diagram

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

DS18B20-Verbindungen:

DS18B20-Pin Arduino UNO Q MCU
GND GND
VCC 3,3V oder 5V
DATA D4

LCD I2C-Verbindungen:

LCD I2C-Pin Arduino UNO Q MCU
VCC 5V
GND GND
SDA A4
SCL A5

Arduino UNO Q Code

Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten:

  • Der STM32 MCU liest den DS18B20-Sensor und steuert das LCD direkt an
  • Der Qualcomm MPU führt Debian Linux aus und verwaltet Wi-Fi, Python und Cloud-Konnektivität
  • In diesem Abschnitt wird nur das MCU programmiert — die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren über Bridge zusammenarbeiten.

Das MCU liest die Temperatur alle Sekunden und aktualisiert sowohl die LCD-Anzeige als auch den seriellen Monitor.

/* * 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-temperature-sensor-lcd */ #include <OneWire.h> #include <DallasTemperature.h> #include <DIYables_LCD_I2C.h> #define SENSOR_PIN 4 // Arduino UNO Q MCU pin connected to DS18B20 DATA pin OneWire oneWire(SENSOR_PIN); DallasTemperature DS18B20(&oneWire); DIYables_LCD_I2C lcd(0x27, 16, 2); float temperature_C; float temperature_F; void setup() { Serial.begin(115200); delay(1500); DS18B20.begin(); lcd.init(); lcd.backlight(); lcd.print("Temp Sensor Ready"); Serial.println("Arduino UNO Q Temperature Sensor + LCD ready"); } void loop() { DS18B20.requestTemperatures(); temperature_C = DS18B20.getTempCByIndex(0); temperature_F = temperature_C * 9.0 / 5.0 + 32.0; lcd.clear(); lcd.setCursor(0, 0); lcd.print(temperature_C); lcd.print((char)223); // degree symbol lcd.print("C"); lcd.setCursor(0, 1); lcd.print(temperature_F); lcd.print((char)223); lcd.print("F"); Serial.print("Temperature: "); Serial.print(temperature_C); Serial.print("°C ~ "); Serial.print(temperature_F); Serial.println("°F"); delay(1000); }

※ Notiz:

Die I2C-Adresse für das LCD kann je nach Hersteller unterschiedlich sein. In diesem Code haben wir 0x27 verwendet, die vom Hersteller DIYables angegeben wird.

Schnelle Schritte

Neuer Benutzer mit Arduino UNO Q? Folgen Sie dem Tutorial Erste Schritte mit Arduino UNO Q, bevor Sie fortfahren.

  • Verbinden: Verkabeln Sie den DS18B20-Sensor und das LCD I2C mit dem Arduino UNO Q MCU wie im obigen Schaltplan 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.
Create New App in Arduino App Lab on Arduino UNO Q
  • Geben Sie der App einen Namen, z. B.: TemperatureSensorLcd
  • Klicken Sie auf Erstellen, um zu bestätigen.
Arduino App Lab App folders and files on Arduino UNO Q
  • Fügen Sie die Skizze ein: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein. Behalten Sie andere Dateien als Standard.
  • 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 DallasTemperature created by Miles Burton , Tim Newsome , Guil Barros , Rob Tillaart 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
DallasTemperature Miles Burton , Tim Newsome , Guil Barros , Rob Tillaart

Supports DS18B20, DS18S20, DS1822, DS1820

3.9.0
Install
More Info
  • Search for OneWire created by Jim Studt, Tom Pollard, Robin James, Glenn Trewitt, Jason Dangel, Guillermo Lovato, Paul Stoffregen, Scott Roberts, Bertrik Sikken, Mark Tillotson, Ken Butcher, Roger Clark, Love Nystrom 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
OneWire Jim Studt, Tom Pollard, Robin James, Glenn Trewitt, Jason Dangel, Guillermo Lovato, Paul Stoffregen, Scott Roberts, Bertrik Sikken, Mark Tillotson, Ken Butcher, Roger Clark, Love Nystrom

2.3.8
Install
More Info
  • 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
  • Hochladen: Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab.
Click Run button in Arduino App Lab on Arduino UNO Q
  • Halten Sie den Sensor in Ihrer Hand oder legen Sie ihn in heißes/kaltes Wasser — sehen Sie die Temperaturaktualisierung auf dem LCD.

Wenn das LCD nichts anzeigt, überprüfen Sie Fehlerbehebung für LCD I2C für Hilfe.

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
[2026-04-29 09:00:01] Arduino UNO Q Temperature Sensor + LCD ready [2026-04-29 09:00:02] Temperature: 26.31°C ~ 79.36°F [2026-04-29 09:00:03] Temperature: 26.44°C ~ 79.59°F [2026-04-29 09:00:04] Temperature: 27.06°C ~ 80.71°F [2026-04-29 09:00:05] Temperature: 28.50°C ~ 83.30°F

Bridge: Linux + MCU

Dieser Abschnitt zeigt, wie Sie beide Prozessoren des Arduino UNO Q programmieren, damit die Linux-Seite die Temperatur remote über Bridge überwachen kann:

  • Der DS18B20-Sensor und das LCD sind beide mit dem MCU (STM32) verbunden — das MCU liest die Temperatur alle Sekunden und aktualisiert die LCD-Anzeige automatisch
  • Der MPU kann nicht direkt auf den Sensor oder das LCD zugreifen — er muss Bridge-Funktionen aufrufen, um Temperaturmessungen zu lesen oder das LCD zu löschen
  • Der MPU hat Wi-Fi — mit vollem Debian Linux kann er Messungen protokollieren, auf Dashboards veröffentlichen oder Warnungen über das Internet versenden
  • Arduino_RouterBridge aktiviert RPC-Kommunikation zwischen den beiden Prozessoren
  • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT durch den Router — öffnen Sie sie niemals im Benutzercode

Kurz gesagt: MCU liest Sensor alle Sekunden und aktualisiert LCD → MPU liest Temperatur über Bridge → MPU veröffentlicht, protokolliert oder warnt über Wi-Fi.

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-temperature-sensor-lcd */ #include <OneWire.h> #include <DallasTemperature.h> #include <DIYables_LCD_I2C.h>#include "Arduino_RouterBridge.h" #define SENSOR_PIN 4 OneWire oneWire(SENSOR_PIN); DallasTemperature DS18B20(&oneWire); DIYables_LCD_I2C lcd(0x27, 16, 2); float last_temp_c = 0.0; float last_temp_f = 0.0; unsigned long last_read_ms = 0; void update_lcd() { lcd.clear(); lcd.setCursor(0, 0); lcd.print(last_temp_c); lcd.print((char)223); lcd.print("C"); lcd.setCursor(0, 1); lcd.print(last_temp_f); lcd.print((char)223); lcd.print("F"); } String get_temp_c(String arg) { return String(last_temp_c, 2); } String get_temp_f(String arg) { return String(last_temp_f, 2); } String clear_lcd(String arg) { lcd.clear(); Monitor.println("LCD cleared"); return "OK"; } String get_status(String arg) { return "Temp: " + String(last_temp_c, 2) + "°C / " + String(last_temp_f, 2) + "°F"; } void setup() { Bridge.begin(); Monitor.begin(); DS18B20.begin(); lcd.init(); lcd.backlight(); lcd.print("Bridge Ready"); DS18B20.requestTemperatures(); last_temp_c = DS18B20.getTempCByIndex(0); last_temp_f = last_temp_c * 9.0 / 5.0 + 32.0; update_lcd(); Bridge.provide("get_temp_c", get_temp_c); Bridge.provide("get_temp_f", get_temp_f); Bridge.provide_safe("clear_lcd", clear_lcd); Bridge.provide("get_status", get_status); Monitor.println("Arduino UNO Q Temperature Sensor + LCD Bridge ready"); } void loop() { unsigned long now = millis(); if (now - last_read_ms >= 1000) { last_read_ms = now; DS18B20.requestTemperatures(); last_temp_c = DS18B20.getTempCByIndex(0); last_temp_f = last_temp_c * 9.0 / 5.0 + 32.0; update_lcd(); Monitor.println("Temp: " + String(last_temp_c, 2) + "°C / " + String(last_temp_f, 2) + "°F"); } }

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-temperature-sensor-lcd */ from arduino.app_utils import * import time def loop(): status = Bridge.call("get_status") print(status) time.sleep(1) App.run(user_loop=loop)

Schnelle Schritte

  • Verbinden: Verkabeln Sie den DS18B20-Sensor und das LCD I2C mit dem Arduino UNO Q wie im Schaltplan gezeigt.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis das Board erkannt wird.
  • Erstellen Sie eine neue App: Klicken Sie auf Neue App erstellen, benennen Sie sie TemperatureSensorLcdBridge, und klicken Sie auf Erstellen.
  • Fügen Sie die MCU-Skizze ein: Kopieren Sie den MCU-Bridge-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
  • Fügen Sie den Python-Code ein: Kopieren Sie den Python-Bridge-Code oben und fügen Sie ihn in die Python-Datei der App ein.
  • Hochladen: Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab.
Click Run button in Arduino App Lab on Arduino UNO Q
  • Sehen Sie, wie die Temperaturmessungen in der Python-Konsole angezeigt werden, während sich das LCD automatisch aktualisiert.

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
[2026-04-29 09:00:01] Arduino UNO Q Temperature Sensor + LCD Bridge ready [2026-04-29 09:00:02] Temp: 26.31°C / 79.36°F [2026-04-29 09:00:03] Temp: 26.44°C / 79.59°F [2026-04-29 09:00:04] Temp: 27.06°C / 80.71°F
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:02] Temp: 26.31°C / 79.36°F [2026-04-29 09:00:03] Temp: 26.44°C / 79.59°F [2026-04-29 09:00:04] Temp: 27.06°C / 80.71°F [2026-04-29 09:00:05] Temp: 28.50°C / 83.30°F

Telegram

Überwachen Sie die Temperatur remote und erhalten Sie automatische Telegram-Benachrichtigungen, wenn die Temperatur über 35°C steigt.

MCU-Skizze: Behalten Sie die gleiche MCU-Skizze 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-temperature-sensor-lcd */ 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 ALERT_THRESHOLD_C = 35.0 alert_sent = False 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(): global alert_sent # Auto-alert on high temperature temp_c_str = Bridge.call("get_temp_c") try: temp_c = float(temp_c_str) if temp_c > ALERT_THRESHOLD_C and not alert_sent: alert_sent = True temp_f = Bridge.call("get_temp_f") msg = f"⚠️ High temperature alert: {temp_c_str}°C / {temp_f}°F" print(msg) send_message(CHAT_ID, msg) elif temp_c <= ALERT_THRESHOLD_C: alert_sent = False except ValueError: pass # 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 Temperature Sensor + LCD Bot\n" "/temp - Read temperature (°C and °F)\n" "/tempC - Read temperature in Celsius\n" "/tempF - Read temperature in Fahrenheit\n" "/clear - Clear the LCD display\n" "/status - Get sensor status") elif text == "/temp": temp_c = Bridge.call("get_temp_c") temp_f = Bridge.call("get_temp_f") send_message(chat_id, f"Temperature: {temp_c}°C ~ {temp_f}°F") elif text == "/tempC": result = Bridge.call("get_temp_c") send_message(chat_id, f"Temperature: {result}°C") elif text == "/tempF": result = Bridge.call("get_temp_f") send_message(chat_id, f"Temperature: {result}°F") elif text == "/clear": result = Bridge.call("clear_lcd") send_message(chat_id, result) elif text == "/status": result = Bridge.call("get_status") send_message(chat_id, result) else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(1) App.run(user_loop=loop)

Schnelle Schritte

  • Ersetzen Sie YOUR_TELEGRAM_BOT_TOKEN durch Ihren tatsächlichen 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 die gleiche MCU-Skizze).
  • Klicken Sie auf die Schaltfläche Ausführen. Senden Sie /temp von Telegram oder halten Sie den Sensor, um eine Hochtemperatur-Benachrichtigung auszulösen.

App Lab-Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:10:00] Waiting for Telegram messages... [2026-04-29 09:10:15] ⚠️ High temperature alert: 36.25°C / 97.25°F [2026-04-29 09:10:30] Received: /temp [2026-04-29 09:10:45] Received: /clear
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
/temp
10:15 AM ✓✓
Temperature: 26.31°C ~ 79.36°F
10:16 AM
/tempC
10:17 AM ✓✓
Temperature: 26.31°C
10:18 AM
/tempF
10:19 AM ✓✓
Temperature: 79.36°F
10:20 AM
/clear
10:21 AM ✓✓
OK
10:22 AM
/status
10:23 AM ✓✓
Temp: 26.31°C / 79.36°F
10:24 AM
⚠️ High temperature alert: 36.25°C / 97.25°F
10:25 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 kombinieren, die den Temperatursensor und das LCD mit Arduino UNO Q verbinden:

  • Intelligentes Thermometer: Ein eigenständiges LCD-Thermometer, das automatisch alle 5 Sekunden zwischen Celsius und Fahrenheit wechselt — perfekt für einen Schreibtisch oder ein Labor
  • Temperaturprotokoll mit Anzeige: Das MCU zeigt die Live-Temperatur auf dem LCD an, während die Linux-MPU Messungen jede Minute mit Zeitstempel in eine Datei protokolliert
  • Gewächshaus-Regler: Verwenden Sie die Temperaturmessung, um ein Relais-Lüfter zu steuern — das LCD zeigt den aktuellen Status an, und Telegram empfängt Benachrichtigungen, wenn die Temperatur außerhalb des Bereichs liegt
  • Remote-Temperaturstation: Die MPU veröffentlicht die Temperatur alle 30 Sekunden an einen MQTT-Broker; das LCD zeigt immer die aktuelle lokale Messung an, während Remote-Dashboards die Historie verfolgen
  • Zwei-Zonen-Thermometer: Verbinden Sie zwei DS18B20-Sensoren auf dem gleichen 1-Wire-Bus und zeigen Sie die Messung jedes Sensors in einer separaten LCD-Zeile an, gekennzeichnet mit "Zone A" und "Zone B"

Fordern Sie sich selbst heraus

Bereit, mit dem Temperatursensor und LCD auf Arduino UNO Q noch weiter zu gehen? Versuchen Sie diese Herausforderungen:

  • Einfach: Ändern Sie die MCU-Skizze so, dass die zweite LCD-Zeile eine benutzerdefinierte Nachricht anzeigt — "HEISS!" wenn die Temperatur über 35°C liegt, "KALT!" wenn unter 10°C, oder "NORMAL" andernfalls.
  • Mittel: Fügen Sie eine set_label(String) Bridge-Funktion hinzu, die es der Python-Seite ermöglicht, eine benutzerdefinierte Beschriftung in der zweiten LCD-Zeile zu schreiben (z. B. den Ortsnamen wie "Büro" oder "Serverraum"), während die erste Zeile weiterhin die Temperatur anzeigt.
  • Fortgeschritten: Erstellen Sie ein Temperatur-Verlaufscharte: Die Linux-MPU liest die Temperatur alle 10 Sekunden für 10 Minuten, speichert die Werte und sendet bei /report das Minimum, Maximum und den Durchschnitt an Telegram, zusammen mit einem einfachen ASCII-Diagramm, das den Trend zeigt.

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