Retour aux projets

Alarme Arduino avec détecteur de mouvement

Projet de création d'une alarme utilisant un capteur PIR, un buzzer et une LED, basé sur le principe entrée-traitement-sortie. Les élèves programment un Arduino Uno pour détecter une présence et déclencher une alerte sonore et lumineuse.

4e-3e
4-6 séances
Intermédiaire

Imaginez que vous devez sécuriser votre chambre ou un local technique contre les intrusions. Dans la réalité, les systèmes d'alarme utilisent des capteurs de mouvement (PIR) qui détectent les variations de chaleur infrarouge. Avec ce projet, vous allez construire votre propre alarme connectée, en comprenant comment un signal d'entrée (détection) est traité par un microcontrôleur pour produire une sortie (alarme).

Objectifs pédagogiques

  • Comprendre le principe entrée-traitement-sortie dans un système automatisé.
  • Câbler correctement un capteur PIR, un buzzer et une LED sur une breadboard avec Arduino.
  • Programmer en Arduino (C++) la lecture d'une entrée numérique et le contrôle de sorties.
  • Tester et déboguer un système interactif en respectant une démarche de projet.

Matériel nécessaire

  • Arduino Uno
  • Capteur de mouvement PIR HC-SR501
  • Buzzer piézoélectrique 5V
  • LED rouge (ou autre couleur)
  • Résistances 220 Ω (pour LED) et 10 kΩ (optionnel pour PIR)
  • Breadboard et fils de connexion (jumpers)

Étapes du projet

1

Découverte du capteur PIR et câblage de base

Commencez par observer le capteur PIR : il possède trois broches (VCC, GND, OUT). Branchez VCC sur le 5V de l'Arduino, GND sur GND, et OUT sur une broche numérique (par exemple la broche 2). Pourquoi ? Le capteur délivre un signal HIGH (5V) lorsqu'il détecte un mouvement et LOW (0V) sinon. Placez la LED sur la breadboard avec sa résistance de 220 Ω en série, anode sur une broche numérique (broche 13) et cathode sur GND. Le buzzer se branche de la même manière (broche 12, avec une résistance si nécessaire, mais souvent il fonctionne directement). Vérifiez que les connexions sont solides et que le PIR est orienté vers la zone à surveiller.

2

Premier programme : lecture du capteur et affichage sur le moniteur série

Ouvrez l'IDE Arduino et créez un nouveau sketch. Dans setup(), initialisez la communication série à 9600 bauds avec Serial.begin(9600) et configurez la broche du PIR en entrée avec pinMode(2, INPUT). Dans loop(), lisez l'état du capteur avec digitalRead(2) et affichez-le dans le moniteur série avec Serial.println(). Ajoutez un delay(500) pour éviter de surcharger l'affichage. Téléversez le programme et testez en passant la main devant le capteur : vous devriez voir '1' (détection) et '0' (aucune détection). Cela permet de valider le câblage et de comprendre le signal d'entrée.

3

Ajout de la LED et du buzzer : alarme simple

Modifiez le programme pour que la LED et le buzzer réagissent à la détection. Dans loop(), après avoir lu l'état du PIR, utilisez une structure if : si l'état est HIGH (détection), allumez la LED avec digitalWrite(13, HIGH) et activez le buzzer avec digitalWrite(12, HIGH) ; sinon, éteignez les deux (LOW). Téléversez et testez : lorsque vous bougez devant le capteur, la LED s'allume et le buzzer sonne. Pourquoi cette logique ? Elle illustre le traitement : une entrée conditionne directement la sortie. Vous pouvez ajuster le délai pour que l'alarme reste active quelques secondes.

4

Amélioration : temporisation et signal sonore modulé

Pour rendre l'alarme plus réaliste, ajoutez une temporisation : après une détection, l'alarme doit rester active pendant 5 secondes, même si le mouvement cesse. Utilisez une variable booléenne 'alarmeActive' et un timer avec millis(). Dans loop(), si le PIR détecte un mouvement, mettez alarmeActive à true et enregistrez le temps. Si alarmeActive est true et que moins de 5000 ms se sont écoulées, maintenez la LED allumée et faites clignoter le buzzer (par exemple 200 ms on/off) ; sinon, éteignez tout et passez alarmeActive à false. Cela nécessite de gérer le temps sans delay() pour ne pas bloquer le programme. Testez en vous éloignant : l'alarme doit continuer 5 secondes.

5

Intégration finale et test de validation

Assemblez le système complet sur la breadboard en soignant les connexions. Ajoutez éventuellement un bouton poussoir pour armer/désarmer l'alarme (en option). Programmez une séquence de démarrage (LED clignote 3 fois) pour indiquer que l'alarme est active. Testez dans différentes conditions : passage rapide, lent, à différentes distances. Vérifiez que le buzzer émet un son audible et que la LED est visible. Documentez votre code avec des commentaires. Enfin, présentez votre projet en expliquant le rôle de chaque composant et la logique du programme.

⚠️ Points de vigilance

  • ⚠️Vérifiez la polarité du capteur PIR : brancher VCC et GND à l'envers peut endommager le capteur.
  • ⚠️Utilisez une résistance de 220 Ω en série avec la LED pour éviter de la griller.
  • ⚠️Le buzzer piézoélectrique a une polarité : le fil rouge (ou +) doit aller à la broche numérique, le noir à GND.
  • ⚠️Assurez-vous que le cavalier du PIR (delay/time) est réglé sur la position 'H' (repeatable) pour des tests pratiques.
  • ⚠️Évitez de placer le capteur près d'une source de chaleur (radiateur, soleil) pour éviter les fausses détections.

Erreurs fréquentes à éviter

Le capteur PIR ne détecte rien, la LED reste éteinte.

✅ Solution : Vérifiez que le PIR est alimenté (VCC sur 5V, GND sur GND) et que la broche OUT est bien connectée à une entrée numérique. Testez avec le moniteur série pour voir si la valeur change. Ajustez le potentiomètre de sensibilité du PIR (vis) pour augmenter la portée.

La LED ne s'allume pas, même si le code semble correct.

✅ Solution : Contrôlez le sens de la LED : l'anode (broche longue) doit être connectée à la broche numérique via la résistance, la cathode (broche courte) à GND. Vérifiez aussi que la résistance n'est pas trop élevée (220 Ω est adapté).

Le buzzer ne sonne pas ou émet un son très faible.

✅ Solution : Vérifiez la polarité du buzzer : le fil rouge doit être sur la broche numérique, le noir sur GND. Certains buzzers nécessitent un signal PWM pour sonner fort ; utilisez analogWrite() avec une fréquence (par exemple tone(broche, 1000) dans Arduino).

Le programme se bloque ou ne répond plus après quelques secondes.

✅ Solution : Cela arrive souvent à cause de l'utilisation de delay() dans une boucle. Remplacez delay() par la gestion du temps avec millis() pour permettre au programme de continuer à lire le capteur. Vérifiez aussi que la boucle loop() ne contient pas de boucle infinie.

Le capteur PIR détecte en continu même sans mouvement.

✅ Solution : Le capteur peut être trop sensible ou mal réglé. Tournez le potentiomètre de sensibilité dans le sens inverse des aiguilles d'une montre pour réduire la portée. Vérifiez aussi qu'il n'y a pas de source de chaleur mobile (ventilation, animal) devant le capteur.

💡 Conseils du prof

  • 💡Commencez par un câblage minimal (PIR + LED) pour valider chaque étape avant d'ajouter le buzzer.
  • 💡Utilisez le moniteur série pour déboguer : affichez les valeurs des capteurs et les états des variables.
  • 💡Encouragez les élèves à commenter leur code : chaque bloc doit expliquer son rôle (ex: '// Si mouvement détecté, allumer LED').
  • 💡Proposez un schéma de câblage imprimé pour éviter les erreurs de connexion.
  • 💡Prévoyez des séances de test en groupe pour que les élèves s'entraident à identifier les pannes.

🚀 Pour aller plus loin

  • 🚀Ajouter un afficheur LCD pour indiquer 'ALARME' ou 'SÉCURISÉ'.
  • 🚀Connecter un module WiFi (ESP8266) pour envoyer une notification sur un smartphone en cas de détection.
  • 🚀Programmer un système de code secret (boutons poussoirs) pour désactiver l'alarme.

Compétences travaillées

CT 4.2CT 5.1CT 5.2CT 6.1
Techno