Porte automatique Arduino avec capteur ultrasons HC-SR04
Composants nécessaires
- 1 × Arduino Uno
- 1 × Capteur ultrasons HC-SR04
- 1 × Moteur DC 12V (avec réducteur, ex: 170 RPM, couple 1.9 kgf·cm)
- 1 × Shield moteur L293D (ou module L298N)
- 1 × Écran LCD 16x2 (avec rétroéclairage RGB)
- 1 × Buzzer piézoélectrique
- 1 × Alimentation 12V DC (pour le moteur)
- Fils de connexion, breadboard ou PCB
- Éléments mécaniques : crémaillère et pignon, porte coulissante (modèle en acrylique ou bois)
Principe de fonctionnement
Le capteur HC-SR04 détecte la présence d'une personne ou d'un objet à moins de 5 cm devant la porte. L'Arduino commande alors le moteur DC via le shield L293D pour ouvrir la porte (rotation dans un sens), maintient la porte ouverte pendant 3 secondes avec signal sonore (buzzer), affiche "Please Enter" sur le LCD, puis referme la porte (rotation inverse). Le système revient en veille jusqu'à la prochaine détection.
Câblage
- HC-SR04 : VCC → 5V, GND → GND, Trig → D7, Echo → D4
- Shield L293D : Moteur sur M1, EN1 → D2, IN1 → D3, IN2 → D6 (PWM)
- LCD : RS → D12, E → D11, D4 → D5, D5 → D8, D6 → D9, D7 → D1 (selon code)
- Buzzer : + → D10, - → GND
- LED intégrée (broche 13) : indicateur de détection
Code Arduino
#include
LiquidCrystal lcd(12, 11, 5, 8, 9, 1);
const int trigPin = 7;
const int echoPin = 4;
const int mt_En_Pin1 = 2;
const int mt_IN1_Pin2 = 3;
const int mt_IN2_Pin3 = 6;
int buzz = 10;
long duration;
int distance;
void setup() {
lcd.begin(16, 2);
lcd.print("WELCOME");
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(mt_En_Pin1, OUTPUT);
pinMode(mt_IN1_Pin2, OUTPUT);
pinMode(mt_IN2_Pin3, OUTPUT);
pinMode(buzz, OUTPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2; // cm
if (distance <= 5) {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(mt_En_Pin1, HIGH);
analogWrite(mt_IN1_Pin2, 50);
analogWrite(mt_IN2_Pin3, 0);
delay(2000); // ouverture
analogWrite(mt_IN1_Pin2, 0);
analogWrite(mt_IN2_Pin3, 0);
delay(1000);
tone(buzz, 1000); delay(1000);
tone(buzz, 1000); delay(1000);
noTone(buzz);
delay(3000);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Please Enter");
delay(1000);
analogWrite(mt_IN1_Pin2, 0);
analogWrite(mt_IN2_Pin3, 50);
delay(3000); // fermeture
} else {
digitalWrite(13, LOW);
digitalWrite(mt_En_Pin1, LOW);
analogWrite(mt_IN1_Pin2, 50);
analogWrite(mt_IN2_Pin3, 0);
}
}
Remarques importantes
- Le shield moteur L293D protège l'Arduino en amplifiant le courant pour le moteur 12V.
- Ajustez les délais (2000ms ouverture, 3000ms fermeture) selon la mécanique de votre porte.
- Le seuil de détection (5 cm) peut être modifié selon l'environnement.
- Pour une utilisation réelle, ajoutez des fins de course (switches) pour arrêter le moteur en butée.
Processus de fabrication
- Construire une télécommande IR universelle avec Arduino : Guide étape par étape
- Construire un Iron Man animé avec Arduino : capteurs, sons et relais
- Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
- Créer un bouton clavier personnalisé « frappable » avec Arduino : guide pas à pas
- Affichage LED matrice interactif porte avec capteur PIR - Salutations fêtes Arduino
- Mesurer la masse de la Terre avec Arduino : Guide DIY étape par étape
- Construisez un ouvreur de porte automatique sans contact avec détection de température
- Volant Joystick Arduino Personnalisé pour Jeux Vidéo
- Construire une Boussole Numérique Temps Réel avec Arduino et Processing