Arduino UNO Q - Lichtsensor

Dieses Tutorial zeigt dir, wie du einen LDR-Lichtsensor mit Arduino UNO Q verwendest. Im Detail wirst du lernen:

Arduino UNO Q Lichtsensor

Erforderliche Hardware

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Lichtsensor
1×10 kΩ Resistor
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.

Der LDR-Lichtsensor ist sehr erschwinglich, erfordert aber einen Widerstand zur Verdrahtung, was den Aufbau komplexer machen kann. Um die Verdrahtung zu vereinfachen, können Sie ein LDR-Lichtsensormodul als Alternative verwenden.

Über Lichtsensor

Dieses Tutorial verwendet einen Lichtsensor, der als Photowiderstand bekannt ist, auch Light-Dependent Resistor (LDR) oder Photozelle genannt. Er wird verwendet, um herauszufinden und zu messen, wie hell das umgebende Licht ist.

Pinbelegung

Ein Photowiderstand hat zwei Pins. Da es sich um eine Art Widerstand handelt, müssen wir diese Pins nicht separat identifizieren. Sie sind gleich.

Lichtsensor Pinbelegung

Wie es funktioniert

Ein Photowiderstand ist eine spezielle Art von Widerstand, der seinen Widerstand basierend auf der Menge des Lichts ändert, das er erkennt. Wenn viel Licht vorhanden ist, wird der Widerstand sehr niedrig. Wenn wenig oder kein Licht vorhanden ist, wird der Widerstand sehr hoch. Durch Messung des Widerstands des Photowiderstands können wir bestimmen, wie hell oder dunkel das umgebende Licht ist.

Wie Lichtsensor funktioniert

WARNING

Der Lichtsensorwert zeigt eine ungefähre Vorstellung davon, wie hell das Licht ist, gibt aber nicht die genaue Menge an Licht an. Verwenden Sie ihn nur in Situationen, in denen Sie keine sehr genauen Messungen benötigen.

Arduino UNO Q - Lichtsensor

Der Arduino UNO Q STM32 MCU hat einen 12-Bit ADC mit einer 3,3V-Referenz. Analoge Eingangspins A0–A5 konvertieren Spannung (0 V bis 3,3 V) in Werte zwischen 0 und 4095.

Durch Verbinden eines Pins des Photowiderstands mit einem analogen Eingabepin des Arduino UNO Q können wir den analogen Wert mithilfe der analogRead()-Funktion lesen, um relative Lichtstufen zu bestimmen.

※ Notiz:

Der Arduino UNO Q verwendet einen 12-Bit ADC (0–4095) mit einer 3,3V-Referenz — anders als Arduino UNO R4, das einen 14-Bit ADC verwendet, oder traditionelle Uno-Boards, die 10-Bit (0–1023) verwenden. Skalieren Sie Ihre Schwellwerte immer entsprechend.

Schaltplan

Arduino UNO Q Lichtsensor Schaltplan

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

MCU-Code

Der Arduino UNO Q hat zwei Prozessoren: den STM32 MCU (verwaltet die Hardwaresteuerung in Echtzeit) und den Qualcomm MPU (läuft Debian Linux). In diesem Abschnitt wird nur der STM32 MCU programmiert — die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren zusammenarbeiten.

Der folgende Code liest alle 500 ms den ADC-Wert der Photozelle:

/* * 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-light-sensor */ void setup() { // nothing to set up } void loop() { // Read ADC value from pin A0 (12-bit: 0-4095 on Arduino UNO Q, 3.3V reference) int value = analogRead(A0); // Qualitative light level thresholds (scaled for 12-bit ADC) // Dark: 0-39, Dim: 40-799, Light: 800-1999, Bright: 2000-3199, Very bright: 3200-4095 // TO DO: use the value in your logic here // Example: if (value < 800) { /* dim or dark */ } delay(500); }

※ Notiz:

Der Arduino UNO Q MCU verwendet einen 12-Bit ADC (Werte 0–4095). Lichtstufen-Schwellwerte werden entsprechend skaliert: Dunkel < 40, Dunkelheit < 800, Licht < 2000, Hell < 3200, Sehr hell ≥ 3200.

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 den Photowiderstand und 10 kΩ Widerstand in einem Spannungsteiler mit Pin A0, wie in der Abbildung gezeigt.
  • Verbinden: Schließen Sie den Arduino UNO Q mit einem USB-C-Kabel an Ihren Computer an.
  • Ö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.
Neue App in Arduino App Lab auf Arduino UNO Q erstellen
  • Geben Sie der App einen Namen, z. B.: DIYables_LightSensor
  • 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 sketch/sketch.ino-Datei — 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 Skizzendatei 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 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 Ausführungsschaltfläche in Arduino App Lab, um zum STM32 zu kompilieren und hochzuladen.
    Klicken Sie auf die Ausführungsschaltfläche in Arduino App Lab auf Arduino UNO Q
    • Test: Leuchten Sie Licht auf den Sensor oder bedecken Sie ihn mit Ihrer Hand, verwenden Sie dann den unten stehenden Bridge-Bereich, um die Werte über Monitor zu lesen.

    Linux + MCU Bridge-Programmierung

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

    • Der Lichtsensor ist mit dem MCU (STM32) verbunden — der Photowiderstand-Spannungsteiler versorgt analogen Pin A0 auf dem STM32.
    • Der MPU kann A0 nicht direkt lesen — er muss eine Funktion auf dem MCU über Bridge.call() aufrufen, um die Sensorlesung anzufordern.
    • Der MPU hat Wi-Fi — da der MPU vollständiges Debian Linux mit Wi-Fi ausführt, kann er Telegram-Befehle empfangen und Sensorablesungen remote senden.
    • Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide()-Funktionen auf der MCU-Seite auf (analoge Lesung ist sicher — kein Hardware-GPIO-Schreibzugriff erforderlich)
    • ⚠️ Reserviert: /dev/ttyHS1 (Linux) und Serial1 (MCU) werden von Arduino Router verwendet — öffnen Sie sie niemals direkt

    Kurz gesagt: MPU fordert Lesung an → MCU liest ADC → MCU gibt Ergebnis an Monitor aus.

    MCU-Skizze — Lichtsensorlesung mit Bridge und Monitor-Ausgabe:

    /* * 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-light-sensor */ #include "Arduino_RouterBridge.h" String get_light_level(int value) { if (value < 40) return "Dark"; if (value < 800) return "Dim"; if (value < 2000) return "Light"; if (value < 3200) return "Bright"; return "Very bright"; } void read_light() { int value = analogRead(A0); String level = get_light_level(value); Monitor.print("Analog reading: "); Monitor.print(value); Monitor.print(" - "); Monitor.println(level); } void setup() { Bridge.begin(); Monitor.begin(); Bridge.provide("read_light", read_light); Monitor.println("Light Sensor Bridge ready"); } void loop() {}

    Python-Skript (Arduino App Lab) — fordert alle Sekunde Lesungen von Linux an:

    /* * 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-light-sensor */ from arduino.app_utils import * import time def loop(): Bridge.call("read_light") 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 wird, bevor Sie das Python-Skript auf der Linux-Seite ausführen.
    • ⚠️ Warnung: Öffnen Sie /dev/ttyHS1 (auf Linux) oder verwenden Sie Serial1 (auf MCU) in Ihrem Code nie direkt — diese sind vom Arduino Router reserviert und der Zugriff auf sie bricht die Bridge.

    Schnelle Schritte

    • MCU-Skizze hochladen: Ö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 Arduino_RouterBridge-Bibliothek und klicken Sie auf Ausführen.
    • Python-Skript hinzufügen: Fügen Sie den Python-Code oben in die Python-Registerkarte derselben App ein.
    • App ausführen: Klicken Sie auf Ausführen — Python fordert alle Sekunde eine Lichtsensorlesung an.
    • Licht einschalten / Sensor abdecken: Sehen Sie die Werte im MCU Monitor ändern.
    • Konsole überprüfen: Öffnen Sie die Konsole-Registerkarte → Unterregisterkarte MCU Monitor, um die analogen Lesungen 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
    Light Sensor Bridge ready Analog reading: 163 - Dim Analog reading: 152 - Dim Analog reading: 3890 - Very bright Analog reading: 3920 - Very bright Analog reading: 41 - Dark

    Telegram-Integration

    Lesen Sie den Lichtsensor von überall aus remote über Telegram.

    Wenn Sie noch keinen Telegram-Bot haben, lesen Sie So erstellen Sie einen Telegram-Bot, 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 dem STM32 hochgeladen und ausgeführt wird, bevor Sie fortfahren.

    Python-Skript (Arduino App Lab) — Telegram-Bot für Lichtsensorlesung:

    /* * 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-light-sensor */ 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": reading = Bridge.call("read_light") send_message(chat_id, reading) else: send_message(chat_id, "Commands:\n/read — read light sensor value and level") time.sleep(1) App.run(user_loop=loop)
    • Hinweis: Ersetzen Sie YOUR_BOT_TOKEN durch das Token, das von @BotFather auf Telegram bezogen wurde.
    • Senden Sie /read, um die aktuelle Lichtsensorlesung anzufordern.
    • Die Lesung erscheint im MCU Monitor (Konsole → Registerkarte MCU Monitor).

    Schnelle Schritte

    • MCU-Skizze hochladen: Verwenden Sie die Bridge MCU-Skizze aus dem vorherigen Abschnitt (laden Sie sie zuerst hoch, falls noch nicht geschehen).
    • Telegram-Skript einfügen: Kopieren Sie den Python-Code oben in die Python-Registerkarte Ihrer App in Arduino App Lab.
    • Token festlegen: Ersetzen Sie YOUR_BOT_TOKEN im Skript durch Ihr tatsächliches Bot-Token.
    • App ausführen: Klicken Sie auf Ausführen — der Bot beginnt, auf Telegram-Nachrichten zu hören.
    • Testen Sie es: Senden Sie /read — der Bot antwortet mit dem ADC-Wert des Sensors und der Lichtstufe.

    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] Analog reading: 1234 - Light [2026-04-29 12:02:10] Telegram: /read [2026-04-29 12:02:10] Analog reading: 120 - Dim
    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 ✓✓
    Analog reading: 1234 - Light
    10:16 AM
    /read
    10:17 AM ✓✓
    Analog reading: 120 - Dim
    10:18 AM

    OpenClaw-Integration

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

    Anwendungs-/Projektideen

    • Automatisches Nachtlicht: Lichtstufe auf der MPU lesen und LED-Streifen über Telegram/Bridge einschalten, wenn es dunkel wird
    • Smart-Vorhang-Controller: Verwenden Sie die Lichtstufe, um Vorhänge über einen Servomotor automatisch zu öffnen oder zu schließen
    • Pflanzen-Lichtkontrolle: Überprüfen Sie regelmäßig die Lichtstufe und senden Sie eine Telegram-Warnung, wenn Pflanzen mehr Licht benötigen
    • Sicherheitsbeleuchtung: Lösen Sie einen Alarm oder eine Kameraaufzeichnung aus, wenn das Licht unerwartet ausgeht
    • Datenprotokollierung: Alle Minute Lichtstufen in eine CSV-Datei auf der Linux MPU protokollieren zur Analyse

    Stellen Sie sich selbst eine Herausforderung

    • Leicht: Senden Sie eine Telegram-Nachricht mit dem tatsächlichen ADC-Wert und der Lichtstufen-Zeichenfolge (z. B. "ADC: 3200 — Sehr hell")
    • Mittel: Senden Sie automatisch eine Telegram-Warnung, wenn die Lichtstufe unter einen Schwellenwert fällt (z. B. Lichter gehen aus)
    • Fortgeschrittene: Protokollieren Sie jede Minute Lichtsensorablesungen in eine Datei auf der Linux MPU und senden Sie eine tägliche Zusammenfassung über Telegram

    Funktionsreferenzen

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