Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Sicheres Passwort-Türschloss mit Arduino, Keypad & Linearaktuator

Komponenten und Materialien

Arduino UNO 1 Stück
Membran-Tastenfeld 4×4 1 Stück
L293D Dual H-Bridge Motortreiber (Texas Instruments) 1 Stück
Linearaktuator 12 V 1 Stück

Projektbeschreibung

Ein klassisches Tastatur-basiertes Türschloss: Der Benutzer gibt einen 4-stelligen Code ein, bei Übereinstimmung fährt der Linearaktuator ein (Tür öffnet). Der Autor erklärt detailliert die Funktionsweise des Matrix-Keypads und stellt zwei eigene Code-Varianten bereit (ohne Library), um das Prinzip verständlich zu machen.

Funktionsweise des 4×4-Membran-Keypads

Code 1: Tastenscan & Serielle Ausgabe

int rows=4; int columns=4;
#define c3 9 #define c2 8 #define c1 7 #define c0 6
#define r3 5 #define r2 4 #define r1 3 #define r0 2

void setup() {
  Serial.begin(9600);
  pinMode(c0,INPUT_PULLUP); pinMode(c1,INPUT_PULLUP);
  pinMode(c2,INPUT_PULLUP); pinMode(c3,INPUT_PULLUP);
  pinMode(r0,OUTPUT); pinMode(r1,OUTPUT);
  pinMode(r2,OUTPUT); pinMode(r3,OUTPUT);
  pinMode(11,OUTPUT); pinMode(12,OUTPUT); // für Aktuator später
}

char readkey(void) {
  // Zeile 0 LOW, andere HIGH
  digitalWrite(r0,LOW); digitalWrite(r1,HIGH); digitalWrite(r2,HIGH); digitalWrite(r3,HIGH);
  if(digitalRead(c0)==LOW){delay(500); return '1';}
  else if(digitalRead(c1)==LOW){delay(500); return '2';}
  else if(digitalRead(c2)==LOW){delay(500); return '3';}
  else if(digitalRead(c3)==LOW){delay(500); return 'A';}
  // Zeile 1 LOW
  digitalWrite(r0,HIGH); digitalWrite(r1,LOW); digitalWrite(r2,HIGH); digitalWrite(r3,HIGH);
  if(digitalRead(c0)==LOW){delay(500); return '4';}
  else if(digitalRead(c1)==LOW){delay(500); return '5';}
  else if(digitalRead(c2)==LOW){delay(500); return '6';}
  else if(digitalRead(c3)==LOW){delay(500); return 'B';}
  // Zeile 2 LOW
  digitalWrite(r0,HIGH); digitalWrite(r1,HIGH); digitalWrite(r2,LOW); digitalWrite(r3,HIGH);
  if(digitalRead(c0)==LOW){delay(500); return '7';}
  else if(digitalRead(c1)==LOW){delay(500); return '8';}
  else if(digitalRead(c2)==LOW){delay(500); return '9';}
  else if(digitalRead(c3)==LOW){delay(500); return 'C';}
  // Zeile 3 LOW
  digitalWrite(r0,HIGH); digitalWrite(r1,HIGH); digitalWrite(r2,HIGH); digitalWrite(r3,LOW);
  if(digitalRead(c0)==LOW){delay(500); return '*';}
  else if(digitalRead(c1)==LOW){delay(500); return '0';}
  else if(digitalRead(c2)==LOW){delay(500); return '#';}
  else if(digitalRead(c3)==LOW){delay(500); return 'D';}
  return 'o'; // keine Taste
}

char nfunc(void) {
  char key='o';
  while(key=='o') key=readkey();
  return key;
}

void loop() {
  char key1 = nfunc();
  if(key1) Serial.print(key1);
}

Code 2: Passwortprüfung & Aktuatorsteuerung

char password[5]="1234"; // festes Passwort
char typed[5];
int count=0;

// ... setup() und readkey()/nfunc() wie oben ...

void loop() {
  char key1 = nfunc();
  if(key1) {
    typed[count] = key1;
    count++;
    Serial.print(key1);
  }
  if(count == 4) {
    if(strcmp(typed, password) == 0) {
      Serial.println(" correct");
      digitalWrite(11, HIGH); // L293D Input 1
      digitalWrite(12, LOW);  // L293D Input 2
      delay(250);             // Aktuator fährt ein
      digitalWrite(11, LOW);  // Stop
    } else {
      Serial.println(" intruder");
    }
    count = 0;
  }
}

Hardware-Anbindung

Hinweis: Der Code verwendet bewusst keine Keypad-Library, um den Scan-Algorithmus transparent zu machen. Für produktive Nutzung wird die Library empfohlen (Beispiel CustomKeypad).

Herstellungsprozess

  1. Banktresore: Geschichte, Design und Zukunft der Sicherheit
  2. Drehtüren: Design, Geschichte und energiesparende Vorteile
  3. Kanäle & Schleusen: Technik, Geschichte und Zukunft des US-Wassertransports
  4. Die Evolution und Fertigung moderner Stiftschloss-Zylinderschlösser
  5. DIY Solar-betriebene Wetterstation mit Raspberry Pi
  6. Smartes Auto-Lock-Türschloss per Smartphone-Bluetooth-Nähe bauen
  7. Sichere Gesichtserkennungs-Tür mit Windows IoT und Raspberry Pi bauen
  8. Echtzeit-Zelluläre Automaten auf Arduino mit 128x64 OLED-Display
  9. WLAN-Türschloss mit Arduino & ESP8266 – Per Smartphone entsperren
  10. Motorkonfiguration: Umfassender Leitfaden zu Typen und Merkmalen