- Các thành phần được sử dụng:
- Kết nối Bàn phím 4x4 với Raspberry Pi bằng cách sử dụng Ghép kênh:
- Mô tả mạch:
- Giải thích làm việc:
- Giải thích lập trình:
Bảo mật là một mối quan tâm lớn trong cuộc sống hàng ngày của chúng ta và khóa kỹ thuật số đã trở thành một phần quan trọng của các hệ thống an ninh này. Có nhiều loại công nghệ có sẵn để đảm bảo vị trí của chúng tôi, như hệ thống an ninh dựa trên PIR, hệ thống bảo mật dựa trên RFID, cảnh báo an ninh bằng laser, hệ thống ma trận sinh học, v.v.
Trước đây chúng tôi đã xây dựng Khóa kỹ thuật số với mật khẩu bằng Arduino và sử dụng 8051, ở đây chúng tôi sẽ xây dựng Khóa kỹ thuật số này bằng Raspberry Pi với Mật khẩu do người dùng xác định. Sau khi mật khẩu được đặt, người dùng chỉ có thể truy cập vào cửa bằng mật khẩu chính xác.
Nếu bạn chưa quen với Raspberry Pi, chúng tôi đã tạo một loạt các hướng dẫn để tìm hiểu Raspberry Pi, với giao diện với tất cả các thành phần cơ bản và một số dự án đơn giản để bắt đầu, hãy kiểm tra.
Các thành phần được sử dụng:
- Raspberry Pi (với thẻ SD được khởi động)
- Mô-đun bàn phím
- Buzzer
- LCD 16x2
- Hủ 10k
- Gói điện trở 10k (Kéo lên)
- Đèn LED
- Điện trở 1k
- Bảng bánh mì
- Xe đẩy CD / DVD làm Cổng
- Nguồn 5 volt
- Trình điều khiển động cơ L293D
- Pin 12 Vôn
- Kết nối dây
Kết nối Bàn phím 4x4 với Raspberry Pi bằng cách sử dụng Ghép kênh:
Trong mạch này, chúng tôi đã sử dụng Kỹ thuật ghép kênh để giao diện bàn phím để nhập mật khẩu vào hệ thống. Ở đây chúng tôi đang sử dụng bàn phím ghép 4x4 với 16 phím. Thông thường nếu chúng ta muốn sử dụng 16 phím thì chúng ta cần 16 chân để kết nối với Arduino nhưng trong kỹ thuật ghép kênh, chúng ta chỉ cần 8 chân để giao tiếp 16 phím. Vì vậy, đó là một cách thông minh để giao diện mô-đun bàn phím. Tìm hiểu thêm về kỹ thuật Ghép kênh và hoạt động của nó trong Khóa kỹ thuật số sử dụng 8051.
Kỹ thuật ghép kênh là một cách rất hiệu quả để giảm số lượng chân được sử dụng với vi điều khiển để cung cấp đầu vào hoặc mật khẩu hoặc số. Về cơ bản, kỹ thuật này được sử dụng theo hai cách - một là quét theo hàng và một là quét theo cột. Nếu chúng tôi sử dụng thư viện bàn phím (#include
Nhưng ở đây trong dự án này, chúng tôi đã triển khai một cách viết mã ngắn cho cùng một bàn phím, mà không cần sử dụng thư viện bàn phím. Vui lòng xem nó trong phần lập trình bên dưới.
Mô tả mạch:
Mạch của Khóa cửa kỹ thuật số Raspberry Pi này rất đơn giản, bao gồm Raspberry Pi 3, mô-đun bàn phím, còi, xe đẩy DVD / CD như cổng và màn hình LCD. Ở đây Raspberry Pi kiểm soát toàn bộ quá trình như lấy mô-đun bàn phím dạng mật khẩu, so sánh mật khẩu, bộ rung điều khiển, mở / đóng cổng và gửi trạng thái đến màn hình LCD. Bàn phím được sử dụng để nhập mật khẩu. Buzzer được sử dụng cho các chỉ báo và được điều khiển bởi bóng bán dẫn NPN có sẵn. LCD được sử dụng để hiển thị trạng thái hoặc thông báo trên đó.
Các chân Cột của mô-đun bàn phím được kết nối trực tiếp với chân GPIO 22, 23, 24, 25 và các chân Row được kết nối với 21, 14, 13, 12 của các chân wringPi của Raspberry Pi. Một màn hình LCD 16x2 được kết nối với mâm xôi Pi trong chế độ 4-bit. Chân điều khiển của LCD RS, RW và En được kết nối trực tiếp với chân GPIO 11, GND và 10. Các chân dữ liệu D4-D7 được kết nối với các chân GPIO 6, 15, 4 và 1. Một còi được kết nối tại chân GPIO 8. Và Trình điều khiển động cơ L293D được kết nối tại chân GPIO 28 và 29 của Raspberry Pi. Một pin 12 volt được kết nối tại pin 8 của L293D đối với mặt đất.
Giải thích làm việc:
Làm việc của dự án này là đơn giản. Khi người dùng chạy mã trong Raspberry Pi, màn hình LCD hiển thị một số thông báo chào mừng và sau đó hiển thị “A- Nhập mật khẩu” và ở dòng thứ hai B- Thay đổi mật khẩu ”. Bây giờ người dùng có thể chọn lựa chọn của họ bằng cách nhấn A và B trên bàn phím.
Bây giờ nếu người dùng muốn mở cổng thì cần nhấn 'A' trên bàn phím và sau đó hệ thống sẽ yêu cầu nhập Mật khẩu. Mật khẩu mặc định là “1234”. Bây giờ người dùng phải nhập mật khẩu và sau khi hệ thống này sẽ kiểm tra mật khẩu, xem nó có hợp lệ hay không:
1. Nếu người dùng nhập đúng mật khẩu thì hệ thống sẽ mở cổng.
2. Nếu người dùng nhập sai mật khẩu, hệ thống sẽ gửi lệnh đến buzzer để phát ra tiếng bíp và hiển thị “Truy cập bị từ chối” trên màn hình LCD.
Bây giờ, giả sử người dùng muốn thay đổi mật khẩu thì họ cần nhấn 'B' trên bàn phím và sau đó người dùng sẽ được yêu cầu nhập "Mật khẩu hiện tại" hoặc "Mật khẩu hiện tại". Bây giờ người dùng cần nhập mật khẩu hiện tại, sau đó hệ thống kiểm tra tính chính xác của nó và thực hiện một trong các tác vụ đã cho.
1. Nếu người dùng nhập đúng mật khẩu thì hệ thống sẽ hỏi “Mật khẩu mới” và bây giờ người dùng có thể thay đổi mật khẩu bằng cách nhập mật khẩu mới.
2. Và nếu người dùng nhập sai mật khẩu thì hệ thống sẽ điều khiển còi và hiển thị “Mật khẩu sai: trên màn hình LCD.
Bây giờ người dùng cần lặp lại toàn bộ quá trình một lần nữa để thay đổi mật khẩu.
Về cơ bản, việc mở và đóng Cổng không có gì khác ngoài việc xoay đồng hồ Mô tơ một cách khôn ngoan và ngược chiều kim đồng hồ để đóng mở cửa. Đối với một dự án nhỏ, bạn có thể chỉ cần thêm một động cơ DC để mở và đóng cửa. Chúng ta cũng có thể sử dụng Servo hoặc động cơ bước, nhưng chúng ta cần thay đổi Code cho phù hợp.
Hơn nữa, bạn có thể sử dụng Khóa cửa điện tử thích hợp (có thể dễ dàng mua trực tuyến) thay cho Xe đẩy CD. Nó có một nam châm điện để giữ cho Cửa luôn khóa khi không có dòng điện đi qua Khóa (mở mạch) và khi có dòng điện chạy qua nó, khóa sẽ được mở khóa và cửa có thể được mở. Mã sẽ được thay đổi cho phù hợp, hãy cũng kiểm tra đánh giá dự án được chia sẻ này: Khóa cửa RFID Arduino
Giải thích lập trình:
Lập trình tương tự như Arduino. Hàm Arduino sử dụng các lớp nhưng ở đây chúng tôi đã thực hiện mã này, sử dụng lập trình c, không có lớp. Chúng tôi cũng đã cài đặt thư viện wiringPi cho các GPIO.
Bây giờ trước hết chúng ta cần bao gồm các thư viện cần thiết và sau đó xác định các chân cho LCD, buzzer, LED và Motor.
#include
Sau khi nó xác định các chân cho hàng & cột của bàn phím và xác định mảng để lưu trữ mật khẩu và số bàn phím.
đường chuyền char; char pass1 = {'1', '2', '3', '4'}; int n = 0; char row = {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 '}};
Sau đó, chúng tôi đã viết một số chức năng để điều khiển màn hình LCD:
Hàm void lcdcmd được sử dụng để gửi lệnh đến màn hình LCD và hàm void ghi được sử dụng để gửi dữ liệu đến màn hình LCD.
Hàm void print được sử dụng để gửi chuỗi tới LCD.
void print (char * str) {while (* str) {write (* str); str ++; }}
Hàm void setCursor được sử dụng để thiết lập vị trí con trỏ trên màn hình LCD.
void setCursor (int x, int y) {int set = 0; if (y == 0) set = 128 + x; if (y == 1) set = 192 + x; lcdcmd (bộ); }
Hàm void clear () được sử dụng để xóa màn hình LCD và void buzzer () được sử dụng để phát tiếng bíp của bộ rung.
Hàm void gate_open (), void gate_stop () và void gate_close () được sử dụng để điều khiển Cổng (Xe đẩy CD)
void gate_open () {digitalWrite (m1, LOW); digitalWrite (m2, HIGH); chậm trễ (2000); } void gate_stop () {digitalWrite (m1, LOW); digitalWrite (m2, LOW); chậm trễ (2000); } void gate_close () {digitalWrite (m1, HIGH); digitalWrite (m2, LOW); chậm trễ (2000); }
Hàm Given được sử dụng để khởi tạo LCD ở Chế độ 4 bit.
void begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
Với hàm void keypad () được sử dụng để giao tiếp mô-đun bàn phím với Raspberry Pi bằng một 'phương thức ngắn'.
void bàn phím () {int i, j; int x = 0, k = 0; chậm trễ (2000); while (k <4) {for (i = 0; i <4; i ++) {digitalWrite (col, LOW); for (j = 0; j <4; j ++) {if (digitalRead (row) == 0) {setCursor (x, 1);…………………
Kiểm tra tất cả các chức năng trong Mã đầy đủ bên dưới, mã rất dễ dàng và tự giải thích.