Arduino UNO Q - LM35 Temperatursensor

Der LM35 ist ein einfacher analoger Temperatursensor, der eine Spannung ausgibt, die proportional zur Temperatur ist. Bei Arduino UNO Q liefert das ADC des MCU mit 12-Bit eine höhere Genauigkeit als Standard-Boards mit 10-Bit. In diesem Tutorial erfahren Sie, wie Sie den LM35 verkabeln und programmieren – und wie Sie ihn remote über Telegram überwachen.

In diesem Tutorial lernen Sie:

Arduino UNO Q LM35 Temperatursensor

Erforderliche Hardware

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×LM35 Temperature Sensor
1×Breadboard
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 LM35 Temperatursensor

Pinbelegung

Der LM35 hat drei Pins:

  • GND: Mit GND verbinden (0V)
  • VCC: Mit 5V verbinden (der LM35 benötigt mindestens 4V Versorgung)
  • OUT: Analoger Ausgang – mit einem analogen Pin des Arduino UNO Q MCU verbinden
LM35 Temperatursensor Pinbelegung

Funktionsweise

Der LM35 gibt eine Spannung aus, die linear mit der Temperatur ansteigt: Jeder 1°C Anstieg erhöht die Ausgabe um 10mV. Um die Temperatur zu messen, müssen Sie die Ausgangsspannung messen und durch 10 dividieren.

Bei Arduino UNO Q verwendet der MCU (STM32U585) einen 12-Bit-ADC (Werte 0–4095) mit einer 3,3V-Referenz. Dies bietet eine bessere Auflösung als Standard-Arduino-Boards mit 10-Bit.

Schaltplan

Arduino UNO Q LM35 Temperatursensor Schaltplan

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

LM35 Pin Arduino UNO Q MCU
GND GND
VCC 5V
OUT A0

※ Notiz:

Verbinden Sie LM35 VCC mit dem 5V-Pin, nicht mit 3,3V – der LM35 benötigt mindestens 4V zum Betrieb. Die Analogausgabe liegt immer noch im 3,3V-ADC-Bereich des MCU.

Programmieren für den LM35

  • Lesen Sie den ADC-Wert vom analogen Pin:
int adcVal = analogRead(PIN_LM35);
  • Konvertieren Sie den ADC-Wert in Spannung in Millivolt (mit 3,3V-Referenz und 12-Bit-Auflösung):
float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION); // ADC_VREF_mV = 3300.0 (3.3V reference on UNO Q MCU) // ADC_RESOLUTION = 4096.0 (12-bit ADC on UNO Q MCU)
  • Konvertieren Sie Millivolt in Celsius:
float tempC = milliVolt / 10;
  • Konvertieren Sie Celsius in Fahrenheit:
float tempF = tempC * 9.0 / 5.0 + 32.0;

Arduino UNO Q Code

Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten:

  • Die STM32 MCU liest die analoge LM35-Ausgabe direkt über ihr 12-Bit-ADC – alle Sensormessungen und Konvertierungen laufen auf dem MCU
  • Die Qualcomm MPU führt Debian Linux aus und verwaltet Wi-Fi, Python und Cloud-Konnektivität
  • In diesem Abschnitt wird nur die MCU programmiert – die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren über Bridge zusammenarbeiten.

Die MCU liest den LM35 jede Sekunde und gibt die Temperatur an den Serial Monitor aus.

/* * 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-lm35-temperature-sensor */ // Arduino UNO Q MCU (STM32U585) uses a 12-bit ADC (0–4095) with a 3.3V reference #define ADC_VREF_mV 3300.0 // MCU reference voltage in millivolts #define ADC_RESOLUTION 4096.0 // 12-bit ADC resolution #define PIN_LM35 A0 // Analog pin connected to LM35 OUT pin void setup() { Serial.begin(115200); delay(1500); Serial.println("Arduino UNO Q LM35 Temperature Sensor ready"); } void loop() { int adcVal = analogRead(PIN_LM35); float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION); float tempC = milliVolt / 10; float tempF = tempC * 9.0 / 5.0 + 32.0; Serial.print("Temperature: "); Serial.print(tempC); Serial.print("°C = "); Serial.print(tempF); Serial.println("°F"); delay(1000); }

Schnelle Schritte

Erstes Mal mit Arduino UNO Q? Folgen Sie zunächst dem Tutorial Getting Started with Arduino UNO Q.

  • Verbinden: Verkabeln Sie den LM35-Sensor mit dem Arduino UNO Q MCU wie im Schaltplan gezeigt.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihren Arduino UNO Q erkannt hat.
  • Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Create New App.
Create New App in Arduino App Lab on Arduino UNO Q
  • Geben Sie der App einen Namen, z. B.: Lm35TemperatureSensor
  • Klicken Sie auf Create, um zu bestätigen.
Arduino App Lab App folders and files on Arduino UNO Q
  • Fügen Sie den Sketch ein: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein. Behalten Sie andere Dateien wie vorgegeben.
  • Keine Bibliothek erforderlich – der LM35 verwendet nur die integrierte Funktion analogRead().
  • Upload: Klicken Sie auf die Run-Schaltfläche in Arduino App Lab.
Click Run button in Arduino App Lab on Arduino UNO Q
  • Halten Sie den Sensor in Ihrer Hand – beobachten Sie, wie die Temperatur in der Konsole ansteigt.

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 LM35 Temperature Sensor 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: 26.87°C = 80.37°F [2026-04-29 09:00:05] Temperature: 27.25°C = 81.05°F

Bridge: Linux + MCU

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

  • Der LM35-Sensor ist mit dem analogen Pin der MCU (STM32) verbunden – die MCU liest und konvertiert den ADC-Wert jede Sekunde
  • Die MPU kann nicht direkt auf den analogen Pin zugreifen – sie muss Bridge-Funktionen aufrufen, um Messwerte abzurufen
  • Die MPU hat Wi-Fi – auf Debian Linux läuft sie, kann Daten protokollieren, auf Dashboards veröffentlichen oder Benachrichtigungen über das Internet senden
  • Arduino_RouterBridge ermöglicht RPC-Kommunikation zwischen den beiden Prozessoren
  • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT vom Router – öffnen Sie sie niemals in Benutzercode

Kurz gesagt: MCU liest LM35 jede Sekunde über 12-Bit-ADC → MPU liest Temperatur über Bridge → MPU veröffentlicht oder benachrichtigt ü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-lm35-temperature-sensor */ // Arduino UNO Q MCU (STM32U585) uses a 12-bit ADC (0–4095) with a 3.3V reference#include "Arduino_RouterBridge.h" #define ADC_VREF_mV 3300.0 #define ADC_RESOLUTION 4096.0 #define PIN_LM35 A0 float last_temp_c = 0.0; float last_temp_f = 0.0; unsigned long last_read_ms = 0; void read_lm35() { int adcVal = analogRead(PIN_LM35); float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION); last_temp_c = milliVolt / 10.0; last_temp_f = last_temp_c * 9.0 / 5.0 + 32.0; } 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 get_status(String arg) { return "Temp: " + String(last_temp_c, 2) + "°C / " + String(last_temp_f, 2) + "°F"; } void setup() { Bridge.begin(); Monitor.begin(); read_lm35(); Bridge.provide("get_temp_c", get_temp_c); Bridge.provide("get_temp_f", get_temp_f); Bridge.provide("get_status", get_status); Monitor.println("Arduino UNO Q LM35 Temperature Sensor Bridge ready"); } void loop() { unsigned long now = millis(); if (now - last_read_ms >= 1000) { last_read_ms = now; read_lm35(); 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-lm35-temperature-sensor */ from arduino.app_utils import * import time def loop(): temp_c = Bridge.call("get_temp_c") temp_f = Bridge.call("get_temp_f") print(f"Temperature: {temp_c}°C = {temp_f}°F") time.sleep(1) App.run(user_loop=loop)

Schnelle Schritte

  • Verbinden: Verkabeln Sie den LM35-Sensor 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 Create New App, nennen Sie sie Lm35TemperatureSensorBridge, und klicken Sie dann auf Create.
  • Fügen Sie den MCU-Sketch 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.
  • 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
  • Upload: Klicken Sie auf die Run-Schaltfläche in Arduino App Lab.
Click Run button in Arduino App Lab on Arduino UNO Q
  • Beobachten Sie, wie jede Sekunde Temperaturmesswerte in der Python-Konsole erscheinen.

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 LM35 Temperature Sensor 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: 26.87°C / 80.37°F
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[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: 26.87°C = 80.37°F [2026-04-29 09:00:05] Temperature: 27.25°C = 81.05°F

Telegram

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

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-lm35-temperature-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 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 LM35 Temperature Sensor Bot\n" "/temp - Read temperature (°C and °F)\n" "/tempC - Read temperature in Celsius\n" "/tempF - Read temperature in Fahrenheit\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 == "/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 aktuellen 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 bei).
  • Klicken Sie auf die Run-Schaltfläche. Senden Sie /temp von Telegram aus oder halten Sie den Sensor, um die 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: /tempC
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
/status
10:21 AM ✓✓
Temp: 26.31°C / 79.36°F
10:22 AM
⚠️ High temperature alert: 36.25°C / 97.25°F
10:23 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 LM35 und Arduino UNO Q erstellen:

  • Analoger Temperatur-Monitor: Die kontinuierliche analoge Ausgabe des LM35 und das 12-Bit-ADC des MCU ermöglichen glatte, hochauflösende Messungen – protokollieren Sie jede Sekunde und erkennen Sie Micro-Temperatur-Trends
  • Überhitzungsschutz: Verwenden Sie den LM35 zur Überwachung eines Geräts (Motor, Schaltung) – die MCU aktiviert über Bridge ein Relais, wenn die Temperatur die sichere Grenze überschreitet, und benachrichtigt Sie über Telegram
  • Multi-Zone-Temperaturvermessung: Verbinden Sie mehrere LM35-Sensoren mit verschiedenen analogen Pins – die Python-Seite fragt jeden über Bridge ab und zeigt einen Seite-an-Seite-Temperaturvergleich
  • Kalibriertes Thermometer: Nutzen Sie die Werkskalibrierung des LM35 (±0,5°C), um ein präzises digitales Thermometer mit Telegram-Befehlen für bedarfsgesteuerte Messungen zu bauen
  • Temperaturgesteuerte Lüfterdrehzahl-Steuerung: Ordnen Sie den LM35-ADC-Wert direkt einem PWM-Ausgangswert auf dem MCU zu, um die Lüfterdrehzahl zu steuern – die Python-Seite kann das Lüfter-Tastverhältnis über Bridge überwachen

Fordern Sie sich selbst heraus

Bereit, weiter mit dem LM35 auf Arduino UNO Q zu gehen? Versuchen Sie diese Herausforderungen:

  • Einfach: Fügen Sie einen gleitenden Durchschnittsfilter im MCU-Sketch hinzu, der die letzten 10 ADC-Messwerte mittelt, bevor die Temperatur berechnet wird – dies reduziert das Rauschen in der Ausgabe.
  • Mittel: Vergleichen Sie LM35- und DS18B20-Messwerte nebeneinander: verbinden Sie beide Sensoren und fügen Sie eine compare_sensors(String)-Bridge-Funktion hinzu, die beide Messwerte in einer einzigen Antwort für einfachen Vergleich zurückgibt.
  • Fortgeschritten: Bauen Sie ein Kalibrierungstool: nehmen Sie 100 LM35-Messwerte über 10 Sekunden auf, berechnen Sie Mittelwert und Standardabweichung, und geben Sie sie als JSON-String über eine get_stats(String)-Bridge-Funktion zurück – Python zeigt die Kalibrierungsergebnisse an und protokolliert sie.

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