Robotique 101 : cours de robotique pour débutant gratuit
Bienvenue dans ce cours de robotique pour débutant gratuit, pensé pour t'emmener de zéro à un premier robot fonctionnel. La programmation robotique, ce n'est pas assembler des gadgets au hasard : c'est relier de la logique (du code) au monde physique (des moteurs, des capteurs, du courant) — les mêmes briques que celles utilisées en IoT. Ce guide te fait passer, pas à pas, des bases de l'électronique jusqu'à un petit robot autonome, avec en ligne de mire les compétences de base d'un ingénieur robotique.
Vue d'ensemble : comment fonctionne un robot
Un robot tourne en permanence dans une boucle Percevoir → Décider → Agir :
1. Percevoir : des capteurs transforment un phénomène physique (une distance, de la lumière, un son) en signal électrique.
2. Décider : un microcontrôleur (le « cerveau ») compare ces signaux à des règles que tu as programmées.
3. Agir : le robot bouge grâce à des actionneurs (servomoteurs pour un angle précis, moteurs à courant continu pour tourner en continu).
Deux idées à garder en tête dès maintenant :
Les capteurs sont bruités : leurs mesures ne sont jamais parfaitement exactes. Les robots avancés utilisent des filtres pour « nettoyer » ces données au lieu de leur faire confiance aveuglément.
Tous les composants doivent partager une masse commune (un même point de référence électrique). Sans ça, les signaux deviennent instables. On y revient à la fin, c'est un piège classique.
Module 1 — Les bases
1. Anatomie d'un robot
Ce qui distingue un robot d'une simple machine, c'est la boucle Percevoir → Décider → Agir. Une machine fait une tâche fixe ; un robot perçoit son environnement, réfléchit, puis réagit.
Pour comprendre le matériel, compare-le au corps humain :
Le corps humain | Sur le robot | Rôle |
|---|---|---|
Yeux / oreilles | Capteurs | Transforment le monde physique en signal |
Cerveau | Microcontrôleur | Exécute la logique, traite les données |
Muscles | Actionneurs (moteurs) | Transforment l'électricité en mouvement |
Sang | Alimentation (batterie) | Fournit le courant nécessaire |
Squelette | Châssis | Structure et supports de fixation |
Ta plateforme de départ : une carte Arduino Uno ou Nano. C'est le point d'entrée le plus courant pour débuter. Elle joue le rôle du système nerveux central.
2. Les bases de l'électronique
Avant de programmer la « pensée », il faut maîtriser le support de l'« action » : l'électricité.
L'analogie du circuit d'eau
Imagine un réseau de tuyaux :
Tension (V) = la pression de l'eau. C'est ce qui pousse le courant.
Courant (I) = le débit. C'est la quantité d'électrons qui circulent.
Résistance (R) = le diamètre du tuyau. Un tuyau étroit freine le débit.
La loi d'Ohm
L'équation de base de l'électronique :
V = I × R
Exemple : calculer la résistance d'une LED
Tu veux allumer une petite LED rouge (qui supporte 18 mA, soit 0,018 A) avec une pile de 9 V. Il faut une résistance « en série » pour limiter le courant, sinon la LED grille.
Attention, un piège classique : une LED n'est pas une simple résistance. Elle « consomme » déjà une partie de la tension au passage, appelée tension de seuil (forward voltage). Pour une LED rouge, c'est environ 2 V. Il faut en tenir compte dans le calcul, sinon on surestime largement la résistance nécessaire.
La version initiale calculait R = 9 V / 0,018 A = 500 Ω . C'est faux.
Le problème : une LED n'est pas une simple résistance. Elle « consomme » déjà une partie de la tension au passage, appelée tension de seuil (forward voltage). Pour une LED rouge, c'est environ 2 V.
La bonne formule tient compte de cette chute de tension :
R = (tension d'alimentation − tension de la LED) / courant R = (9 V − 2 V) / 0,018 A R = 7 / 0,018 ≈ 390 Ω
En pratique tu prendrais une résistance de 390 Ω (valeur standard) ou 470 Ω par sécurité. Retiens bien : on soustrait toujours la tension de la LED avant de diviser.
Détail utile : la résistance peut être placée avant ou après la LED, ça ne change rien. Son seul rôle est de limiter le courant qui traverse la branche.
La breadboard (plaque d'essai)
C'est une plaque qui permet de câbler un circuit sans souder, donc de tester et modifier facilement.
Rails d'alimentation (les longues lignes + et − sur les côtés) : distribuent le courant sur toute la plaque. Lignes de signal (les rangées de 5 trous) : les 5 trous d'une même rangée sont reliés entre eux électriquement. La rainure centrale : elle sépare la plaque en deux moitiés qui ne se touchent pas. Pratique pour y poser des circuits intégrés.
3. Le microcontrôleur et ton premier programme de programmation robotique
La programmation robotique commence ici : un microcontrôleur fait le pont entre ton code et le monde physique en traduisant ta logique en variations de tension sur ses broches (pins). C'est aussi ce même principe — un petit contrôleur qui pilote des capteurs et des actionneurs — qui sert de base à la plupart des objets connectés en IoT.
Démarrer avec l'IDE Arduino
1. Choisir la carte : menu Outils > Type de carte , sélectionne « Arduino Uno » ou « Nano ».
2. Choisir le port : menu Outils > Port , sélectionne le port série où ta carte est branchée.
Structure d'un programme (« sketch »)
Tout programme Arduino a deux blocs obligatoires :
void setup() : exécuté une seule fois au démarrage. Sert à la configuration (par exemple : déclarer qu'une broche est une sortie). void loop() : exécuté en boucle, indéfiniment. C'est là que vit la logique Percevoir → Décider → Agir.
Le programme « Blink » (faire clignoter une LED)
void setup() {pinMode(LED_BUILTIN, OUTPUT); // configure la broche de la LED en sortie}void loop() {digitalWrite(LED_BUILTIN, HIGH); // met la broche à 5 V → LED alluméedelay(1000); // attend 1000 ms (1 seconde)digitalWrite(LED_BUILTIN, LOW); // met la broche à 0 V → LED éteintedelay(1000); // attend 1 seconde}
4. Programmer proprement : les variables en programmation robotique
Écrire des nombres « en dur » directement dans le code (comme 13 ) est une mauvaise habitude. Si tu changes ton câblage, tu ne devrais pas avoir à réécrire tout ton programme.
Type | Mot-clé | À quoi ça sert |
|---|---|---|
Entier | int | Nombres ronds (numéros de broche, délais) |
Nombre à virgule | float | Décimales précises (calculs de distance) |
Texte | String | Étiquettes, messages d'état |
En dur vs. avec variables
Débutant : digitalWrite(13, HIGH); → si tu déplaces la LED sur la broche 8, tu dois retrouver et remplacer tous les 13 .
Propre : digitalWrite(ledPin, HIGH); → tu changes une seule ligne en haut du code.
int ledPin = 13; // numéro de broche, défini une seule foisint blinkDelay = 500; // délai, modifiable au même endroitvoid setup() {pinMode(ledPin, OUTPUT);}Définis tes paramètres tout en haut du programme : tu peux ainsi ajuster tout ton robot en changeant une seule valeur.
Module 2 — Capteurs, moteurs et drivers
5. Le capteur de distance à ultrasons HC-SR04
Pour se déplacer, un robot doit mesurer les distances. Le HC-SR04 « voit » en envoyant un son très aigu (inaudible) et en mesurant le temps qu'il met à revenir, comme un sonar.
Principe : on envoie une impulsion de 10 microsecondes sur la broche Trigger. Le capteur émet le son, puis attend l'écho. Le calcul :
Distance = (durée de l'écho / 2) × 0,0343
On divise par 2 parce que le son fait l'aller-retour (jusqu'à l'objet, puis retour). Le nombre 0,0343 est la vitesse du son, en cm par microseconde.
Le code de lecture
long duration;float distance;void loop() {digitalWrite(trigPin, LOW);delayMicroseconds(2); // petite pause pour une impulsion propredigitalWrite(trigPin, HIGH);delayMicroseconds(10); // on déclenche le sondigitalWrite(trigPin, LOW);duration = pulseIn(echoPin, HIGH); // mesure le temps de retour de l'échodistance = (duration / 2.0) * 0.0343; // convertit en centimètres}
6. Les servomoteurs (position précise)
Une fois l'obstacle détecté, il faut bouger. Deux familles d'actionneurs :
Moteur à courant continu (DC) : pour la vitesse, tourne en continu.
Servomoteur : pour un angle précis (de 0 à 180°).
Caractéristique | Moteur DC | Servomoteur |
|---|---|---|
Mouvement | Rotation continue | Angle précis |
Retour d'info | Aucun (en général) | Interne (il connaît sa position) |
Signal | Tension continue | Signal PWM (impulsions) |
Le PWM (modulation de largeur d'impulsion) consiste à couper et rétablir très vite le courant pour simuler une position précise. La bibliothèque Servo.h gère ces détails compliqués à ta place.
#include <Servo.h>Servo myServo;
void setup() {myServo.attach(9); // signal du servo sur la broche PWM 9}void loop() {for (int pos = 0; pos <= 180; pos++) { // balaye de 0 à 180°myServo.write(pos);delay(15);}}
7. Le driver moteur L298N (double pont en H)
Une broche d'Arduino fournit environ 20 mA en usage normal (40 mA étant la limite absolue à ne jamais viser). Un moteur DC réclame beaucoup plus : le brancher directement sur l'Arduino détruit la carte.
On utilise donc un driver moteur L298N comme intermédiaire costaud. Il prend le courant fort de la batterie et le distribue au moteur, en obéissant aux petits signaux de l'Arduino.
Pont en H : en inversant le sens de la tension aux bornes du moteur, on inverse son sens de rotation.
Broches du L298N :
ENA / ENB : broches PWM qui contrôlent la vitesse.
IN1 à IN4 : broches qui contrôlent le sens.
IN1 | IN2 | Comportement du moteur |
|---|---|---|
HIGH | LOW | Rotation vers l'avant |
LOW | HIGH | Rotation vers l'arrière |
LOW | LOW | Arrêt (roue libre) |
Module 3 — Projets pratiques
8. Projet 1 : le robot suiveur de ligne
Ce robot utilise des capteurs infrarouges (IR) pour rester sur une ligne noire. Le principe : le noir absorbe la lumière IR, le blanc la reflète. Le robot sait donc s'il est sur la ligne ou à côté.
Direction différentielle : en faisant tourner la roue gauche et la roue droite à des vitesses différentes, on tourne sans volant.
Capteur gauche | Capteur droit | Action |
|---|---|---|
Blanc | Blanc | Tout droit |
Noir | Blanc | Tourner à gauche |
Blanc | Noir | Tourner à droite |
9. Projet 2 (final) : robot qui évite les obstacles
Ce robot combine tout : le HC-SR04 (les « yeux »), un servo (le « cou ») et le L298N (les « jambes »).
La logique :
1. Scanner : le servo fait pivoter le capteur pour chercher un passage libre.
2. Ralentir en douceur : avec la fonction map() , plus l'obstacle est proche, plus le moteur ralentit progressivement. 3. Choisir un chemin : si le robot est coincé, il s'arrête, compare la distance à gauche et à droite, puis part vers le côté le plus dégagé.
#include <Servo.h>
// Définition des brochesconst int trigPin = 9, echoPin = 10, motorSpeed = 5;const int IN1 = 4, IN2 = 3;
Servo neckServo;void setup() {neckServo.attach(11);pinMode(trigPin, OUTPUT);pinMode(echoPin, INPUT);}void loop() {long duration;float distance;// Mesure de distancedigitalWrite(trigPin, LOW); delayMicroseconds(2);digitalWrite(trigPin, HIGH); delayMicroseconds(10);digitalWrite(trigPin, LOW);duration = pulseIn(echoPin, HIGH);distance = (duration / 2.0) * 0.0343;// Ralentissement progressifint currentSpeed = map(distance, 15, 40, 0, 255);currentSpeed = constrain(currentSpeed, 0, 255);if (distance > 20) {analogWrite(motorSpeed, currentSpeed); // vitesse proportionnellemoveForward();} else {performEvasiveScan(); // s'arrête et cherche un autre chemin
}}Module 4 — Sécurité, dépannage et intelligence artificielle
10. Alimentation et sécurité : les règles d'or
Ne jamais alimenter les moteurs depuis la broche 5 V de l'Arduino. Utilise toujours une batterie dédiée pour les moteurs (par exemple une batterie 7,4 V).
Brancher des batteries en série augmente la tension (plus de « force »).
Les brancher en parallèle augmente la capacité (plus d'autonomie).
La masse commune (à comprendre absolument)
Une tension n'est jamais une valeur absolue : c'est toujours une différence entre deux points. Quand l'Arduino met une broche à « 5 V », ça veut dire 5 V par rapport à sa propre masse (GND).
Si tu as deux alimentations séparées (une pour l'Arduino, une pour les moteurs) et que leurs masses ne sont pas reliées, les deux « zéros » ne correspondent pas. Résultat : l'Arduino envoie un « 5 V » que le driver ne sait pas interpréter correctement, et le robot devient imprévisible.
La règle : relie toujours ensemble toutes les bornes négatives ( − / GND) de tes alimentations, pour qu'elles partagent le même zéro de référence.
Check-list avant d'allumer
[ ] Polarité : les fils + et − sont-ils au bon endroit ? (les inverser peut détruire le matériel)
[ ] Masse commune : la masse de la batterie est-elle reliée à celle de l'Arduino ?
[ ] Câblage : pas de fil qui se balade ou mal enfoncé ?
[ ] Syntaxe : majuscules respectées ( pinMode ) et points-virgules présents ?
11. Un aperçu de l'intelligence artificielle en robotique
L'intelligence artificielle appliquée à la robotique moderne fait passer les robots des règles fixes ( si... alors... ) vers l'estimation d'état. Comme les capteurs sont bruités, on ne peut pas leur faire une confiance aveugle : on utilise des filtres pour transformer des mesures incertaines en estimations fiables.
Type de filtre | Idée principale | Quand l'utiliser |
|---|---|---|
Filtre d'histogramme | Découpe l'espace en cases et suit des probabilités | Se localiser dans une carte connue |
Filtre de Kalman | Suit la position avec des courbes de probabilité | Suivre position et vitesse (peu de bruit) |
Filtre à particules | Lance plein de « suppositions » et les pondère | Environnements complexes, robot « perdu » |
Côté vision, des outils comme Teachable Machine de Google permettent à un robot de reconnaître des objets avec un petit réseau de neurones, plutôt qu'avec de simples mesures de distance.
Module 5 — Ton projet final
12. Le robot autonome qui évite les obstacles
Ce guide t'a fait passer par tous les sous-systèmes d'un robot : électronique, logique du microcontrôleur, capteurs, actionneurs. Le projet final réunit tout dans une seule machine qui fonctionne.
Tu vas mobiliser :
Électronique : câbler un circuit avec la bonne résistance (Module 1.2)
Programmation : setup() et loop() propres, avec des variables (Module 1.3–4)
Capteurs : lire une distance au HC-SR04 (Module 2.5)
Actionneurs : un servo pour scanner, des moteurs DC via le L298N (Module 2.6–7)
Intégration : combiner tout ça dans la boucle Percevoir → Décider → Agir (Module 3.9)
Sécurité : appliquer les règles d'or et la check-list (Module 4.10)
Objectif minimum (obligatoire) : ton robot avance, détecte un obstacle sous une distance donnée, s'arrête, regarde à gauche et à droite, puis pivote vers le côté le plus dégagé.
⚠ Extension avancée (optionnelle) : le code du Module 3 inclut aussi le ralentissement progressif (via map() ), où la vitesse baisse à l'approche d'un obstacle. C'est un premier pas vers la théorie du contrôle, un sujet que ce guide survole volontairement (le PID, le filtrage avancé et la navigation autonome dépassent le cadre d'un cours débutant). Attends que ton robot de base fonctionne bien avant de t'y attaquer.
Tu es prêt à te dire "apprenti ingénieur robotique" quand tu sais :
Comprendre le fonctionnement de base d'un robot
Manipuler de l'électronique simple
Programmer un microcontrôleur
Brancher et utiliser des capteurs
Piloter des moteurs
Assembler un robot simple
Dépanner des problèmes matériels ou logiciels de base
Ce projet marque la limite de la robotique pour débutants, pas de la robotique elle-même. Les suites naturelles pour progresser vers le métier d'ingénieur robotique : la robotique industrielle, la théorie du contrôle avancée, l'intelligence artificielle et la vision par ordinateur, les objets connectés (IoT), ROS2 et la navigation autonome.
Ce cours ne couvre que les bases. Pour aller plus loin et devenir ingénieur en robotique, rejoins l'un des programmes d'Epitech :