Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Kunci Pintu Berbasis Kata Sandi

Komponen dan persediaan

Arduino UNO
× 1
keypad membran
× 1
Driver motor H-Bridge Ganda Instrumen Texas L293D
× 1
aktuator linier
× 1

Tentang proyek ini

Ada banyak situs web yang memposting proyek ini &hadir di berbagai saluran youtube, dan bahkan mungkin situs web ini memiliki beberapa di antaranya. Jadi, jujur ​​saja, tidak ada yang orisinal. Tapi saya mungkin bisa menjelaskan dan menampilkan dengan cara yang lebih sederhana dan lebih informatif.

Komponen utama dari proyek ini adalah keypad matriks. Saya telah menggunakan keypad membran 4x4 yang terlihat seperti ini:

Tombol pada keypad pada dasarnya adalah tombol tekan. Sakelar tombol ini 'tertutup' saat ditekan dan setelah gaya dilepaskan, sakelar tersebut kembali ke keadaan alaminya yaitu 'terbuka' .

Beginilah cara keypad terhubung secara internal sebagai baris dan kolom. Ketika, misalkan, 1 ditekan, kolom 1 dan baris 1 dihubungkan bersama. Ketika 9 ditekan, r3 dan c3 terhubung bersama.

Pemindaian dilakukan dengan 4 tombol yang dikonfigurasi sebagai output dan 4 tombol sebagai input. Saya menjadikan semua kolom sebagai input menggunakan resistor pullup input, dan semua baris menjadi output. Menggunakan pemrograman, semua baris dibuat RENDAH satu per satu, beberapa kali dalam satu detik. Jadi, ketika tombol ditekan, kolom yang sesuai menjadi RENDAH. Status pin input yang menghubungkan semua kolom, dibaca, beberapa kali. Setiap kali status LOW dibaca, itu berarti tombol di kolom itu ditekan. Jika baris tertentu rendah dan pada saat yang sama kolom tertentu rendah, maka tombol yang ditekan ditentukan.

Untuk misalnya jika 1 ditekan, kolom 1 akan rendah. Dan karena setiap baris dibuat RENDAH begitu cepat, satu per satu, bahkan jika Anda menekan tombol untuk rentang yang sangat singkat, baris 1 akan ditemukan RENDAH kapan-kapan dan akan ditentukan bahwa 1 ditekan. Jika row1==low &&column1==low, berarti 1 ditekan.

Ini ditunjukkan dalam kode 1 . Saya menulis kode ini sendiri karena saya ingin mengunggahnya ke papan stm32 dan perpustakaan KEYPAD tidak kompatibel. Dengan kode ini, Anda akan mengerti apa yang saya jelaskan di atas. Atau Anda cukup menggunakan perpustakaan keypad dan menjalankan contoh 'customkeypad'. Keduanya akan melayani tujuan yang sama. Tapi kode itu tidak akan menjelaskan cara kerja Anda.

Menggunakan monitor serial, setiap tombol yang ditekan akan ditampilkan di layar. Ini ditampilkan di video 1 .

Setelah penentuan kunci berfungsi dengan baik, saatnya mengerjakan kata sandi. Ini sangat mudah. Apa yang saya lakukan adalah - membuat string "1234". Ini adalah kata sandi yang telah saya tetapkan. Sekarang, saya membuat array lain. Apa pun nilai kuncinya, itu disimpan dalam array ini. Ketika hitungan mencapai 4, kedua string dibandingkan. Jika cocok - kata sandinya benar, jika tidak. Ini ditunjukkan dalam kode 2 . Saya menghubungkan LED ke pin 11. Jadi, ketika kata sandi benar, itu bersinar. Itu ditampilkan di video 2 .

Nah, komponen yang akan digunakan sebagai pengunci adalah :aktuator linier 12 V. Ini terlihat seperti ini.

Ini dioperasikan menggunakan IC L293d yang biasa dikenal sebagai IC 'pengemudi motor'. IC ini terhubung ke catu daya 12v. Dibutuhkan input dari Arduino yaitu input 5v, dan output 12v ke pin outputnya (di mana aktuator terhubung). Jadi, ketika kata sandi benar, pin 11 disetel tinggi dan pin 12 disetel rendah. Pin 11 dan 12 terhubung ke input l293d. Oleh karena itu, aktuator ditarik ke dalam dan pintu terbuka. ditampilkan di video 3 .

Kode

  • kode 1
  • kode 2
kode 1Arduino
Memindai
int rows=4;int kolom=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,OUTPUT); pinMode(r1, OUTPUT); pinMode(r2,OUTPUT); pinMode(r3,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT);}char readkey(void){digitalWrite(r0,LOW);digitalWrite(r1,HIGH);digitalWrite(r2,HIGH);digitalWrite(r3,HIGH);if(digitalRead(c0)==RENDAH){delay(500);kembalikan '1';}else if(digitalRead(c1)==LOW){delay(500);kembalikan '2';}else if(digitalRead(c2)==LOW){delay (500);kembalikan '3';}else if(digitalRead(c3)==LOW){delay(500);kembalikan 'A';}digitalWrite(r0,HIGH);digitalWrite(r1,LOW);digitalWrite(r2 ,TINGGI);digitalWrite(r3,HIGH);if(digitalRead(c0)==LOW){delay(500);kembalikan '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);kembalikan '7';}else if(digitalRead(c1)==LOW){delay(500);kembalikan '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 )==RENDAH){delay(500);kembalikan 'D';}kembalikan 'o';}char nfunc(void){ char key='o'; while(key=='o') key=readkey();return key;}void loop(){char key1=nfunc();if(key1){ Serial.print(key1);}}
kode 2Arduino
kata sandi
int rows=4;int kolom=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,OUTPUT); pinMode(r1, OUTPUT); pinMode(r2,OUTPUT); pinMode(r3,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT);}char readkey(void){digitalWrite(r0,LOW);digitalWrite(r1,HIGH);digitalWrite(r2,HIGH);digitalWrite(r3,HIGH);if(digitalRead(c0)==RENDAH){delay(500);kembalikan '1';}else if(digitalRead(c1)==LOW){delay(500);kembalikan '2';}else if(digitalRead(c2)==LOW){delay (500);kembalikan '3';}else if(digitalRead(c3)==LOW){delay(500);kembalikan 'A';}digitalWrite(r0,HIGH);digitalWrite(r1,LOW);digitalWrite(r2 ,TINGGI);digitalWrite(r3,HIGH);if(digitalRead(c0)==LOW){delay(500);kembalikan '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);kembalikan '7';}else if(digitalRead(c1)==LOW){delay(500);kembalikan '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 )==RENDAH){delay(500);kembalikan 'D';}kembalikan 'o';}char nfunc(void){ char key='o'; while(key=='o') key=readkey();return key;}void loop(){char key1=nfunc();if(key1){typed[count]=key1; menghitung++; Serial.print(key1);}if(count==4){if(strcmp(ketik,password)==0){ Serial.println(" benar"); digitalWrite(11,TINGGI); digitalWrite(12,RENDAH); penundaan (250); digitalWrite(11,LOW);}else{ Serial.println(" penyusup");}count=0;}}

Skema

Hubungkan aktuator tempat motor terhubung.
Hubungkan pin 8 ke 12v tombol yang ditekan ditampilkan di layar VID_20160924_195032.mp4led menyala jika kata sandinya benar VID_20160924_200016.mp4Aktuator ditarik keluar dalam kasus normal (yaitu pintu terkunci).
Ketika kata sandinya benar , itu ditarik ke dalam dan pintu terbuka VID_20160924_201528.mp4

Proses manufaktur

  1. Bank Vault
  2. Pintu Putar
  3. Kanal dan Kunci
  4. Kunci
  5. Stasiun cuaca berdasarkan Raspberry Pi
  6. Membuat Pintu Kantor yang Mengunci Otomatis dengan Sensor Jarak Ponsel Cerdas
  7. Windows IoT:Pintu Pengenalan Wajah
  8. Otomata Seluler berbasis Arduino dan OLED
  9. Smart Door Lock Menggunakan Halaman Login WiFi oleh Arduino &ESP8266
  10. Memahami konfigurasi mesin