Construire un Digicode Sécurisé DIY : Clavier Matriciel, ESP32 et Relais
📅 Publié : Octobre 2026 | ⏱️ Temps de lecture : 12 min | 🏷️ Catégorie : Sécurité DIY, ESP32, Contrôle d'Accès & Projets Maker
Figure 1 : Architecture d'un système de contrôle d'accès par clavier matriciel piloté par microcontrôleur.
⚠️ AVERTISSEMENT DE SÉCURITÉ ET FIABILITÉ
- Usage Recommandé : Ce montage DIY est idéal pour des applications de contrôle d'accès secondaire (atelier, portail de jardin, box). Il ne remplace pas une serrure électronique certifiée (type A2P) pour la porte d'entrée principale d'un domicile.
- Isolation Électrique : Utilisez impérativement un module relais avec opto-isolation pour protéger votre microcontrôleur des pics de tension (force contre-électromotrice) générés par la gâche électrique ou le moteur du portail.
- Protection Anti-Brute Force : Le code fourni dans ce guide inclut un verrouillage temporaire après 3 tentatives erronées, une fonctionnalité de sécurité absolue pour ce type de projet.
Bienvenue sur TechFix Hub ! Les digicodes commerciaux sont souvent onéreux, fermés et impossibles à personnaliser. Construire votre propre système de contrôle d'accès vous offre non seulement une compréhension profonde de l'électronique embarquée, mais aussi une flexibilité totale.
Dans ce guide complet, nous allons concevoir un digicode fiable basé sur un clavier matriciel 4x4 et un microcontrôleur ESP32 (ou Arduino Nano). Nous irons au-delà du simple "si code = bon, alors ouvre" en intégrant des fonctions de sécurité avancées : verrouillage après échecs, retour sonore (buzzer) et journalisation des accès.
⚙️ 1. Comment Fonctionne un Clavier Matriciel ?
Un clavier 4x4 ne possède pas 16 fils individuels pour chaque touche, mais seulement 8 fils (4 rangées et 4 colonnes). Le microcontrôleur utilise une technique de balayage (scanning) :
- Il met une colonne à l'état HAUT (HIGH) et lit l'état des 4 rangées.
- Si une touche est enfoncée, le circuit se ferme et la rangée correspondante passe à l'état HAUT.
- Le microcontrôleur croise l'information "colonne active" et "rangée lue" pour identifier la touche exacte en quelques millisecondes.
🛠️ 2. Liste des Composants (BOM)
💻 3. Le Code : Gestion du Clavier et Anti-Brute Force
Un digicode sans protection est une faille de sécurité. Ce code utilise la bibliothèque Keypad.h et intègre un système de verrouillage temporaire après 3 tentatives échouées.
#include <Keypad.h>
#define RELAY_PIN 5
#define BUZZER_PIN 4
#define LED_GREEN 2
#define LED_RED 3
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2}; // Attention: adapter aux pins de votre carte
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
String correctCode = "123456"; // Code à 6 chiffres
String inputCode = "";
int failedAttempts = 0;
unsigned long lockoutTime = 0;
const int MAX_ATTEMPTS = 3;
const unsigned long LOCKOUT_DURATION = 30000; // 30 secondes de verrouillage
void setup() {
Serial.begin(115200);
pinMode(RELAY_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_RED, OUTPUT);
digitalWrite(RELAY_PIN, LOW); // Relais au repos
}
void loop() {
// Vérifier si le système est en mode verrouillé
if (failedAttempts >= MAX_ATTEMPTS) {
if (millis() - lockoutTime < LOCKOUT_DURATION) {
digitalWrite(LED_RED, HIGH); // LED rouge fixe pendant le verrouillage
return; // Ignorer toute saisie
} else {
// Fin du verrouillage
failedAttempts = 0;
digitalWrite(LED_RED, LOW);
beep(100, 2); // Signal de réactivation
}
}
char customKey = customKeypad.getKey();
if (customKey) {
inputCode += customKey;
beep(50, 1); // Petit bip à chaque frappe
// Si on a 6 chiffres, on vérifie
if (inputCode.length() == 6) {
if (inputCode == correctCode) {
// SUCCÈS
digitalWrite(LED_GREEN, HIGH);
digitalWrite(RELAY_PIN, HIGH); // Ouvrir la porte
beep(200, 3); // Bip de succès
Serial.println("Accès autorisé");
delay(3000); // Porte ouverte 3 secondes
digitalWrite(RELAY_PIN, LOW);
digitalWrite(LED_GREEN, LOW);
} else {
// ÉCHEC
failedAttempts++;
Serial.print("Échec. Tentatives: ");
Serial.println(failedAttempts);
if (failedAttempts >= MAX_ATTEMPTS) {
lockoutTime = millis();
Serial.println("SYSTEME VERROUILLE (30s)");
}
}
inputCode = ""; // Réinitialiser la saisie
}
}
}
void beep(int duration, int times) {
for (int i = 0; i < times; i++) {
digitalWrite(BUZZER_PIN, HIGH);
delay(duration);
digitalWrite(BUZZER_PIN, LOW);
delay(100);
}
}
🚀 4. L'Upgrade "TechFix Hub" : Vers un Contrôle d'Accès Intelligent
Pourquoi s'arrêter à un simple clavier ? Transformez votre digicode en système professionnel :
- Double Authentification (Clavier + RFID) : Ajoutez un module RC522. Le système n'ouvre la porte que si le bon badge EST PRÉSENTÉ et que le bon code est tapé. Sécurité maximale.
- Journalisation Wi-Fi (ESP32) : À chaque tentative (réussie ou échouée), l'ESP32 envoie un message Telegram ou une requête MQTT à Home Assistant avec l'heure et le code partiellement masqué (ex: "Tentative échouée: 123***").
- Changement de Code à Distance : Stockez le code dans l'EEPROM ou le SPIFFS de l'ESP32, et permettez sa modification via une interface web locale sécurisée, sans avoir à reprogrammer la carte.
🔗 Pour Aller Plus Loin sur TechFix Hub
Maîtrisez la sécurité électronique et l'IoT avec nos guides complémentaires :
✅ Conclusion
Construire son propre digicode est un projet extrêmement formateur. Il combine la gestion des entrées/sorties, la logique de programmation et les considérations de sécurité physique (relais, anti-brute force). En suivant ce guide, vous obtenez un système bien plus transparent, personnalisable et souvent plus robuste que certains produits grand public bas de gamme. La sécurité commence par la compréhension.
🛠️ Vous sécurisez votre atelier ou votre domicile ?
Vous avez des questions sur le câblage du clavier matriciel, la configuration du relais ou l'ajout des notifications Telegram ? Posez votre question dans les commentaires ci-dessous, la communauté TechFix Hub se fera un plaisir de vous aider !