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

Passwortbasiertes Türschloss

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Folientastatur
× 1
Doppelte H-Brücken-Motortreiber von Texas Instruments L293D
× 1
Linearaktuator
× 1

Über dieses Projekt

Es gibt zahlreiche Websites, die dieses Projekt veröffentlicht haben und es ist auf verschiedenen YouTube-Kanälen präsent, und vielleicht hat sogar diese Website einige davon. Also ehrlich gesagt nichts Originelles. Aber vielleicht kann ich es einfacher und informativer erklären und anzeigen.

Der Hauptbestandteil dieses Projekts ist die Matrixtastatur. Ich habe eine 4x4 Folientastatur verwendet, die so aussieht:

Die Tasten auf der Tastatur sind im Grunde Drucktasten. Diese Knopfschalter werden beim Drücken „geschlossen“ und gehen nach dem Lösen der Kraft in ihren natürlichen Zustand, d. h. „offen“, zurück.

So wird die Tastatur intern als Zeilen und Spalten verschaltet. Wenn beispielsweise 1 gedrückt wird, werden Spalte 1 und Zeile 1 miteinander verbunden. Wenn 9 gedrückt wird, werden r3 und c3 miteinander verbunden.

Die Abfrage erfolgt mit 4 als Ausgänge konfigurierten Tasten und 4 als Eingängen konfigurierten Tasten. Ich habe alle Spalten zu den Eingängen mit Eingangs-Pullup-Widerständen gemacht und alle Zeilen zu den Ausgängen. Durch die Programmierung werden alle Zeilen nacheinander mehrmals in einer Sekunde auf LOW gesetzt. Wenn also eine Taste gedrückt wird, wird die entsprechende Spalte LOW. Der Zustand der Eingangspins, mit denen alle Spalten verbunden sind, wird mehrmals gelesen. Immer wenn ein LOW-Zustand gelesen wird, bedeutet dies, dass eine Taste in dieser Spalte gedrückt wird. Wenn eine bestimmte Zeile niedrig ist und gleichzeitig eine bestimmte Spalte niedrig ist, wird die gedrückte Taste bestimmt.

Für z.B. wenn 1 gedrückt wird, ist Spalte 1 niedrig. Und da jede Reihe so schnell LOW gemacht wird, wird eine nach der anderen, selbst wenn Sie die Taste für eine sehr kurze Zeitspanne drücken, Zeile 1 irgendwann als LOW gefunden und es wird festgestellt, dass 1 gedrückt wird. Wenn row1==low &&column1==low, bedeutet dies, dass 1 gedrückt wird.

Dies wird in Code 1 angezeigt . Ich habe diesen Code selbst geschrieben, weil ich ihn auf das stm32-Board hochladen wollte und die KEYPAD-Bibliothek nicht kompatibel war. Mit diesem Code werden Sie verstehen, was ich oben erklärt habe. Oder Sie verwenden einfach die Tastaturbibliothek und führen das Beispiel „customkeypad“ aus. Beide werden dem gleichen Zweck dienen. Aber dieser Code wird Ihnen die Funktionsweise nicht erklären.

Bei Verwendung eines seriellen Monitors wird jede gedrückte Taste auf dem Bildschirm angezeigt. Dies wird in Video 1 gezeigt .

Nachdem die Schlüsselbestimmung einwandfrei funktioniert, ist es an der Zeit, das Passwort zu bearbeiten. Es ist so einfach. Was ich tat, war - eine Zeichenfolge "1234" gemacht. Dies ist das Passwort, das ich gesetzt hatte. Jetzt habe ich ein weiteres Array erstellt. Was auch immer der Schlüsselwert ist, er wird in diesem Array gespeichert. Wenn count 4 erreicht, werden beide Strings verglichen. Wenn sie übereinstimmen, ist das Passwort korrekt, sonst nicht. Dies wird in Code 2 angezeigt . An Pin 11 habe ich eine LED angeschlossen. Damit das Passwort richtig leuchtet, leuchtet es. Es wird in Video 2 gezeigt .

Jetzt die Komponente, die als Schloss verwendet wird:12-V-Linearantrieb. Es sieht so aus.

Dies wird mit dem L293d-IC betrieben, der sonst allgemein als 'Motortreiber'-IC bekannt ist. Dieser IC ist an die 12-V-Versorgung angeschlossen. Es nimmt Eingänge vom Arduino, dh 5 V-Eingang, und gibt 12 V an seine Ausgangspins aus (an die der Aktor angeschlossen ist). Wenn das Passwort korrekt ist, wird Pin 11 auf High und Pin 12 auf Low gesetzt. Die Pins 11 und 12 sind mit den Eingängen des 1293d verbunden. Dadurch wird der Betätiger nach innen gezogen und die Tür öffnet sich. gezeigt in Video 3 .

Code

  • Code 1
  • Code 2
Code 1Arduino
Scannen
int Zeilen=4;int Spalten=4;char readkey(void);char nfunc(void);#define c3 9#define c2 8#define c1 7#define c0 6#define r3 5#define r2 4 #define r1 3#define r0 2void setup () { Serial.begin (9600); pinMode(c0,INPUT_PULLUP); pinMode(c1,INPUT_PULLUP); pinMode(c2,INPUT_PULLUP); pinMode(c3,INPUT_PULLUP); pinMode (r0, AUSGANG); pinMode (r1, AUSGANG); pinMode (r2, AUSGANG); pinMode (r3, AUSGANG); PinMode (11, AUSGANG); pinMode(12,OUTPUT);}char readkey(void){digitalWrite(r0,LOW);digitalWrite(r1,HIGH);digitalWrite(r2,HIGH);digitalWrite(r3,HIGH);if(digitalRead(c0)==LOW){delay (500); Rückgabe '1';} Sonst if (digitalRead (c1) ==LOW) {delay (500); Rückgabe '2';} Sonst if (digitalRead (c2) ==LOW) {delay (500); '3' zurückgeben;}sonst if(digitalRead(c3)==LOW){delay(500); zurück 'A';}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); '5' zurückgeben;} sonst if (digitalRead (c2) ==LOW) {delay (500); '6' zurückgeben;}sonst if(digitalRead(c3)==LOW){delay(500);return 'B';}digitalWrite(r0,HIGH);digitalWrite(r1,HIGH);digitalWrite(r2,LOW); digitalWrite (r3, HIGH); if (digitalRead (c0) ==LOW) {delay (500); Rückgabe von '7';} Sonst if (digitalRead (c1) ==LOW) {delay (500); Rückgabe von '8';}sonst if (digitalRead(c2)==LOW){delay(500);return '9';}else if(digitalRead(c3)==LOW){delay(500);return 'C';}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';}char nfunc(void){char key='o'; while(key=='o') key=readkey();Return-Taste;}void loop(){char key1=nfunc();if(key1){Serial.print(key1);}}
Code 2Arduino
password
int rows=4;int column=4;int count=0;char readkey(void);char nfunc(void);#define c3 9#define c2 8#define c1 7#define c0 6#define r3 5#define r2 4#define r1 3#define r0 2char password[5]="1234";char typed[5];void setup() { Serial.begin (9600); pinMode(c0,INPUT_PULLUP); pinMode(c1,INPUT_PULLUP); pinMode(c2,INPUT_PULLUP); pinMode(c3,INPUT_PULLUP); pinMode (r0, AUSGANG); pinMode (r1, AUSGANG); pinMode (r2, AUSGANG); pinMode (r3, AUSGANG); PinMode (11, AUSGANG); pinMode(12,OUTPUT);}char readkey(void){digitalWrite(r0,LOW);digitalWrite(r1,HIGH);digitalWrite(r2,HIGH);digitalWrite(r3,HIGH);if(digitalRead(c0)==LOW){delay (500); Rückgabe '1';} Sonst if (digitalRead (c1) ==LOW) {delay (500); Rückgabe '2';} Sonst if (digitalRead (c2) ==LOW) {delay (500); '3' zurückgeben;}sonst if(digitalRead(c3)==LOW){delay(500); zurück 'A';}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); '5' zurückgeben;} sonst if (digitalRead (c2) ==LOW) {delay (500); '6' zurückgeben;}sonst if(digitalRead(c3)==LOW){delay(500);return 'B';}digitalWrite(r0,HIGH);digitalWrite(r1,HIGH);digitalWrite(r2,LOW); digitalWrite (r3, HIGH); if (digitalRead (c0) ==LOW) {delay (500); Rückgabe von '7';} Sonst if (digitalRead (c1) ==LOW) {delay (500); Rückgabe von '8';}sonst if (digitalRead(c2)==LOW){delay(500);return '9';}else if(digitalRead(c3)==LOW){delay(500);return 'C';}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';}char nfunc(void){char key='o'; while(key=='o') key=readkey();Return-Taste;}void loop(){char key1=nfunc();if(key1){typed[count]=key1; zählen++; Serial.print (Schlüssel1);} if (count==4) {if (strcmp (typisiert, Passwort) ==0) {Serial.println ("richtig"); digitalWrite(11,HIGH); digitalWrite(12,LOW); Verzögerung (250); digitalWrite(11,LOW);}else{Serial.println("Eindringling");}count=0;}}

Schaltpläne

Stellantrieb an den Motor anschließen.
Verbinden Sie Pin 8 mit 12 V Gedrückte Taste auf dem Bildschirm angezeigt VID_20160924_195032.mp4led leuchtet, wenn das Passwort korrekt ist VID_20160924_200016.mp4Der Betätiger wird im Normalfall nach außen gezogen (d.h. die Tür ist verriegelt).
Wenn das Passwort richtig ist, wird es hineingezogen und die Tür öffnet sich VID_20160924_201528.mp4

Herstellungsprozess

  1. Banktresor
  2. Drehtür
  3. Kanal und Schleuse
  4. Sperren
  5. Wetterstation basierend auf Raspberry Pi
  6. Erstellen einer automatisch verriegelnden Bürotür mit Smartphone-Näherungssensor
  7. Windows IoT:Tür zur Gesichtserkennung
  8. Arduino- und OLED-basierte zelluläre Automaten
  9. Smart Door Lock mit WLAN-Anmeldeseite von Arduino &ESP8266
  10. Motorkonfiguration verstehen