- Komponen yang Digunakan:
- Menyambungkan Pad Kekunci 4x4 dengan Raspberry Pi menggunakan Multiplexing:
- Penerangan Litar:
- Penjelasan Kerja:
- Penjelasan Pengaturcaraan:
Keselamatan menjadi perhatian utama dalam kehidupan kita sehari-hari, dan kunci digital telah menjadi bahagian penting dalam sistem keselamatan ini. Terdapat banyak jenis teknologi yang tersedia untuk melindungi tempat kita, seperti sistem keselamatan Berasaskan PIR, sistem Keselamatan berasaskan RFID, penggera keselamatan Laser, sistem bio-matriks dll.
Kami sebelumnya telah membina Kunci Digital dengan Kata Laluan menggunakan Arduino dan menggunakan 8051, di sini kita akan membina Kunci Digital ini menggunakan Raspberry Pi dengan Kata Laluan yang Ditentukan Pengguna. Setelah kata laluan ditetapkan, pengguna hanya dapat mengakses pintu dengan kata laluan yang betul.
Sekiranya anda tidak biasa dengan Raspberry Pi, kami telah membuat satu siri tutorial untuk mempelajari Raspberry Pi, dengan berinteraksi dengan semua komponen asas dan beberapa projek mudah untuk bermula, periksa.
Komponen yang Digunakan:
- Raspberry Pi (dengan kad SD boot)
- Modul Pad Kekunci
- Buzzer
- LCD 16x2
- 10k periuk
- Pek Perintang 10k (Pull-up)
- LED
- Perintang 1k
- Papan roti
- Troli CD / DVD sebagai Gate
- Kuasa 5 volt
- Pemandu motor L293D
- Bateri 12 Volt
- Menyambung wayar
Menyambungkan Pad Kekunci 4x4 dengan Raspberry Pi menggunakan Multiplexing:
Dalam rangkaian ini, kami telah menggunakan Teknik Multiplexing untuk menghubungkan papan kekunci untuk memasukkan kata laluan dalam sistem. Di sini kita menggunakan pad kekunci 4x4 dengan 16 kekunci. Biasanya jika kita ingin menggunakan 16 kekunci maka kita memerlukan 16 pin untuk sambungan ke Arduino tetapi dalam teknik multiplexing kita hanya memerlukan 8 pin untuk menghubungkan 16 kunci. Oleh itu, ia adalah kaedah yang bijak untuk menghubungkan modul keypad. Ketahui lebih lanjut mengenai teknik Multiplexing dan cara kerjanya dalam Digital Lock ini menggunakan 8051.
Teknik multiplexing adalah kaedah yang sangat efisien untuk mengurangkan bilangan pin yang digunakan dengan mikrokontroler untuk memberikan input atau kata laluan atau nombor. Pada asasnya teknik ini digunakan dalam dua cara - satu adalah pengimbasan baris dan satu lagi adalah pengimbasan lajur. Sekiranya kita menggunakan pustaka papan kekunci (#include
Tetapi di sini dalam projek ini, kami telah melaksanakan kaedah pengekodan pendek untuk pad kekunci yang sama, tanpa menggunakan perpustakaan pad kekunci. Sila lihat di bahagian pengaturcaraan di bawah.
Penerangan Litar:
Litar Kunci Pintu Raspberry Pi Digital ini sangat mudah yang mengandungi Raspberry Pi 3, modul papan kekunci, buzzer, troli DVD / CD sebagai pintu dan LCD. Di sini Raspberry Pi mengawal proses lengkap seperti mengambil modul papan kekunci bentuk kata laluan, membandingkan kata laluan, buzzer memandu, membuka / menutup pintu dan menghantar status ke paparan LCD. Pad kekunci digunakan untuk memasukkan kata laluan. Buzzer digunakan untuk petunjuk dan didorong oleh transistor NPN terbina dalam. LCD digunakan untuk memaparkan status atau mesej di atasnya.
Pin Column modul keypad disambungkan secara langsung ke pin GPIO 22, 23, 24, 25 dan pin Row disambungkan ke 21, 14, 13, 12 pin wringPi Raspberry Pi. A LCD 16x2 adalah berkaitan dengan raspberry Pi dalam mod 4-bit. Pin kawalan LCD RS, RW dan En disambungkan secara langsung ke pin GPIO 11, GND dan 10. Pin data D4-D7 disambungkan ke pin GPIO 6, 15, 4 dan 1. Satu buzzer disambungkan pada pin GPIO 8. Dan Pemacu Motor L293D disambungkan pada GPIO pin 28 dan 29 dari Raspberry Pi. A bateri 12 volt disambungkan pada pin 8 L293D berkenaan dengan tanah.
Penjelasan Kerja:
Kerja projek ini adalah mudah. Ketika pengguna menjalankan kod di Raspberry Pi, LCD menunjukkan beberapa pesan selamat datang dan setelah itu menunjukkan "A- Input Password" dan di baris kedua B- Change Passkey ". Kini pengguna dapat memilih pilihan mereka dengan menekan A dan B di papan kekunci.
Sekarang jika pengguna ingin membuka pintu maka dia perlu menekan 'A' pada papan kekunci dan kemudian sistem akan meminta Kata Laluan. Kata Laluan Lalai adalah "1234". Sekarang pengguna harus memasukkan kata laluan dan setelah sistem ini akan memeriksa kata laluan, apakah itu sah atau tidak:
1. Sekiranya pengguna memasukkan kata laluan yang betul maka sistem akan membuka pintu gerbang.
2. Jika pengguna memasukkan kata sandi yang salah, sistem akan mengirimkan perintah ke buzzer untuk berbunyi dan menunjukkan "Akses Ditolak" pada LCD.
Sekarang andaikan pengguna ingin menukar kata laluan maka dia perlu menekan 'B' pada papan kekunci dan kemudian pengguna akan diminta untuk "Kata Laluan Semasa" atau "Kata Laluan Semasa". Sekarang pengguna perlu memasukkan kata laluan semasa, kemudian sistem memeriksa kebenarannya dan melakukan salah satu tugas yang diberikan.
1. Jika pengguna memasukkan kata sandi yang tepat maka sistem akan meminta "Kata Laluan Baru" dan sekarang pengguna dapat mengubah kata sandi dengan memasukkan kata sandi baru.
2. Dan jika pengguna memasukkan kata laluan yang salah maka sistem akan menggerakkan bel dan menunjukkan "Kata Laluan yang Salah: pada LCD
Kini pengguna perlu mengulangi keseluruhan proses untuk menukar kata laluan.
Pada dasarnya, membuka dan menutup Pintu tidak lain hanyalah memutar jam Motor dengan bijak dan berlawanan arah jam untuk membuka dan menutup pintu. Untuk projek kecil anda boleh menambahkan motor DC untuk membuka dan menutup pintu. Kita juga boleh menggunakan motor Servo atau stepper, tetapi kita perlu mengubah Kod dengan sewajarnya.
Anda juga boleh menggunakan Kunci Pintu Elektronik (mudah didapati dalam talian) sebagai ganti CD Trolley. Ia mempunyai magnet Elektro yang membuat Pintu terkunci ketika tidak ada arus yang melewati Kunci (litar terbuka), dan ketika beberapa arus melewatinya, kunci akan dibuka dan pintu dapat dibuka. Kod akan diubah dengan sewajarnya, periksa juga tinjauan projek bersama ini: Arduino RFID Door Lock
Penjelasan Pengaturcaraan:
Pengaturcaraan lebih kurang sama dengan Arduino. Fungsi Arduino menggunakan kelas tetapi di sini kita telah melakukan kod ini, menggunakan pengaturcaraan c, tanpa kelas. Kami juga telah memasang perpustakaan wiringPi untuk GPIO.
Sekarang pertama-tama kita perlu memasukkan perpustakaan yang diperlukan dan kemudian menentukan pin untuk LCD, buzzer, LED dan Motor.
#sertakan
Setelah itu menentukan pin untuk baris & lajur papan kekunci dan tentukan susunan untuk menyimpan kata laluan dan nombor papan kekunci.
pas char; char pass1 = {'1', '2', '3', '4'}; int n = 0; baris char = {21, 14, 13, 12}; char col = {22, 23, 24, 25}; char num = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}};
Selepas itu kami telah menulis beberapa fungsi untuk menggerakkan LCD:
Fungsi void lcdcmd digunakan untuk menghantar arahan ke LCD dan fungsi menulis void digunakan untuk menghantar data ke LCD.
Cetakan kekosongan fungsi digunakan untuk menghantar tali ke LCD.
cetakan kosong (char * str) {sambil (* str) {tulis (* str); str ++; }}
Fungsi void setCursor digunakan untuk menetapkan kedudukan kursor di LCD.
void setCursor (int x, int y) {int set = 0; jika (y == 0) set = 128 + x; jika (y == 1) set = 192 + x; lcdcmd (set); }
Fungsi void clear () digunakan untuk membersihkan LCD dan void buzzer () digunakan untuk membunyikan buzzer.
Fungsi void gate_open (), void gate_stop () dan void gate_close () digunakan untuk memandu Gate (CD Trolley)
void gate_open () {digitalWrite (m1, RENDAH); digitalWrite (m2, TINGGI); kelewatan (2000); } kekosongan gate_stop () {digitalWrite (m1, LOW); digitalWrite (m2, RENDAH); kelewatan (2000); } batal gate_close () {digitalWrite (m1, TINGGI); digitalWrite (m2, RENDAH); kelewatan (2000); }
Fungsi Diberi digunakan untuk menginisialisasi LCD dalam Mode 4-bit.
kekosongan bermula (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
Diberi keypad void () fungsi digunakan untuk menghubungkan modul keypad dengan Raspberry Pi dengan 'kaedah pendek'.
kekunci kosong () {int i, j; int x = 0, k = 0; kelewatan (2000); manakala (k <4) {untuk (i = 0; i <4; i ++) {digitalWrite (col, LOW); untuk (j = 0; j <4; j ++) {if (digitalRead (baris) == 0) {setCursor (x, 1);…………………
Periksa semua fungsi dalam kod Penuh di bawah, kodnya mudah dan jelas.