Code Arduino et vidéo pour un module détecteur de mouvement HC-SR505 avec relais
Dans ce tutoriel, nous allons construire un système de détection de mouvement en utilisant le capteur de mouvement HC-SR505 et un module relais. Cette configuration vous permettra d'allumer des appareils tels que des lampes ou des avertisseurs sonores lorsqu'un mouvement est détecté. Le relais agit comme un interrupteur pour contrôler en toute sécurité des appareils haute tension. À la fin de ce guide, vous disposerez d'une installation fonctionnelle de capteur de mouvement capable d'activer divers appareils en fonction de la détection de mouvement. Pour une compréhension plus claire, assurez-vous de consulter la vidéo associée (dans la vidéo à 0:00).

Le matériel expliqué
Les principaux composants de ce projet comprennent le capteur de mouvement HC-SR505, un module relais et une carte Arduino. Le HC-SR505 est un capteur infrarouge passif (PIR) qui détecte les mouvements en captant les variations du rayonnement infrarouge. Il fonctionne en mesurant la chaleur émise par les objets dans son champ de vision. Lorsqu'un objet en mouvement est détecté, le capteur envoie un signal à l'Arduino.
Le module relais sert à contrôler un appareil haute tension, tel qu'une ampoule. Il fait office d'interrupteur commandé électriquement, permettant à l'Arduino d'allumer ou d'éteindre l'appareil en toute sécurité. Le relais possède deux configurations principales : normalement ouvert (NO) et normalement fermé (NC), qui déterminent l'état par défaut lorsque le relais n'est pas activé.
Détails de la fiche technique
| Fabricant | HC-SR505 |
|---|---|
| Numéro de pièce | HC-SR505 |
| Tension logique/E/S | 3,3 V - 20 V |
| Tension d'alimentation | 5 V |
| Courant de sortie (par canal) | 20 mA |
| Courant de crête (par canal) | 100 mA |
| Recommandations de fréquence PWM | Sans objet |
| Seuils logiques d'entrée | 0.3V (bas) / 2.5V (haut) |
| Chute de tension / RDS(on)/ saturation | 0,2 V |
| Limites thermiques | +70 °C |
| Paquet | Module |
| Notes / variantes | Format compact ; faible consommation d'énergie |
- Assurez une dissipation thermique adéquate pour les charges à fort courant.
- Utilisez des condensateurs de découplage pour une alimentation stable.
- Soyez prudent avec les connexions haute tension ; veillez à la sécurité.
- Testez le capteur avec des sorties simples avant de le connecter aux relais.
- Vérifiez l'orientation du capteur PIR pour une détection optimale.
Instructions de câblage

Pour câbler le capteur de mouvement HC-SR505, connectez d'abord la broche d'alimentation (marquée +) à la sortie 5 V de votre Arduino. Ensuite, connectez la broche de masse (marquée -) à l'une des broches GND de l'Arduino. La broche de signal (broche centrale) doit être connectée à la broche numérique 2 de l'Arduino.
Pour le module de relais, connectez la broche VCC à la sortie 5V de l'Arduino et la broche de masse à la masse de l'Arduino. La broche d'entrée du relais doit être reliée à la broche numérique 9 de l'Arduino. Enfin, connectez la borne positive du buzzer à la broche numérique 8 et sa borne négative à la masse. Veillez à connecter correctement les broches commune (COM) et normalement ouverte (NO) du relais pour contrôler votre appareil.
Exemples de code et guide pas à pas
Le code de ce projet initialise les broches du capteur, du buzzer et du relais. Il utilise ledigitalRead()fonction pour vérifier le mouvement et y répondre en conséquence. Ci-dessous un extrait de la fonction setup :
void setup() {
Serial.begin(9600); // setup Serial Monitor
pinMode(PIR, INPUT_PULLUP); // define pin as Input for sensor
pinMode(BUZZER, OUTPUT); // define pin as OUTPUT for buzzer
pinMode(RELAY, OUTPUT); // define pin as OUTPUT for relay
}
Dans cet extrait, les broches sont configurées soit en mode entrée soit en mode sortie. LeSerial.begin(9600)initialise la communication série pour le débogage.
La boucle principale vérifie la présence de mouvement et active le buzzer et le relais lorsqu'un mouvement est détecté. Voici un extrait ciblé de la fonction loop() :

void loop() {
int motion = digitalRead(PIR); // read the sensor
if(motion) {
Serial.println("Motion detected");
digitalWrite(BUZZER, HIGH); // turn the buzzer ON
digitalWrite(RELAY, LOW); // turn the relay ON
} else {
Serial.println("===nothing moves");
digitalWrite(BUZZER, LOW); // keep the buzzer OFF
digitalWrite(RELAY, HIGH); // turn the relay OFF
}
delay(500);
}
Cet extrait lit l'état du capteur PIR et active ou désactive le buzzer et le relais en fonction du mouvement détecté. Le délai de 500 millisecondes garantit que la boucle vérifie le capteur à un intervalle raisonnable.
Démonstration / À quoi s'attendre
Lorsqu'un mouvement est détecté, la lumière connectée au relais s'allume et le buzzer retentit. S'il n'y a pas de mouvement, le relais éteint la lumière et le buzzer reste silencieux. Notez que le HC-SR505 comporte une temporisation intégrée qui maintient la sortie active pendant un court instant après la détection de mouvement (jusqu'à 8 secondes) et qui ne peut pas être réglée (dans la vidéo à 5:30).
Horodatages vidéo
- 00:00- Introduction au projet
- 01:30- Explication des composants
- 03:15- Instructions de câblage
- 05:30- Présentation du code
- 07:00- Démonstration de la configuration
/*
* This is the Arduino code for HC-SR501 Motion Sensor
* to detect motion of human or objects using Arduino for robotic car and other applications
* Watch HC-SR505 video https://youtu.be/qhThpxiXubI
*
// Written by Ahmad S. for Robojax.com on
// February 10, 2018 at 11:41 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
#define PIR 2 // define pin 2 for sensor
#define BUZZER 8 // define pin 8 as for buzzer
#define RELAY 9 // define pin 9 as for relay
void setup() {
// HC-SR505 Motion Sensor Code by Robojax.com 20180210
Serial.begin(9600);// setup Serial Monitor to display information
pinMode(PIR, INPUT_PULLUP);// define pin as Input sensor
pinMode(BUZZER, OUTPUT);// define pin as OUTPUT for buzzer or LED
pinMode(RELAY, OUTPUT);// define pin as OUTPUT for relay
}
void loop() {
// HC-SR505 Motion Sensor Code by Robojax.com 20180210
int motion =digitalRead(PIR);// read the sensor
if(motion){
Serial.println("Motion detected");
digitalWrite(BUZZER,HIGH);// turn the buzzer ON
digitalWrite(RELAY,LOW);// turn the relay ON
}else{
Serial.println("===nothing moves");
digitalWrite(BUZZER,LOW);// keep the buzzer OFF
digitalWrite(RELAY,HIGH);// turn the relay OFF
}
delay(500);
// HC-SR505 Motion Sensor Code by Robojax.com 20180210
}
Ce dont vous pourriez avoir besoin
-
Amazon
-
Amazon
-
AliExpressAcheter un module de relais 5v 12v 1 2 4 6 8 canauxs.click.aliexpress.com
Ressources et références
Aucune ressource pour le moment.
Fichiers📁
Fichier Fritzing
-
Module de capteur de corps HC-SR501
HC-SR501 Body Sensor Module.fzpz0.01 MB