Arduino UNO Q - Servomoteur

Ce tutoriel vous montre comment contrôler un servomoteur avec un Arduino UNO Q. Plus précisément, vous apprendrez :

Arduino UNO Q Servomoteur

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Servo-moteur
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 utilisez plusieurs servomoteurs, nous recommandons d'utiliser le PCA9685 16 Channel PWM Servo Driver Module pour économiser les broches du MCU et faciliter le câblage.

À Propos du Servomoteur

Un servomoteur est un composant qui peut faire tourner sa poignée, généralement de 0 à 180 degrés. Il est utilisé pour contrôler l'angle d'un objet.

Brochage

Cet exemple utilise un servomoteur à trois broches :

  • Broche VCC : Connectez le fil rouge au VCC (5 volts).
  • Broche GND : Connectez le fil noir ou marron au GND (0 volt).
  • Broche Signal : Connectez le fil jaune ou orange pour recevoir le signal de contrôle PWM depuis une broche de l'Arduino UNO Q.
Brochage du Servomoteur

Schéma de Câblage

Parfois, vous pouvez voir en ligne des schémas de câblage montrant le VCC du servo connecté directement à la broche 5V de l'Arduino. Il est préférable d'éviter cette méthode car elle pourrait endommager la carte Arduino UNO Q.

Schéma de Câblage Arduino UNO Q Servomoteur

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

Pour protéger votre carte Arduino UNO Q, il est préférable d'utiliser une alimentation externe pour le servomoteur. Le schéma de câblage ci-dessous montre comment connecter le servomoteur à une source d'alimentation externe.

Schéma de câblage Arduino UNO Q servomoteur avec alimentation externe

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

Assurez-vous de connecter le GND de l'alimentation externe au GND de la carte Arduino UNO Q. Cette étape est très importante pour que tout fonctionne correctement.

Comment Programmer pour le Servomoteur

  • Inclure la bibliothèque :
#include <Servo.h>
  • Créer un objet Servo :
Servo servo;

Si vous gérez plusieurs servomoteurs, déclarez simplement des objets Servo supplémentaires.

Servo servo1; Servo servo2;
  • Connectez la broche de contrôle de l'Arduino UNO Q à la broche signal du servomoteur, par exemple la broche 9.
servo.attach(9);
  • Enfin, faites tourner le servomoteur à l'angle souhaité, par exemple 90 degrés.
servo.write(90);

Code MCU

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 fonctionnent ensemble.

Le code fait tourner le servomoteur doucement de 0° à 180° puis retour, en répétant continuellement :

/* * 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-servo-motor */ #include <Servo.h> Servo servo; void setup() { servo.attach(9); // Connect the servo signal wire to pin 9 servo.write(0); // Move to 0 degrees at startup } void loop() { // Sweep from 0 to 180 degrees for (int pos = 0; pos <= 180; pos += 1) { servo.write(pos); delay(10); } // Sweep from 180 back to 0 degrees for (int pos = 180; pos >= 0; pos -= 1) { servo.write(pos); delay(10); } }

Étapes Rapides

  • Première utilisation d'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 le fil signal du servo à la broche 9, VCC à l'alimentation externe 5V, et GND à la fois à l'alimentation externe et au GND de l'Arduino UNO Q.
  • 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 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_ServoMotor
  • 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 ici que vous collerez le sketch MCU.
  • Coller le sketch : Copiez le code MCU ci-dessus et collez-le dans le fichier sketch. Laissez 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 Servo created by Michael Margolis, 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
    Servo Michael Margolis, Arduino

    This library can control a great number of servos.
    It makes careful use of timers: the library can control 12 servos using only 1 timer.
    On the Arduino Due you can control up to 60 servos.

    1.2.1
    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éverser : Cliquez sur le bouton Exécuter dans Arduino App Lab pour compiler et téléverser vers le STM32.
    Cliquez sur le bouton Exécuter dans Arduino App Lab sur Arduino UNO Q
    • Observer : Le servomoteur tourne lentement de 0° à 180°, puis revient lentement de 180° à 0°, en répétant continuellement.

    Comment Contrôler la Vitesse du Servomoteur

    L'utilisation des fonctions map() et millis() vous permet d'ajuster doucement la vitesse d'un servomoteur tout en permettant à d'autre code de s'exécuter sans interruption.

    #include <Servo.h> Servo servo; #define MOVING_TIME 3000 // Duration (ms) for the servo to move from startAngle to stopAngle unsigned long moveStartTime; int startAngle = 30; int stopAngle = 90; void setup() { servo.attach(9); moveStartTime = millis(); } void loop() { unsigned long progress = millis() - moveStartTime; if (progress <= MOVING_TIME) { long angle = map(progress, 0, MOVING_TIME, startAngle, stopAngle); servo.write(angle); } }

    Programmation Bridge Linux + MCU

    L'Arduino UNO Q possè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 servo est connecté au MCU (STM32) — le fil signal est câblé à la broche 9. Le MCU génère le signal PWM du servo.
    • Le MPU ne peut pas contrôler le servo directement — il doit appeler une fonction sur le MCU via Bridge.call() pour déplacer le servo à une position spécifique.
    • Le MPU dispose du Wi-Fi — parce que le MPU exécute Debian Linux complet avec Wi-Fi, il peut recevoir des commandes Telegram et positionner le servo à distance.
    • Communication : Bridge.call() côté Linux invoque les fonctions Bridge.provide_safe() côté MCU (puisque servo.write() est une API matérielle)
    • ⚠️ Réservé : /dev/ttyHS1 (Linux) et Serial1 (MCU) sont utilisés par le routeur Arduino — ne les ouvrez jamais directement

    En bref : Le MPU envoie la commande d'angle → Le MCU pilote le servo → Le servo se déplace à la position.

    Sketch MCU — contrôle de servomoteur avec Bridge et sortie Monitor :

    /* * 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-servo-motor */ #include "Arduino_RouterBridge.h" #include <Servo.h> Servo servo; void servo_left() { servo.write(0); Monitor.println("Servo: 0 degrees (left)"); } void servo_center() { servo.write(90); Monitor.println("Servo: 90 degrees (center)"); } void servo_right() { servo.write(180); Monitor.println("Servo: 180 degrees (right)"); } void setup() { Bridge.begin(); Monitor.begin(); servo.attach(9); servo.write(90); // Start at center position Bridge.provide_safe("left", servo_left); Bridge.provide_safe("center", servo_center); Bridge.provide_safe("right", servo_right); Monitor.println("Servo Motor Bridge ready"); } void loop() {}

    Script Python (Arduino App Lab) — contrôler le servo depuis Linux :

    /* * 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-servo-motor */ from arduino.app_utils import * import time def loop(): print("Servo at 0 degrees (left)") Bridge.call("left") time.sleep(2) print("Servo at 90 degrees (center)") Bridge.call("center") time.sleep(2) print("Servo at 180 degrees (right)") Bridge.call("right") time.sleep(2) print("Servo at 90 degrees (center)") Bridge.call("center") time.sleep(2) 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 côté Linux.
    • ⚠️ Avertissement : N'ouvrez jamais directement /dev/ttyHS1 (sous Linux) ou n'utilisez pas Serial1 (sur MCU) dans votre code — ces ports 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 les bibliothèques Servo et Arduino_RouterBridge, et cliquez sur Exécuter.
    • 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 Exécuter — Python fait cycler le servo entre les positions gauche, centre, droite, centre automatiquement.
    • Vérifier la console : Ouvrez l'onglet Console → sous-onglet MCU Monitor pour voir les messages de position du servo.

    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
    Servo Motor Bridge ready Servo: 0 degrees (left) Servo: 90 degrees (center) Servo: 180 degrees (right) Servo: 90 degrees (center)

    Intégration Telegram

    Contrôlez le servomoteur à 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 : Gardez 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 le contrôle du servomoteur :

    /* * 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-servo-motor */ 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 == "/left": Bridge.call("left") send_message(chat_id, "Servo moved to 0 degrees (left).") elif text == "/center": Bridge.call("center") send_message(chat_id, "Servo moved to 90 degrees (center).") elif text == "/right": Bridge.call("right") send_message(chat_id, "Servo moved to 180 degrees (right).") else: send_message(chat_id, "Commands:\n/left — move to 0°\n/center — move to 90°\n/right — move to 180°") time.sleep(1) App.run(user_loop=loop)
    • Remarque : Remplacez YOUR_BOT_TOKEN par le token obtenu auprès de @BotFather sur Telegram.
    • Envoyez /left pour déplacer le servo à 0°.
    • Envoyez /center pour déplacer le servo à 90°.
    • Envoyez /right pour déplacer le servo à 180°.

    É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 token de bot réel.
    • Exécuter l'application : Cliquez sur Exécuter — le bot commence à écouter les messages Telegram.
    • Testez : Envoyez /left — le servo se déplace à 0°. Envoyez /center — il va à 90°. Envoyez /right — il va à 180°.

    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: /left [2026-04-29 12:00:01] Servo moved to 0 degrees (left). [2026-04-29 12:02:10] Telegram: /center [2026-04-29 12:02:10] Servo moved to 90 degrees (center). [2026-04-29 12:04:05] Telegram: /right [2026-04-29 12:04:05] Servo moved to 180 degrees (right).
    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
    /left
    10:15 AM ✓✓
    Servo moved to 0 degrees (left).
    10:16 AM
    /center
    10:17 AM ✓✓
    Servo moved to 90 degrees (center).
    10:18 AM
    /right
    10:19 AM ✓✓
    Servo moved to 180 degrees (right).
    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'Applications/Projets

    • Panoramique de caméra à distance : Monter une caméra sur un servo et la diriger avec des commandes Telegram
    • Vanne automatisée : Utiliser un servo pour ouvrir ou fermer une vanne d'eau déclenché par un message Telegram
    • Mécanisme de serrure de porte : Faire tourner un servo pour verrouiller ou déverrouiller une porte à distance
    • Suiveur solaire : Utiliser la lecture d'un capteur de lumière depuis le MPU pour maintenir un panneau solaire orienté vers le soleil
    • Articulation de bras robotique : Construire un bras robotique multi-servo et contrôler chaque articulation via Telegram

    Défiez-vous

    • Facile : Ajouter une commande Telegram /status qui indique l'angle actuel du servo (gauche, centre ou droite)
    • Moyen : Implémenter un mouvement fluide entre les positions en avançant degré par degré dans le callback Bridge
    • Avancé : Ajouter plusieurs positions prédéfinies (/pos1, /pos2, etc.) configurables via des commandes Telegram

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