Arduino UNO Q - LDR Modul

Dieses Tutorial zeigt Ihnen, wie Sie ein Arduino UNO Q mit einem LDR-Lichtsensormodul verwenden. Sie werden lernen:

Arduino UNO Q LDR Light Sensor Module

Hardware erforderlich

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×LDR Lichtsensor-Modul
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 das LDR-Lichtsensormodul

Das LDR-Lichtsensormodul kann zum Erkennen von Licht oder zum Messen der Lichtniveaus in seiner Umgebung verwendet werden. Es bietet zwei Möglichkeiten: einen digitalen Ausgang und einen analogen Ausgang.

Pinbelegung

Das LDR-Lichtsensormodul hat vier Pins:

  • VCC-Pin: Verbinden Sie diesen mit VCC (3,3 V bis 5 V).
  • GND-Pin: Verbinden Sie diesen mit GND (0 V).
  • DO-Pin: Dies ist ein digitaler Ausgangspin. Er zeigt HIGH in der Dunkelheit und LOW bei Licht an. Sie können den Dunkelheits-/Helligkeitsschwellenwert durch Einstellen des Potentiometers auf dem Modul ändern.
  • AO-Pin: Dies ist ein analoger Ausgangspin. Der Ausgangswert nimmt ab, wenn es heller ist, und nimmt zu, wenn es dunkler ist.
LDR Light Sensor Module Pinout
image source: diyables.io

Es hat auch zwei LED-Indikatoren:

  • Eine PWR-LED zeigt an, wenn die Stromversorgung aktiviert ist.
  • Eine DO-LED zeigt den Lichtstatus am DO-Pin an: Sie leuchtet bei Licht auf und schaltet sich in der Dunkelheit aus.

Wie es funktioniert

Für den DO-Pin:

  • Das Modul hat ein Potentiometer zum Einstellen des Lichtschwellenwerts.
  • Wenn das Lichtniveau höher als der mit dem Potentiometer eingestellte Schwellenwert ist, ist der DO-Pin LOW und die DO-LED aus.
  • Wenn das Lichtniveau unter dem Schwellenwert liegt, ist der DO-Pin HIGH und die DO-LED ist an.

Für den AO-Pin:

  • Der AO-Pin liefert einen Messwert, der sich mit dem Lichtniveau ändert.
  • Wenn es viel Licht gibt, ist die AO-Anzeige niedriger.
  • Wenn es dunkler ist, ist die AO-Anzeige höher.
  • Das Potentiometer beeinflusst nicht den AO-Pin – es ändert nur den Schwellenwert für den DO-Pin.

※ Notiz:

Der Arduino UNO Q STM32 MCU hat einen 12-Bit-ADC (0–4095) mit einer 3,3-V-Referenz. Die analogen AO-Werte unterscheiden sich von denen auf 10-Bit-Arduino-Boards (0–1023). Skalieren Sie Ihre Schwellenwerte immer entsprechend.

Verdrahtungsschema

Das Lichtsensormodul hat zwei Ausgänge. Sie können je nach Bedarf einen oder beide verwenden.

Arduino UNO Q LDR Light Sensor Module Wiring Diagram

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

MCU-Code – Wert vom DO-Pin lesen

Der Arduino UNO Q hat zwei Prozessoren: die STM32 MCU (handhabt die Echtzeitsteuerung der Hardware) und die Qualcomm MPU (führt Debian Linux aus). In diesem Abschnitt wird nur die STM32 MCU programmiert – die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren zusammenarbeiten.

Der Code liest den digitalen Zustand des DO-Pins – HIGH bedeutet Dunkelheit, LOW bedeutet Licht vorhanden:

/* * 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-ldr-module */ #define DO_PIN 2 // The Arduino UNO Q pin connected to DO pin of the LDR module void setup() { pinMode(DO_PIN, INPUT); } void loop() { int light_state = digitalRead(DO_PIN); // HIGH = light is NOT present (dark), LOW = light is present // TO DO: use light_state in your logic // Example: if (light_state == HIGH) { /* dark */ } else { /* bright */ } delay(200); }

Schnelle Schritte

  • Das erste Mal mit Arduino UNO Q? Folgen Sie dem Getting Started with Arduino UNO Q Tutorial, um Ihre Entwicklungsumgebung vorzubereiten, bevor Sie fortfahren.
  • Verdrahten Sie die Komponenten: Verbinden Sie VCC → 3,3 V, GNDGND, DO → Pin 2, AO → A0, wie im Diagramm gezeigt.
  • Verbinden Sie sich: Stecken Sie das Arduino UNO Q mit einem USB-C-Kabel in Ihren Computer.
  • Ö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 Create New App.
Create New App in Arduino App Lab on Arduino UNO Q
  • Geben Sie der App einen Namen, z. B.: DIYables_LDRModule
  • Klicken Sie zum Bestätigen auf Create.
  • Sie sehen einen Satz von Ordnern und Dateien, die in Ihrer neuen App generiert wurden.
Arduino App Lab App folders and files on Arduino UNO Q
  • Suchen Sie die Datei sketch/sketch.ino – hier fügen Sie die MCU-Skizze ein.
  • Fügen Sie die Skizze ein: Kopieren Sie den DO-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
    • Hochladen: Klicken Sie auf die Schaltfläche "Run" in Arduino App Lab, um zur STM32 zu kompilieren und hochzuladen.
    Click Run button in Arduino App Lab on Arduino UNO Q
    • Test: Blockieren und entsperren Sie das Licht auf dem LDR-Modul mit Ihrer Hand. Verwenden Sie den Bridge-Abschnitt unten, um die Ergebnisse über den Monitor anzuzeigen.
    • Wenn die LED die ganze Zeit an ist oder auch bei Licht aus ist, drehen Sie das Potentiometer, um die Empfindlichkeit des Moduls einzustellen.

    MCU-Code – Wert vom AO-Pin lesen

    Der Code liest den analogen Intensitätswert vom AO-Pin (12-Bit-ADC: 0–4095 auf Arduino UNO Q):

    /* * 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-ldr-module */ #define AO_PIN A0 // The Arduino UNO Q pin connected to AO pin of the LDR module // Arduino UNO Q: 12-bit ADC (0-4095), 3.3V reference // Higher value = darker; lower value = brighter void setup() { // nothing to set up } void loop() { int light_value = analogRead(AO_PIN); // TO DO: use light_value in your logic // Example: if (light_value > 2000) { /* relatively dark */ } delay(200); }

    Schnelle Schritte

    • Ersetzen Sie die DO-Skizze durch den obigen AO-Code (fügen Sie ihn in sketch/sketch.ino ein).
    • Laden Sie erneut hoch und verwenden Sie den Bridge-Abschnitt unten, um die analogen Messwerte über den Monitor anzuzeigen.

    Linux + MCU Bridge-Programmierung

    Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten: die MPU (Qualcomm, führt Debian Linux aus) und die MCU (STM32, führt Zephyr OS mit Ihrer Arduino-Skizze aus). Sie kommunizieren über RPC über die Bibliothek Arduino_RouterBridge – niemals über Raw-Serienports.

    • Das LDR-Modul ist mit der MCU (STM32) verbunden – DO-Pin verbindet sich mit einem digitalen Eingang und AO-Pin verbindet sich mit dem analogen Eingang A0 auf der STM32.
    • Die MPU kann diese Pins nicht direkt auslesen – sie muss eine Funktion auf der MCU über Bridge.call() aufrufen, um DO- oder AO-Messwerte anzufordern.
    • Die MPU hat Wi-Fi – da die MPU vollständiges Debian Linux mit Wi-Fi ausführt, kann sie Telegram-Befehle empfangen und Sensormesswerte remote senden.
    • Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide()-Funktionen auf der MCU-Seite auf (das Auslesen von Digital-/Analogwerten ist sicher – keine Hardware-GPIO-Schreibvorgänge erforderlich)
    • ⚠️ Reserviert: /dev/ttyHS1 (Linux) und Serial1 (MCU) werden vom Arduino Router verwendet – öffnen Sie sie niemals direkt

    Kurz gesagt: MPU fordert Lesung an → MCU liest DO/AO → MCU druckt Ergebnis zum Monitor.

    MCU-Skizze – LDR-Modul-Lesung 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-ldr-module */ #include "Arduino_RouterBridge.h" #define DO_PIN 2 #define AO_PIN A0 void read_do() { int state = digitalRead(DO_PIN); Monitor.print("DO: "); Monitor.println(state == HIGH ? "Dark (no light)" : "Light present"); } void read_ao() { int value = analogRead(AO_PIN); Monitor.print("AO: "); Monitor.println(value); } void setup() { Bridge.begin(); Monitor.begin(); pinMode(DO_PIN, INPUT); Bridge.provide("read_do", read_do); Bridge.provide("read_ao", read_ao); Monitor.println("LDR Module Bridge ready"); } void loop() {}

    Python-Skript (Arduino App Lab) – fordern Sie alle Sekunde Messwerte 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-ldr-module */ from arduino.app_utils import * import time def loop(): Bridge.call("read_do") Bridge.call("read_ao") 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 niemals direkt /dev/ttyHS1 (auf Linux) oder verwenden Sie Serial1 (auf MCU) in Ihrem Code – diese werden vom Arduino Router reserviert und der Zugriff auf sie bricht 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 Arduino_RouterBridge-Bibliothek, und klicken Sie auf "Run".
    • Fügen Sie das Python-Skript hinzu: Fügen Sie den obigen Python-Code in die Python-Registerkarte derselben App ein.
    • Führen Sie die App aus: Klicken Sie auf "Run" – Python fordert alle Sekunde DO- und AO-Messwerte an.
    • Überprüfen Sie die Konsole: Öffnen Sie die Registerkarte "Console" → Unterregisterkarte "MCU Monitor", um die Messwerte anzuzeigen.

    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
    LDR Module Bridge ready DO: Light present AO: 145 DO: Light present AO: 152 DO: Dark (no light) AO: 3890

    Telegram-Integration

    Lesen Sie das LDR-Modul remote von überall über Telegram.

    Wenn Sie noch keinen Telegram-Bot haben, lesen Sie How to Create a 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 der STM32 hochgeladen und ausgeführt wird, bevor Sie fortfahren.

    Python-Skript (Arduino App Lab) – Telegram-Bot zum Lesen des LDR-Moduls:

    /* * 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-ldr-module */ 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 == "/do": result = Bridge.call("read_do") send_message(chat_id, result) elif text == "/ao": result = Bridge.call("read_ao") send_message(chat_id, result) elif text == "/read": do_result = Bridge.call("read_do") ao_result = Bridge.call("read_ao") send_message(chat_id, f"{do_result}\n{ao_result}") else: send_message(chat_id, "Commands:\n/do — read digital output (light/dark)\n/ao — read analog output (0-4095)\n/read — read both DO and AO") time.sleep(1) App.run(user_loop=loop)
    • Hinweis: Ersetzen Sie YOUR_BOT_TOKEN durch das Token, das Sie von @BotFather auf Telegram erhalten haben.
    • Senden Sie /do, um die digitale Ausgabe (Licht-/Dunkelzustand) zu lesen.
    • Senden Sie /ao, um die analoge Ausgabe (0–4095) zu lesen.
    • Senden Sie /read, um sowohl DO als auch AO gleichzeitig zu lesen.

    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 erfolgt).
    • Fügen Sie das Telegram-Skript ein: Kopieren Sie den obigen Python-Code in die Python-Registerkarte Ihrer App in Arduino App Lab.
    • Legen Sie Ihr Token fest: Ersetzen Sie YOUR_BOT_TOKEN im Skript durch Ihr tatsächliches Bot-Token.
    • Führen Sie die App aus: Klicken Sie auf "Run" – der Bot beginnt, auf Telegram-Meldungen zu lauschen.
    • Testen Sie es: Senden Sie /do – der Bot antwortet mit dem digitalen Zustand. Senden Sie /ao – der Bot antwortet mit dem analogen Wert. Senden Sie /read – der Bot antwortet mit beiden.

    App Lab Konsolenausgabe

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    [2026-04-29 12:00:01] Telegram: /do [2026-04-29 12:00:01] DO: Light present [2026-04-29 12:02:10] Telegram: /ao [2026-04-29 12:02:10] AO: 2156 [2026-04-29 12:04:05] Telegram: /read [2026-04-29 12:04:05] DO: Light present AO: 2156
    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
    /do
    10:15 AM ✓✓
    DO: Light present
    10:16 AM
    /ao
    10:17 AM ✓✓
    AO: 2156
    10:18 AM
    /read
    10:19 AM ✓✓
    DO: Light present AO: 2156
    10:20 AM

    OpenClaw-Integration

    Sie können die OpenClaw auf dieses Tutorial anwenden, indem Sie die Anleitung im Tutorial Arduino Uno Q - OpenClaw beachten.

    Anwendungs-/Projektideen

    • Automatisches Nachtlicht: Trigger-Beleuchtungssteuerung, wenn das Modul Dunkelheit erkennt
    • Intelligente Vorhänge: Verwenden Sie AO-Messwerte, um die sich ändernden Lichtniveaus im Laufe des Tages zu überwachen
    • Pflanzenmonitor: Erhalten Sie eine Warnung über Telegram, wenn die Lichtbelastung einer Pflanze unter einen Schwellenwert fällt
    • Sicherheitssystem: Erkennen Sie Lichtveränderungen in einem Raum (z. B. jemand schaltet nachts Lichter ein) und senden Sie Warnungen
    • Datenlogger: Zeichnen Sie Lichtniveaus über die Zeit auf, indem Sie das Dateisystem der MPU unter Linux verwenden, um sie zu analysieren

    Stellen Sie sich der Herausforderung

    • Einfach: Senden Sie den tatsächlichen digitalen Zustand ("Licht vorhanden" oder "Dunkel") über den MCU-Monitor zurück an den Telegram-Benutzer
    • Mittel: Senden Sie den tatsächlichen AO-Wert direkt an den Telegram-Benutzer, ohne dass diese den Monitor überprüfen müssen
    • Fortgeschritten: Legen Sie einen Schwellenwert über Telegram fest (z. B. /threshold 2000) und senden Sie automatisch Warnungen, wenn der AO-Wert den Schwellenwert überschreitet

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