Jeune femme avec des lunettes assemblant un robot suiveur de ligne sur chenilles, câblage et driver moteur visibles, dans un atelier d'électronique.
vie-etudiante 2 septembre 2026

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ée
delay(1000); // attend 1000 ms (1 seconde)
digitalWrite(LED_BUILTIN, LOW); // met la broche à 0 V → LED éteinte
delay(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 fois
int blinkDelay = 500; // délai, modifiable au même endroit
void 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 propre
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // on déclenche le son
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); // mesure le temps de retour de l'écho
distance = (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 broches
const 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 distance
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2.0) * 0.0343;
// Ralentissement progressif
int currentSpeed = map(distance, 15, 40, 0, 255);
currentSpeed = constrain(currentSpeed, 0, 255);
if (distance > 20) {
analogWrite(motorSpeed, currentSpeed); // vitesse proportionnelle
moveForward();
} 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 :

Retour en haut de page