- Vật liệu được sử dụng
- Mô-đun đọc RFID EM18
- Tìm ra thẻ RFID Mã 12 chữ số duy nhất bằng Arduino
- Sơ đồ mạch
- Mô-đun cảm biến vân tay
- Lập trình cho đánh lửa không cần chìa khóa RFID
Ngày nay hầu hết xe ô tô đều có hệ thống khởi động bằng nút bấm và ra vào không cần chìa khóa, trong đó bạn chỉ cần mang theo chìa khóa trong túi và chỉ cần đặt ngón tay vào cảm biến điện dung trên tay nắm cửa để mở cửa xe. Ở đây trong dự án này, chúng tôi sẽ bổ sung thêm một vài tính năng bảo mật cho hệ thống này bằng cách sử dụng RFID và cảm biến vân tay. Cảm biến RFID sẽ xác nhận giấy phép của người dùng và cảm biến vân tay sẽ chỉ cho phép người có thẩm quyền trên xe.
Đối với Hệ thống đánh lửa trên ô tô dựa trên dấu vân tay này, chúng tôi đang sử dụng Arduino với cảm biến vân tay R305 và đầu đọc RFID EM18.
Vật liệu được sử dụng
- Arduino Nano
- Cảm biến vân tay R305
- Đầu đọc RFID EM18
- 16 * 2 LCD chữ và số
- Động cơ DC
- IC điều khiển động cơ L293D
- Veroboard hoặc Breadboard (Tùy theo cái nào có sẵn)
- Kết nối dây
- Pin DC 12V
Mô-đun đọc RFID EM18
RFID là viết tắt của nhận dạng tần số Radio. Nó đề cập đến một công nghệ, nơi dữ liệu kỹ thuật số được mã hóa trong các thẻ RFID và chúng có thể được giải mã bởi một đầu đọc RFID sử dụng sóng vô tuyến. RFID tương tự như mã vạch trong đó dữ liệu từ thẻ được giải mã bởi một thiết bị. Công nghệ RFID được sử dụng trong các ứng dụng khác nhau như Hệ thống an ninh, Hệ thống chấm công nhân viên, Khóa cửa RFID, Máy bỏ phiếu dựa trên RFID, Hệ thống thu phí, v.v.
EM18 Reader là một mô-đun có thể đọc thông tin ID được lưu trữ trong các thẻ RFID. Các thẻ RFID lưu trữ một số duy nhất gồm 12 chữ số có thể được giải mã bởi mô-đun đầu đọc EM18, khi thẻ nằm trong phạm vi với Trình đọc. Mô-đun này hoạt động ở tần số 125 kHz, có một ăng-ten gắn sẵn và nó được vận hành bằng nguồn điện một chiều 5 volt.
Nó cung cấp đầu ra dữ liệu nối tiếp và có phạm vi từ 8-12 cm. Các tham số giao tiếp nối tiếp là 8 bit dữ liệu, 1 bit dừng và tốc độ truyền 9600.
Các tính năng của EM18:
- Điện áp hoạt động: + 4,5V đến + 5,5V DC
- Tiêu thụ hiện tại: 50mA
- Tần số hoạt động: 125KHZ
- Nhiệt độ hoạt động: 0-80 độ C
- Tốc độ truyền thông tin liên lạc: 9600
- Khoảng cách đọc: 8-12 cm
- Antenna: Có sẵn
Sơ đồ chân EM18:
Ghim mô tả:
VCC: Ngõ vào điện áp DC 4,5- 5V
GND: Chân nối đất
Bộ rung: Bộ rung hoặc chân LED
TX: Chân truyền dữ liệu nối tiếp của EM18 cho RS232 (Đầu ra)
SEL: Giá trị này phải CAO khi sử dụng RS232 (THẤP nếu sử dụng WEIGAND)
Dữ liệu 0: Dữ liệu WEIGAND 0
Dữ liệu 1: Dữ liệu WEIGAND 1
Để tìm hiểu thêm về RFID và thẻ, hãy kiểm tra các dự án dựa trên RFID trước đây của chúng tôi.
Tìm ra thẻ RFID Mã 12 chữ số duy nhất bằng Arduino
Trước khi lập trình Arduino cho hệ thống đánh lửa ô tô Arduino, trước tiên, chúng ta cần tìm ra mã duy nhất của thẻ RFID 12 chữ số. Như chúng ta đã thảo luận trước đây, thẻ RFID chứa mã duy nhất 12 chữ số và nó có thể được giải mã bằng cách sử dụng đầu đọc RFID. Khi chúng ta vuốt thẻ RFID gần Đầu đọc, Đầu đọc sẽ cung cấp các mã duy nhất thông qua cổng nối tiếp đầu ra. Đầu tiên, kết nối Arduino với đầu đọc RFID theo sơ đồ mạch và sau đó tải mã đã cho bên dưới lên Arduino.
int count = 0; thẻ_không; void setup () {Serial.begin (9600); } void loop () {if (Serial.available ()) {count = 0; while (Serial.available () && count <12) {card_no = Serial.read (); tính ++; chậm trễ (5); } Serial.print (card_no); }}
Sau khi tải mã lên thành công, hãy mở màn hình nối tiếp và đặt tốc độ truyền là 9600. Sau đó, quẹt thẻ gần Đầu đọc. Sau đó, mã 12 chữ số sẽ bắt đầu hiển thị trên màn hình nối tiếp. Thực hiện quy trình này cho tất cả các thẻ RFID đã sử dụng và ghi lại nó để tham khảo trong tương lai.
Sơ đồ mạch
Sơ đồ mạch cho Hệ thống đánh lửa dựa trên vân tay này được đưa ra dưới đây:
Trong trường hợp của tôi, tôi đã hàn mạch hoàn chỉnh trên bảng mạch hoàn thiện như hình dưới đây:
Mô-đun cảm biến vân tay
Mô-đun cảm biến vân tay hoặc Máy quét vân tay là một mô-đun ghi lại hình ảnh in của ngón tay và sau đó chuyển đổi nó thành mẫu tương đương và lưu chúng vào bộ nhớ của nó trên ID (vị trí) được chọn bởi Arduino. Ở đây, tất cả quá trình được Arduino chỉ huy như lấy hình ảnh của dấu vân tay, chuyển đổi nó thành các mẫu và lưu trữ vị trí, v.v.
Trước đây, chúng tôi đã sử dụng cùng một cảm biến R305 để xây dựng máy bỏ phiếu, hệ thống chấm công, hệ thống an ninh, v.v. Bạn có thể kiểm tra tất cả các dự án dựa trên dấu tay tại đây.
Đăng ký Vân tay vào Cảm biến:
Trước khi tiến hành chương trình, chúng ta cần cài đặt các thư viện cần thiết cho cảm biến vân tay. Ở đây chúng tôi đã sử dụng “ Adafruit_Fingerprint.h ” để sử dụng cảm biến vân tay R305. Vì vậy, trước hết hãy tải xuống thư viện bằng liên kết dưới đây:
- Thư viện cảm biến vân tay Adafruit
Sau khi tải xuống thành công, Trong Arduino IDE, đi tới Tệp > Công cụ> Bao gồm thư viện> Thêm thư viện.zip và sau đó chọn vị trí tệp zip để cài đặt thư viện.
Sau khi cài đặt thư viện thành công, hãy làm theo các bước dưới đây để đăng ký một vân tay mới trong bộ nhớ cảm biến.
1. Trong Arduino IDE, đi tới Tệp > Ví dụ > Thư viện cảm biến vân tay Adafruit > Đăng ký.
2. Tải mã lên Arduino và mở màn hình nối tiếp với tốc độ truyền là 9600.
Quan trọng: Thay đổi chân nối tiếp Phần mềm trong chương trình thành SoftwareSerial mySerial (12, 11).
3. Bạn nên nhập ID cho vân tay mà bạn muốn lưu trữ vân tay của mình. Vì đây là dấu vân tay đầu tiên của tôi, tôi đã nhập 1 ở góc trên cùng bên trái, sau đó nhấp vào nút Gửi.
4. Sau đó đèn trên cảm biến vân tay sẽ nhấp nháy cho biết bạn nên đặt ngón tay của mình lên cảm biến và sau đó làm theo các bước hiển thị trên màn hình nối tiếp cho đến khi nó xác nhận bạn đã đăng ký thành công.
Lập trình cho đánh lửa không cần chìa khóa RFID
Mã hoàn chỉnh cho Hệ thống đánh lửa sinh trắc học này được đưa ra ở cuối hướng dẫn. Ở đây chúng tôi đang giải thích một số phần quan trọng của mã.
Điều đầu tiên là bao gồm tất cả các thư viện cần thiết. Ở đây trong trường hợp của tôi, tôi đã bao gồm “ Adafruit_Fingerprint.h ” để sử dụng cảm biến vân tay R305. Sau đó, cấu hình cổng nối tiếp mà cảm biến vân tay sẽ được kết nối. Trong trường hợp của tôi, tôi đã khai báo 12 là Chân RX và 11 là chân TX.
#include #include
Trong bước tiếp theo, khai báo tất cả các biến, các biến này sẽ được sử dụng trong toàn bộ mã. Sau đó xác định các chân kết nối LCD với Arduino tiếp theo là khai báo một đối tượng của lớp LiquidCrystal .
đầu vào char; int count = 0; int a = 0; const int rs = 6, en = 7, d4 = 2, d5 = 3, d6 = 4, d7 = 5; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
Tiếp theo, bên trong vòng lặp (), mã được viết để lấy mã 12 chữ số duy nhất của các thẻ RFID và chúng được lưu trữ trong một mảng. Tại đây, các phần tử của mảng sẽ được đối sánh với các mã duy nhất được lưu trữ trong bộ nhớ, để lấy thông tin chi tiết về người được xác thực.
đếm = 0; while (Serial.available () && count <12) { input = Serial.read (); tính ++; chậm trễ (5); }
Sau đó, mảng đã nhận được so sánh với các mã thẻ được lưu trữ. Nếu mã được khớp, thì giấy phép được coi là hợp lệ, cho phép người dùng đặt dấu vân tay hợp lệ. Nếu không, nó sẽ hiển thị một giấy phép không hợp lệ.
if ((strncmp (input, "3F009590566C", 12) == 0) && (a == 0)) { lcd.setCursor (0, 0); lcd.print ("Giấy phép Hợp lệ"); lcd.setCursor (0, 1); lcd.print ("Chào mừng"); chậm trễ (1000); a = 1; dấu vân tay (); }
Trong bước tiếp theo, hàm getFingerprintID được viết sẽ trả về một ID vân tay hợp lệ cho một vân tay đã được đăng ký.
int getFingerprintID () { uint8_t p = finger.getImage (); if (p! = FINGERPRINT_OK) trả về -1; p = ngón tay.image2Tz (); if (p! = FINGERPRINT_OK) trả về -1; p = finger.fingerFastSearch (); if (p! = FINGERPRINT_OK) trả về -1; trả lại finger.fingerID; }
Hàm Inside function () , được gọi sau khi đối sánh RFID thành công, hàm getFingerprintID được gọi để lấy ID vân tay hợp lệ. Sau đó, nó được so sánh bằng cách sử dụng vòng lặp if-else để lấy thông tin liên quan đến dữ liệu người được xác thực và nếu dữ liệu khớp với nhau, thì chiếc xe sẽ được kích hoạt, nếu không, nó sẽ nhắc đến dấu vân tay sai.
intprintID = getFingerprintID (); chậm trễ (50); if ( FingerID == 1) { lcd.setCursor (0, 0); lcd.print ("Đã cấp quyền truy cập"); lcd.setCursor (0, 1); lcd.print ("Xe Đã Khởi động"); digitalWrite (9, CAO); digitalWrite (10, THẤP); trong khi (1); }
Vì vậy, đây là cách hoạt động của Hệ thống đánh lửa trên ô tô RFID này, bổ sung thêm hai lớp bảo mật cho ô tô của bạn.
Mã hoàn chỉnh và video trình diễn được cung cấp bên dưới.