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

Schéma et montage d'un digicode électronique DIY avec clavier matriciel et relais

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)

Composant Spécification Rôle
Microcontrôleur ESP32 DevKit ou Arduino Nano Cerveau du système : lecture du clavier, logique de sécurité et pilotage.
Clavier Clavier matriciel à membrane 4x4 (16 touches) Interface de saisie du code (chiffres 0-9, *, #).
Actionneur Module Relais 5V (1 canal) avec opto-isolation Commande la gâche électrique ou le moteur en isolant le circuit de puissance.
Feedback Utilisateur Buzzer actif 5V + LED RGB (ou 2 LEDs rouge/verte) Indique visuellement et sonorement l'acceptation ou le rejet du code.
Alimentation Alimentation 12V (pour la gâche) + Régulateur 5V (LM7805 ou module Buck) Alimente séparément la partie logique (5V) et la partie puissance (12V).

💻 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 !

Mots-clés : Digicode DIY ESP32 & Sécurité Clavier Matriciel Contrôle d'Accès

Bottom Ad [Post Page]