Construire un système alarme Arduino : tutoriel étape par étape
Présentation
Projet : système alarme et sécurité Arduino. Activation 10 s après appui bouton A. Détection : capteur ultrason. Déclenchement : buzzer. Arrêt : mot de passe 4 chiffres (défaut 1234, modifiable).
Vidéo ou tutoriel écrit.
Fonctionnement
Activation : Bouton A → bip 200 ms → compte à rebours 9 s → "Alarm Activated!" → mesure distance initiale.
Détection : Ultrason continu. Si distance actuelle + 10 cm < distance initiale → objet détecté → buzzer 1 kHz continu + demande mot de passe.
Désactivation : Saisie 4 chiffres + bouton * (valider). Bon mot de passe → arrêt buzzer, retour écran d'accueil. Mauvais → "Wrong! Try Again" 2 s → réessayer.
Changement mot de passe : Bouton B → saisie mot de passe actuel → si OK → saisie nouveau (4 chiffres) + * → confirmation → retour accueil.

Composants requis
- Arduino (Uno/Nano/Mega)
- Capteur ultrason HC-SR04
- LCD 16×2
- Buzzer (pin PWM)
- Clavier 4×4 (keypad)
- Plaque essai + fils

Schéma de câblage

Buzzer : 1 pin PWM. Keypad 4×4 : 8 pins (4 lignes, 4 colonnes). Principe : ligne mise à LOW, colonnes HIGH → appui crée court-circuit → colonne passe LOW. Exemple : ligne 1 LOW, appui '3' → colonne 3 LOW.

Ultrason et LCD : voir tutos détaillés précédents.
Code source Arduino
Librairies : LiquidCrystal.h (standard), Keypad.h (à installer).
Déclarations & Setup
#include <LiquidCrystal.h>
#include <Keypad.h>
#define buzzer 8
#define trigPin 9
#define echoPin 10
long duration;
int distance, initialDistance, currentDistance, i;
int screenOffMsg = 0;
String password = "1234";
String tempPassword;
boolean activated = false;
boolean activateAlarm = false;
boolean alarmActivated = false;
boolean passChangeMode = false;
boolean passChanged = false;
const byte ROWS = 4, COLS = 4;
char keyMap[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {14, 15, 16, 17};
byte colPins[COLS] = {18, 19, 20, 21};
Keypad myKeypad = Keypad(makeKeymap(keyMap), rowPins, colPins, ROWS, COLS);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // rs, en, d4, d5, d6, d7
void setup() {
lcd.begin(16,2);
pinMode(buzzer, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
Boucle principale
void loop() {
// 1. Séquence activation (déclenchée par activateAlarm=true)
if (activateAlarm) {
lcd.clear(); lcd.setCursor(0,0); lcd.print("Alarm will be");
lcd.setCursor(0,1); lcd.print("activated in");
int countdown = 9;
while (countdown != 0) {
lcd.setCursor(13,1); lcd.print(countdown);
countdown--; tone(buzzer, 700, 100); delay(1000);
}
lcd.clear(); lcd.setCursor(0,0); lcd.print("Alarm Activated!");
initialDistance = getDistance();
activateAlarm = false; alarmActivated = true;
}
// 2. Surveillance intrusion (si alarme active)
if (alarmActivated) {
currentDistance = getDistance() + 10; // Marge 10 cm
if (currentDistance < initialDistance) {
tone(buzzer, 1000); // 1 kHz continu
lcd.clear();
enterPassword(); // Demande mot de passe
}
}
// 3. Écran d'accueil (alarme inactive)
if (!alarmActivated) {
if (screenOffMsg == 0) {
lcd.clear(); lcd.setCursor(0,0); lcd.print("A - Activate");
lcd.setCursor(0,1); lcd.print("B - Change Pass");
screenOffMsg = 1;
}
char keypressed = myKeypad.getKey();
if (keypressed == 'A') { tone(buzzer, 1000, 200); activateAlarm = true; }
else if (keypressed == 'B') { changePassword(); }
}
}
Fonction enterPassword()
void enterPassword() {
int k = 5; tempPassword = ""; activated = true;
lcd.clear(); lcd.setCursor(0,0); lcd.print(" *** ALARM *** ");
lcd.setCursor(0,1); lcd.print("Pass>");
while (activated) {
char keypressed = myKeypad.getKey();
if (keypressed != NO_KEY) {
// Chiffres 0-9
if (keypressed >= '0' && keypressed <= '9') {
tempPassword += keypressed;
lcd.setCursor(k,1); lcd.print("*");
k++;
}
}
// Reset si >4 chiffres ou #
if (k > 9 || keypressed == '#') {
tempPassword = ""; k = 5;
lcd.clear(); lcd.setCursor(0,0); lcd.print(" *** ALARM *** ");
lcd.setCursor(0,1); lcd.print("Pass>");
}
// Validation *
if (keypressed == '*') {
if (tempPassword == password) {
activated = false; alarmActivated = false;
noTone(buzzer); screenOffMsg = 0;
} else {
lcd.setCursor(0,1); lcd.print("Wrong! Try Again");
delay(2000);
lcd.clear(); lcd.setCursor(0,0); lcd.print(" *** ALARM *** ");
lcd.setCursor(0,1); lcd.print("Pass>");
}
}
}
}
Fonction changePassword()
void changePassword() {
lcd.clear(); int i = 1;
tone(buzzer, 2000, 100); tempPassword = "";
lcd.setCursor(0,0); lcd.print("Current Password");
lcd.setCursor(0,1); lcd.print(">");
passChangeMode = true; passChanged = true;
while (passChanged) {
char keypressed = myKeypad.getKey();
if (keypressed != NO_KEY) {
if (keypressed >= '0' && keypressed <= '9') {
tempPassword += keypressed;
lcd.setCursor(i,1); lcd.print("*"); i++;
tone(buzzer, 2000, 100);
}
}
if (i > 5 || keypressed == '#') { /* reset saisie */ }
if (keypressed == '*') {
if (password == tempPassword) { // Ancien OK
tempPassword = ""; i = 1;
lcd.clear(); lcd.setCursor(0,0); lcd.print("Set New Password");
lcd.setCursor(0,1); lcd.print(">");
while (passChangeMode) { /* saisie nouveau mot de passe, même logique */ }
}
}
}
}
Fonction getDistance() - Ultrason
long getDistance() {
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2; // cm
return distance;
}
Code complet
Disponible ici (toutes fonctions intégrées).
Finitions
Boîtier : boîte électrique plastique, tous composants intégrés et câblés.

Projet terminé ! Questions en commentaires.
Processus de fabrication
- Système de pointage RFID fiable avec Arduino et Python (base de données phpMyAdmin)
- Créer des animations et jeux sur LCD avec Arduino UNO
- SERENA : Système d'Alarme Arduino Mega 2560 Personnalisé avec Écran Tactile TFT LCD
- Évaluer la sécurité d'un système d'alarme avec Arduino et modules RF 433 MHz
- Détecteur de fréquence audio Arduino — Mesurer le pic sonore avec module haute sensibilité
- Construire un système domotique et de sécurité intelligent avec 1Sheeld
- Morpion sur matrice LED MAX7219 avec boîtier en carton
- Construire un voltmètre DIY avec Arduino et écran Nokia 5110
- Construire un minuteur à rebours Arduino fiable avec afficheur 7 segments SparkFun