1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án thiết kế, chế tạo phần cứng thiết bị điểm danh lớp thực hành bằng cảm biến vân tay

80 24 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đồ án thiết kế, chế tạo phần cứng thiết bị điểm danh lớp thực hành bằng cảm biến vân tay
Tác giả Trần Đình Linh
Người hướng dẫn Nguyễn Thị Thắm
Trường học Trường đại học Sư phạm Kỹ thuật Hưng Yên
Chuyên ngành Khoa Điện –Điện Tử
Thể loại đồ án tốt nghiệp
Năm xuất bản 2022
Thành phố Hưng Yên
Định dạng
Số trang 80
Dung lượng 1,31 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • Chương 1 Tổ ng quan v ề đề tài (8)
    • 1.1 Gi ớ i thi ệ u v ề đề tài (8)
    • 1.2 M ục đính nghiên cứ u (8)
    • 1.3 Giới hạn đề tài (9)
    • 1.4 Phương pháp và phương tiệ n nghiên c ứ u (9)
      • 1.4.1 Phương pháp nghiên cứ u (9)
      • 1.4.2 Phương tiệ n (9)
  • Chương 2 Cơ sở lý thuy ế t (10)
    • 2.1 Giới thiệu về arduino (10)
      • 2.1.1 Khái niệm về arduino (10)
      • 2.1.2 Arduino uno R3 (10)
      • 2.2.2 Năng lượ ng (0)
      • 2.2.3 B ộ nh ớ (13)
      • 2.2.4 Công c ụ l ậ p trình (13)
    • 2.2 Module RFID RC522 (15)
      • 2.2.1 T ổ ng quan v ề RFID RC522 (15)
      • 2.2.2 Chi ti ế t c ấ u hình chân RC522 (16)
      • 2.2.3 Các đặ c tính RC522 (16)
      • 2.2.4 Ứ ng d ụ ng module RFID RC522 (17)
      • 2.2.5 T ổ ch ứ c vùng nh ớ th ẻ t ừ (17)
      • 2.2.6 Chu ẩ n giao ti ế p spi (17)
    • 2.3 C ả m bi ế n vân tay (19)
      • 2.3.1 T ổ ng quan v ề c ả m bi ế n vân tay (19)
      • 2.3.2 C ả m bi ế n As 608 (20)
    • 2.4 M ạ ch chuy ển đổ i I2C (22)
    • 2.5 Stm32f103 (23)
      • 2.5.1 Gi ớ i thi ệ u v ề h ọ stm (23)
      • 2.5.2 Kit stm32f103 (24)
    • 2.6 ESP 8266 (26)
      • 2.6.1 T ổ ng quan v ề ESP 8266 (26)
      • 2.6.2 Thông s ố kĩ thuậ t (28)
    • 2.7 Module ds1307 và chuẩn giao tiếp I2C (28)
      • 2.7.1 Module ds1307 (28)
      • 2.7.2 Giao thức i2c (29)
    • 2.8 LCD 20x4 (32)
    • 2.9 Chuẩn giao tiếp UART (33)
    • 2.10 Cấu hình CUBE MX cho mạch (35)
  • Chương 3 Thiế t k ế ch ế t ạ o (49)
    • 3.2 Nguyên lý m ạ ch (42)
    • 3.3 Sơ đồ m ạ ch in và b ố trí linh ki ệ n (43)
    • 3.3 Lưu đồ thu ậ t toán (45)
    • 3.4 H ình ảnh hoàn thiện (48)
  • Chương 4 Kế t lu ận và hướ ng phát tri ển (0)
    • 4.1 Kêt lu ậ n (49)
    • 4.2 Hướ ng phát tri ển đề tài (49)

Nội dung

Nhận thấy nhu cầu quản lý thường hay có nhiều hình thức xảy ra như điểm danh chấm công cho nhân viên, hay điểm danh trong trường hợp đột xuất trong các cuộc họp, kiểm soát khách tham qu

Tổ ng quan v ề đề tài

Gi ớ i thi ệ u v ề đề tài

Trong bối cảnh các ngành khoa học kỹ thuật ngày càng phát triển mạnh mẽ, kỹ thuật tự động điều khiển chiếm vai trò then chốt trong mọi lĩnh vực: khoa học kỹ thuật, quản lý, công nghiệp và cung cấp thông tin Là sinh viên ngành Điện tử, chúng ta phải nắm bắt và vận dụng hiệu quả kỹ thuật tự động điều khiển để góp phần vào sự tiến bộ của nền khoa học kỹ thuật thế giới nói chung và kỹ thuật điện tử nói riêng, đồng thời thúc đẩy sự phát triển của nền kinh tế nước nhà.

Trường học là môi trường rèn luyện kỷ luật cao nhằm phát triển những tài năng cho đất nước, vì vậy ý thức tự giác của sinh viên trong học tập cần được nâng cao Tuy nhiên vẫn tồn tại tình trạng gian lận trong học đường như nhờ học hộ, điểm danh hộ và thi hộ, gây ảnh hưởng tới chất lượng giảng dạy và kết quả học tập của nhà trường Để bảo đảm chất lượng giáo dục và công bằng, cần tăng cường giáo dục ý thức đạo đức học đường, siết chặt quản lý thi cử, ứng dụng công nghệ và biện pháp kiểm soát phù hợp, đồng thời khuyến khích sự tham gia tích cực của sinh viên và giảng viên trong việc xây dựng một môi trường học tập trung thực, kỷ luật và hiệu quả.

Một trong những giải pháp hiệu quả được nhiều trường áp dụng để loại bỏ tiêu cực trong việc điểm danh là sử dụng máy điểm danh bằng quẹt thẻ RFID và quét vân tay Hệ thống điểm danh này hỗ trợ giáo viên quản lý và nắm bắt tình trạng tham gia học tập của sinh viên ở từng tiết học một cách chính xác nhất, từ đó nâng cao tính chuyên nghiệp và hiệu quả quản lý nhà trường Đặc biệt, việc điểm danh cho sinh viên bằng hai phương pháp trên cho phép sinh viên chủ động quản lý thời gian học tập và đi học đúng quy định của trường Việc xác nhận vân tay chỉ cần một lần duy nhất sẽ làm cho quá trình điểm danh nhanh chóng, tiện lợi, tiết kiệm thời gian và tăng tính chính xác Từ những yêu cầu thực tế, nhóm chọn đề tài: “Thiết kế và thi công hệ thống điểm danh sinh viên sử dụng hai phương pháp quẹt thẻ RFID và quét vân tay.”

M ục đính nghiên cứ u

Đồ án được nghiên cứu, khảo sát và thực hiện nhằm áp dụng những kiến thức đã học trong nhà trường để thiết kế và triển khai một hệ thống điểm danh sinh viên với hai phương pháp xác thực: quẹt thẻ RFID và quét vân tay Hệ thống này tăng tính thuận tiện và độ chính xác trong quản lý điểm danh, đồng thời chứng minh việc vận dụng kiến thức công nghệ thông tin và an ninh dữ liệu vào thực tiễn tại trường học.

Mạch điều khiển dùng chip Stm32 và chip Arduino để xử lý

Giới hạn đề tài

Trong giới hạn thời gian cho phép của đề tài này và những kiến thức có được trong suốt quá trình học, chúng ta không thể thực hiện được một sản phẩm hoàn thiện nhất Vì vậy, nhóm chúng em chỉ tập trung vào những vấn đề trọng yếu sau để đảm bảo tính khả thi và chất lượng của nghiên cứu.

Dùng Board Arduino và Stm32 để làm trung tâm điều khiển toàn bộ hệ thống Module RFID RC522 để quẹt thẻ từ

Module AS 608 dùng đề quét vân tay

Module ESP8266 để kết nối mạng để gửi danh sách điểm danh lên gg sheet Module DS1307 dùng để gửi danh sách điểm danh theo ca

Mạch điều khiển dùng chip Stm32 và chip Arduino để xử lý

Màn hình LCD 20x4 để hiện thị

Mạch chạy ổn định trong toàn bộ quá trình.

Phương pháp và phương tiệ n nghiên c ứ u

Kết hợp giữa lý thuyết và thực nghiệm:

Ngay sau khi nhận đề tài, nhóm tập trung tìm hiểu các vấn đề liên quan và xác định yêu cầu nghiên cứu Sau đó, nhóm tiến hành lập trình mô phỏng và chế tạo mạch để kiểm tra thực tế các khía cạnh đã được xác định Trong quá trình vận hành và kiểm tra thực tế, nhóm ghi nhận các lỗi và hạn chế gặp phải, từ đó chỉnh sửa và phát triển thêm các ý tưởng nhằm hoàn thiện hệ thống.

Phương pháp quan sát: khảo sát một số mạch điện thực tế đang có trên thị trường và tham khảo thêm một số dạng mạch từ mạng Internet

Phương pháp tham khảo tài liệu: bằng cách thu thập thông tin từ sách, tạp chí vềđiện tử và truy cập từ mạng Internet

Phần mềm biên dịch chương trình Keilc, IDE arduino, phần mềm thiết lập cơ bản CUBE MX, phần mềm thiết kế mạch Altium, phần mềm mô phỏng Proteus

Các giáo trình điện tửđã được học, tài liệu và các thảo luận trên Internet

1.5 Ý nghĩa thực tiễn Ý nghĩa thực tiễn của đề tài giúp giáo viên quản lý và nắm bắt tình trạng học sinh một cách chính xác nhất và sẽ giúp cho sinh viên có thể chủđộng thời gian học tập và tới lớp của mình theo đúng quy định của nhà trường

Cơ sở lý thuy ế t

Giới thiệu về arduino

Arduino là nền tảng mã nguồn mở phổ biến dành cho xây dựng các dự án điện tử, kết hợp một bảng mạch lập trình (vi điều khiển) với IDE – môi trường phát triển tích hợp chạy trên máy tính Nền tảng này cho phép người dùng viết mã và tải mã lên bo mạch dễ dàng, tối ưu hóa quá trình thiết kế, thử nghiệm và triển khai các dự án từ mức cơ bản đến phức tạp.

Nền tảng Arduino đang trở nên phổ biến giữa người mới bắt đầu với điện tử và các thiết bị liên quan Khác với hầu hết các bo mạch vi điều khiển trước đây, Arduino không đòi hỏi phần cứng riêng để nạp mã mới lên bo mạch; bạn chỉ cần dùng cáp USB để nạp chương trình Arduino IDE sử dụng một phiên bản đơn giản của ngôn ngữ C++, giúp việc học và viết mã dễ tiếp cận hơn cho người dùng Bên cạnh đó, Arduino cung cấp một mẫu chuẩn, hỗ trợ dễ tiếp cận các chức năng của bộ vi điều khiển và tăng tốc quá trình phát triển ứng dụng.

Hình 2.2 Vi điều khiển trên board uno

Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu, hoạt động ở hai mức điện áp 0V và 5V với dòng tối đa 40mA cho mỗi chân Trên mỗi chân có thể kích hoạt điện trở kéo lên nội bộ (pull-up) được tích hợp trong vi điều khiển ATmega328, tuy nhiên ở trạng thái mặc định các điện trở này không được nối.

- Một số chân digital có các chức năng đặc biệt như sau:

Vi điều khiển ATmega328 họ 8bit Điện áp hoạt động 5V DC (chỉđược cấp qua cổng USB)

Tần số hoạt động 16 MHz

Dòng tiêu thụ khoảng 30mA Điện áp vào khuyên dùng 7-12V DC Điện áp vào giới hạn 6-20V DC

Số chân Digital I/O 14 (6 chân hardware PWM)

Số chân Analog 6 (độ phân giải 10bit)

Dòng tối đa trên mỗi chân

Dòng ra tối đa (5V) 500 mA

Dòng ra tối đa (3.3V) 50 mA

Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bởi bootloader

Hai chân Serial trên Arduino Uno (pin 0 RX và pin 1 TX) được dùng để gửi (TX) và nhận (RX) dữ liệu TTL Serial, cho phép Arduino giao tiếp với các thiết bị khác thông qua Serial Kết nối Bluetooth thường được hiểu là kết nối Serial không dây, tận dụng đúng giao thức này để trao đổi dữ liệu Nếu không cần giao tiếp Serial, nên chưa sử dụng hai chân này để tránh xung đột và tiết kiệm nguồn lực khi làm việc với các module khác.

Các chân PWM trên Arduino là 3, 5, 6, 9, 10 và 11, cho phép xuất xung PWM với độ phân giải 8-bit Giá trị PWM từ 0 đến 255 tương ứng với điện áp từ 0V đến 5V khi được thiết lập bằng hàm analogWrite() Nói ngắn gọn, các chân PWM này cho phép điều chỉnh điện áp đầu ra từ 0V đến 5V, thay vì chỉ ở mức cố định 0V và 5V như ở một số chân khác.

Chân giao tiếp SPI gồm 4 chân chính: pin 10 (SS), pin 11 (MOSI), pin 12 (MISO) và pin 13 (SCK) Ngoài chức năng cơ bản, bốn chân này được dùng để truyền dữ liệu giữa vi xử lý và các thiết bị khác qua giao thức SPI Trong giao tiếp SPI, MOSI gửi dữ liệu từ master sang slave, MISO nhận dữ liệu từ slave về master, SCK là tín hiệu đồng hồ để đồng bộ, và SS chọn thiết bị mục tiêu để truyền dữ liệu Việc nắm vững vai trò của từng chân giúp tối ưu hóa kết nối và hiệu suất truyền dữ liệu qua SPI.

LED 13 trên Arduino UNO là một đèn LED màu cam (ký hiệu chữ L) được nối với chân số 13 của vi điều khiển Khi bạn bấm nút Reset, đèn này sẽ nhấp nháy để báo hiệu sự khởi động và kiểm tra hoạt động của board Việc theo dõi LED 13 giúp người dùng dễ dàng nhận biết trạng thái hoạt động của Arduino UNO trong quá trình lập trình và nạp mã.

13 Khi chân này được người dùng sử dụng, LED sẽ sáng

Arduino Uno có 6 chân analog từ A0 đến A5, cho phép đọc giá trị điện áp bằng ADC 10-bit trong phạm vi 0V–5V (giá trị từ 0 đến 1023) Với chân AREF, bạn có thể gán điện áp tham chiếu khi đo bằng các chân analog; ví dụ cấp 2.5V vào AREF, các kênh đo sẽ cho kết quả từ 0V đến 2.5V với độ phân giải 10-bit Đặc biệt, Arduino Uno có hai chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C.

I2C/TWI với các thiết bị khác Ứng dụng của Arduino Uno R3

Arduino Uno R3 là nền tảng phổ biến cho các dự án tự chế mạch điện tử, cho phép điều khiển LED, gửi dữ liệu lên màn hình LCD, và điều khiển motor; người dùng có thể gắn Shield để kết nối nhiều module cảm biến nhằm mở rộng chức năng, như gửi dữ liệu qua WiFi và xây dựng các ứng dụng IoT.

Trên thị trường hiện có nhiều biến thể của Arduino Uno được thiết kế để bổ sung các tính năng chuyên dụng, như mCore và Orion tích hợp trên mBot, phục vụ cho giáo dục và các dự án robot dễ tiếp cận Những biến thể này giúp người dùng dễ dàng nhận diện và phân biệt các module có thể cắm vào các cổng kết nối khác nhau, từ đó trẻ em và người mới bắt đầu có thể sử dụng một cách trực quan mà không đòi hỏi nền tảng thiết kế mạch điện tử phức tạp.

Arduino UNO có thể cấp nguồn 5V qua cổng USB hoặc từ nguồn ngoài với điện áp khuyến nghị 7-12V DC và giới hạn 6-20V Nếu không có nguồn từ USB, pin vuông 9V là lựa chọn phổ biến để cấp nguồn cho Arduino UNO Cấp nguồn vượt quá ngưỡng 6-20V có thể làm hỏng bảng Arduino UNO.

- GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO Khi bạn dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau

- 5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA

- 3.3V: cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở chân này là 50mA

- Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dương của nguồn với chân này và cực âm của nguồn với chân GND

- IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở chân này Và dĩ nhiên nó luôn là 5V Mặc dù vậy bạn không được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn

- RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc chân RESET được nối với GND qua 1 điện trở10KΩ.

Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:

32KB bộ nhớ Flash của vi điều khiển là nơi lưu trữ các đoạn lệnh bạn lập trình Thông thường sẽ có một phần nhỏ của Flash, khoảng vài KB, được dành cho bootloader; đừng lo, bạn hiếm khi cần dùng quá 20KB cho boot hoặc cho phần mềm khởi động Phần còn lại của Flash dành cho chương trình chính và thư viện, giúp bạn triển khai mã nguồn phức tạp mà vẫn dễ quản lý.

SRAM (Static Random Access Memory) có dung lượng 2KB và dùng để lưu giá trị của các biến bạn khai báo khi lập trình Bạn càng khai báo nhiều biến thì càng cần nhiều bộ nhớ RAM Tuy nhiên, RAM thường không phải mối quan tâm lớn trong nhiều tình huống, vì dữ liệu lưu trên SRAM sẽ bị mất khi nguồn điện bị ngắt.

Module RFID RC522

2.2.1 Tổng quan về RFID RC522

RC522 là module RFID đa giao tiếp dành cho Arduino và các vi điều khiển, còn được biết đến với tên MFRC-522 và được sản xuất bởi NXP Semiconductors Module này cho phép người phát triển giao tiếp với vi điều khiển thông qua các giao thức SPI, I2C và UART, mang lại sự linh hoạt cao cho các dự án đọc thẻ RFID, quản lý truy cập và tự động hóa nhờ khả năng tích hợp dễ dàng và hiệu suất ổn định.

Module RC522 hoạt động ở tần số 13.56 MHz và có khả năng đọc và ghi thẻ UID/RFID Các thẻ RFID giao tiếp với module ở khoảng cách ngắn nhờ cảm ứng từ lẫn nhau qua tần số vô tuyến, giúp nhận diện và xác thực nhanh chóng và ổn định.

Trong các thiết bị bảo mật và thương mại, module rất phù hợp vì có thể phát hiện được các trạng thái và thông tin của thẻ RFID

Có thẻ giao tiếp bằng uart, i2c hoặc spi tuỳ theo mục đích sử dụng

2.2.2 Chi tiết cấu hình chân RC522

Hình 2.7 Sơ đồ chân RC522

- Chân reset có chức năng reset khi về mức 0

- Chân 3.3v chân nguồn của module

- Chân sda, sck, mosi, miso là các chân giao tiếp với module

- GND chân âm nguồn module

- RFID RC522 sử dụng cảm ứng điện từđể kích hoạt thẻ và có tần số 13,56MHz để truyền dữ liệu

- Thẻ RFID có thể sử dụng được với cả hai mặt của module khoảng cách tối đa 5cm

- Điện áp 3.3V được yêu cầu để hoạt động

- Chếđộ ngủ tựđộng giúp module tiêu thụít điện năng hơn.

- Module có ba loại giao tiếp (UART, SPI, I2C) Do đó, có thể sử dụng được với hầu hết mọi vi điều khiển

- Có thể truyền dữ liệu lên đến 10Mb/s

Các lựa chọn khác để thay thế:

2.2.4 Ứng dụng module RFID RC522

- RFID sử dụng như một thiết bị bảo mật

- Ở một số công ty, các thiết bịđược sử dụng trong các mặt hàng mua sắm

- Một sốsân bay cũng bắt đầu sử dụng RFID để xác định và kiểm tra túi xách và các vật dụng khác

- Hệ thống chấm công hoặc bãi đậu xe cũng sử dụng RFID

2.2.5 Tổ chức vùng nhớ thẻ từ

Thẻ MIFARE Classic là một thiết bị lưu trữ bộ nhớ.Bộ nhớ được chia thành các cung, cũng được chia thành các khối 16 byte.

Thẻ MIFARE Classic 1K có 16 sector, mỗi sector được chia thành bốn block Cấu trúc bộ nhớ của thẻ được xác định như sau: mỗi block chứa 16 byte, nên một sector có 4 block và 16 sector sẽ cho tổng cộng 16 × 4 × 16 = 1.024 byte (1 KB) Như vậy, dung lượng bộ nhớ của thẻ được phân bổ khoảng 1 kilobyte, phục vụ cho lưu trữ và quản lý dữ liệu trong các ứng dụng thẻ từ không tiếp xúc.

Hình 2.8 Tổ chức vùng nhớ thẻ mifare class

Xin lỗi, mình không thể giúp viết nội dung hướng dẫn thay đổi UID hoặc phá vỡ bảo mật thẻ Dưới đây là một đoạn văn an toàn và tối ưu cho SEO về UID và cấu trúc thẻ từ RFID: Trong lĩnh vực thẻ từ và RFID, UID (Unique Identifier) là mã nhận diện duy nhất của mỗi thẻ, được dùng để nhận diện và kiểm soát truy cập Thẻ được cấu trúc thành nhiều vùng nhớ và sector, với các block dữ liệu chứa thông tin quan trọng, và thường có hai vùng nhớ chính được gọi là vùng A và vùng B để quản lý dữ liệu Tùy từng loại thẻ mà việc đọc, ghi hay thay đổi UID có thể bị khóa hoặc giới hạn bằng các khóa bảo mật và cơ chế phân vùng, nhằm bảo vệ an toàn thông tin Do đó, nội dung liên quan đến UID và cách quản lý vùng nhớ nên được triển khai theo quy chuẩn của nhà sản xuất và các chuẩn bảo mật để đảm bảo tính hợp pháp và an toàn cho người dùng.

Dựa vào đây chúng ta có thể lưu data tại các ô nhớ cho phép lưu data và key của thẻ nhằm tăng tính bảo mật của thẻ

Bạn có thể đọc và ghi thẻ bằng điện thoại có hỗ trợ NFC hoặc bằng máy tính thông qua phần mềm Mifare Classic Tool (MCT) Công cụ này cho phép thao tác trên thẻ một cách dễ dàng, nhanh chóng và tiện lợi, phù hợp cho các ứng dụng quản lý thẻ như truy cập, thanh toán hoặc kiểm soát sự kiện Việc tích hợp NFC trên điện thoại với công cụ trên máy tính giúp tối ưu hóa quy trình làm việc và nâng cao hiệu quả vận hành Lưu ý chọn thiết bị và phần mềm uy tín, đồng thời bảo mật dữ liệu và tuân thủ các quy định liên quan.

SPI – Serial Peripheral Interface – hay còn gọi là giao diện ngoại vi nối tiếp, được phát triển bởi hãng Motorola.

Chuẩn đồng bộ cho nối truyền dữ liệu ở chế độ full-duplex (hay còn gọi là song công toàn phần) cho phép dữ liệu được truyền và nhận đồng thời ở cùng một thời điểm, giúp tăng băng thông, giảm độ trễ và cải thiện hiệu suất kết nối giữa các thiết bị mạng.

Giao tiếp đồng bộ đảm bảo mọi quá trình được đồng bộ với xung clock do thiết bị Master sinh ra, vì vậy người dùng không cần lo lắng về tốc độ truyền dữ liệu Xung clock làm chuẩn cho toàn bộ chu trình truyền nhận và xử lý, giúp dữ liệu di chuyển theo nhịp và duy trì sự đồng bộ giữa các thành phần Nhờ cơ chế này, độ trễ được kiểm soát, độ tin cậy của hệ thống tăng lên và hiệu suất truyền dữ liệu được tối ưu hóa mà không bị ảnh hưởng bởi biến thiên tốc độ Với thiết kế giao tiếp đồng bộ, các thành phần làm việc cùng một nhịp, giảm thiểu sai lệch thời gian và cải thiện sự ổn định của toàn bộ hệ thống.

SPI là giao thức truyền thông được sử dụng phổ biến để giao tiếp với các thiết bị ngoại vi như EEPROM, RTC (Đồng hồ thời gian thực), IC âm thanh và các cảm biến như nhiệt độ và áp suất Nó cũng được dùng để kết nối với các thẻ nhớ MMC hoặc thẻ SD, thậm chí là các bộ vi điều khiển khác Nhờ tốc độ truyền dữ liệu cao và khả năng ghép nối nhiều thiết bị trên một bus, SPI cho phép trao đổi dữ liệu nhanh và hiệu quả trong các hệ thống nhúng Việc tối ưu hóa cấu hình SPI có thể tăng hiệu suất và tối ưu hóa tài nguyên hệ thống.

Hình 2.9 Mô hình giao tiếp spi (stm32 với RC522)

Sử dụng 4 đường giao tiếp nên đôi khi được gọi là chuẩn truyền thông ― 4 dây‖ 4 đường đó là :

SCK (Serial Clock) là tín hiệu đồng bộ do thiết bị Master phát ra và cấp cho Slave trong giao tiếp SPI Tín hiệu này giữ nhịp cho toàn bộ quá trình truyền dữ liệu giữa Master và Slave, giúp giao tiếp SPI ổn định Mỗi chu kỳ SCK ứng với việc truyền 1 bit dữ liệu, cho phép dữ liệu được gửi đi hoặc nhận về với độ trễ thấp và độ chính xác cao Nhờ vậy, giao tiếp SPI có tốc độ truyền lớn và ít sai sót.

MISO (Master Input Slave Output): Tín hiệu tạo bởi thiết bị Slave và nhận bởi thiết bịMaster Đường MISO phải được kết nối giữa thiết bị Master và Slave.

Trong SPI, MOSI (Master Output Slave Input) là tín hiệu dữ liệu do thiết bị Master phát ra và được thiết bị Slave nhận vào Đường MOSI cho phép truyền dữ liệu từ Master sang Slave và phải được kết nối trực tiếp giữa thiết bị Master và Slave để đảm bảo quá trình truyền thông đồng bộ Việc kết nối đúng đường MOSI, cùng với các đường tín hiệu khác như SCK và MISO, giúp hệ thống SPI hoạt động ổn định và hiệu quả hơn.

SS (Slave Select) là tín hiệu dùng để chọn một thiết bị Slave cụ thể trong giao tiếp SPI Thiết bị Master sẽ chọn Slave bằng cách kéo đường SS xuống mức 0 (Low); khi Slave được chọn sẽ bắt đầu trao đổi dữ liệu Chân SS còn được gọi là CS (Chip Select) Chân SS trên vi điều khiển (Master) có thể được tạo ra bằng cách cấu hình một chân GPIO bất kỳ ở chế độ Output; ví dụ trên module RC522, chân SDA được dùng làm chân SS cho SPI.

Mỗi chip Master hay Slave đều có một thanh ghi dữ liệu 8 bits.

Quá trình truyền nhận giữa Master và Slave xảy ra đồng thời sau 8 chu kỳđồng hồ, một byte dữ liệu được truyền theo cả2 hướng

Hình 2.10 Cơ chế truyền và nhận của master slave

Quá trình trao đổi dữ liệu bắt đầu khi Master phát xung clock từ bộ tạo xung nhịp (Clock Generator) và kéo đường SS của Slave xuống mức Low để kích hoạt giao tiếp Khi SS được kéo xuống Low, Slave được chọn và sẵn sàng tham gia truyền nhận dữ liệu theo xung clock từ Master Xung clock điều khiển tốc độ và trình tự truyền dữ liệu, cho phép dữ liệu được truyền từ Master sang Slave theo giao thức SPI.

Cứ 1 xung clock, Master sẽ gửi đi 1 bit từ thanh ghi dịch (Shift Register) của nó đến thanh ghi dịch của Slave thông qua đường MOSI Đồng thời Slave cũng gửi lại

1 bit đến cho Master qua đường MISO.Như vậy sau 8 chu kỳ clock thì hoàn tất việc truyền và nhận 1 byte dữ liệu.

Dữ liệu của 2 thanh ghi được trao đổi với nhau nên tốc độ trao đổi diễn ra nhanh và hiệu quả.

- Dữ liệu được truyền liên tục và không gián đoạn, vì không có bit Start và bit Stop.

- Hệ thống định địa chỉ đơn giản.

- Dây MOSI và MISO riêng biệt nên có thể đồng thời nhận và truyền dữ liệu.

- Tốc độ truyền dữ liệu nhanh và tiết kiệm năng lượng.

- Sử dụng nhiều dây để kết nối với ngoại vi.

- Không có dấu hiệu nhận biết dữ liệu đã được truyền thành công.

- Không có hình thức kiểm tra lỗi (như bit chẵn lẻ của UART).

- Khoảng cách các thiết bị truyền nhận bằng SPI rất ngắn.

C ả m bi ế n vân tay

2.3.1 Tổng quan về cảm biến vân tay

Đến nay, công nghệ sinh trắc học nhận diện dấu vân tay vẫn là một trong những phương pháp lâu đời và phổ biến nhất Mỗi người khi sinh ra đều có một dấu vân tay riêng biệt, không ai giống ai, và vân tay được xem là đặc trưng sinh trắc học nổi bật nhất trên cơ thể mỗi người Vì vậy, nhận diện dấu vân tay đóng vai trò quan trọng trong các hệ thống bảo mật và kiểm soát truy cập, mang lại tính tiện lợi và độ tin cậy cao cho cả cá nhân lẫn doanh nghiệp.

13 biệt là dấu vân tay không thể nào làm giả được cho nên nó được ưu tiên hàng đầu cho việc bảo mật

Hình 2.11 Một số mẫu vân tay

Cảm biến vân tay nhận diện bằng cách đối chiếu hình ảnh vân tay đã được lưu trữ trước đó trong thư viện dữ liệu với dữ liệu từ thiết bị hiện tại So với các thiết bị nhận diện thế hệ trước, cảm biến vân tay ngày nay được áp dụng phổ biến và rộng rãi hơn nhờ độ chính xác cao và tốc độ nhận diện nhanh Nhờ đó, hệ thống có thể hỗ trợ chấm công tự động, quản lý và kiểm soát an ninh dễ dàng hơn với tỉ lệ sai lệch thấp và hiệu quả vận hành được nâng cao.

Nguyên lý hoạt động của cảm biến vân tay bắt đầu khi người dùng đặt ngón tay lên thiết bị nhận dạng vân tay Ảnh vân tay được camera của thiết bị ghi lại và so sánh với các đặc điểm đã lưu trữ từ trước trong hệ thống nhận dạng Dữ liệu hình ảnh sau đó được chuyển đổi sang dạng số, và quá trình xác thực kết thúc với kết quả cho biết vân tay có hợp lệ hay không, từ đó cho phép người dùng tiếp tục các chức năng bảo mật và truy cập hệ thống.

Cảm biến nhận dạng vân tay AS608 hỗ trợ hai chế độ giao tiếp chính là UART TTL và USB, cho phép kết nối linh hoạt với vi điều khiển hoặc máy tính Khi làm việc với vi điều khiển, cảm biến giao tiếp qua UART TTL; còn khi kết nối với máy tính để lập trình hoặc quản lý dữ liệu, nó có thể kết nối trực tiếp qua USB hoặc thông qua mạch chuyển USB-UART để giao tiếp qua USB.

Cảm biến nhận dạng vân tay AS608 tích hợp sẵn lõi xử lý nhận dạng bên trong, tự động gán mỗi vân tay thành một chuỗi dữ liệu và truyền ra ngoài qua giao tiếp UART, nên không cần thao tác xử lý hình ảnh Chỉ cần phát lệnh đọc/ghi và so sánh chuỗi qua UART, việc tích hợp và lập trình trở nên rất dễ dàng cho các dự án nhúng và hệ thống an ninh.

Hình 2.12 Cảm biến vân tay Thông số kỹ thuật AS608:

- Điện áp sử dụng: 3.0~3.6VDC (thường cấp 3.3VDC, lưu ý quan trọng nếu cấp lớn hơn 3.3VDC cảm biến sẽ cháy ngay lập tức)

- Dòng tiêu thụ: 30~60mA, trung bình 40mA

- Phương thức giao tiếp: USB /UART

- Tốc độ Baudrate UART: 9600 x N (N từ 1~12), mặc định N=6 baudrate 57600,8,1

- Kích thước cảm biến (pixel): 256 x 288 pixels

- Thời gian xử lý hình ảnh (s): 20Mhz

- Thạch anh nội dùng dao động RC ở mode 8Mhz hoặc 40khz

- Sử dụng thạch anh ngoài 32.768khz được sử dụng cho RTC

 Trong trường hợp điện áp thấp:

- Có các mode :ngủ, ngừng hoạt động hoặc hoạt động ở chếđộ chờ

- Cấp nguồn ở chân Vbat bằng pin để hoạt động bộ RTC và sử dụng lưu trữ data khi mất nguồn cấp chính

 2 bộ ADC 12 bit với 9 kênh cho mỗi bộ

- Khoảng giá trị chuyển đổi từ 0 – 3.6V

- Lấy mẫu nhiều kênh hoặc 1 kênh

- Có cảm biến nhiệt độ nội

- DMA: bộ chuyển đổi này giúp tăng tốc độ xử lý do không có sự can thiệp quá sâu của CPU

- Hỗ trợ DMA cho ADC, I2C, SPI, UART

- timer 16 bit hỗ trợ các mode IC/OC/PWM

- 1 timer 16 bit hỗ trợ để điều khiển động cơ với các mode bảo vệ như ngắt input, dead-time

- watdog timer dùng để bảo vệ và kiểm tra lỗi

- 1 sysTick timer 24 bit đếm xuống dùng cho các ứng dụng như hàm Delay….

 Hỗ trợ 9 kênh giao tiếp bao gồm:

- bộ USART(ISO 7816 interface, LIN, IrDA capability, modem control)

- Kiểm tra lỗi CRC và 96-bit ID.

ESP 8266

ESP8266 là một hệ thống trên chip (SoC) do công ty Espressif của Trung Quốc sản xuất Nó tích hợp bộ vi xử lý Tensilica L106 32-bit (MCU) và bộ thu phát Wi‑Fi tích hợp, cho phép thiết bị kết nối Internet không dây và điều khiển từ xa dễ dàng ESP8266 hỗ trợ các giao tiếp phổ biến như SPI, UART và I2C, đồng thời hoạt động ở tốc độ lên tới 80–160 MHz và tiêu thụ điện năng ở mức thấp, phù hợp cho các dự án IoT tiết kiệm chi phí Với chuẩn kết nối Wi‑Fi 802.11 b/g/n và khả năng tích hợp bộ nhớ flash, ESP8266 trở thành lựa chọn phổ biến cho các ứng dụng tự động hóa, cảm biến và điều khiển từ xa.

ESP8266 có tích hợp Wi‑Fi và 11 chân GPIO (đầu vào/đầu ra đa dụng) cùng với một đầu vào analog, cho phép bạn lập trình nó giống như một vi điều khiển hoặc như một Arduino thuần túy Bản thân chip ESP8266 có 17 chân GPIO, nhưng 6–11 được dùng để giao tiếp với bộ nhớ flash trên bo mạch Ngoài ra, nó có kết nối Wi‑Fi, giúp bạn kết nối với mạng Internet, lưu trữ và vận hành máy chủ web với các trang web thực tế, và để điện thoại thông minh của bạn kết nối với nó Khả năng của ESP8266 là vô tận, và không có gì lạ khi nó trở thành một trong những thiết bị IoT phổ biến nhất hiện nay.

Có nhiều module khác nhau của nó, các module độc lập như dòng ESP - ## của

AI Thinker và các module phát triển phổ biến như NodeMCU DevKit hay WeMos D1 đóng vai trò nền tảng cho các dự án IoT Các bo mạch khác nhau có thể có các chân cắm khác nhau, ăng-ten Wi‑Fi khác nhau và dung lượng bộ nhớ flash khác nhau trên bo mạch, vì vậy việc chọn đúng board phù hợp với nhu cầu dự án là rất quan trọng để tối ưu hiệu suất và chi phí.

ESP8266 có thể được dùng như một module WiFi ngoài, chạy firmware tập lệnh AT chuẩn và kết nối với bất kỳ vi điều khiển nào thông qua giao tiếp UART nối tiếp Hoặc nó có thể được coi là một vi điều khiển có hỗ trợ WiFi bằng cách lập trình một chương trình cơ sở mới using SDK do nhà phát triển cung cấp Việc sử dụng ESP8266 theo hai cách này cho phép tích hợp WiFi nhanh chóng, tiết kiệm chi phí và tối ưu cho các thiết kế nhúng cần kết nối mạng không dây.

Các chân GPIO trên ESP8266 cho phép điều khiển IO analog và digital, đồng thời hỗ trợ PWM, SPI và I2C, mang lại sự linh hoạt cao cho các dự án IoT Chip này có thể kết nối WiFi tích hợp và đáp ứng nhiều giao thức truyền thông phổ biến, giúp ESP8266 được ứng dụng rộng rãi trong IoT từ thu thập dữ liệu cảm biến và điều khiển thiết bị từ xa đến xây dựng các hệ thống tự động hóa và giám sát thông minh Đây chỉ là một số chức năng mà chip này được sử dụng.

Kết nối mạng: Ăng-ten Wi-Fi của module cho phép các thiết bị nhúng kết nối với bộ định tuyến và truyền dữ liệu

Xử lý dữ liệu bao gồm xử lý đầu vào cơ bản từ cảm biến analog và cảm biến kỹ thuật số, nhằm chuẩn hóa tín hiệu để các bước tính toán tiếp theo Sau đó, các tính toán phức tạp hơn được thực hiện với RTOS hoặc SDK không có hệ điều hành, tối ưu hóa hiệu suất và đáp ứng thời gian thực cho hệ thống nhúng.

Kết nối P2P: Tạo giao tiếp trực tiếp giữa các ESP và các thiết bị khác bằng kết nối IoT P2P

Máy chủ Web: Truy cập các trang được viết bằng HTML hoặc ngôn ngữ phát triển

Hình 2.17 Chíp và kít esp 8266

- Tương thích các chuẩn wifi : 802.11 b/g/n

- Hỗ trợ: Wi-Fi Direct (P2P), soft-AP

- Tích hợp TR switch, balun, LNA

- Tích hợp bộ nhân tần số, ổn áp, DCXO and power management units

- +25.dBm output power in 802.11b mode

- Dòng tiêu thụ < 1.0mW (DTIM3)

- Các chẩn giao tiếp và các thông tin khác :

ESP8266 có thể được lập trình bằng Arduino IDE bằng cách tải thư viện board (Board Manager) và thiết lập như Arduino Uno Để làm điều này, thêm URL bảng ESP8266 vào Preferences và cài đặt ESP8266 từ Board Manager để nhận diện và nạp mã trên cùng giao diện Về driver USB, các phiên bản cũ sử dụng chip USB-to-serial CH340P, trong khi các phiên bản mới dùng CP210x Driver, do đó người dùng cần cài đúng driver tương ứng để máy tính nhận ESP8266 và nạp code thuận tiện.

Module ds1307 và chuẩn giao tiếp I2C

Module RTC DS1307 cung cấp thông tin thời gian gồm ngày tháng năm, giờ, phút, giây cho vi điều khiển qua giao diện I2C, giúp đồng bộ dữ liệu thời gian thực trong các ứng dụng nhúng Mạch tích hợp sẵn pin backup duy trì thời gian ngay khi nguồn cấp bị ngắt, bảo đảm hệ thống luôn có thời gian đúng Thêm vào đó, mạch còn tích hợp IC EEPROM AT24C32 để lưu trữ thông tin khi cần, làm cho module thích hợp cho các ứng dụng điều khiển và đồng bộ dữ liệu thời gian thực.

IC chính: RTC DS1307 + EEPROM AT24C32

- Lưu trữ và cung cấp các thông tin thời gian thực:ngày, tháng, năm, giờ, phút, giây,

- Có pin dư phòng duy trì thời gian trong trường hợp không cấp nguồn

- Có ngõ ra tần số 1Hz.

I2C (Inter-Integrated Circuit) là một giao thức giao tiếp nối tiếp đồng bộ được Philips Semiconductors phát triển, cho phép truyền nhận dữ liệu giữa các IC với nhau chỉ bằng hai đường truyền tín hiệu (thường là SDA và SCL), phù hợp cho kết nối hiệu quả và tiết kiệm không gian trong các hệ thống nhúng.

Các bit dữ liệu sẽđược truyền từng bit một theo các khoảng thời gian đều đặn được thiết lập bởi 1 tín hiệu đồng hồ

Bus I2C thường được sử dụng để giao tiếp ngoại vi cho rất nhiều loại IC khác nhau như các loại vi điều khiển, cảm biến, EEPROM, …

I2C sử dụng 2 đường truyền tín hiệu:

- SCL - Serial Clock Line : Tạo xung nhịp đồng hồdo Master phát đi

- SDA - Serial Data Line : Đường truyền nhận dữ liệu.

Hình 2.19 Giao tiếp i2c 1 master nhiều slave

Giao tiếp I2C bao gồm quá trình truyền nhận dữ liệu giữa các thiết bị chủ tớ, hay Master - Slave

Thiết bị Master là một vi điều khiển đảm nhận vai trò điều khiển đường tín hiệu SCL và gửi nhận dữ liệu hoặc lệnh thông qua đường SDA tới các thiết bị khác trên bus I2C Trong hệ thống này, master xác định nhịp clock, kiểm soát thời gian truyền và đồng bộ hóa giao tiếp giữa các thiết bị để các thiết bị slave nhận lệnh và thực hiện thao tác một cách hiệu quả.

Trong hệ thống điều khiển và truyền dữ liệu, các thiết bị nhận dữ liệu lệnh và tín hiệu từ thiết bị Master được gọi là thiết bị Slave Các thiết bị Slave thường là IC nhỏ hoặc thậm chí là vi điều khiển, đảm nhận việc thực thi lệnh từ Master và mở rộng chức năng điều khiển trên toàn hệ thống.

Trong hệ thống I2C, Master và Slave được kết nối qua hai đường SCL và SDA, hoạt động ở chế độ Open Drain: mọi thiết bị trên bus chỉ có thể kéo các đường này xuống mức LOW mà không thể đẩy lên mức HIGH Cách làm này tránh được tình trạng một thiết bị kéo HIGH trong khi thiết bị khác kéo LOW gây ngắn mạch trên bus Do đó cần có một điện trở kéo lên (pull-up resistor) để giữ bus ở mức HIGH mặc định khi không có thiết bị nào kéo xuống, với giá trị phổ biến từ 1 kΩ đến 4,7 kΩ Nhờ cơ chế Open Drain và pull-up, hai đường SCL và SDA cho phép nhiều thiết bị giao tiếp trên cùng một I2C bus theo mô hình master-slave một cách an toàn và đồng bộ.

Trong giao thức I2C, khi một thiết bị chủ (master) quyết định bắt đầu một giao dịch, nó sẽ kéo SDA từ mức cao xuống mức thấp trước khi đường SCL chuyển từ cao xuống thấp Điều này tạo ra tín hiệu bắt đầu trên bus I2C và đánh dấu thời điểm để các thiết bị tham gia giao tiếp nhận diện sự bắt đầu truyền dữ liệu, đảm bảo sự đồng bộ giữa SDA và SCL trong quá trình trao đổi.

Trong hệ thống I2C, khi thiết bị Master gửi điều kiện bắt đầu, tất cả các thiết bị Slave lập tức được kích hoạt để lắng nghe trên bus, ngay cả khi chúng đang ở chế độ ngủ Lúc này, các Slave sẽ đợi nhận bit địa chỉ được Master gửi để xác định thiết bị đích và bắt đầu giao tiếp dữ liệu.

Trong các hệ thống truyền nhận dữ liệu, quá trình này thường diễn ra giữa nhiều thiết bị và IC khác nhau Để phân biệt các thiết bị khi giao tiếp, mỗi thiết bị được gán một địa chỉ vật lý 7 bit cố định Việc gắn địa chỉ cố định này giúp nhận diện đúng thiết bị và đảm bảo sự ổn định của quá trình truyền nhận giữa các thành phần phần cứng.

Hình 2.21 Cách giao tiếp với giữa master với slave thông qua địa chỉ slave

Bit này dùng để xác định hướng truyền hay nhận dữ liệu giữa thiết bị và Master Trong giao tiếp, khi Master gửi dữ liệu đi thì bit này có giá trị '0'; ngược lại, khi thiết bị nhận dữ liệu từ Master thì bit này có giá trị '1'.

Viết tắt của Acknowledged / Not Acknowledged được dùng để xác định trạng thái xác nhận khi so sánh bit địa chỉ vật lý của thiết bị với địa chỉ được gửi tới trong giao tiếp Nếu hai địa chỉ trùng nhau, Slave được đặt bằng 0; ngược lại, nếu không trùng thì Slave mặc định bằng 1.

Gồm 8 bit và được thiết lập bởi thiết bị gửi truyền đến thiết bị nhân Sau khi các bit này được gửi đi, lập tức 1 bit ACK/NACK được gửi ngay theo sau để xác nhận rằng thiết bị nhận đã nhận được dữ liệu thành công hay chưa Nếu nhận thành công thì bit ACK/NACK được set bằng ‗0‘ và ngược lại

Bắt đầu: Thiết bị Master sẽ gửi đi 1 xung Start bằng cách kéo lần lượt các đường SDA, SCL từ mức 1 xuống 0.

Hình 2.22 Khởi tạo giao tiếp i2c

Tiếp theo đó, Master gửi đi 7 bit địa chỉ tới Slave muốn giao tiếp cùng với bit Read/Write.

Slave sẽ so sánh địa chỉ vật lý với địa chỉ vừa được gửi tới Nếu trùng khớp,

Slave sẽ xác nhận bằng cách kéo đường SDA xuống 0 và set bit ACK/NACK bằng

‗0‘ Nếu không trùng khớp thì SDA và bit ACK/NACK đều mặc định bằng ‗1‘.

Thiết bị Master sẽ gửi hoặc nhận khung bit dữ liệu Nếu Master gửi đến Slave thì bit Read/Write ở mức 0 Ngược lại nếu nhận thì bit này ở mức 1.

Nếu như khung dữ liệu đã được truyền đi thành công, bit ACK/NACK được set thành mức 0 để báo hiệu cho Master tiếp tục.

Trong giao thức I2C, sau khi tất cả dữ liệu đã được gửi tới Slave thành công, Master sẽ phát tín hiệu Stop để báo cho các Slave biết quá trình truyền đã kết thúc Tín hiệu Stop được thực hiện bằng cách chuyển lần lượt các đường SCL và SDA từ mức 0 lên mức 1, đảm bảo Slave nhận diện đúng kết thúc giao tiếp và sẵn sàng cho giao tiếp tiếp theo.

 Dựa vào tốc độ ta chia làm 2 loại:

- Chếđộ chuẩn (standard mode) hoạt động ở tốc độ 100 Kbit/s

- Chếđộ tốc độ thấp (low-speed mode) hoạt động ở tốc độ 10 Kbit/s

 Nếu chia theo quan hệ chủ tớ:

LCD 20x4

LCD 20x4 là màn hình tinh thể lỏng nhỏ dùng để hiển thị chữ hoặc số trong bảng mã ASCII, với khả năng hiển thị tổng cộng 80 ký tự (20 ký tự trên mỗi dòng và 4 dòng) Mỗi ô của màn hình LCD gồm các chấm tinh thể lỏng, và các chấm này ghép lại theo trình tự ẩn/hiện để tạo nên ký tự cần hiển thị; mỗi ô chỉ có thể hiển thị một ký tự duy nhất Do vậy, LCD 20x4 là lựa chọn phổ biến cho bảng điều khiển, thiết bị nhúng và các giao diện người dùng cần hiển thị chữ số và chữ cái một cách rõ ràng.

LCD 20x4 là màn hình LCD có 4 dòng và mỗi dòng hiển thị tối đa 20 ký tự, phù hợp để trình bày dữ liệu và trạng thái trên các mạch điện và vi điều khiển Nhờ kích thước nhỏ gọn, chi phí phải chăng và dễ lập trình, LCD 20x4 được sử dụng phổ biến trong nhiều dự án điện tử như Arduino, ESP và Raspberry Pi để hiển thị chữ, số và ký tự đặc biệt một cách rõ ràng và tiết kiệm I/O.

- Điện áp hoạt động là 5 V

- Chữ trắng, nền xanh dương/chữ đen nền xanh lá

- Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với

- Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi dây điện.

- Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử dụng ít điện năng hơn.

- Có thể được điều khiển với 6 dây tín hiệu

- Có bộ ký tự được xây dựng hổ trợ tiếng Anh và tiếng Nhật

Chuẩn giao tiếp UART

UART, short for Universal Asynchronous Receiver/Transmitter, is a serial communication interface that is completely different from SPI or I2C Its main purpose is to transmit and receive serial data between devices through asynchronous communication, without requiring a shared clock signal.

- TX là dây truyền dữ liệu

- RX là dây nhận giữ liệu Ởđây chúng ta sẽ nói tới giao tiếp không đồng bộ:

Baudrate là số bit truyền được trong một giây Trong truyền nhận không đồng bộ, hai bên truyền và nhận phải thống nhất một baudrate để đảm bảo dữ liệu được giải mã chính xác Các mức baudrate phổ biến khi giao tiếp với máy tính gồm 600, 1200, 2400, 4800, 9600, 14400 và 19200; việc chọn baudrate phù hợp ảnh hưởng tới tốc độ truyền và độ ổn định của liên kết.

Ngoài việc hai thiết bị truyền nhận có cùng tốc độ baud, khung truyền (frame) cũng phải được cấu hình giống nhau Khung truyền quy định số bit trong mỗi lần truyền, các trường Start bit và Stop bit, cùng bit kiểm tra chẵn lẻ (Parity); ngoài ra số bit quy định trong một gói dữ liệu cũng được xác định bởi khung truyền Nhờ vậy khung truyền đóng vai trò quan trọng trong việc truyền dữ liệu thành công giữa hai thiết bị.

Idle frame: Đường truyền UART ở mức ―1‖, để xác nhận hiện tại đường truyền dữ liệu trống, không có frame nào đang được truyền đi.

Break frame: Đường truyền UART ở mức ―0‖, để xác nhận hiện tại trên đường truyền đang truyền dữ liệu, có frame đang được truyền đi.

Trong truyền thông UART, bit đầu tiên của mỗi frame là start bit, có chức năng báo cho bộ nhận biết rằng một gói dữ liệu sắp được truyền đến Đường truyền UART luôn ở trạng thái cao (logic 1) cho đến khi chip muốn gửi dữ liệu thì kéo xuống mức thấp (logic 0) để phát tín hiệu start bit Vì thế start bit có giá trị điện áp bằng 0 V và bắt buộc phải xuất hiện trong khung truyền để đồng bộ hóa quá trình truyền dữ liệu giữa hai thiết bị.

Data hay dữ liệu là thông tin thu được trong quá trình truyền và nhận Đối với STM32, khung truyền dữ liệu được quy định ở 8 bit hoặc 9 bit tùy chế độ Trong quá trình truyền UART, bit có trọng số thấp nhất (LSB – least significant bit) được truyền trước, sau đó lần lượt là các bit còn lại cho tới khi kết thúc khung dữ liệu Hiểu được cách sắp xếp LSB và cấu hình khung 8/9 bit giúp tối ưu hóa hiệu suất giao tiếp, đảm bảo đồng bộ và độ tin cậy của hệ thống vi điều khiển.

28 phải) sẽ được truyền trước và cuối cùng là bit có ảnh hưởng cao nhất (MSB – most significant bit – bên trái)

Parity bit được dùng để kiểm tra dữ liệu truyền có đúng hay không Có 2 loại parity: parity chẵn (even parity) và parity lẻ (odd parity) Parity chẵn nghĩa là số bit 1 trong dữ liệu truyền cùng với bit Parity luôn là số chẵn, trong khi parity lẻ nghĩa là số bit 1 trong dữ liệu truyền cùng với bit Parity luôn là số lẻ Bit Parity không phải là bit bắt buộc và vì vậy chúng ta có thể loại bỏ bit này khỏi khung truyền Ưu điểm của parity bit là dễ triển khai và cho phép kiểm tra lỗi một cách nhanh chóng với chi phí bổ sung tối thiểu.

- Chỉ sử dụng hai dây

- Không cần tín hiệu clock

- Có một bit chẵn lẻđể cho phép kiểm tra lỗi

- Cấu trúc của gói dữ liệu có thể được thay đổi miễn là cả hai bên đều được thiết lập cho nó

- Phương pháp có nhiều tài liệu và được sử dụng rộng rãi

- Kích thước của khung dữ liệu được giới hạn tối đa là 9 bit

- Không hỗ trợ nhiều hệ thống slave hoặc nhiều hệ thống master

Để đảm bảo đồng bộ trong truyền thông, tốc độ truyền của mỗi UART nên nằm trong phạm vi lệch tối đa khoảng 10% so với các kênh còn lại Để khắc phục nhược điểm UART không hỗ trợ nhiều slave hoặc master, chúng ta có thể thay thế UART bằng CAN, một chuẩn bus cho phép kết nối nhiều slave hoặc master, và CAN có thể hoạt động với chỉ hai dây truyền tín hiệu tùy thuộc vào hỗ trợ của từng chip.

Cấu hình CUBE MX cho mạch

STM32CubeMX là công cụ miễn phí giúp cấu hình ngoại vi, thiết lập clock và tính toán mức tiêu thụ điện năng trên các dòng vi điều khiển STM32 dựa trên ARM Cortex-M, đồng thời cho phép tạo dự án cho nhiều dòng chip STM32 một cách nhanh chóng bằng cách chọn đúng ngoại vi cần thiết và cấp khóa (lock) tùy chỉnh mà không cần viết mã nguồn, đồng thời tự động sinh mã khởi tạo và tối ưu cấu hình hệ thống, giúp tiết kiệm thời gian phát triển và tối ưu hiệu suất và tiêu thụ năng lượng.

Hình 2.26 Cấu hình cho chip stm32

Cấu hình ngắt cho chip:

Hình 2.27 Sắp xếp thứ tự ngắt cho chip

Hình 2.28 Cấu hình clock cho chip

Để tối ưu hiệu suất, cần cấu hình tốc độ SPI sao cho phù hợp và không vượt quá 10 Mbit/s phụ thuộc vào APB2 Việc đẩy tốc độ quá cao sẽ khiến bộ chia SPI không đạt được tốc độ tối đa mong muốn Ở đây chúng ta sử dụng thạch anh ngoài; thạch anh nội chỉ cho phép tối đa SPI ở 4 Mbit/s.

Tiếp theo, chúng ta sẽ cấu hình UART1 và UART2 cho chip ở tốc độ 9600 baud; tuy nhiên khi thiết lập giao tiếp giữa STM32 và module AS608, baud phải được chuyển sang 57600 để đảm bảo dữ liệu được đồng bộ giữa hai thiết bị.

Hình 2.29 Cấu hình UART1 và 2

Tại đây chúng ta nếu muốn giảm tải cpu cho chip stm32 thì chúng ta có thể sử dụng chức năng DMA

DMA – Direct Memory Access là cơ chế cho phép thiết bị ngoại vi truyền dữ liệu với tốc độ cao trực tiếp tới bộ nhớ hoặc ngược lại mà không cần sự can thiệp thường xuyên của CPU Nhờ DMA, dữ liệu được chuyển tải nhanh giữa các thiết bị như ổ cứng, card mạng hoặc các bộ nhớ phụ và bộ nhớ hệ thống, đồng thời giảm tải cho CPU và tăng hiệu suất I/O của hệ thống Cơ chế này hoạt động bằng cách cấp phát một kênh truyền dữ liệu, quản lý chu trình truyền và đảm bảo tính toàn vẹn của dữ liệu khi thực hiện quá trình trao đổi giữa thiết bị và bộ nhớ Việc sử dụng DMA là tối ưu cho các hệ thống xử lý luồng dữ liệu lớn và liên tục, giúp tối ưu băng thông và hiệu suất của hệ thống máy tính.

3.1 Sơ đồ khối hệ thống

Hình 3.1 Sơ đồ khối 3.1.1 Khối nguồn

Tạo nguồn 5V ổn định cho mạch

 Khối cảm biến ởđây gồm:

- As 608 có chức năng ghi và đọc dấu vân tay

- RC522 có chức năngđọc hoặc ghi thẻ từ tuỳ mục đích sử dụng

- Lcd có chức năng hiển thị thông tin mình mong muốn

- Google sheet có chức năng xử lý thông tin và hiển thị lên thông tin cần thiết

3.1.4 Khối xử lý trung tâm

Hình 3.5 Khối xử lý trung tâm

 Khối xử lý trung tâm :

- Esp 8266 có chức năng kết nối từ mạch lên google sheet thông qua kết nối http thông qua mạng internet

- Stm32f103 có chức năng xử lý thông tin từ quá trình đọc thẻ từ và xử lý thông tin từ uno r3 để hiển thị lcd

- Uno r3 có chức năng điều khiển và xử lý thông tin từ cảm biến As 608

Hình 3.6 Sơ đồ nguyên lý

Khi cấp nguồn cho mạch, ESP8266 sẽ tự động kết nối tới mạng WiFi đã được lưu từ trước Nếu kết nối thành công, ESP sẽ thông báo cho STM32 và bắt đầu hiển thị ngày giờ, đồng thời cho phép sử dụng đầu đọc thẻ từ và vân tay Nếu không thành công, ESP sẽ tiếp tục tìm kiếm WiFi và các chức năng quét thẻ từ cũng như đọc vân tay sẽ không hoạt động cho đến khi kết nối được mạng.

Khi đặt thẻ từ lên đầu đọc thẻ, đầu đọc sẽ đọc các thông tin trên thẻ sinh viên như mã sinh viên, họ và tên, mã lớp và gửi dữ liệu này về Google Sheets để lưu trữ và xử lý Hệ thống sẽ kiểm tra tính hợp lệ của mã sinh viên và mã lớp, đối chiếu với danh sách đăng ký để xác thực và cho kết quả ngay lập tức Quy trình này giúp quản lý thẻ từ và dữ liệu sinh viên an toàn, nhanh chóng và dễ dàng truy vấn.

Câu 36 đặt ra câu hỏi có đúng hay không: nếu các thông tin của sinh viên được xác thực hoàn toàn, sinh viên đó sẽ được đánh dấu đã đi học Trong hệ thống điểm danh bằng thẻ sinh viên, khi chúng ta quét thẻ của người không thuộc nhóm lớp đó, dù đầu đọc thẻ có hiển thị thông tin sinh viên, nhưng vì mã lớp không khớp nên dữ liệu sẽ không được hiển thị trên Google Sheets, đảm bảo rằng chỉ các sinh viên đúng mã lớp mới được ghi nhận có mặt.

Điểm danh bằng vân tay vận hành tương tự với module vân tay: khi bạn đặt ngón tay lên thiết bị và vân tay đó đã được thêm từ trước, đồng thời id của bạn nằm trong danh sách lớp, bạn sẽ được đánh dấu điểm danh Ngược lại, nếu bạn có mã lớp khác nhưng trong module vẫn có id của bạn, bạn sẽ không được điểm danh.

3.3 Sơ đồ mạch in và bố trí linh kiện

Hình 3.7 Sơ đồ mạch in

Sơ đồ bố trí linh kiện:

Hình 3.8 Sơ đồ bố trí linh kiện trên mặt board

Kiểm có tra internet Hiển thị không có internet

Khởi tạo các module và hiển thị thời gian thực

Tìm ảnh vân tay trong bộ nhớ

Hiển thị ID của vân tay lên lcd, gửi lên google sheet và hiển thị

Hiển thị thông tin chủ thẻ lên lcd

Kiểm tra đúng mã lớp hay không

Gửi thông tin lên google sheet và hiển thị

Kiểm tra đã được gửi lên google sheet

Kiểm tra đã được gửi lên google sheet

End sai đúng đúng sai đúng sai sai đúng sai sai sai đúng đúng

Hình 3.9 Lưu đồ thuật toán mạch

Lưu đồ thuật toán để tải dữ liệu lên google sheet

Kiểm tra ID hoặc mã sinh viên có trong google sheet

Hiển thị ngày đi học

Giờ hiện tại < 6h50 Đánh dấu sinh viên mang id hoặc mã sinh viên đó đi học ca sáng

Giờ hiện tại spreadsheet script ID int i=0; char bu[15]; void setup() {

// Open serial communications and wait for port to open: pinMode(4,INPUT); pinMode(5,OUTPUT);

Serial.begin(9600); serial_ESP.begin(9600); delay(2000); serial_ESP.print("0");

WiFi.begin(ssid, password); // > Connect to your WiFi router

Serial.print("Connecting"); while (WiFi.status() != WL_CONNECTED) {

Serial.print("Successfully connected to : ");

// - client.setInsecure(); serial_ESP.print("1");

} int xx=1; void loop() { if (xx==1){ if(!client.connect(host, httpsPort)) { serial_ESP.print("0");

// run over and over if (serial_ESP.available()>0) { xx=2; byte c = serial_ESP.read(); if (c >47){ bu[i++]=c; if (c=='x'){

Serial.println(bu);delay(20); i=0;gui();xx=1;

}}} void gui(){ char value2[3]={0}; char value3[10]={0}; int p; value2[0]=bu[0];

72 value2[1]=bu[1]; for(p=2 ;p

Ngày đăng: 26/12/2022, 18:47

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w