Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Op wachtwoord gebaseerd deurslot

Componenten en benodigdheden

Arduino UNO
× 1
membraan toetsenbord
× 1
Texas Instruments Dual H-Bridge motordrivers L293D
× 1
lineaire actuator
× 1

Over dit project

Er zijn talloze websites die dit project hebben gepost en het is aanwezig op verschillende YouTube-kanalen, en misschien heeft deze website er zelfs een paar. Dus, om eerlijk te zijn, het is niets origineels. Maar misschien kan ik het op een eenvoudigere en meer informatieve manier uitleggen en weergeven.

Het belangrijkste onderdeel van dit project is het matrixtoetsenbord. Ik heb een 4x4 membraantoetsenbord gebruikt dat er als volgt uitziet:

De toetsen op het toetsenbord zijn in feite drukknoppen. Deze knopschakelaars zijn 'gesloten' wanneer ze worden ingedrukt en zodra de kracht wordt losgelaten, gaan ze terug naar hun natuurlijke staat, d.w.z. 'open'.

Zo is het toetsenbord intern als rijen en kolommen verbonden. Stel dat er op 1 wordt gedrukt, zijn kolom 1 en rij 1 met elkaar verbonden. Als 9 wordt ingedrukt, zijn r3 en c3 met elkaar verbonden.

Scannen wordt gedaan met 4 toetsen geconfigureerd als uitgangen en 4 toetsen als ingangen. Ik heb van alle kolommen de ingangen gemaakt met behulp van ingangstrekweerstanden en alle rijen de uitgangen. Met behulp van programmeren worden alle rijen één voor één LAAG gemaakt, meerdere keren per seconde. Dus wanneer een toets wordt ingedrukt, wordt de corresponderende kolom LAAG. De status van de ingangspinnen waarop alle kolommen zijn aangesloten, wordt meerdere keren gelezen. Telkens wanneer een LOW-status wordt gelezen, betekent dit dat een toets in die kolom wordt ingedrukt. Als een bepaalde rij laag is en tegelijkertijd een bepaalde kolom laag, dan wordt de ingedrukte toets bepaald.

Voor bijv. als 1 wordt ingedrukt, is kolom 1 laag. En aangezien elke rij zo snel LAAG wordt gemaakt, één voor één, zelfs als u de toets heel kort indrukt, zal rij 1 ooit LAAG worden gevonden en zal worden vastgesteld dat 1 wordt ingedrukt. Als row1==low &&column1==low, betekent dit dat er op 1 is gedrukt.

Dit wordt getoond in code 1 . Ik heb deze code zelf geschreven omdat ik deze naar het stm32-bord wilde uploaden en de KEYPAD-bibliotheek niet compatibel was. Met deze code begrijp je wat ik hierboven heb uitgelegd. Of u kunt gewoon de toetsenbordbibliotheek gebruiken en het voorbeeld 'aangepast toetsenbord' uitvoeren. Beide zullen hetzelfde doel dienen. Maar die code zal je de werking niet uitleggen.

Bij gebruik van een seriële monitor wordt elke ingedrukte toets op het scherm weergegeven. Dit wordt getoond in video 1 .

Nadat de sleutelbepaling goed werkt, is het tijd om aan het wachtwoord te werken. Het is zo makkelijk. Wat ik deed was - een string "1234" gemaakt. Dit is het wachtwoord dat ik had ingesteld. Nu heb ik nog een array gemaakt. Wat de sleutelwaarde ook is, het wordt in deze array opgeslagen. Wanneer de telling 4 bereikt, worden beide snaren vergeleken. Als ze overeenkomen, is het wachtwoord correct, anders niet. Dit wordt getoond in code 2 . Ik heb een LED op pin 11 aangesloten. Dus als het wachtwoord correct is, gloeit het. Het wordt getoond in video 2 .

Nu het onderdeel dat als slot gebruikt gaat worden:12 V lineaire actuator. Het ziet er zo uit.

Dit wordt bediend met behulp van L293d IC, ook wel bekend als de 'motor driver' IC. Dit IC wordt aangesloten op de 12v voeding. Het neemt input van de Arduino, d.w.z. 5v input, en voert 12v uit naar zijn outputpinnen (waarop de actuator is aangesloten). Dus als het wachtwoord correct is, staat pin 11 hoog en pin 12 laag. Pin 11 en 12 zijn verbonden met de ingangen van de l293d. Daarom wordt de actuator naar binnen getrokken en gaat de deur open. getoond in video 3 .

Code

  • code 1
  • code 2
code 1Arduino
Scannen
int rijen=4;int kolommen=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,UITGANG); pinMode(r1,UITGANG); pinMode (r2, UITGANG); pinMode(r3,UITGANG); pinMode (11, UITGANG); pinMode(12,OUTPUT);}char readkey(void){digitalWrite(r0,LOW);digitalWrite(r1,HIGH);digitalWrite(r2,HIGH);digitalWrite(r3,HIGH);if(digitalRead(c0)==LAAG){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';}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';}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';}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 )==LAAG){delay(500);return 'D';}return 'o';}char nfunc(void){ char key='o'; while(key=='o') key=readkey();return key;}void loop(){char key1=nfunc();if(key1){ Serial.print(key1);}}
code 2Arduino
wachtwoord
int rijen=4;int kolommen=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 wachtwoord[5]="1234";char getypt[5];void setup() { Serial.begin(9600); pinMode(c0,INPUT_PULLUP); pinMode(c1,INPUT_PULLUP); pinMode(c2,INPUT_PULLUP); pinMode(c3,INPUT_PULLUP); pinMode(r0,UITGANG); pinMode(r1,UITGANG); pinMode (r2, UITGANG); pinMode(r3,UITGANG); pinMode (11, UITGANG); pinMode(12,OUTPUT);}char readkey(void){digitalWrite(r0,LOW);digitalWrite(r1,HIGH);digitalWrite(r2,HIGH);digitalWrite(r3,HIGH);if(digitalRead(c0)==LAAG){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';}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';}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';}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 )==LAAG){delay(500);return 'D';}return 'o';}char nfunc(void){ char key='o'; while(key=='o') key=readkey();return key;}void loop(){char key1=nfunc();if(key1){typed[count]=key1; tellen++; Serial.print(key1);}if(count==4){if(strcmp(getypt,password)==0){ Serial.println("correct"); digitalWrite (11, HOOG); digitalWrite (12, LAAG); vertraging (250); digitalWrite(11,LOW);}else{ Serial.println("indringer");}count=0;}}

Schema's

Sluit de actuator aan op de plek waar de motor is aangesloten.
Sluit pin 8 aan op 12v ingedrukte toets weergegeven op het scherm VID_20160924_195032.mp4led brandt wanneer het wachtwoord correct is VID_20160924_200016.mp4De actuator wordt normaal naar buiten getrokken (d.w.z. de deur is vergrendeld).
Als het wachtwoord correct is, wordt het naar binnen getrokken en gaat de deur open VID_20160924_201528.mp4

Productieproces

  1. Bankkluis
  2. Draaideur
  3. Kanaal en sluis
  4. Vergrendelen
  5. Combinatieslot
  6. Weerstation gebaseerd op Raspberry Pi
  7. Maak een automatisch sluitende kantoordeur met smartphone-nabijheidssensor
  8. Windows IoT:deur met gezichtsherkenning
  9. Arduino en OLED-gebaseerde mobiele automaten
  10. Slim deurslot met WiFi-aanmeldingspagina door Arduino &ESP8266
  11. Motorconfiguratie begrijpen