Arduino UNO Q - Temperatursensor
Die genaue Messung der Temperatur in Echtzeit ist eine der häufigsten Arduino-Aufgaben, und der DS18B20-Sensor macht es auf Arduino UNO Q einfach. Mit seiner einfachen 1-Draht-Schnittstelle liefert er digitale Temperaturmessungen direkt in Ihren Code — keine Analog-Digital-Umwandlung erforderlich.
In diesem Tutorial lernen Sie:
- Was der DS18B20 1-Draht-Temperatursensor ist und wie er funktioniert
- Wie Sie den DS18B20-Temperatursensor mit Arduino UNO Q verbinden
- Wie Sie den DS18B20-Temperatursensor mit Arduino UNO Q mit einem Verdrahtungsadapter verbinden
- Wie Sie den MCU (C/C++ Arduino-Code) auf Arduino UNO Q programmieren, um die Temperatur vom DS18B20-Sensor zu lesen
- Wie Sie sowohl die Linux-Seite (Python) als auch die MCU-Seite (C/C++ Arduino-Code) programmieren, damit die Linux-Seite Temperaturdaten vom DS18B20-Sensor liest und verarbeitet
- Wie Sie Telegram verwenden, um Arduino UNO Q eine Nachricht zu senden und Temperaturmessungen remote zu erhalten
- Wie Sie OpenClaw auf Arduino UNO Q verwenden, um die Temperatur vom DS18B20-Sensor zu lesen

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
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.
Über den DS18B20-Temperatursensor
Der DS18B20 ist ein digitaler Temperatursensor, der über einen einzelnen Datendraht unter Verwendung des 1-Draht-Protokolls kommuniziert.
- Protokoll: 1-Draht digital — ein Datenpin verwaltet sowohl Stromversorgung als auch Kommunikation
- Bereich: -55°C bis +125°C (-67°F bis +257°F) mit ±0,5°C Genauigkeit zwischen -10°C und +85°C
- Ausgabe: Digital — keine Analog-Digital-Umwandlung erforderlich
- Stromversorgung: Mit 3,3V oder 5V versorgt; unterstützt den parasitären Energiemodus (von der Datenleitung versorgt)
- Mehrere Sensoren: Bis zu 127 DS18B20-Sensoren können einen einzelnen Datenpin teilen, jeder mit einer eindeutigen 64-Bit-Adresse
- Gehäusetypen: TO-92-Transistor-Gehäuse und wasserdichtes Edelstahl-Messfühlrohr
Pinbelegung

Der DS18B20-Temperatursensor hat drei Pins:
| DS18B20 Pin | Funktion | Arduino UNO Q Pin |
|---|---|---|
| GND | Masse | GND |
| VCC | Stromversorgung (3,3V oder 5V) | 5V |
| DATA | 1-Draht-Datenbus | 4 |
- Pull-Up-Widerstand: Ein 4,7-kΩ-Widerstand zwischen dem DATA-Pin und VCC ist für eine zuverlässige 1-Draht-Kommunikation erforderlich
- Adapter: Wir empfehlen, einen DS18B20-Sensor mit Verdrahtungsadapter zu kaufen — dieser enthält den Pull-Up-Widerstand und einen Schraubklemmenblock, sodass keine zusätzlichen Komponenten erforderlich sind
Programmierung für DS18B20-Temperatursensor
- Schließen Sie die Bibliotheken ein:
- Erstellen Sie ein OneWire-Objekt und ein DallasTemperature-Objekt für den Pin, der mit dem DATA-Pin des Sensors verbunden ist:
- Initialisieren Sie den Sensor in setup():
- Fordern Sie eine Temperaturmessung an:
- Temperatur in Celsius lesen:
- (Optional) Celsius in Fahrenheit umrechnen:
Schaltplan
- Steckbrett-Verdrahtung (mit Pull-Up-Widerstand):

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
- Schaltplan mit Adapter (kein zusätzlicher Widerstand erforderlich):

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Wir empfehlen, einen DS18B20-Sensor mit Verdrahtungsadapter zu kaufen. Dieser Adapter macht die Verbindung einfach, da er einen Widerstand enthält und Sie keinen zusätzlichen benötigen.
MCU-Code (Direkte Arduino-Skizze)
Hier ist die Arduino-Skizze, die direkt auf der STM32-MCU ausgeführt wird, um die Temperatur vom DS18B20-Sensor zu lesen und die Messwerte in der App Lab-Konsole auszugeben.
- Initialisiert den DS18B20-Sensor mit der DallasTemperature-Bibliothek
- Fordert alle 500 ms eine Temperaturmessung an
- Liest die Temperatur in Celsius und konvertiert sie in Fahrenheit
- Gibt beide Werte in der App Lab-Konsole aus
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 den Sensor: Verbinden Sie den DS18B20 gemäß dem obigen Schaltplan mit Arduino UNO Q-Pin 4. Wenn Sie den Adapter verwenden, folgen Sie dem Adapter-Schaltplan.
- Verbinden: Stecken Sie die 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 Ihre Arduino UNO Q erkennt — dies kann beim ersten Start mehrere Minuten dauern.
- Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Neue App erstellen.

- Geben Sie der App einen Namen, z. B.: DIYables_DS18B20
- Klicken Sie auf Erstellen, um zu bestätigen.
- Sie sehen einen Satz von Ordnern und Dateien, die in Ihrer neuen App generiert werden.

- Finden Sie die Datei sketch/sketch.ino — hier fügen Sie die MCU-Skizze ein.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for DallasTemperature created by Miles Burton
, Tim Newsome , Guil Barros , Rob Tillaart and click the Install button.
- 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.
- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Upload: Klicken Sie auf die Ausführungsschaltfläche im Arduino App Lab, um zu kompilieren und auf den STM32 hochzuladen.

- Überprüfen Sie Messwerte: Öffnen Sie die Registerkarte Konsole → Unterfenster Serieller Monitor, um die Echtzeittemperatur-Ausgabe zu sehen.
- Test: Halten Sie den Sensor in Ihrer Hand oder legen Sie ihn in warmes Wasser und beobachten Sie, wie die Temperatur ansteigt.
- Pro-Tipp: Der DS18B20 benötigt etwa 750 ms, um eine Konvertierung abzuschließen — wenn die Messwerte eingefroren zu sein scheinen, erhöhen Sie den delay()-Wert auf mindestens 800 ms.
App Lab-Konsolenausgabe
Linux + MCU Bridge-Programmierung
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 Ports.
- DS18B20 ist mit der MCU (STM32) verbunden — der Sensor ist mit einem digitalen Pin auf der STM32 verdrahtet, nicht mit der MPU. Der MCU liest rohe 1-Draht-Daten direkt vom Sensor.
- MPU kann den Sensor nicht direkt lesen — um die Temperatur zu erhalten, muss die MPU eine Anfrage an den MCU über Bridge.call() senden. Der MCU führt die entsprechende Bridge.provide()-Funktion aus und gibt das Ergebnis zurück.
- MPU hat Wi-Fi — da die MPU vollständiges Debian Linux mit Wi-Fi-Unterstützung ausführt, kann sie sich mit dem Internet verbinden und Dinge tun, die die MCU nicht kann: Telegram-Nachrichten senden, REST-APIs aufrufen, Daten an Cloud-Services hochladen und mehr.
- Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide()-Funktionen auf der MCU-Seite auf
- ⚠️ Reserviert: /dev/ttyHS1 (Linux) und Serial1 (MCU) werden vom Arduino Router verwendet — öffnen Sie sie niemals direkt
Kurz gesagt: MCU liest den Sensor → MPU fordert den Wert an → MPU nutzt ihn über das Internet.
MCU-Skizze — stellt Temperaturmessung der Linux-Seite zur Verfügung:
Python-Skript (Arduino App Lab) — Temperatur von Linux lesen:
- Hinweis: Stellen Sie sicher, dass Bridge.begin() in der MCU-Skizze aufgerufen wird und die Skizze hochgeladen wird, bevor Sie das Python-Skript auf der Linux-Seite ausführen.
- ⚠️ Warnung: Öffnen Sie /dev/ttyHS1 (auf Linux) niemals direkt oder verwenden Sie Serial1 (auf MCU) in Ihrem Code — diese sind vom Arduino Router reserviert und der Zugriff darauf 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 oben in sketch/sketch.ino ein, installieren Sie die Bibliotheken DallasTemperature und OneWire, und klicken Sie auf Ausführen.
- Fügen Sie das Python-Skript hinzu: Fügen Sie den Python-Code oben auf der Registerkarte Python der gleichen App ein.
- Führen Sie die App aus: Klicken Sie auf Ausführen — die Linux-Seite beginnt, jede Sekunde Temperaturmessungen anzufordern.
- Überprüfen Sie die Konsole: Öffnen Sie die Registerkarte Konsole → Unterfenster Python-Konsole, um die Echtzeittemperatur-Ausgabe von der Linux-Seite zu sehen.
- Pro-Tipp: Passen Sie den time.sleep(1)-Wert an, um zu steuern, wie oft die Temperatur abgefragt wird — erhöhen Sie ihn, um die CPU-Auslastung auf der Linux-Seite zu reduzieren.
App Lab-Konsolenausgabe
Telegram-Integration
Sie können die Temperatur vom DS18B20-Sensor remote über Telegram lesen — senden Sie von überall einen Befehl und erhalten Sie sofort die aktuelle Temperaturmessung zurück.
Wenn Sie noch keinen Telegram-Bot haben, siehe So erstellen Sie einen Telegram-Bot, um Ihr Bot-Token vor dem Fortfahren zu erhalten.
Dieser Abschnitt behandelt:
- Ausführung eines Python-Skripts auf der Linux-Seite von Arduino UNO Q zum Abhören von Telegram-Nachrichten
- Weiterleitung der Temperaturanfrage an die MCU-Seite über Bridge.call()
- Rückgabe der Temperaturmessung als Telegram-Antwort
MCU-Skizze: Behalten Sie die gleiche MCU-Skizze aus dem vorherigen Bridge-Abschnitt — keine Änderungen erforderlich. Stellen Sie sicher, dass sie bereits hochgeladen und auf dem STM32 ausgeführt wird, bevor Sie fortfahren.
Python-Skript (Arduino App Lab) — Telegram-Bot für DS18B20-Temperatursensor:
- Hinweis: Ersetzen Sie YOUR_BOT_TOKEN durch das Token, das Sie von @BotFather auf Telegram erhalten haben.
- Senden Sie /temperature an Ihren Bot, um die aktuelle Temperaturmessung vom DS18B20-Sensor zu erhalten.
Schnelle Schritte
- Laden Sie die MCU-Skizze hoch: Verwenden Sie die Bridge MCU-Skizze aus dem vorherigen Abschnitt (laden Sie sie zunächst hoch, falls nicht bereits geschehen).
- Fügen Sie das Telegram-Skript ein: Kopieren Sie den Python-Code oben auf der Registerkarte Python Ihrer App im Arduino App Lab ein.
- Legen Sie Ihr Token fest: Ersetzen Sie YOUR_BOT_TOKEN im Skript durch Ihr echtes Bot-Token.
- Führen Sie die App aus: Klicken Sie auf Ausführen — der Bot beginnt sofort, auf Telegram-Nachrichten zu hören.
- Testen Sie es: Senden Sie /temperature an Ihren Bot und erhalten Sie die aktuelle Messung zurück.
- Pro-Tipp: Planen Sie /temperature-Abfragen von Ihrem Telegram-Telefon ein, um Temperaturtrends den ganzen Tag über zu überwachen.
App Lab-Konsolenausgabe
ArduinoBot
OpenClaw-Integration
Sie können die OpenClaw für dieses Tutorial anpassen, indem Sie die Anleitung im Tutorial Arduino Uno Q - OpenClaw beachten
Ideen für Anwendungen/Projekte
Hier sind einige Projektideen, die Sie mit dem DS18B20-Temperatursensor und Arduino UNO Q erstellen können:
- Raumtemperatur-Monitor: Protokollieren Sie Temperaturmessungen jede Minute und zeigen Sie Trends auf der Linux-Seite an
- Temperaturwarnsystem: Senden Sie eine Telegram-Benachrichtigung, wenn die Temperatur einen festgelegten Schwellenwert überschreitet
- Intelligentes Thermostat: Lesen Sie die DS18B20-Temperatur von der Linux-Seite und steuern Sie auf Basis der Messung ein Relais oder einen Lüfter über Bridge.call()
- Datenlogger: Speichern Sie Temperaturmessungen mit dem Python-Skript alle paar Sekunden in einer CSV-Datei im Linux-Dateisystem
- Multi-Sensor-Netzwerk: Verbinden Sie mehrere DS18B20-Sensoren mit einem einzelnen Pin (jeder hat eine eindeutige ID) und lesen Sie alle von der Linux-Seite
- Anlagenschutzsystem: Überwachen Sie die Außentemperatur und senden Sie eine Telegram-Warnung, wenn Frostbedingungen erkannt werden
Benötigen Sie weitere DS18B20-Details? Siehe das Tutorial Arduino DS18B20 für weitere Ideen.
Fordern Sie sich selbst heraus
Versuchen Sie diese Herausforderungen mit dem DS18B20-Temperatursensor und Arduino UNO Q, um Ihre Fähigkeiten zu verbessern:
- Einfach: Ändern Sie die MCU-Skizze so ab, dass sie auch die eindeutige 64-Bit-Adresse des Sensors zusammen mit der Temperaturmessung liest und anzeigt
- Mittel: Fügen Sie einen zweiten DS18B20-Sensor auf dem gleichen Datenpin hinzu und lassen Sie die Python-Seite beide Sensoren unabhängig mit ihren eindeutigen Adressen lesen
- Fortgeschritten: Erstellen Sie einen per Telegram gesteuerten Temperaturdatenlogger, der Messwerte in einer Datei auf der Linux-Seite speichert und auf Anfrage über Telegram einen Zusammenfassungsbericht (Minimum/Maximum/Durchschnitt) sendet