Arduino UNO Q - Capteur Ultrasonique avec Écran OLED

Dans ce guide, vous apprendrez à mesurer la distance à l'aide d'un capteur ultrasonique et à l'afficher centré sur un écran OLED avec Arduino UNO Q.

Arduino UNO Q Capteur Ultrasonique OLED

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Capteur à ultrasons
1×Écran OLED I2C SSD1306 128x64
1×Écran OLED I2C SSD1306 128x32
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.

Note d'achat: Si vous souhaitez un écran OLED plus grand, utilisez le Arduino UNO Q - Écran OLED SSD1309 (2,42 pouces).

À Propos de l'Écran OLED et du Capteur Ultrasonique

Apprenez-en plus sur l'écran OLED et les capteurs ultrasoniques dans les tutoriels ci-dessous :

Schéma de Câblage

Schéma de Câblage Arduino UNO Q Capteur Ultrasonique OLED

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

Code MCU

L'Arduino UNO Q dispose 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 fonctionnent ensemble.

/* * 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-ultrasonic-sensor-oled */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 // OLED display width in pixels #define SCREEN_HEIGHT 64 // OLED display height in pixels #define TRIG_PIN 4 // The Arduino UNO Q pin connected to the ultrasonic sensor's TRIG pin #define ECHO_PIN 3 // The Arduino UNO Q pin connected to the ultrasonic sensor's ECHO pin Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); String distStr; void oledDisplayCenter(String text) { int16_t x1, y1; uint16_t width, height; oled.getTextBounds(text, 0, 0, &x1, &y1, &width, &height); oled.clearDisplay(); oled.setCursor((SCREEN_WIDTH - width) / 2, (SCREEN_HEIGHT - height) / 2); oled.println(text); oled.display(); } void setup() { pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { while (true); // halt if OLED not found } delay(2000); oled.clearDisplay(); oled.setTextSize(2); oled.setTextColor(WHITE); distStr.reserve(10); } void loop() { // generate 10-microsecond pulse to TRIG pin digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // measure duration of pulse from ECHO pin long duration_us = pulseIn(ECHO_PIN, HIGH); // calculate the distance float distance_cm = 0.017 * duration_us; distStr = String(distance_cm, 1); distStr += " cm"; oledDisplayCenter(distStr); delay(500); }

※ Note:

Le code centre le texte de distance horizontalement et verticalement sur l'écran OLED.

Étapes Rapides

  • Première utilisation de l'Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q pour préparer votre environnement de développement avant de continuer.
  • Câblez les composants : Connectez TRIG → broche 4, ECHO → broche 3. Connectez OLED SDA → SDA, SCL → SCL.
  • Connectez : Branchez l'Arduino UNO Q à votre ordinateur avec un câble USB-C.
  • Ouvrez Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
  • Créez une nouvelle application : Cliquez sur le bouton Créer une nouvelle application.
Créer une nouvelle application dans Arduino App Lab sur Arduino UNO Q
  • Donnez un nom à l'application, par exemple : DIYables_UltrasonicOLED
  • Cliquez sur Créer 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 code MCU.
  • Collez le code : Copiez le code MCU 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 Adafruit SSD1306 created by Adafruit 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
    Adafruit SSD1306 Adafruit

    SSD1306 oled driver library for monochrome 128x64 and 128x32 displays

    2.5.9
    Install
    More Info
    • 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éversez : Cliquez sur le bouton Exécuter dans Arduino App Lab pour compiler et téléverser vers le STM32.
    Cliquer sur le bouton Exécuter dans Arduino App Lab sur Arduino UNO Q
    • Testez : Agitez la main devant le capteur — la distance doit se mettre à jour sur l'OLED toutes les 500 ms.

    ※ Note:

    Ce code est à des fins pédagogiques. Pour la production, appliquez le filtre anti-bruit du tutoriel Capteur Ultrasonique.

    Programmation Bridge Linux + MCU

    L'Arduino UNO Q dispose de deux processeurs qui fonctionnent 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 capteur ultrasonique et l'OLED sont tous les deux connectés au MCU (STM32) — capteur sur les broches 5/9, OLED via I2C.
    • Le MPU ne peut pas les contrôler directement — il appelle Bridge.call("read_distance") sur le MCU, qui mesure la distance, l'affiche sur l'OLED et l'imprime sur le Monitor.
    • Le MPU dispose du Wi-Fi — car le MPU exécute Debian Linux complet avec Wi-Fi, il peut recevoir des commandes Telegram et déclencher des lectures à distance.
    • Communication : Bridge.call() du côté Linux invoque Bridge.provide_safe() du côté MCU (car digitalWrite() et les écritures OLED sont des API matérielles)
    • ⚠️ Réservé : /dev/ttyHS1 (Linux) et Serial1 (MCU) sont utilisés par l'Arduino Router — ne les ouvrez jamais directement

    En résumé : Le MPU demande une lecture → le MCU mesure la distance → le MCU affiche sur l'OLED et imprime sur le Monitor.

    Code MCU — affichage OLED capteur ultrasonique avec Bridge :

    /* * 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-ultrasonic-sensor-oled */ #include "Arduino_RouterBridge.h" #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define TRIG_PIN 5 #define ECHO_PIN 9 Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); String distStr; void oledDisplayCenter(String text) { int16_t x1, y1; uint16_t width, height; oled.getTextBounds(text, 0, 0, &x1, &y1, &width, &height); oled.clearDisplay(); oled.setCursor((SCREEN_WIDTH - width) / 2, (SCREEN_HEIGHT - height) / 2); oled.println(text); oled.display(); } void read_distance() { digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); long duration_us = pulseIn(ECHO_PIN, HIGH); float distance_cm = 0.017 * duration_us; distStr = String(distance_cm, 1); distStr += " cm"; oledDisplayCenter(distStr); Monitor.print("Distance: "); Monitor.print(distance_cm); Monitor.println(" cm"); } void setup() { Bridge.begin(); Monitor.begin(); pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Monitor.println("OLED init failed!"); while (true); } delay(2000); oled.clearDisplay(); oled.setTextSize(2); oled.setTextColor(WHITE); distStr.reserve(10); oledDisplayCenter("Ready..."); Bridge.provide_safe("read_distance", read_distance); Monitor.println("Ultrasonic Sensor OLED Bridge ready"); } void loop() {}

    Script Python (Arduino App Lab) — demander une lecture de distance 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-ultrasonic-sensor-oled */ from arduino.app_utils import * import time def loop(): Bridge.call("read_distance") 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 (sous Linux) ni n'utilisez Serial1 (sur MCU) dans votre code — ils sont réservés par l'Arduino Router et y accéder brisera le Bridge.

    Étapes Rapides

    • Téléversez le sketch MCU : Ouvrez Arduino App Lab, créez une nouvelle application, collez le sketch MCU Bridge dans sketch/sketch.ino, installez les bibliothèques Adafruit SSD1306 et Arduino_RouterBridge, et cliquez sur Exécuter.
    • Ajoutez le script Python : Collez le code Python ci-dessus dans l'onglet Python de la même application.
    • Exécutez l'application : Cliquez sur Exécuter — Python demande une lecture toutes les secondes ; le MCU met à jour l'OLED et le Monitor.
    • Vérifiez la console : Ouvrez l'onglet Console → sous-onglet MCU Monitor pour voir les valeurs de distance.

    Sortie 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
    Ultrasonic Sensor OLED Bridge ready Distance: 29.4 cm Distance: 27.6 cm Distance: 14.3 cm

    Intégration Telegram

    Lisez la distance et affichez-la sur l'OLED à distance 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 l'affichage ultrasonique OLED :

    /* * 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-ultrasonic-sensor-oled */ 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": distance = Bridge.call("read_distance") send_message(chat_id, distance) else: send_message(chat_id, "Commands:\n/read — measure distance and display on OLED") time.sleep(0.5) App.run(user_loop=loop)
    • Remarque : Remplacez YOUR_BOT_TOKEN par le token obtenu auprès de @BotFather sur Telegram.
    • Envoyez /read pour déclencher une mesure de distance — le résultat apparaît sur l'OLED et dans le Monitor.

    Étapes Rapides

    • Téléversez 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).
    • Collez le script Telegram : Copiez le code Python ci-dessus dans l'onglet Python de votre application dans Arduino App Lab.
    • Configurez votre token : Remplacez YOUR_BOT_TOKEN dans le script par votre vrai token de bot.
    • Exécutez l'application : Cliquez sur Exécuter — le bot commence à écouter les messages Telegram.
    • Testez : Envoyez /read — le bot répond avec la distance mesurée, qui apparaît également sur l'OLED.

    Sortie Console App Lab

    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] Distance: 29.4 cm [2026-04-29 12:02:05] Telegram: /read [2026-04-29 12:02:05] Distance: 13.1 cm
    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 ✓✓
    Distance: 29.4 cm
    10:16 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'Applications/Projets

    • Télémètre portable : Utiliser le capteur + OLED comme outil de mesure de distance portatif
    • Assistant de stationnement : Afficher un graphique en barres de l'espace restant lorsqu'un véhicule recule vers un mur
    • Jauge de niveau de réservoir d'eau : Afficher le niveau d'eau actuel sur l'OLED en temps réel
    • Jauge de proximité robot : Afficher la distance actuelle d'un obstacle sur un écran OLED embarqué
    • Station de mesure : Monter sur un mur pour afficher les dimensions d'une pièce en direct lors de projets de rénovation

    Relevez le Défi

    • Facile : Afficher « PROCHE ! » sur l'OLED en grands caractères lorsque la distance est inférieure à 20 cm
    • Moyen : Dessiner un graphique en barres sur l'OLED qui se remplit à mesure que l'objet se rapproche
    • Avancé : Envoyer la valeur réelle de la distance (en cm) directement à l'utilisateur Telegram sous forme de message

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