L'automatisation des portes consiste à utiliser des technologies pour ouvrir, fermer et sécuriser une porte sans intervention humaine directe. Cela peut être fait à l'aide de moteurs, de capteurs, de systèmes de contrôle électronique et de divers protocoles de communication.
L'automatisation repose généralement sur :
Un système d'entraînement : moteur électrique ou vérin pour actionner l'ouverture/fermeture.
Des capteurs : détecteurs de mouvement (PIR), RFID, boutons poussoirs, capteurs magnétiques, etc.
Un contrôleur : une carte électronique (Arduino, ESP32, Micro:bit…) qui gère les actions selon les signaux des capteurs.
Un système d'alimentation : alimentation électrique adaptée au moteur et au contrôleur.
Un système de communication (optionnel) : Bluetooth, Wi-Fi, RFID ou télécommande pour un contrôle à distance.
Ce projet utilise une carte Arduino UNO, un servomoteur, un bouton poussoir pour commander la porte, et un écran LCD I2C pour afficher l’état de la porte.
Fonctionnement
1- Attente d'une action : L'Arduino surveille l'état du bouton poussoir.
2- Appui sur le bouton :
Si la porte est fermée ➝ Elle s'ouvre.
Si la porte est ouverte ➝ Elle se ferme.
3- Mouvement du servomoteur :
Le servomoteur pivote pour ouvrir ou fermer la porte.
4- Affichage sur LCD :
Il indique si la porte est "Ouverte" ou "Fermée".
Carte Arduino UNO
C’est le microcontrôleur qui pilote l’ensemble du système. Il reçoit le signal du bouton poussoir et contrôle le servomoteur et l’affichage sur le LCD.
Il lit l’état du bouton poussoir (broche 3).
Il commande l’angle du servomoteur (broche 2).
Il envoie les données à l’afficheur LCD I2C (broches A4 - SDA et A5 - SCL).
Servomoteur
Il permet de faire pivoter la porte selon un angle précis.
80° → Porte fermée.
20° → Porte ouverte.
Bouton poussoir
Il sert à commander l’ouverture et la fermeture de la porte.
Lorsque l’utilisateur appuie dessus, il change l’état de la porte.
Résistance 10 kΩ
On utilise la résistance pour évite un signal flottant sur le bouton poussoir.
Afficheur LCD I2C (16x2 ou 20x4)
L'écran LCD affiche l’état de la porte en temps réel.
Il affiche l’état actuel de la porte ("Porte ouverte" ou "Porte fermée").
Breadboard (Plaque d'essai)
Il facilite les connexions sans soudure.
Il distribue le 5V de l’Arduino aux autres composants.
Fils de connexion (Jumpers)
Il relient les composants entre eux et à l’Arduino.
Prototype de maison en bois
Le prototype de maison en bois simule une vraie maison avec une porte mobile.
Il constitue un support pour fixer le servomoteur et la porte.
Connexion de l'afficheur LCD I2C à l'Arduino
LCD I2C Display Pin | Arduino Pin |
GND | GND |
VCC | 5V |
SDA | A4 |
SCL | A5 |
Connexion du servomoteur à l'Arduino
Servomoteur | Arduino UNO |
Fil marron (-) | GND |
Fil rouge (+) | 5V |
Fil jaune | Broche numérique N°2 |
Connexion du bouton poussoir à l'Arduino
Bouton poussoir | Arduino UNO |
une borne | Broche numérque N°3 |
une autre borne | GND (via résistance 10kΩ ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
#include <LiquidCrystal_I2C.h> #include<Servo.h> //include the servo library int button = 3; //pin of the first button LiquidCrystal_I2C lcd(0x27, 40, 4); Servo servo; //create a servo object int position_servo = 85; //initial position of the servo void setup() { // put your setup code here, to run once: servo.attach(2); //pin used by the servo pinMode(button, INPUT_PULLUP); //define first button as input pullup servo.write(85); /* INPUT_PULLUP send to arduino LOW signal, so, when you press the button, you send a LOW signal to arduino */ lcd.init(); lcd.backlight(); lcd.clear(); lcd.setCursor(1, 1); lcd.print("Porte fermee"); // afficher "Porte fermee" dans l'afficheur LCD } void loop() { // put your main code here, to run repeatedly: if (digitalRead(button) == LOW) { // Si on appuie sur le bouton poussoir if (position_servo==85) { // Si la porte est fermée lcd.clear(); lcd.setCursor(1, 1); lcd.print("La porte s'ouvre"); for (int i=85; i>20 ; i--) { // Pivoter le servomoteur pour ouvrir la porte servo.write(i); delay(100); } lcd.clear(); lcd.setCursor(1, 1); lcd.print("Porte ouverte"); position_servo=20; } else { // Si la porte est ouverte if (position_servo==20) { lcd.clear(); lcd.setCursor(1, 1); lcd.print("La porte se ferme"); for (int i=20; i<85 ; i++) { // Pivoter le servomoteur pour fermer la porte servo.write(i); delay(100); } lcd.clear(); lcd.setCursor(1, 1); lcd.print("Porte fermee"); position_servo=85; } } } } |
1- Initialisation :
Le bouton est défini en INPUT_PULLUP pour éviter un câblage externe.
Le servomoteur est attaché à la broche 9.
L’écran LCD I2C est configuré avec l’adresse 0x27 (à adapter si besoin).
2- Lecture du bouton poussoir :
Lorsqu'on appuie, l’état de la porte est inversé.
3- Contrôle du servomoteur :
85° → Porte fermée
20° → Porte ouverte
(Adapter selon le montage mécanique)
4- Affichage sur LCD :
Il montre "Porte : OUVERTE" ou "Porte : FERMEE".
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info