.3 Khối xử lý và khối cảm biến vân tay

Một phần của tài liệu Đồ án tốt nghiệp: “THIẾT KẾ KHÓA CỬA THÔNG MINH ĐA NĂNG DỰA TRÊN ARDUINO” (Trang 52)

Cảm biến vân tay AS608 tích hợp xử lý hình ảnh và thuật tốn xử lý trên cùng một chip như được thể hiện trong Hình 3.3. Khả năng xử lý ảnh chụp tốt với độ phân giải lên đến 500dpi. Chuẩn giao tiếp: USB

UART (TTL logical logic) từ 9600 – 115200bps, sử dụng tốc độ mặc định là 57600 bps đảm bảo truyền nhận chính xác dữ liệu. Bên cạnh đó là các thơng số khác như:

- Điện áp cung cấp: 3.6V ~ 6V DC. - Dòng điện tiêu thụ: < 120mA.

Khối xử lý trung tâm

Khối cảm biến vân tay

a) Giao tiếp UART.

UART có tên đầy đủ là Universal Asynchronous Receiver – Transmitter. Nó là một mạch tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp giữa máy tính và các thiết bị ngoại vi.

UART có chức năng chính là truyền dữ liệu nối tiếp. Trong UART, giao tiếp giữa hai thiết bị có thể được thực hiện theo hai phương thức là giao tiếp dữ liệu nối tiếp và giao tiếp dữ liệu song song.

Giao tiếp dữ liệu nối tiếp có nghĩa là dữ liệu có thể được truyền qua một cáp hoặc một đường dây ở dạng bit-bit và nó chỉ cần hai cáp được thể hiện trong hình 3.4. Nó u cầu số lượng mạch hay như dây rất ít. Giao tiếp này hữu ích trong các mạch ghép hơn giao tiếp song song.

+Trong giao tiếp UART có các thơng số chính:

- Baud rate (tốc độ baud ): Khoảng thời gian để 1 bit được truyền đi. Phải được cài đặt giống nhau ở cả phần gửi và nhận

- Frame (khung truyền): Khung truyền quy định về mỗi lần truyền bao nhiêu bit - Start bit: Là bit đầu tiên được truyền trong 1 Frame. Báo hiệu cho thiết bị nhận

có một gói dữ liệu sắp đc truyền đến. Đây là bit bắt buộc

- Data: Dữ liệu cần truyền. Bit có trọng số nhỏ nhất LSB được truyền trước sau đó đến bit MSB.

- Parity bit: Kiểm tra dữ liệu truyền có đúng khơng.

- Stop bit : Là 1 hoặc các bit báo cho thiết bị rằng các bit đã được gửi xong. Thiết bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm bảo tính đúng đắn của dữ liệu. Đây là bit bắt buộc.

b) Cách nối dây cho cảm biến vân tay AS608 vào Arduino Mega 2560 theo thứ tự

- Dây số 1 nối vào nguồn 5V và dây số 2 nối vào chân GND của Arduino. - Dây số 3 nối vào chân số 19 RX1 và dây số 4 nối chân 18 TX1 của Arduino

Mega.

Hình 3.5 Cảm biến vân tay kết nối Arduino Mega

3.2.3 Khối Module SIM 800L

Để điều khiển mở cửa từ xa em đã sử dụng module Sim 800l. Tuy tính kinh tế khi chọn module này là khơng cao nhưng module vẫn có những ưu điểm. Nếu hệ thống mất điện, module vẫn có thể gửi dữ liệu khi sử dụng nguồn dự phòng, hệ thống mạng GPRS được phủ sống liên tục. Nếu ta di chuyển đến nơi khác vẫn có thể cập mở cửa dễ dàng mà khơng cần phải cấu hình lại hệ thống.

a) Cách nối dây.

- Hai chân nguồn VCC và GND được kết nối với module giảm áp LM2596 để dòng điện cho sim hoạt động ổn định lâu dài.

- TX được nối vào chân RX3 và RX nối vào TX3 của Arduino Mega để truyền nhận dữ liệu theo chuẩn UART.

- Chân nguồn GND của sim 800L nối chung với GND của Mega.

b) Module giảm áp LM2596

Hình 3.1 Hình ảnh thực tế Module giảm áp LM2596

Mạch giảm áp DC LM2596 3A (có thể thấy trực quan trong hình 3.6)nhỏ gọn có khả năng giảm áp từ 30V xuống 1.5V mà vẫn đạt hiệu suất cao (92%) . Thích hợp cho các ứng dụng chia nguồn, hạ áp, cấp cho các thiết bị như Sim 800l, motor, robot…

Thông số kỹ thuật:

- Điện áp đầu vào: Từ 3V đến 30V. (adsbygoogle = window.adsbygoogle || []).push({});

- Điện áp đầu ra: Điều chỉnh được trong khoảng 1.5V đến 30V. - Dòng đáp ứng tối đa là 3A.

- Hiệu suất: 92% - Công suất: 15W

- Kích thước: 45 (dài) * 20 (rộng) * 14 (cao) mm

Module có 2 đầu vào IN, OUT, 1 biến trở để chỉnh áp đầu ra. Khi cấp điện 12V 3A từ nguồn Adapter cho đầu vào (IN) thì người dùng vặn biến trở và dùng VOM để đo mức áp ở đầu ra (OUT) để đạt mức điện áp 4.2 để cấp cho module sim800L.

3.2.4 Khối Module RFID-RC522

a) Chuẩn giao tiếp SPI và cách kết nối

Giao tiếp ngoại vi nối tiếp (SPI) là một loại giao thức kiểu Master – Slave cung cấp một giao diện đơn giản và chi phí thấp giữa vi điều khiển và các thiết bị ngoại vi của nó. SPI là một kiểu truyền thơng nối tiếp kiểu đồng bộ tức là nó sử dụng tín hiệu đồng hồ chuyên dụng để đồng bộ hóa bộ phát và bộ thu hoặc Master và Slave. Bộ phát và bộ thu được kết nối với dữ liệu riêng biệt và tín hiệu đồng hồ sẽ giúp bộ thu khi tìm kiếm dữ liệu trên bus.

Đối với giao tiếp khoảng cách ngắn, giao tiếp nối tiếp đồng bộ sẽ là lựa chọn tốt hơn và trong đó giao tiếp ngoại vi nối tiếp hoặc SPI nói riêng là lựa chọn tốt nhất. Khi chúng ta nói truyền thơng khoảng cách ngắn, nó thường có nghĩa là giao tiếp với một thiết bị hoặc giữa các thiết bị trên cùng một board mạch in (PCB).

Trong giao thức SPI, các thiết bị được kết nối trong một mối quan hệ Master – Slave trong một giao diện đa điểm. Trong loại giao diện này, một thiết bị được coi là Master của bus (thường là một vi điều khiển) và tất cả các thiết bị khác (IC ngoại vi hoặc thậm chí các vi điều khiển khác) đều được coi là Slave.

Hình 3.2 Phương thức giao tiếp SPI

Trong giao thức SPI, có thể chỉ có một thiết bị Master nhưng nhiều thiết bị Slave. Bus SPI bao gồm 4 tín hiệu hoặc chân, ta có thể thấy rõ trên hình 3.7. Chúng là:

- Master - Out/Slave - In (MOSI hay SI): Cổng ra của bên Master, cổng vào của bên Slave, dành cho việc truyền dữ liệu từ thiết bị Master đến thiết bị Slave .

- Master – In / Slave – Out (MISO hay SO): Cổng vào của bên Master, cổng ra của bên Slave, dành cho việc truyền dữ liệu từ thiết Slave đến thiết bị Master.

- Serial Clock (SCK hay SCLK): Xung giữ nhịp cho giao tiếp SPI - Chip Select (CS) hay Slave Select (SS): Chọn chip.

b) Kết nối module RFID-RC522 với Arduino mega 2560 qua giao tiếp SPI Ta sử dụng 7 chân của module RFID để kết nối:

o Chân SDA nối với chân 53

o Chân SCK nối với chân 52

o Chân MOSI nối với chân 51

o Chân MISO nối với chân 50

o Chân GND nối với chân GND

o Chân RST nối với chân 49

o Chân VCC nối với chân 3.3V của Arduino.

3.2.5 Khối ma trận bàn phím 4x4

Kết nối 8 chân của ma trận bàn phím với 8 chân của Arduino Mega 2560 (như hình 3.8).

Hình 3.1 Hình ảnh thực tế của bàn phím ma trận 4x4

Chân quét các cột:

- Chân C1 nối với chân số 25. - Chân C2 nối với chân số 24. - Chân C3 nối với chân số 23.

- Chân C4 nối với chân số 22.

Chân quét các hàng.

- Chân R1 nối với chân 29. - Chân R2 nối với chân 27. - Chân R3 nối với chân 28. - Chân R4 nối với chân 26. (adsbygoogle = window.adsbygoogle || []).push({});

3.2.6 Khối nguồn

a) Nguồn

- Ta sử dụng nguồn 5V từ USB để cấp cho vi xử lý Arduino Mega. - Nguồn 12V giảm áp xuống còn 4.2V cấp cho module sim 800L - Nguồn 12V để cấp cho khóa điện.

- Nguồn Pin 9V để làm nguồn dự phòng khi mất điện.

Hình 3.3 Nguồn pin 9V dự phịng

Hình 3.4 Dây cáp cấp nguồn cho Arduino

Mạch chuyển đổi nguồn dự phịng XH-M350 12V 150W (có thể thấy trong hình 3.12) cũng là một trong những Module nguồn (mạch nguồn) được sử dụng để chuyển giữa hai nguồn chính (các nguồn adapter lấy ra trực tiếp từ điện lưới) và phụ (bình tích điện, acquy, pin , …). Khi xảy ra trường hợp nguồn chính mất điện (do cúp điện, hư hỏng, …) mạch tự động chuyển sang nguồn phụ để tiếp tục hoạt động, mạch sử dụng điện áp 12VDC, thích hợp cho các ứng dụng cần nguồn pin dự phịng 12VDC .

Mạch có thiết kế nhỏ gọn, dễ dàng lắp đặt, đấu nối. Mạch ra trực tiếp 2 cổng cấp nguồn cho tải. Mạch được sử dụng cho nhiều ứng dụng: Khóa cửa thơng minh, hệ thống camera, hệ thống cảnh báo chống trộm, máy tính, mạng…

Thông số kỹ thuật:

- Điện áp hoạt động: 12VDC - Công suất đầu ra tối đa: 150W

- Kích thước: 54 x 26.6 x 17.3mm (dài x rộng x cao) - Trọng lượng: 29g

3.2.7 Khối chấp hành

a) Relay 12V

Hình 3.6 Hình ảnh relay thực tế

Relay là thiết bị đóng cắt cơ bản, nó được sử dụng rất nhiều trong cuộc sống và trong các thiết bị điện tử.

Cấu tạo Relay gồm 2 phần + Cuộn hút:

- Tạo ra năng lượng từ trường để hút các tiếp điểm về phía mình

- Tùy vào điện áp làm việc người ta chia Relay ra DC: 5V, 12V, 24V- AC:110V, 220V

+ Cặp tiếp điểm

- Khi khơng có từ trường. Tiếp điểm 1 được tiếp xúc với 2 nhờ lực của lị xo. Tiếp điểm thường đóng

- Khi có năng lượng từ trường thì tiếp điểm 1 bị hút sang tiếp điểm 3 + Cách đấu nối:

- Đấu chung chân dương và chân âm của relay với bo mạch xử lý - Chân S đấu vào chân số 10. Chân nhận tín hiệu kích

- Chân ỌN đấu với nguồn dương, và đấu nối tiếp với khóa điện , một đầu cịn lại đấu vào chân COM.

b) Khóa điện tử 12V

Hình 3.7 Khóa điện 12V

trong nhà thơng minh hoặc các loại tủ, cửa phịng, cửa kho… khóa sử dụng điện áp 12VDC, là loại thường đóng (cửa đóng) với chất lượng tốt, độ bền cao. Khóa chốt điện từ này có thể sử dụng chung với các mạch chức năng tạo thành một hệ thống thông minh.

Thông số kỹ thuật

- Vật liệu: Thép không gỉ - Nguồn điện: 12V DC - Dòng điện làm việc: 0.8A - Công suất: 9.6W

- Yêu cầu nguồn cấp: 12VDC/1A - Kích thước: L54xD38xH28 (adsbygoogle = window.adsbygoogle || []).push({});

3.2.8 Chống nhiễu cho Arduino

a) Thực nghiệm mơ hình

Qua quá trình vận hành và chạy thử nghiệm em nhận thấy rằng: Nếu thực hiện đóng mở cửa liên tục sẽ gây ra tình trạng nhiễu và lác cho con vi xử lý Ardiuno.

Nguyên nhân: Khi có lệnh đóng mở relay, relay khi đóng sẽ phát sinh phát quang hay phát tia lửa điện làm tín hiệu truyền về Arduino bị nhiễu.

Giải pháp: Em đã sử dụng linh kiện Tip 41C để thay cho relay.

Kết quả: Thực hiện đóng mở cửa liên tục bằng các cách khác nhau, khơng nhận thấy tình trạng nhiễu.

b) Giới thiệu về Tip 41C

TIP41C (như Hình 3.15) là transistor công suất NPN trong package TO-220 nên thiết bị này phù hợp với các ứng dụng về âm thanh, cơng suất tuyến tính và chuyển đổi switching.

Đặc tính của transistor lưỡng cực TIP41C: - Loại - NPN

- Điện áp Collector-Emitter: 100 V - Điện áp Collector-Base: 100 V - Điện áp Emitter-Base: 5 V - Dòng Collector: 6 A

- Công suất tiêu tán Collector - 65 W - Mức tăng dòng DC (hfe) - 15 đến 75 - Tần số chuyển đổi - 3 MHz

CHƯƠNG IV THI CÔNG HỆ THỐNG 4.1 Lưu đồ giải thuật

SAI SAI SAI SAI Đúng Đúng Đúng Đúng

Hình 4.1 Lưu đồ giải thuật

Khởi động vi xử lý trung tâm, module sim 800l, cảm biến vân tay,màn hình LCD,

Module RFUD,tốc độ truyền thơng. Tốc độ tru KHÓA CỬA MỞ TRONG 10S VÀ ĐÓNG LẠI Đúng UID QUÉT VÂN TAY TỪ AS608 NHẬP MẬT KHẨU TỪ BÀN PHÍM NHẬN CUỘC GỌI TỪ SỐ ĐIỆ NHẬP MẬT QUÉT THẺ QUA MODULE RFID Đúng số chủ nhà không CHỦ NHÀ KHÔNG Mật khẩu đúng Nhập vân tay đúng BẮT ĐẦU

4.2 Giới thiệu phần mềm lập trình ARDUINO IDE

Arduino IDE là phần mềm giúp ta lập trình cho các dịng sản phẩm của Arduino như Arduino Uno, Arduino Mega, nano,.. Lập trình trên Arduino IDE là cách tiếp cận đơn giản cho những người đam mê điện tử và muốn tạo ra những sản phẩm nhúng ấn tượng mà không cần quá nhiều kiến thức chuyên sâu về điện tử. Mơi trường phát triển tích hợp Arduino IDE là một ứng dụng đa nền tảng được viết bằng Java.

Hình 4.1 Giao diện phần mềm lập Arduino IDE

Giao diện của phần mềm Arduino IDE (như hình 4.2) có nhiều phần, tuy nhiên chúng ta chú ý đến những phần quan trọng như được nêu ra trong hình trên. Chức năng của từng phần như sau:

+ Nút kiểm tra chương trình

Dùng để kiểm tra xem chương trình được viết có lỗi khơng. Nếu chương trình bị lỗi thì phần mềm Arduino IDE sẽ hiển thị thông tin lỗi ở vùng thơng báo thơng tin.

+ Nút nạp chương trình xuống bo Arduino

Dùng để nạp chương trình được viết xuống mạch Arduino. Trong quá trình nạp, chương trình sẽ được kiểm tra lỗi trước sau đó mới thực hiện nạp xuống mạch Arduino.

+ Hiển thị màn hình giao tiếp với máy tính

Khi nhấp vào biểu tượng cái kính lúp thì phần giao tiếp với máy tính sẽ được mở ra. Phần này sẽ hiển thị các thông số mà người dùng muốn đưa lên màn hình. Muốn đưa

lên màn hình phải có lệnh Serial.print() mới có thể đưa thơng số cần hiển thị lên màn hình

+ Vùng lập trình

Vùng này để người lập trình thực hiện việc lập trình cho chương trình của mình. + Vùng thơng báo thơng tin:

Có chức năng thơng báo các thơng tin lỗi của chương trình hoặc các vấn đề liên quan đến chương trình được lập. (adsbygoogle = window.adsbygoogle || []).push({});

+ Sử dụng một số menu thơng dụng trên phần mềm Arduino IDE

Có vài menu trong phần mềm IDE, tuy nhiên thông dụng nhất vẫn là menu File, ngồi những tính năng như mở một file mới hay lưu một file, phần menu này có một mục đáng chú ý là Example. Phần Example (ví dụ) đưa ra các ví dụ sẵn để người lập trình có thể tham khảo, giảm bớt thời gian lập trình.

4.3 Lập trình code và nạp cho vi điều khiển 4.3.1 Đăng ký dấu vân tay cho cảm biến AS608 4.3.1 Đăng ký dấu vân tay cho cảm biến AS608

Để đăng ký dấu vân tay và lưu vào bộ nhớ của cảm biến vân tay ta cần tài thư viện #include <Adafruit_Fingerprint.h> về để lập trình.

Kết nối cảm biến với vi xử lý và bật màn hình giao tiếp Serial để biết thơng tin. Tiến hành nạp code. (Nội dung code và chú thích em có đính kèm ở phần phụ lục cuối cùng của đồ án)

4.3.2 Xóa dấu vân tay trong bộ nhớ của AS608

Code:

#include <Adafruit_Fingerprint.h>

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&Serial2);

void setup() {

Serial.begin(57600);

while (!Serial); // For Yun/Leo/Micro/Zero/... delay(100);

Serial.println("\n\nDelete Finger");

// set the data rate for the sensor serial port finger.begin(57600);

if (finger.verifyPassword()) {

Serial.println("Found fingerprint sensor!"); } else {

Serial.println("Did not find fingerprint sensor :("); while (1); } } uint8_t readnumber(void) { uint8_t num = 0; while (num == 0) { while (! Serial.available()); num = Serial.parseInt(); }

}

void loop() // run over and over again {

Serial.println("Please type in the ID # (from 1 to 127) you want to delete..."); uint8_t id = readnumber();

if (id == 0) {// ID #0 not allowed, try again! return; } Serial.print("Deleting ID #"); Serial.println(id); deleteFingerprint(id); }

uint8_t deleteFingerprint(uint8_t id) { uint8_t p = -1; p = finger.deleteModel(id); if (p == FINGERPRINT_OK) { Serial.println("Deleted!"); } else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Communication error"); return p; } else if (p == FINGERPRINT_BADLOCATION) { Serial.println("Could not delete in that location"); return p;

} else if (p == FINGERPRINT_FLASHERR) { Serial.println("Error writing to flash"); return p;

} else {

Serial.print("Unknown error: 0x"); Serial.println(p, HEX); return p;

} }

4.3.3 Nạp code cho Ardiuno Mega 2560

Tiến hành kết nối:cảm biến vân tay, module RFID, ma trận phím , relay với ardiuno mega 2560.

(Phần code là chú thích em có đính kèm ở dưới)

Sau khi nạp code ta tiến hành nhập mật khẩu từ 1>8, ấn vân tay và quẹt thẻ RFID. Bật màn hình Serial lên và xem kết quả. (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Đồ án tốt nghiệp: “THIẾT KẾ KHÓA CỬA THÔNG MINH ĐA NĂNG DỰA TRÊN ARDUINO” (Trang 52)