Le Kit Porte automatique réunit dans un seul carton tout ce qu’il faut pour qu’une porte s’ouvre au passage d’une personne et se referme seule : la carte Uno R3 et son câble USB, un capteur à ultrasons, un servomoteur à rotation 180°, une alimentation 5 V, la plaque d’essai, les fils de liaison et 1,5 m de câble électrique. Il n’y a rien d’autre à commander pour arriver à un montage qui fonctionne.
Le principe tient en trois blocs. Le capteur mesure en permanence la distance qui le sépare de ce qui se trouve devant lui, la carte lit cette mesure et décide, le servomoteur exécute : son palonnier tourne et tire le cordon fixé au loquet de la porte. Le capteur ne « voit » rien — il envoie un clic inaudible et chronomètre le retour de l’écho, ce qui explique aussi bien sa précision que ses limites.
Ce que contient le colis
- une carte Uno R3 et son câble USB — c’est elle qui exécute le programme ;
- un capteur à ultrasons HC-SR04, le module à deux yeux argentés qui équipe la plupart des robots éviteurs d’obstacles ;
- un servomoteur 180° — le micro-servo bleu de 9 g photographié sur cette fiche, livré avec ses palonniers et ses vis ;
- une alimentation 5 V, pour donner au servomoteur sa propre source de courant ;
- une plaque d’essai sans soudure, avec ses deux bus d’alimentation latéraux ;
- des fils de prototypage mâle-mâle de 10 cm ;
- des fils de prototypage mâle-femelle ;
- 1,5 m de câble électrique souple, qui sert de cordon de commande entre le palonnier du servo et le loquet de la porte.
Caractéristiques techniques
| Carte | Uno R3 (compatible), microcontrôleur ATmega328P, 14 entrées-sorties numériques dont 6 sorties PWM, 6 entrées analogiques. Alimentée et programmée par le câble USB fourni. |
|---|---|
| Capteur | HC-SR04 à ultrasons. Portée de 2 cm à 4 m, résolution annoncée de 3 mm, fréquence de travail 40 kHz, angle de mesure d’environ 15°. Alimentation 5 V, consommation de l’ordre de 15 mA. |
| Servomoteur | Rotation sur 180°, commande par impulsions à 50 Hz d’une durée de 1 à 2 ms, alimentation de 4,8 à 6 V. Le modèle fourni est un micro-servo de 9 g de type SG90, de 23 × 12 × 29 mm, dont le couple au palonnier est de l’ordre de 1,8 kg·cm : de quoi tirer un loquet léger ou un cordon, pas de quoi pousser un vantail. |
| Alimentation | 5 V continu, dédiée au servomoteur. Elle n’alimente pas la carte, qui reste sur son câble USB. |
| Plaque d’essai | Montage sans soudure, deux bus d’alimentation latéraux pour distribuer le 5 V et la masse. |
| Liaisons | Fils mâle-mâle et mâle-femelle au pas de 2,54 mm. |
| Câble | 1,5 m de câble électrique souple, à nouer sur le palonnier du servo d’un côté et sur le loquet de l’autre. |
Comment le capteur mesure une distance
Le module porte deux cylindres métalliques qui se ressemblent, mais qui n’ont pas le même rôle : l’un est un émetteur, l’autre un récepteur. Une impulsion sur la broche TRIG fait partir une salve d’ultrasons à 40 kHz — inaudible pour l’oreille, mais parfaitement réfléchie par un mur, une porte ou un corps humain. Le module écoute ensuite son propre écho et maintient sa broche ECHO au niveau haut pendant tout ce temps de trajet.
Il ne reste alors qu’une multiplication : le son parcourt environ 343 mètres par seconde, soit 0,0343 cm par microseconde, et le trajet compte un aller et un retour. Une durée d’écho de 3 000 microsecondes donne donc 3 000 × 0,0343 ÷ 2, soit un peu plus de 50 cm. C’est exactement ce que fait la fonction mesurerDistance() du programme plus bas.
Deux conséquences pratiques découlent de ce principe. D’abord, si rien ne renvoie l’écho dans le délai imparti, la mesure revient à zéro : aucun obstacle dans la portée, et c’est une information en soi. Ensuite, la mesure est un cône d’environ 15° : posé trop haut, un capteur de porte détecte le sol à quelques mètres et s’ouvre sans raison. Le poser à hauteur de poitrine, visé horizontalement, règle le problème.
Brochage : le capteur et le servomoteur
HC-SR04, VCC | Alimentation. À relier au 5 V de la carte. |
|---|---|
HC-SR04, TRIG | L’entrée de commande : une impulsion de 10 microsecondes y déclenche une mesure. À relier à une sortie numérique. |
HC-SR04, ECHO | La sortie : elle reste haute pendant la durée de l’aller-retour. À relier à une entrée numérique. |
HC-SR04, GND | La masse, référence commune du montage. |
| Servo, fil du milieu | L’alimentation. Le fil rouge de la prise trois broches porte le +5 V : c’est bien le fil central, jamais le signal. Sur certaines séries de servomoteurs la couleur change, l’ordre des trois fils ne change pas. |
| Servo, fil foncé | La masse : fil marron ou noir, à relier au GND. |
| Servo, fil clair | Le signal de commande : fil orange, jaune ou blanc, à relier à une sortie numérique de la carte. |
Deux règles valent pour tout servomoteur. La première : le fil du milieu est le +V, l’inverser avec le signal fait tourner le moteur n’importe comment, et le brancher à l’envers sur l’alimentation peut le détruire. La seconde : une commande de servo est une impulsion, pas une tension continue — c’est la bibliothèque Servo, fournie avec l’IDE Arduino, qui s’en charge, et non un simple digitalWrite.
Mini-projet : une porte qui s’ouvre au passage
Le programme de cette page ouvre la porte dès qu’une personne entre dans la zone surveillée, la maintient ouverte, puis la referme quand plus personne n’approche. Comme le capteur mesure à chaque tour de boucle, la porte suit naturellement les personnes qui passent, sans bouton et sans minuterie à régler.
Ce qu’il faut
- tout le contenu du kit : la carte, le capteur, le servomoteur, l’alimentation, la plaque d’essai et les fils ;
- un tournevis cruciforme fin, pour les vis des palonniers du servo ;
- un morceau de ruban adhésif costaud ou un serre-joint, pour immobiliser le servomoteur sur le chambranle ;
- le moniteur série de l’IDE Arduino, ouvert à 9 600 bauds : c’est le seul instrument de mesure nécessaire pour régler le seuil et les angles.
Le câblage
Tout se fait sur la plaque d’essai, sans un seul point de soudure.
Capteur VCC | → bus + de la plaque, alimenté par le 5V de la carte |
|---|---|
Capteur GND | → bus - de la plaque, relié au GND de la carte |
Capteur TRIG | → Arduino D2 |
Capteur ECHO | → Arduino D3 |
| Servo, fil orange (signal) | → Arduino D9 |
| Servo, fil rouge (+V, au milieu) | → bus + de la plaque, alimenté par le 5V de la carte |
| Servo, fil marron (masse) | → bus - de la plaque |
Un mot sur l’alimentation fournie. Ce micro-servo consomme peu au repos, mais sa pointe de courant au démarrage atteint plusieurs centaines de milliampères : sur certaines cartes alimentées par un port USB faible, ce pic fait redémarrer l’Arduino. Le symptôme est très reconnaissable — le moniteur série affiche le message de démarrage à chaque mouvement du servo. Dans ce cas, le servo passe sur l’alimentation 5 V du kit, et un fil relie la masse de cette alimentation au GND de la carte : sans cette masse commune, la commande n’a aucune référence et le servo se comporte n’importe comment.
Le programme
À copier dans l’IDE Arduino, puis à téléverser par le câble USB.
/*
* Kit porte automatique - ouverture au passage d une personne
* Carte : Arduino Uno R3 du kit, cable USB fourni
* Capteur HC-SR04 : VCC sur 5V, GND sur GND, TRIG sur D2, ECHO sur D3
* Servomoteur 180 : fil orange (signal) sur D9, fil rouge sur 5V, fil marron sur GND
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
#include "Servo.h"
const byte PIN_TRIG = 2; // declenchement de la mesure
const byte PIN_ECHO = 3; // retour de l echo
const byte PIN_SERVO = 9; // fil de signal du servomoteur
const int SEUIL_CM = 80; // en deca de cette distance, quelqu un approche
const int ANGLE_FERME = 10; // position de repos du palonnier
const int ANGLE_OUVERT = 100; // position d ouverture, a regler sur votre porte
const unsigned long MAINTIEN = 4000; // porte ouverte 4 s apres le dernier passage
Servo porte;
bool ouverte = false;
unsigned long dernierPassage = 0;
// Mesure la distance en centimetres. Renvoie 0 si aucun echo n est revenu.
int mesurerDistance() {
digitalWrite(PIN_TRIG, LOW);
delayMicroseconds(4);
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10); // 10 microsecondes suffisent au module
digitalWrite(PIN_TRIG, LOW);
// Ecoute de l echo, abandon au bout de 30 ms : environ 5 m de portee.
unsigned long duree = pulseIn(PIN_ECHO, HIGH, 30000);
if (duree == 0) {
return 0; // personne dans la portee du capteur
}
// Le son parcourt 0,0343 cm par microseconde, et le trajet compte un
// aller et un retour : la duree est donc divisee par deux.
return (int)((duree * 343) / 20000);
}
void setup() {
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
porte.attach(PIN_SERVO);
porte.write(ANGLE_FERME); // porte fermee des la mise sous tension
delay(500); // laisse le palonnier atteindre sa position
Serial.begin(9600);
Serial.println("Porte automatique prete");
}
void loop() {
int distance = mesurerDistance();
// Une distance nulle veut dire : rien devant le capteur, donc personne.
bool proche = false;
if (distance != 0) {
if (distance > SEUIL_CM) {
proche = false; // trop loin pour ouvrir
} else {
proche = true; // quelqu un approche
}
}
unsigned long instant = millis();
if (proche == true) {
dernierPassage = instant;
if (ouverte == false) {
porte.write(ANGLE_OUVERT);
ouverte = true;
Serial.print("Passage a ");
Serial.print(distance);
Serial.println(" cm : ouverture");
}
}
// Plus personne depuis assez longtemps : la porte se referme.
if (ouverte == true) {
if ((instant - dernierPassage) >= MAINTIEN) {
porte.write(ANGLE_FERME);
ouverte = false;
Serial.println("Fermeture");
}
}
delay(60); // une mesure toutes les 60 ms suffit
}
Comment ça marche
- La mesure revient à zéro quand personne n’est devant. C’est le point qui surprend au premier essai : il n’y a pas de « distance infinie », le module cesse simplement d’entendre son écho et
pulseIn()expire. Le programme traite donc ce cas à part, avant de comparer quoi que ce soit. - La porte ne se referme pas sur quelqu’un. Chaque mesure inférieure au seuil repousse l’instant du dernier passage. Tant qu’une personne reste dans la zone — même immobile sur le pas de la porte — le compte à rebours est relancé et la porte reste ouverte.
- Le servo ne reçoit jamais d’ordre inutile. La variable
ouverteempêche de renvoyer la consigne à chaque tour de boucle. Un servomoteur qui reçoit une consigne d’angle identique ne bouge pas, mais il consomme et chauffe légèrement ; l’écriture de la consigne est donc conditionnée au changement d’état. - Deux réglages se font au moniteur série. La distance affichée à chaque ouverture permet de calibrer
SEUIL_CMselon la largeur de votre entrée, et les anglesANGLE_FERMEetANGLE_OUVERTse corrigent en regardant la porte, jusqu’à trouver la course juste. - L’angle n’est pas un sens de rotation. Un servomoteur 180° se positionne entre 0 et 180°, il ne tourne pas en continu. Il n’y a donc pas de butée à respecter : la seule limite est celle du mécanisme que vous avez construit.
Le montage mécanique
L’électronique est la partie facile : tout le travail se joue sur ces quinze centimètres de mécanique. Le servo se visse ou se colle sur le chambranle, à l’aplomb du loquet, et le câble du kit relie son palonnier au loquet. C’est le point à soigner : un support de servo vissé sur le montant donne tout de suite un montage solide, là où un servo posé de travers se décale au bout de quelques dizaines de manœuvres.
Le servomoteur ne pousse pas la porte : il tire. Le câble part du palonnier, passe par un point de renvoi solide — un clou, une vis, un petit anneau — puis rejoint le loquet, qu’il tire vers l’ouverture. La rotation du palonnier développe sa force en traction, et c’est ce qui permet à un servo de 9 g de commander une porte. Un cordon élastique ou un ressort de rappel ramène ensuite le loquet dans sa position de repos dès que le servo revient à ANGLE_FERME.
Pour régler le débattement du tirant, deux solutions. La plus simple consiste à visser le palonnier sur l’axe alors que la porte est ouverte à la main et le câble tendu : la position d’ouverture tombe alors presque juste du premier coup. La plus précise consiste à percer un second trou plus haut ou plus bas sur une chute de plastique ou une petite équerre, pour faire varier la longueur du bras de levier — un bras plus long tire moins fort, mais va chercher un loquet plus loin.
Côté capteur, la même question se pose : il doit viser l’endroit exact où une personne apparaît, à hauteur de poitrine et bien horizontal, sans voir le sol ni le mur d’en face. Un support de capteur ultrason maintient les deux cylindres alignés, évite de les coller et permet de corriger l’orientation en tournant une vis plutôt qu’en tout redémonter.
Variante : une porte plus lourde
Le micro-servo de 9 g tire un loquet de porte intérieure, un verrou de meuble ou un portillon léger. Au-delà, la mécanique prend le dessus : un pêne de porte d’entrée, un vantail de portail ou une porte qui ferme au vent demandent un couple que ce servo n’a pas. Le Servomoteur Métallique MG995 12KG 180 se câble et se programme exactement de la même façon — mêmes trois fils, même bibliothèque Servo, mêmes lignes de code — et sa course de 180° en fait aussi un servo de position, contrairement aux modèles à rotation continue qui ne savent pas s’arrêter à un angle donné.
Avec un servo de cette taille, l’alimentation du kit devient indispensable et non plus confortable : un MG995 appelle plus d’un ampère à l’arrêt du palonnier, ce qu’aucune broche d’Arduino ne peut fournir. C’est le rôle du bloc 5 V livré dans le carton, avec la masse ramenée à la carte.
Questions fréquentes
Faut-il souder quelque chose ?
Non. La carte, le capteur et le servo arrivent terminés et équipés de leurs prises : toutes les liaisons se font avec les fils mâle-mâle et mâle-femelle du kit, sur la plaque d’essai. Seul le câble de 1,5 m se prépare, en le coupant à la longueur utile et en nouant ses extrémités sur le palonnier et le loquet.
Peut-on alimenter le servomoteur depuis une broche de la carte ?
Jamais. Une broche d’Arduino débite au mieux une vingtaine de milliampères, quand un servo demande cent fois plus au démarrage. Le résultat habituel n’est d’ailleurs pas une broche grillée mais un redémarrage permanent de la carte, qu’on prend à tort pour un bug de programme. Le servo se branche sur le 5 V, sur un bus de la plaque d’essai ou sur l’alimentation fournie — pas sur une sortie numérique, qui ne porte que le signal.
La porte s’ouvre dès la mise sous tension, ou le servo tremble sans bouger
Trois causes possibles, dans cet ordre. La masse du servo et celle de la carte ne sont peut-être pas reliées si le servo est alimenté par le bloc 5 V : sans référence commune, le signal ne veut rien dire. ANGLE_FERME est peut-être trop proche de ANGLE_OUVERT, ce qui empêche de distinguer les deux états. Ou le servo reçoit la consigne par un fil dont la prise trois broches est mal enfoncée : une commande intermittente se manifeste justement par de petits soubresauts.
Le capteur ne détecte qu’à trente centimètres, alors qu’il est annoncé à quatre mètres
Le HC-SR04 est avant tout sensible à la surface qu’il vise. Il mesure très bien un mur, une porte ou une personne de face ; il mesure mal un tissu épais, un rideau, un vêtement mou, qui absorbent les ultrasons au lieu de les renvoyer. Un capteur posé trop bas, qui éclaire le sol, ou visé vers un angle, donne la même impression de faible portée. Redressez-le et visez un obstacle franc avant de conclure à une panne — et vérifiez au moniteur série que la mesure n’est pas nulle.
Pourquoi la porte se referme-t-elle juste après mon passage ?
Parce que le capteur ne mesure pas « la personne », mais ce qui est devant lui. Une personne qui a franchi la porte sort de son cône : plus rien ne renvoie l’écho, et le compte à rebours de MAINTIEN se termine. C’est le comportement voulu, et le réglage se fait au moniteur série : quatre secondes conviennent à un passage ordinaire, quinze secondes à une entrée où l’on s’attarde. Pour une porte qui doit rester ouverte plus longtemps, il vaut mieux ajouter un second capteur de l’autre côté et faire tenir l’ouverture aussi longtemps que l’un des deux voit quelqu’un.
Que se passe-t-il si le courant est coupé pendant l’ouverture ?
Au retour du courant, la carte redémarre, setup() replace le palonnier en ANGLE_FERME et le montage reprend sa surveillance. Rien n’est mémorisé, donc rien n’est perdu. C’est aussi pour cela que la porte reste manœuvrable à la main : un montage qui n’ajoute aucun ressort de rappel forcé et qui ne bloque pas le loquet peut toujours être ouvert de l’intérieur, et c’est une qualité, pas un défaut.
À combiner avec
Pour commander un véritable électro-aimant de gâche plutôt qu’un loquet, le Module 1 relais 5v s’intercale entre la carte et la gâche, pendant que le servo continue de gérer l’ouverture légère : le programme s’enrichit d’une sortie de plus, sans rien changer au reste.
Si le servo du kit travaille beaucoup, ses engrenages en nylon finissent par prendre du jeu. Le Servomoteur MG90S est son équivalent métallique, avec la même course de 180° et les mêmes trois fils : il se monte à la place, sans modifier ni le câblage ni le programme. Et quand les montages ne tiennent plus sur la plaque du kit, une plaque d’essai 830 points libère la place nécessaire aux ajouts. Pour partir sur d’autres projets avec la même carte, le Kit Arduino Uno maroc couvre un ensemble plus large d’expériences.










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