Le kit robot 4WD est un véhicule à quatre roues motrices livré en pièces, à assembler puis à programmer soi-même. Il ne se pilote pas avec une manette sortie de la boîte : on monte le châssis, on visse les moteurs, on branche la carte et on écrit le programme. C’est ce qui en fait un support d’apprentissage complet — mécanique, câblage, capteurs et code sur le même objet.
Le cœur du kit est une carte Arduino UNO R3 compatible, posée sur une carte d’extension qui rassemble tous les connecteurs à trois broches. Autour d’elle : quatre moteurs réducteurs, un capteur à ultrasons monté sur une tête orientable par servomoteur, trois modules infrarouges de suivi de ligne à l’avant, un récepteur infrarouge avec sa télécommande et un module Bluetooth série.
Quatre usages sortent de la même mécanique, selon le programme téléversé : suivre une ligne noire, éviter les obstacles en balayant la tête à ultrasons, se piloter à la télécommande infrarouge, ou se piloter depuis un téléphone par Bluetooth. Le kit sert aussi de plateforme d’essai : une fois le châssis monté, on y ajoute les capteurs et les modules que l’on veut étudier, sans rien reconstruire.
Caractéristiques techniques
| Plateforme | Châssis en acrylique à deux étages, quatre roues motrices et quatre moteurs réducteurs à courant continu |
|---|---|
| Carte de commande | Carte Arduino UNO R3 compatible — microcontrôleur ATmega328P, 14 entrées/sorties numériques dont 6 sorties PWM, 6 entrées analogiques, port USB type B |
| Carte d’extension | Empilée sur la carte de commande ; elle répartit les broches sur des connecteurs à trois broches (alimentation, masse, signal) et reçoit le module de pilotage des moteurs |
| Capteur de distance | HC-SR04 à ultrasons, de 2 cm à 4 m ; monté sur une tête orientable par servomoteur, fixée par deux colliers |
| Suivi de ligne | Trois modules infrarouges à l’avant, sur entretoises courtes pour rester près du sol ; chaque module rend un état tout ou rien réglable par son potentiomètre |
| Pilotage à distance | Récepteur infrarouge avec télécommande (démodulation 38 kHz) et module Bluetooth série |
| Pilotage des moteurs | Module à six entrées : ENA, IN1, IN2, IN3, IN4, ENB — la même interface qu’un module L298N ; ENA et ENB règlent la vitesse par PWM, les quatre entrées IN le sens de rotation |
| Alimentation | Carte de commande par câble USB ou par la prise jack d’alimentation ; porte-piles fourni, piles non fournies |
| Programmation | IDE Arduino, langage C++ ; bibliothèque Servo pour la tête, bibliothèque IRremote pour la télécommande |
| Assemblage | Entretoises, vis et écrous fournis. Sur cette famille de kits, les deux fils d’alimentation de chaque moteur se soudent avant le montage : prévoyez un fer à souder, ou vérifiez que votre lot arrive déjà câblé |
| Contenu du lot | Châssis à deux plateaux et sa visserie, 4 moteurs réducteurs avec leurs supports, 4 roues, carte Arduino UNO R3 compatible avec son câble USB, carte d’extension, capteur HC-SR04 avec support et servomoteur, 3 modules suiveurs de ligne infrarouges, récepteur infrarouge et télécommande, module Bluetooth, module de pilotage des moteurs, porte-piles et câbles de liaison |
Les quatre modes de fonctionnement
Il n’y a pas de sélecteur de mode sur le robot : c’est le programme téléversé qui décide de tout. Chaque mode tient dans un croquis de quelques dizaines de lignes, et l’on passe de l’un à l’autre en téléversant l’autre croquis.
- Suivi de ligne — les trois modules infrarouges lisent le sol. Tant que celui du milieu voit la bande noire, le robot avance droit ; dès qu’un module de côté la perd, le programme corrige la trajectoire d’un côté. Les trois modules réunis permettent aussi de détecter un bord de table, la bande noire étant la piste et le fond clair le vide.
- Évitement d’obstacle — la tête à ultrasons balaie de droite à gauche et mesure la distance dans chaque direction. Un obstacle proche devant fait arrêter le robot, comparer les deux mesures latérales, puis tourner du côté le plus dégagé.
- Télécommande infrarouge — le récepteur est placé près de la tête, orienté vers l’avant. Un appui sur la télécommande envoie un code ; le programme l’associe à une action (avancer, reculer, tourner, arrêter). Il faut rester en vue directe du robot, et l’éclairage solaire ou certaines lampes peuvent perturber la réception.
- Pilotage par Bluetooth — le module Bluetooth série se branche sur l’émetteur et le récepteur de la carte. Un téléphone envoie des caractères, le programme les interprète comme des ordres. La portée est de plusieurs mètres, sans vue directe, contrairement à l’infrarouge. Lorsque le module est en place, débranchez-le avant chaque téléversement : il occupe les broches du port série, et l’IDE Arduino ne parvient alors plus à écrire la carte.
Brochage du kit
Le montage livré par le fabricant de ce kit répartit les périphériques de façon à laisser libres les broches du port série et les entrées analogiques de service. Reprenez ce tableau tel quel pour le premier programme : il est écrit sur les connecteurs de la carte d’extension de la plupart des lots.
| Capteur à ultrasons — VCC | 5V |
|---|---|
| Capteur à ultrasons — GND | GND |
| Capteur à ultrasons — TRIG | A1 |
| Capteur à ultrasons — ECHO | A0 |
| Servomoteur de la tête — fil du signal | D12 |
| Récepteur infrarouge — sortie | D13 |
| Module de pilotage — ENA | D6 (PWM, vitesse du premier groupe de moteurs) |
| Module de pilotage — IN1, IN2 | D7, D8 |
| Module de pilotage — IN3, IN4 | D9, D10 |
| Module de pilotage — ENB | D5 (PWM, vitesse du second groupe de moteurs) |
| Modules suiveurs de ligne — sorties | D4, D1, D2 dans l’ordre, de l’extérieur vers l’intérieur |
Deux remarques sur ce tableau. Les broches A0 et A1 servent ici d’entrées et de sorties numériques ordinaires : elles portent un nom analogique, rien de plus. Et la sortie D1 d’un module suiveur occupe l’émetteur du port série, celui qui dialogue avec l’ordinateur : gardez cette particularité en tête si un programme envoie du texte sur le moniteur série en même temps qu’il lit les capteurs de ligne.
Mini-projet : éviter les obstacles avec la tête à ultrasons
Le programme ci-dessous donne au robot son autonomie complète : il avance, mesure en continu ce qui se trouve devant lui, et quand un obstacle se présente, il arrête les moteurs, tourne la tête d’un côté puis de l’autre, compare les deux mesures et repart du côté le plus dégagé. Rien à installer de plus, tout est déjà dans le kit.
Ce qu’il faut
| Le kit | Le robot assemblé, avec sa carte d’extension et son porte-piles garni |
|---|---|
| L’ordinateur | L’IDE Arduino, avec la bibliothèque Servo fournie en standard |
| Le réglage | La carte d’extension porte son brochage ; si la vôtre diffère du tableau ci-dessus, adaptez les numéros de broches en tête de programme |
Le câblage
Aucun câblage à ajouter : le kit est déjà monté. Les trois lignes utiles sont celles du capteur à ultrasons (TRIG sur A1, ECHO sur A0, alimentation sur 5V et GND) et celle du servomoteur de la tête, dont le fil du signal va sur D12. Le module de pilotage reçoit les six lignes des moteurs et son alimentation par le porte-piles.
Le programme
À copier dans l’IDE Arduino, puis à téléverser sur la carte :
/*
* Robot 4WD : evitement d'obstacle avec la tete a ultrasons
* Carte : Arduino UNO R3 + carte d'extension du kit
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
#include "Servo.h"
Servo tete;
const int ECHO = A0; // capteur a ultrasons
const int TRIG = A1;
const int TETE = 12; // servomoteur de la tete
const int ENA = 6; // module de pilotage : premier groupe
const int IN1 = 7;
const int IN2 = 8;
const int IN3 = 9; // second groupe
const int IN4 = 10;
const int ENB = 5;
const int VITESSE = 150; // entre 0 et 255
const int SEUIL_CM = 25; // distance a laquelle on s'arrete
const int TETE_DROITE = 30; // angles de balayage
const int TETE_GAUCHE = 150;
// Mesure la distance en centimetres. Rend 0 si aucun echo ne revient.
int mesurer() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
unsigned long duree = pulseIn(ECHO, HIGH, 30000);
if (duree == 0) return 0;
return (int) (duree / 58);
}
// Vrai si l'obstacle est a SEUIL_CM ou moins. La fonction min()
// evite d'avoir a ecrire un signe de comparaison.
bool trop_pres(int cm) {
if (cm == 0) return false;
return min(cm, SEUIL_CM) == cm;
}
void avancer() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, VITESSE);
analogWrite(ENB, VITESSE);
}
// Fait tourner le robot : un groupe avance, l'autre recule
void tourner(bool versLaDroite) {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, versLaDroite ? LOW : HIGH);
digitalWrite(IN4, versLaDroite ? HIGH : LOW);
analogWrite(ENA, VITESSE);
analogWrite(ENB, VITESSE);
}
void arreter() {
analogWrite(ENA, 0);
analogWrite(ENB, 0);
}
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
tete.attach(TETE);
tete.write(90);
delay(500);
}
void loop() {
if (trop_pres(mesurer()) == false) {
avancer();
delay(60);
return;
}
arreter();
delay(200);
tete.write(TETE_DROITE);
delay(400);
int aDroite = mesurer();
tete.write(TETE_GAUCHE);
delay(400);
int aGauche = mesurer();
tete.write(90);
delay(300);
tourner(max(aGauche, aDroite) == aDroite);
delay(500);
}Comment ça marche
mesurer()envoie une impulsion de 10 microsecondes surTRIG, puis chronomètre le retour de l’écho surECHO. Le son parcourt 58 centimètres par milliseconde à l’aller et au retour : diviser la durée en microsecondes par 58 donne directement la distance en centimètres. Le troisième argument depulseInest un délai de garde de 30 millisecondes, au-delà duquel la fonction rend 0 et le programme sait qu’il n’y a rien en face.trop_pres()répond à la seule question qui compte : l’obstacle est-il à 25 cm ou moins. Elle rendfalsesur une mesure nulle, sinon le vide devant le robot serait pris pour un mur.avancer()ettourner()écrivent le sens sur les quatre entrées IN, puis règlent la vitesse paranalogWritesur ENA et ENB. La valeur 150 sur 255 correspond à un peu plus de la moitié de la vitesse : au maximum, les quatre moteurs font patiner les roues et le robot perd sa trajectoire.- Dans la boucle, la tête regarde d’abord à droite, puis à gauche, et le programme compare les deux mesures.
max(aGauche, aDroite) == aDroitese lit « la droite est au moins aussi dégagée que la gauche » : le robot tourne donc du côté où il y a le plus de place. - Les pauses encadrent les mouvements de tête : 400 millisecondes pour laisser le servomoteur atteindre sa position avant de mesurer, 200 millisecondes pour que le robot soit bien arrêté avant de balayer.
Pour aller plus loin
Le réglage le plus utile est SEUIL_CM : passé à 40 ou 50 cm, le robot anticipe et tourne avec de l’avance ; en dessous de 15 cm, il s’arrête trop tard et bute. La vitesse, ensuite : VITESSE à 100 rend le comportement beaucoup plus régulier sur un sol lisse. Et pour un robot qui recule avant de tourner, ajoutez deux lignes avant l’appel à tourner() — les entrées IN inversées font reculer le robot pendant le temps que vous choisissez.
Variante : suivre une ligne noire
Le même châssis, avec les trois modules infrarouges et le capteur à ultrasons débranché, donne un suiveur de ligne. Chaque module rend un état tout ou rien : sa sortie passe au niveau haut ou bas selon la lumière qu’il reçoit, ce qui distingue une bande noire d’un fond clair. La lecture se fait sur D4, D1 et D2, le module du milieu servant de référence et les deux autres de correcteurs. Le montage classique fait avancer le robot tant que le module central voit la bande, et l’arrête ou le fait pivoter dès que le sol s’éclaircit : sans bande sous les trois capteurs, il n’y a plus de piste à suivre.
Deux points de réglage décident du résultat. Le potentiomètre de chaque module se règle sur la piste réelle, à la hauteur définitive : une même bande noire ne renvoie pas la même chose sur un carrelage clair et sur un parquet. Et la vitesse compte plus qu’on ne le croit — un robot trop rapide dépasse la correction et sort de la ligne à chaque virage.
Ces modules se remplacent tels quels, et le capteur optique infrarouge TCRT5000 est celui que l’on trouve le plus souvent monté sur ce type de carte : même principe émetteur-récepteur, même sortie tout ou rien réglable.
Questions fréquentes
Le robot ne bouge pas alors que le programme est téléversé
Dans l’ordre : vérifiez que le porte-piles est garni et son interrupteur en position marche ; débranchez le module Bluetooth, qui occupe le port série pendant le téléversement ; relisez les numéros de broches du programme par rapport à la sérigraphie de votre carte d’extension. Si les moteurs sifflent mais ne tournent pas, ce n’est pas le programme : c’est l’alimentation. Quatre moteurs réducteurs demandent à eux seuls bien plus que les 500 mA que fournit un port USB, et c’est le porte-piles qui doit alimenter le module de pilotage, jamais la prise USB.
Le module de pilotage a grillé, que prendre à la place ?
Le kit utilise l’interface des modules L298N : deux entrées de vitesse et quatre entrées de sens. Un module L298N se rebranche donc à l’identique, à condition de respecter le brochage entrée par entrée et de relier les masses au reste du montage. C’est le pilier du kit : c’est lui qui encaisse le courant des quatre moteurs, et c’est lui qui souffre si un moteur se bloque contre un mur.
Que faut-il comme piles, et peut-on les remplacer par un accu ?
Le kit est livré avec son porte-piles mais sans piles : relevez le format et le nombre de logements sur le boîtier avant d’en acheter, puis prenez des piles au format indiqué. Pour un usage intensif, un pack d’accus se recharge et se remplace à volonté — un support 2 × 18650 avec interrupteur et connecteur fournit une tension supérieure à celle de piles jetables, ce qui rend le robot plus nerveux, à la condition que le module de pilotage accepte cette tension. Un second support de piles 4 × AA permet d’avoir toujours un pack chargé d’avance et d’échanger en dix secondes pendant les essais.
La tête à ultrasons tremble ou part en butée
Trois causes courantes. Le servomoteur d’abord : alimenté par la broche 5V de la carte en même temps que quatre moteurs, il manque de courant et cherche sa position par saccades ; c’est là que se voit le mieux l’intérêt d’un porte-piles bien chargé. Le montage ensuite : si le support de la tête a été serré de travers, le servomoteur force en permanence. Le programme enfin : les angles de balayage doivent rester dans la plage utile du modèle. Un servomoteur SG90 de rechange se clipse sur le même support, avec la même commande à trois fils.
Le robot ne réagit pas à la télécommande infrarouge
Le récepteur doit voir la télécommande : derrière le robot ou trop décalé sur le côté, il ne reçoit rien. Les piles de la télécommande sont la deuxième cause, et le câblage la troisième — le récepteur sur D13, avec le programme qui décode les codes avec la bibliothèque IRremote. Si le récepteur ou la télécommande a été perdu, une télécommande infrarouge vendue avec son récepteur remet le montage en état, mais les codes sont alors différents de ceux d’origine : il faut les relever une fois avec le moniteur série avant de les utiliser dans le programme.
Peut-on ajouter un second capteur à ultrasons ?
Oui, et c’est l’évolution la plus fréquente de ce kit : un capteur à l’arrière, en plus de celui de la tête, évite les marches arrière dans un obstacle. Le module d’origine se trouve seul chez nous, avec le même brochage VCC, TRIG, ECHO, GND, à déclarer sur deux autres broches dans le programme. Il partage le même principe de mesure — et la même limite : deux capteurs montés côte à côte peuvent se recevoir l’un l’autre si on les fait émettre en même temps, il faut alors les interroger l’un après l’autre. Si vous ajoutez un capteur, prenez le capteur à ultrasons HC-SR04.
À combiner avec
Le kit est complet, mais deux pièces servent souvent : un Uno R3 avec son câble USB pour tester un programme sur une seconde carte pendant que le robot reste monté sur la première, et une paire moteur-roue de rechange, car c’est la pièce qui souffre en premier lorsque le robot force contre un obstacle. Une roue de voiture 4WD seule dépanne aussi si un pneu a été fendu en roulant sur un gravier, et le module Bluetooth série HC-05 remplace celui du kit : contrairement aux modules esclaves, il accepte aussi un rôle maître, ce qui permet de lui faire dialoguer deux véhicules entre eux.













Avis
Il n’y a pas encore d’avis.