Cours de Robotique avec Arduino
La Robotique : Un Monde Passionnant
La robotique est un domaine fascinant qui combine l'électronique, la programmation et la mécanique pour créer des machines intelligentes capables d'interagir avec leur environnement.
Programmation
Apprenez à coder avec le langage Arduino (basé sur C/C++) pour donner vie à vos robots.
Électronique
Comprenez les circuits, les capteurs et les actionneurs qui composent un robot.
Mécanique
Construisez la structure physique de vos robots avec des matériaux simples.
Découvrez Arduino Uno
Arduino Uno est une carte de développement open-source basée sur le microcontrôleur ATmega328P. C'est la carte la plus populaire pour débuter en robotique grâce à sa simplicité d'utilisation et sa communauté immense.
-
14
Broches Numériques
Broches 0 à 13 — pour les entrées/sorties digitales (LED, boutons, etc.)
-
6
Broches Analogiques
A0 à A5 — pour lire des valeurs de capteurs (température, lumière, etc.)
-
⚡
5V / 3.3V
Alimentation pour vos composants — 5V (400mA max) et 3.3V (50mA max)
-
🔌
Port USB
Connexion à l'ordinateur pour programmer et alimenter la carte
void setup() { // Configuration initiale pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); // LED allumée delay(1000); // 1 seconde digitalWrite(13, LOW); // LED éteinte delay(1000); // 1 seconde }
Ce programme fait clignoter la LED intégrée à la carte Arduino (broche 13) toutes les secondes.
Électronique de Base
Avant de construire des robots, il est essentiel de comprendre les concepts fondamentaux de l'électronique.
Les grandeurs électriques
Tension (Volts — V)
La « poussée » électrique qui fait circuler le courant. Comme la pression dans un tuyau d'eau. Arduino fournit 5V.
Courant (Ampères — A)
Le débit d'électricité qui traverse le circuit. Comme le débit d'eau dans un tuyau. Mesuré en milliampères (mA).
Résistance (Ohms — Ω)
L'obstacle au passage du courant. Plus la résistance est grande, moins le courant passe. Essentielle pour protéger les LED !
Circuits : Série vs Parallèle
Circuit en Série
- Les composants sont branchés les uns à la suite des autres
- Le courant est le même partout
- Si un composant tombe en panne, tout s'arrête
- La tension se divise entre les composants
Circuit en Parallèle
- Les composants sont branchés côte à côte
- La tension est la même partout
- Si un composant tombe en panne, les autres continuent
- Le courant se divise entre les branches
Votre Premier Circuit
Montez un circuit simple avec une LED, une résistance et un bouton poussoir.
📋 Matériel nécessaire
🔧 Étapes de montage
-
1Placez la LED sur la breadboardLa patte longue (+) vers la droite, la patte courte (-) vers la gauche
-
2Connectez la résistance (220Ω)Entre la patte courte de la LED et la ligne GND (bleue) de la breadboard
-
3Reliez la patte longue au pin 13Fil rouge entre la patte longue de la LED et la broche 13 de l'Arduino
-
4Reliez le GNDFil noir entre la ligne GND de la breadboard et le pin GND de l'Arduino
// === Circuit LED + Bouton === // Broche 13 = LED // Broche 2 = Bouton const int LED_PIN = 13; const int BTN_PIN = 2; void setup() { pinMode(LED_PIN, OUTPUT); pinMode(BTN_PIN, INPUT_PULLUP); Serial.begin(9600); Serial.println("Circuit prêt !"); } void loop() { int etatBtn = digitalRead(BTN_PIN); if (etatBtn == LOW) { digitalWrite(LED_PIN, HIGH); Serial.println("LED ALLUMEE"); } else { digitalWrite(LED_PIN, LOW); Serial.println("LED ETEINTE"); } delay(100); }
Le mode INPUT_PULLUP active une résistance interne de pull-up, ce qui évite d'avoir besoin d'une résistance externe pour le bouton. Quand le bouton n'est pas pressé, la broche lit HIGH ; quand il est pressé, elle lit LOW.
Programmation Arduino
Le langage Arduino est basé sur C/C++. Il utilise deux fonctions principales : setup() et loop().
setup()
Exécutée une seule fois au démarrage. C'est ici qu'on configure les broches, initialise les communications, etc.
// Configuration
}
loop()
Exécutée en boucle infinie après setup(). C'est le cœur du programme, là où la logique se déroule.
// Code répété
}
Variables & Types
Arduino supporte les types classiques : int, float, bool, char, String.
float temp = 23.5;
bool actif = true;
📚 Fonctions essentielles
pinMode(pin, mode)
Définit une broche comme INPUT ou OUTPUT
digitalWrite(pin, val)
Écrit HIGH ou LOW sur une broche digitale
digitalRead(pin)
Lit l'état HIGH ou LOW d'une broche
analogRead(pin)
Lit une valeur 0-1023 sur une broche analogique
analogWrite(pin, val)
Écrit une valeur PWM (0-255) pour varier l'intensité
delay(ms)
Pause le programme pendant X millisecondes
Serial.begin(baud)
Initialise la communication série (ex: 9600)
Serial.print(texte)
Affiche du texte dans le Moniteur Série
Les Capteurs
Les capteurs sont les « sens » du robot. Ils lui permettent de percevoir son environnement.
Capteur de distance ultrason (HC-SR04)
Mesure la distance jusqu'à un obstacle en émettant des ondes ultrasonores. Portée : 2cm à 400cm.
float distance = pulseIn(echoPin, HIGH) * 0.034 / 2;
Capteur température/humidité (DHT11)
Mesure la température (0-50°C) et l'humidité (20-90%) avec une précision raisonnable.
float temp = dht.readTemperature(); float hum = dht.readHumidity();
Capteur de lumière (LDR)
La photo-résistance (LDR) change de résistance selon la luminosité. Parfait pour un robot suiveur de ligne.
int lum = analogRead(A0); // 0 = obscur, 1023 = lumineux
Les Moteurs
Les moteurs sont les « muscles » du robot. Ils convertissent l'énergie électrique en mouvement.
Moteur DC
Moteur à courant continu
Le moteur DC tourne à vitesse constante. On le contrôle avec un pont en H (L298N ou L293D) pour changer le sens de rotation et la vitesse.
Contrôle avec L298N :
- • IN1/IN2 → Contrôle du sens de rotation
- • ENA → Contrôle de la vitesse (PWM)
- • OUT1/OUT2 → Branchés au moteur
// Avancer digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); analogWrite(ENA, 200); // Vitesse
Servomoteur (SG90)
Moteur à position angulaire
Le servomoteur permet un contrôle précis de l'angle (0° à 180°). Idéal pour les bras robotiques, les caméras orientables, ou le « regard » d'un robot.
Connexion :
- • Fil rouge → 5V
- • Fil marron → GND
- • Fil orange → Pin PWM (ex: 9)
#include <Servo.h> Servo monServo; void setup() { monServo.attach(9); } monServo.write(90); // 90 degrés
Projets Complets
Mettez en pratique tout ce que vous avez appris avec ces trois projets passionnants.
🤖 Robot Éviteur d'Obstacles
Construisez un robot mobile capable de détecter les obstacles et de les éviter automatiquement. C'est le projet classique et essentiel pour débuter en robotique !
- ✓ Châssis 4 roues avec moteurs DC
- ✓ Pont en H L298N pour contrôler les moteurs
- ✓ Capteur ultrason HC-SR04 pour détecter les obstacles
- ✓ Servomoteur pour orienter le capteur
- ✓ Pile 9V ou pack Li-ion pour l'alimentation
🧠 Algorithme du robot :
- Le robot avance tout droit
- Le capteur ultrason mesure la distance en continu
- Si un obstacle est détecté à moins de 20 cm → STOP
- Le servomoteur tourne le capteur à gauche, puis à droite
- Le robot compare les deux mesures et tourne dans la direction la plus libre
- Le robot reprend sa route
🦾 Bras Robotisé 3 DoF
Construisez un bras robotique articulé avec 3 degrés de liberté (base, épaule, coude) et une pince. Contrôlez-le avec un joystick ou via le moniteur série.
- ✓ 3 servomoteurs SG90 ou MG996R (plus puissant)
- ✓ Structure en pièces imprimées 3D ou carton rigide
- ✓ Shield servomoteur PCA9685 (optionnel)
- ✓ Alimentation externe 5V 2A pour les servos
🧠 Fonctionnement :
Chaque servomoteur contrôle un axe du bras. Envoyez des commandes via le Moniteur Série (ex: base:90, epaule:45) ou utilisez un joystick avec des potentiomètres pour un contrôle en temps réel.
🌡️ Station Météo Connectée
Créez une station météo qui mesure la température, l'humidité et la luminosité, affiche les données sur un écran LCD et les envoie à un smartphone via Bluetooth.
- ✓ Capteur DHT11 pour température et humidité
- ✓ Capteur LDR pour la luminosité
- ✓ Écran LCD 16x2 pour l'affichage
- ✓ Module Bluetooth HC-05 pour la connexion sans fil
🧠 Fonctionnalités :
- Mesure la température toutes les 2 secondes
- Affiche les données sur l'écran LCD
- Envoie les données au smartphone via Bluetooth
- Change de couleur de LED selon la température (bleu=froid, vert=normal, rouge=chaud)
- Stocke les données sur carte SD (optionnel)
Débogage
Quand quelque chose ne fonctionne pas, suivez cette méthode systématique :
-
1
Vérifiez les connexions
80% des problèmes viennent d'un fil mal branché ou d'une breadboard déconnectée.
-
2
Utilisez le Moniteur Série
Ajoutez des
Serial.println()pour voir les valeurs en temps réel. -
3
Testez composant par composant
Ne testez pas tout d'un coup. Commencez par la LED, puis le bouton, puis le capteur.
-
4
Vérifiez l'alimentation
Un moteur qui ne tourne pas ? Vérifiez la pile ou l'alimentation externe.
Sécurité
La sécurité est primordiale quand on travaille avec l'électronique :
-
⚡
Ne jamais dépasser 5V
L'Arduino supporte un maximum de 5V sur ses broches. Ne connectez jamais directement du 12V ou 220V.
-
🔌
Débranchez avant de modifier
Toujours débrancher l'Arduino avant de modifier le câblage.
-
💡
Utilisez toujours une résistance avec les LED
Sans résistance, la LED grille immédiatement ! Minimum 220Ω pour une LED rouge.
-
🔋
Attention aux courts-circuits
Ne reliez jamais directement le 5V au GND. Cela peut endommager l'Arduino.
Ressources Complémentaires
Continuez votre apprentissage avec ces ressources soigneusement sélectionnées.
Livres Recommandés
« Arduino pour les Nuls », « Programmation Arduino » aux éditions Eyrolles.
Bibliothèque localeCommunauté & Forums
Posez vos questions sur le forum Arduino ou des groupes Facebook dédiés.
forum.arduino.cc →💡 Idées de Projets Avancés
Robot Suiveur de Ligne
Capteurs infrarouges + logique de correction PID pour suivre une ligne noire sur fond blanc.
Voiture Télécommandée Bluetooth
Contrôlez votre robot depuis un smartphone avec une application MIT App Inventor.
Système d'Arrosage Automatique
Capteur d'humidité du sol + pompe à eau + relais pour arroser automatiquement vos plantes.
Alarme de Sécurité avec PIR
Détecteur de mouvement PIR + buzzer + LED pour créer une alarme anti-intrusion.
Horloge avec Module RTC
Module DS3231 + écran LCD pour afficher l'heure et la date, même après coupure de courant.
Console de Jeu Rétro
Écran OLED + boutons directionnels + buzzer pour créer des mini-jeux rétro.
🎯 Compétences Acquises
À la fin de ce cours, vous maîtriserez :
Circuit électronique
Programmation Arduino
Capteurs
Moteurs & Actionneurs
Débogage & Méthodologie
Créativité & Projets
Merci de Votre Attention !
Vous avez maintenant toutes les bases pour créer vos propres robots et projets électroniques. La robotique est un domaine passionnant où la créativité n'a pas de limites !
🌟 Bonne chance dans vos projets robotiques !