Arduino UNO Q - Module LDR

Ce tutoriel vous montre comment utiliser un Arduino UNO Q avec un module capteur de lumière LDR. Vous apprendrez :

Module Capteur de Lumière LDR sur Arduino UNO Q

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Module capteur de lumière LDR
1×Fils de connexion
1×Recommandé: Shield à bornier à vis pour Arduino Uno
1×Recommandé: Sensors/Servo Expansion Shield for Arduino Uno
1×Recommandé: Shield plaque d'essai pour Arduino Uno
1×Recommandé: Boîtier pour Arduino Uno
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Arduino Uno

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du Module Capteur de Lumière LDR

Le module capteur de lumière LDR peut être utilisé pour détecter la lumière ou mesurer les niveaux de lumière autour de lui. Il offre deux choix : une sortie numérique et une sortie analogique.

Brochage

Le module capteur de lumière LDR possède quatre broches :

  • Broche VCC : Connectez-la à VCC (3,3V à 5V).
  • Broche GND : Connectez-la à GND (0V).
  • Broche DO : C'est une broche de sortie numérique. Elle affiche HIGH lorsqu'il fait sombre et LOW lorsqu'il y a de la lumière. Vous pouvez changer le seuil obscurité/lumière en ajustant le potentiomètre sur le module.
  • Broche AO : C'est une broche de sortie analogique. La valeur de sortie diminue lorsqu'il fait plus lumineux et augmente lorsqu'il fait plus sombre.
Brochage du Module Capteur de Lumière LDR
image source: diyables.io

Il possède également deux indicateurs LED :

  • Une LED d'alimentation indique lorsque l'alimentation est activée.
  • Une LED DO indique l'état de lumière sur la broche DO : elle s'allume en présence de lumière et s'éteint dans l'obscurité.

Fonctionnement

Pour la broche DO :

  • Le module possède un potentiomètre pour définir le seuil de lumière.
  • Si le niveau de lumière est supérieur au seuil défini avec le potentiomètre, la broche DO est LOW et la LED DO est éteinte.
  • Si le niveau de lumière est inférieur au seuil, la broche DO est HIGH et la LED DO est allumée.

Pour la broche AO :

  • La broche AO donne une lecture qui change avec le niveau de lumière.
  • Lorsqu'il y a beaucoup de lumière, la lecture AO est plus faible.
  • Lorsqu'il fait plus sombre, la lecture AO est plus élevée.
  • Le potentiomètre n'affecte pas la broche AO — il ne change que le seuil pour la broche DO.

※ Note:

Le MCU STM32 de l'Arduino UNO Q possède un ADC 12 bits (0–4095) avec une référence de 3,3V. Les valeurs analogiques AO diffèrent de celles des cartes Arduino à 10 bits (0–1023). Adaptez toujours vos seuils en conséquence.

Schéma de Câblage

Le module capteur de lumière possède deux sorties. Vous pouvez en utiliser une ou les deux, selon vos besoins.

Schéma de Câblage du Module Capteur de Lumière LDR sur Arduino UNO Q

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Code MCU — Lire la valeur de la broche DO

L'Arduino UNO Q possède deux processeurs : le MCU STM32 (gère le contrôle matériel en temps réel) et le MPU Qualcomm (exécute Debian Linux). Dans cette section, seul le MCU STM32 est programmé — le côté Linux reste inactif. Une section ultérieure montrera comment les deux processeurs travaillent ensemble.

Le code lit l'état numérique de la broche DO — HIGH signifie sombre, LOW signifie lumière présente :

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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); }

Étapes Rapides

  • Première fois avec Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q pour préparer votre environnement de développement avant de continuer.
  • Câbler les composants : Connectez VCC → 3,3V, GNDGND, DO → broche 2, AO → A0 comme indiqué dans le schéma.
  • Connecter : Branchez l'Arduino UNO Q à votre ordinateur avec un câble USB-C.
  • Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
  • Créer une nouvelle application : Cliquez sur le bouton Create New App.
Créer une nouvelle application dans Arduino App Lab sur Arduino UNO Q
  • Donnez un nom à l'application, par exemple : DIYables_LDRModule
  • Cliquez sur Create pour confirmer.
  • Vous verrez un ensemble de dossiers et fichiers générés dans votre nouvelle application.
Dossiers et fichiers de l'application Arduino App Lab sur Arduino UNO Q
  • Trouvez le fichier sketch/sketch.ino — c'est là que vous collerez le sketch MCU.
  • Coller le sketch : Copiez le code DO ci-dessus et collez-le dans le fichier sketch. Gardez les autres fichiers par défaut.
    • 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
    • Téléverser : Cliquez sur le bouton Run dans Arduino App Lab pour compiler et téléverser vers le STM32.
    Cliquer sur le bouton Run dans Arduino App Lab sur Arduino UNO Q
    • Tester : Bloquez et débloquez la lumière sur le module LDR avec votre main. Utilisez la section Bridge ci-dessous pour voir les résultats via le Moniteur.
    • Si la LED reste allumée tout le temps ou est éteinte même en présence de lumière, tournez le potentiomètre pour ajuster la sensibilité du module.

    Code MCU — Lire la valeur de la broche AO

    Le code lit la valeur d'intensité analogique de la broche AO (ADC 12 bits : 0–4095 sur Arduino UNO Q) :

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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); }

    Étapes Rapides

    • Remplacez le sketch DO par le code AO ci-dessus (collez-le dans sketch/sketch.ino).
    • Téléversez à nouveau et utilisez la section Bridge ci-dessous pour voir les lectures analogiques via le Moniteur.

    Programmation Bridge Linux + MCU

    L'Arduino UNO Q possède deux processeurs qui travaillent ensemble : le MPU (Qualcomm, exécute Debian Linux) et le MCU (STM32, exécute Zephyr OS avec votre sketch Arduino). Ils communiquent via RPC grâce à la bibliothèque Arduino_RouterBridge — jamais via des ports série bruts.

    • Le module LDR est connecté au MCU (STM32) — la broche DO se connecte à une entrée numérique et la broche AO se connecte à l'entrée analogique A0 sur le STM32.
    • Le MPU ne peut pas lire ces broches directement — il doit appeler une fonction sur le MCU via Bridge.call() pour demander les lectures DO ou AO.
    • Le MPU dispose du Wi-Fi — comme le MPU exécute Debian Linux complet avec Wi-Fi, il peut recevoir des commandes Telegram et envoyer des lectures de capteurs à distance.
    • Communication : Bridge.call() du côté Linux invoque les fonctions Bridge.provide() du côté MCU (la lecture numérique/analogique est sûre — aucune écriture GPIO matérielle nécessaire)
    • ⚠️ Réservé : /dev/ttyHS1 (Linux) et Serial1 (MCU) sont utilisés par le routeur Arduino — ne les ouvrez jamais directement

    En résumé : Le MPU demande une lecture → le MCU lit DO/AO → le MCU affiche le résultat sur le Moniteur.

    Sketch MCU — lecture du module LDR avec Bridge et sortie Moniteur :

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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() {}

    Script Python (Arduino App Lab) — demander des lectures depuis Linux toutes les secondes :

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)
    • Remarque : Assurez-vous que Bridge.begin() est appelé dans le sketch MCU et que le sketch est téléversé avant d'exécuter le script Python du côté Linux.
    • ⚠️ Avertissement : N'ouvrez jamais directement /dev/ttyHS1 (sur Linux) ou n'utilisez jamais Serial1 (sur le MCU) dans votre code — ceux-ci sont réservés par le routeur Arduino et y accéder cassera le Bridge.

    Étapes Rapides

    • Téléverser le sketch MCU : Ouvrez Arduino App Lab, créez une nouvelle application, collez le sketch MCU Bridge dans sketch/sketch.ino, installez la bibliothèque Arduino_RouterBridge, et cliquez sur Run.
    • Ajouter le script Python : Collez le code Python ci-dessus dans l'onglet Python de la même application.
    • Exécuter l'application : Cliquez sur Run — Python demande les lectures DO et AO toutes les secondes.
    • Vérifier la console : Ouvrez l'onglet Console → sous-onglet Moniteur MCU pour voir les lectures.

    Sortie de la Console App Lab

    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

    Intégration Telegram

    Lisez le module LDR à distance depuis n'importe où via Telegram.

    Si vous n'avez pas encore de bot Telegram, consultez Arduino UNO Q - Bot Telegram pour obtenir votre token de bot avant de continuer.

    Sketch MCU : Conservez le même sketch MCU de la section Bridge précédente — aucune modification nécessaire. Assurez-vous qu'il est déjà téléversé et en cours d'exécution sur le STM32 avant de continuer.

    Script Python (Arduino App Lab) — bot Telegram pour la lecture du module LDR :

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)
    • Remarque : Remplacez YOUR_BOT_TOKEN par le token obtenu depuis @BotFather sur Telegram.
    • Envoyez /do pour lire la sortie numérique (état lumière/sombre).
    • Envoyez /ao pour lire la sortie analogique (0–4095).
    • Envoyez /read pour lire à la fois DO et AO en même temps.

    Étapes Rapides

    • Téléverser le sketch MCU : Utilisez le sketch MCU Bridge de la section précédente (téléversez-le d'abord si ce n'est pas déjà fait).
    • Coller le script Telegram : Copiez le code Python ci-dessus dans l'onglet Python de votre application dans Arduino App Lab.
    • Définir votre token : Remplacez YOUR_BOT_TOKEN dans le script par votre vrai token de bot.
    • Exécuter l'application : Cliquez sur Run — le bot commence à écouter les messages Telegram.
    • Tester : Envoyez /do — le bot répond avec l'état numérique. Envoyez /ao — le bot répond avec la valeur analogique. Envoyez /read — le bot répond avec les deux.

    Sortie de la Console App Lab

    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

    Intégration d'OpenClaw

    Vous pouvez adapter OpenClaw à ce tutoriel en vous référant aux instructions du tutoriel Arduino UNO Q - OpenClaw.

    Idées d'Application/Projets

    • Veilleuse automatique : Déclencher le contrôle de l'éclairage lorsque le module détecte l'obscurité
    • Rideau intelligent : Utiliser les lectures AO pour surveiller les niveaux de lumière changeants tout au long de la journée
    • Moniteur de plante : Alerter via Telegram lorsque l'exposition à la lumière d'une plante tombe en dessous d'un seuil
    • Système de sécurité : Détecter les changements de lumière dans une pièce (par exemple, quelqu'un allumant les lumières la nuit) et envoyer des alertes
    • Enregistreur de données : Enregistrer les niveaux de lumière dans le temps en utilisant le système de fichiers Linux du MPU pour analyse

    Défiez-vous

    • Facile : Renvoyer l'état numérique réel ("Lumière présente" ou "Sombre") à l'utilisateur Telegram via le Moniteur MCU
    • Moyen : Envoyer la valeur AO réelle directement à l'utilisateur Telegram sans qu'il ait besoin de vérifier le Moniteur
    • Avancé : Définir un seuil via Telegram (par exemple, /threshold 2000) et envoyer automatiquement des alertes lorsque la valeur AO le dépasse

    Références des Fonctions

    ※ NOS MESSAGES

    • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !