Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Serrure de porte basée sur un mot de passe

Composants et fournitures

Arduino UNO
× 1
clavier à membrane
× 1
Texas Instruments Dual H-Bridge Motor Drivers L293D
× 1
actionneur linéaire
× 1

À propos de ce projet

Il existe de nombreux sites Web qui ont publié ce projet et il est présent sur diverses chaînes YouTube, et peut-être même ce site Web en a-t-il quelques-uns. Donc, pour être honnête, il n'y a rien d'original. Mais je pourrais peut-être expliquer et afficher de manière plus simple et plus informative.

Le principal composant de ce projet est le clavier matriciel. J'ai utilisé un clavier à membrane 4x4 qui ressemble à ceci :

Les touches du clavier sont essentiellement des boutons poussoirs. Ces interrupteurs à bouton sont « fermés » lorsqu'ils sont enfoncés et une fois la force relâchée, ils retournent à leur état naturel, c'est-à-dire « ouverts ».

C'est ainsi que le clavier est connecté en interne sous forme de lignes et de colonnes. Lorsque, supposons que 1 est enfoncé, la colonne 1 et la ligne 1 sont connectées ensemble. Lorsque 9 est appuyé, r3 et c3 sont connectés ensemble.

Le balayage se fait avec 4 touches configurées en sorties et 4 touches en entrées. J'ai fait de toutes les colonnes les entrées en utilisant des résistances pullup d'entrée et toutes les lignes les sorties. À l'aide de la programmation, toutes les rangées sont réduites une par une, plusieurs fois par seconde. Ainsi, lorsqu'une touche est enfoncée, la colonne correspondante devient LOW. L'état des broches d'entrée auxquelles toutes les colonnes sont connectées est lu plusieurs fois. Chaque fois qu'un état BAS est lu, cela signifie qu'une touche de cette colonne est enfoncée. Si une certaine ligne est basse et en même temps une certaine colonne est basse, alors la touche enfoncée est déterminée.

Par ex. si 1 est appuyé, la colonne 1 sera basse. Et puisque chaque rangée est rendue FAIBLE si rapidement, une par une, même si vous appuyez sur la touche pendant un laps de temps très court, la rangée 1 sera parfois trouvée FAIBLE et il sera déterminé que 1 est enfoncé. Si row1==low &&column1==low, cela signifie que 1 est appuyé.

Ceci est indiqué dans le code 1 . J'ai écrit ce code moi-même parce que je voulais le télécharger sur la carte stm32 et que la bibliothèque KEYPAD n'était pas compatible. Avec ce code, vous comprendrez ce que j'ai expliqué plus haut. Ou vous pouvez simplement utiliser la bibliothèque de claviers et exécuter l'exemple 'customkeypad'. Les deux serviront le même objectif. Mais ce code ne vous expliquera pas le fonctionnement.

À l'aide du moniteur série, chaque touche enfoncée est affichée à l'écran. Ceci est montré dans la vidéo 1 .

Une fois que la détermination de la clé fonctionne correctement, il est temps de travailler sur le mot de passe. C'est si simple. Ce que j'ai fait, c'est de créer une chaîne "1234". C'est le mot de passe que j'avais défini. Maintenant, j'ai fait un autre tableau. Quelle que soit la valeur de la clé, elle est stockée dans ce tableau. Lorsque count atteint 4, les deux chaînes sont comparées. S'ils correspondent, le mot de passe est correct, sinon non. Ceci est indiqué dans le code 2 . J'ai connecté une LED à la broche 11. Ainsi, lorsque le mot de passe est correct, elle s'allume. Il est montré dans la vidéo 2 .

Maintenant, le composant qui servira de serrure :actionneur linéaire 12 V. Cela ressemble à ceci.

Ceci est actionné à l'aide du circuit intégré L293d, communément appelé circuit intégré « pilote de moteur ». Ce circuit intégré est connecté à l'alimentation 12v. Il prend les entrées de l'Arduino, c'est-à-dire l'entrée 5v, et sort 12v vers ses broches de sortie (auxquelles l'actionneur est connecté). Ainsi, lorsque le mot de passe est correct, la broche 11 est définie au niveau haut et la broche 12 est définie au niveau bas. Les broches 11 et 12 sont connectées aux entrées du l293d. Par conséquent, l'actionneur est tiré à l'intérieur et la porte s'ouvre. montré dans la vidéo 3 .

Code

  • code 1
  • code 2
code 1Arduino
Numérisation
int rows=4;int column=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,SORTIE); pinMode(r1,OUTPUT); pinMode(r2,OUTPUT); pinMode(r3,SORTIE); pinMode (11, SORTIE); pinMode(12,OUTPUT);}char readkey(void){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);retourner '3';}else if(digitalRead(c3)==LOW){delay(500);retour 'A';}digitalWrite(r0,HIGH);digitalWrite(r1,LOW);digitalWrite(r2 ,HIGH);digitalWrite(r3,HIGH);if(digitalRead(c0)==LOW){delay(500);retourner '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 )==LOW){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
mot de passe
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,SORTIE); pinMode(r1,OUTPUT); pinMode(r2,OUTPUT); pinMode(r3,SORTIE); pinMode (11, SORTIE); pinMode(12,OUTPUT);}char readkey(void){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);retourner '3';}else if(digitalRead(c3)==LOW){delay(500);retour 'A';}digitalWrite(r0,HIGH);digitalWrite(r1,LOW);digitalWrite(r2 ,HIGH);digitalWrite(r3,HIGH);if(digitalRead(c0)==LOW){delay(500);retourner '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 )==LOW){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; compte++ ; Serial.print(key1);}if(count==4){if(strcmp(tyd,password)==0){ Serial.println("correct"); écriture numérique (11, ÉLEVÉ); digitalWrite(12,LOW); retard (250); digitalWrite(11,LOW);}else{ Serial.println(" intrus");}count=0;}}

Schémas

Connectez l'actionneur là où le moteur est connecté.
Connectez la broche 8 à 12v touche enfoncée affichée à l'écran VID_20160924_195032.mp4led s'allume lorsque le mot de passe est correct VID_20160924_200016.mp4L'actionneur est tiré vers l'extérieur dans le cas normal (c'est-à-dire que la porte est verrouillée).
Lorsque le mot de passe est correct, il est tiré à l'intérieur et la porte s'ouvre VID_20160924_201528.mp4

Processus de fabrication

  1. Coffre bancaire
  2. Porte tournante
  3. Canal et écluse
  4. Station météo basée sur Raspberry Pi
  5. Créer une porte de bureau à verrouillage automatique avec capteur de proximité pour smartphone
  6. Windows IoT :porte de reconnaissance faciale
  7. Automates cellulaires basés sur Arduino et OLED
  8. Serrure de porte intelligente utilisant la page de connexion WiFi par Arduino et ESP8266
  9. Comprendre la configuration du moteur