Tổng quan về đề tài
Giới thiệu về đề tài
Ngày nay, kỹ thuật tự động điều khiển đang đóng vai trò quan trọng trong các lĩnh vực khoa học kỹ thuật, quản lý và công nghiệp Sinh viên chuyên ngành Điện tử cần nắm bắt và áp dụng hiệu quả công nghệ này để góp phần vào sự phát triển chung của khoa học kỹ thuật toàn cầu và lĩnh vực điện tử Điều này không chỉ thúc đẩy sự tiến bộ trong ngành mà còn hỗ trợ sự phát triển kinh tế của đất nước.
Trường học là nơi rèn luyện tính kỷ luật, góp phần tạo ra những nhân tài cho đất nước Ý thức của sinh viên trong môi trường học tập cần được nâng cao Tuy nhiên, tình trạng gian lận như nhờ học hộ, điểm danh hộ và thi hộ vẫn diễn ra, ảnh hưởng tiêu cực đến chất lượng dạy và học.
Nhiều trường học hiện nay đang áp dụng giải pháp máy điểm danh bằng quẹt thẻ RFID và quét vân tay để cải thiện tình trạng điểm danh Giải pháp này giúp giáo viên quản lý và theo dõi tình trạng học sinh một cách chính xác, đồng thời tạo điều kiện cho sinh viên chủ động hơn trong việc học tập và đến lớp đúng giờ Việc điểm danh tự động chỉ cần một lần xác nhận vân tay, giúp tiết kiệm thời gian và nâng cao tính chuyên nghiệp trong môi trường học đường Xuất phát từ thực tế đó, chúng em đã 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
Dự án này được thực hiện nhằm áp dụng kiến thức đã học để thiết kế và phát triển hệ thống điểm danh sinh viên, sử dụng hai phương pháp chính là quẹt thẻ RFID và quét vân tay.
Module DS1307 Đồ án tốt nghiệp
Mạch điều khiển dùng chip Stm32 và chip Arduino để xử lý
Giới hạn đề tài
Trong khuôn khổ thời gian và kiến thức hạn chế, nhóm chúng em không thể hoàn thiện sản phẩm một cách tối ưu Vì vậy, chúng em chỉ tập trung vào những vấn đề chính.
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:
Sau khi nhận đề tài, nhóm đã tiến hành nghiên cứu sâu về các vấn đề liên quan Tiếp theo, nhóm lập trình mô phỏng và chế tạo mạch để thực hiện kiểm tra thực tế Trong quá trình kiểm tra, nhóm đã phát hiện lỗi và những hạn chế cần khắc phục, từ đó phát triển thêm các ý tưởng cải tiến.
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 Đồ án tốt nghiệp
Cơ sở lý thuyết
Giới thiệu về arduino
Arduino là nền tảng mã nguồn mở lý tưởng cho việc phát triển các dự án điện tử Nó bao gồm bảng mạch lập trình (vi điều khiển) và phần mềm IDE (Môi trường phát triển tích hợp) trên máy tính, giúp người dùng viết và tải mã lên bo mạch dễ dàng.
Nền tảng Arduino đang trở nên phổ biến với người mới bắt đầu trong lĩnh vực điện tử nhờ vào sự đơn giản của nó Khác với các bo mạch lập trình truyền thống, Arduino cho phép tải mã mới qua cáp USB mà không cần phần cứng riêng Hơn nữa, Arduino IDE sử dụng phiên bản đơn giản của C++, giúp việc học lập trình trở nên dễ dàng hơn Bên cạnh đó, Arduino cung cấp mẫu chuẩn, giúp người dùng tiếp cận các chức năng của bộ vi điều khiển một cách dễ dàng.
Hình 2.1 Uno r3 Đồ án tốt nghiệp
Hình 2.2 Vi điều khiển trên board uno
Arduino UNO có 14 chân digital để đọc và xuất tín hiệu, với 2 mức điện áp là 0V và 5V Mỗi chân có dòng vào/ra tối đa 40mA và được trang bị các điện trở pull-up từ trong vi điều khiển ATmega328, mặc định không kết 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
EEPROM 1 KB (ATmega328) Đồ án tốt nghiệp
- 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive
Arduino Uno có khả năng giao tiếp với các thiết bị khác thông qua dữ liệu TTL Serial qua hai chân Kết nối Bluetooth thường được xem như một dạng kết nối Serial không dây Nếu không có nhu cầu giao tiếp Serial, bạn nên tránh sử dụng hai chân này để tiết kiệm tài nguyên.
Chân PWM (3, 5, 6, 9, 10, và 11) cho phép xuất xung PWM với độ phân giải 8 bit, giúp điều chỉnh điện áp từ 0V đến 5V thông qua hàm analogWrite() Điều này mang lại khả năng linh hoạt hơn so với các chân chỉ có mức điện áp cố định là 0V và 5V.
Chân giao tiếp SPI bao gồm 10 (SS), 11 (MOSI), 12 (MISO) và 13 (SCK) Ngoài việc thực hiện các chức năng thông thường, bốn chân này còn hỗ trợ truyền dữ liệu qua giao thức SPI với các thiết bị khác.
Trên Arduino UNO, có một đèn LED màu cam ký hiệu chữ L, nằm ở chân số Khi bạn nhấn nút Reset, đèn LED này sẽ nhấp nháy để báo hiệu trạng thái hoạt động của bo mạch.
13 Khi chân này được người dùng sử dụng, LED sẽ sáng
Arduino UNO được trang bị 6 chân analog (A0 → A5) với độ phân giải tín hiệu 10 bit, cho phép đọc giá trị điện áp từ 0V đến 5V Chân AREF trên board cho phép người dùng cung cấp điện áp tham chiếu, ví dụ, nếu cấp 2.5V vào chân này, các chân analog vẫn có thể đo điện áp trong khoảng từ 0V đến 2.5V với độ phân giải 10 bit Đặc biệt, Arduino UNO còn có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp.
I2C/TWI với các thiết bị khác Ứng dụng của Arduino Uno R3
Arduino Uno R3 là một công cụ phổ biến cho việc thiết kế mạch điện tử, cho phép điều khiển LED, gửi dữ liệu lên LCD và điều khiển motor Nó cũng hỗ trợ việc gắn thêm các Shield để kết nối với nhiều module cảm biến, mở rộng chức năng như gửi dữ liệu qua WiFi.
Trên thị trường hiện có nhiều biến thể của Arduino Uno, như mCore và Orion trên mBot, giúp người dùng dễ dàng phân biệt các loại module có thể cắm vào các cổng Điều này hỗ trợ trẻ em và những người không có chuyên môn về thiết kế mạch điện tử trong việc sử dụng các tính năng chuyên dụng một cách thuận tiện.
Arduino UNO có thể được cấp nguồn 5V qua cổng USB hoặc nguồn ngoài với điện áp khuyên dùng từ 7-12V DC, giới hạn từ 6-20V Sử dụng pin vuông 9V là lựa chọn hợp lý khi không có nguồn từ cổng USB Lưu ý rằng việc cấp nguồn vượt quá giới hạn có thể gây hỏng Arduino UNO.
GND (Ground) là cực âm của nguồn điện cung cấp cho Arduino UNO Khi sử dụng các thiết bị với nguồn điện riêng biệt, cần phải kết nối các chân GND này lại với nhau để đảm bảo hoạt động ổn định.
- 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 là chân đo điện áp hoạt động của vi điều khiển trên Arduino UNO, luôn duy trì ở mức 5V Tuy nhiên, bạn không nên sử dụng chân này để lấy nguồn 5V, vì chức năng chính 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:
Bộ nhớ Flash 32KB trên vi điều khiển sẽ lưu trữ các đoạn lệnh bạn lập trình Mặc dù một phần nhỏ trong số này, khoảng vài KB, sẽ được dành cho bootloader, bạn thường không cần sử dụng quá 20KB bộ nhớ Flash cho các ứng dụng của mình.
SRAM (Bộ nhớ truy cập ngẫu nhiên tĩnh) có dung lượng 2KB, nơi lưu trữ giá trị các biến bạn khai báo trong lập trình Số lượng biến càng nhiều thì yêu cầu bộ nhớ RAM càng lớn Tuy nhiên, bộ nhớ RAM thường không phải là mối bận tâm chính Lưu ý rằng dữ liệu trên SRAM sẽ bị mất khi mất điện.
Module RFID RC522
2.2.1 Tổng quan về RFID RC522
RC522 là module RFID đa giao tiếp, được gọi là MFRC-522, do hãng NFX sản xuất Module này cho phép các nhà phát triển kết nối với vi điều khiển thông qua các giao thức SPI, I2C và UART.
Module RC522 hoạt động ở tần số 13.56 MHz, cho phép đọc và ghi thẻ UID/RFID Các thẻ RFID kết nối với module qua khoảng cách ngắn nhờ vào tần số vô tuyến và cảm ứng điện từ lẫn nhau.
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
Hình 2.6 Thẻ từ RFID Đồ án tốt nghiệp
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ế:
- Module RFID RDM630 Đồ án tốt nghiệp
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 bao gồm 16 sector, mỗi sector được chia thành bốn khối Cấu trúc bộ nhớ của thẻ này được tính toán như sau: 16 byte (1 khối) nhân với 4 khối và nhân tiếp với 16 sector, tổng cộng đạt 1024 byte.
Hình 2.8 Tổ chức vùng nhớ thẻ mifare class
CSN là nơi lưu trữ địa chỉ UID, tùy thuộc vào loại thẻ có thể chỉnh sửa hoặc không thay đổi UID Chúng ta sử dụng thẻ có thể thay đổi UID, trong đó block số 3 là tổng của các block 0, 1, 2, 3, và site key được lưu trữ là 0xff Thẻ được chia thành hai vùng nhớ: vùng A từ đầu đến hết sector số 9 và vùng B là phần còn lại.
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ẻ
Chúng ta có thể dễ dàng đọc và ghi thẻ thông qua điện thoại hỗ trợ NFC, cũng như sử dụng máy tính với phần mềm Mifcare Class Tool.
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ộ nối truyền dữ liệu full-duplex, hay còn gọi là "song công toàn phần", cho phép quá trình truyền và nhận dữ liệu diễn ra đồng thời trong cùng một thời điểm.
Giao tiếp đồng bộ đảm bảo rằng mọi quá trình đều được đồng bộ hóa với xung clock từ thiết bị Master, giúp người dùng không phải lo lắng về tốc độ truyền dữ liệu.
SPI là giao thức thường được sử dụng để giao tiếp với các thiết bị như bộ nhớ EEPROM, đồng hồ thời gian thực (RTC), IC âm thanh, cũng như các cảm biến nhiệt độ và áp suất Ngoài ra, SPI còn hỗ trợ kết nối với thẻ nhớ MMC, thẻ SD và các bộ vi điều khiển khác.
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 do thiết bị Master tạo ra và cung cấp cho Slave, giữ nhịp cho giao tiếp SPI Mỗi nhịp trên chân SCK truyền tải 1 bit dữ liệu, đảm bảo quá trình truyền thông ít bị lỗi và đạt tốc độ cao.
MISO (Master Input Slave Output) refers to the signal generated by the Slave device and received by the Master device It is essential to connect the MISO line between the Master and Slave devices for proper communication.
MOSI (Master Output Slave Input) là tín hiệu được tạo ra bởi thiết bị Master và nhận bởi thiết bị Slave Để đảm bảo hoạt động hiệu quả, đường MOSI cần được kết nối chặt chẽ giữa thiết bị Master và thiết bị Slave.
Chân SS (Slave Select) được sử dụng để chọn thiết bị Slave cụ thể cho giao tiếp Để chọn thiết bị Slave, Master cần kéo chân SS xuống mức 0 (Low), chân này cũng được gọi là CS (Chip Select) Chân SS của vi điều khiển (Master) có thể được cấu hình từ một chân GPIO bất kỳ ở chế độ Output, ví dụ như chân sda trên module RC522.
Mỗi chip Master hay Slave đều có một thanh ghi dữ liệu 8 bits.
Quá trình truyền nhận dữ liệu giữa Master và Slave diễn ra song song sau 8 chu kỳ đồng hồ, cho phép một byte dữ liệu được truyền theo cả hai 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 khởi đầu khi Master phát tín hiệu xung clock từ bộ tạo xung nhịp (Clock Generator) và kéo đường SS của Slave xuống mức Low để bắt đầu truyền dữ liệu.
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
Tính đến hiện nay, công nghệ sinh trắc phổ biến và lâu đời nhất là nhận diện dấu vân tay Mỗi người khi sinh ra đều sở hữu dấu vân tay riêng biệt, không ai giống ai, và dấu vân tay là đặc điểm nhận diện đặc trưng nhất trên cơ thể con người.
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 là công nghệ hiện đại giúp nhận diện bằng cách đối chiếu hình ảnh vân tay đã được lưu trữ, mang lại nhiều lợi ích trong việc chấm công và quản lý So với các thiết bị nhận diện thế hệ cũ, cảm biến vân tay phổ biến hơn, hỗ trợ kiểm soát dễ dàng và có tỉ lệ sai lệch thấp.
Cảm biến vân tay hoạt động bằng cách chụp hình ảnh vân tay khi người dùng áp ngón tay lên thiết bị nhận dạng Hình ảnh này sau đó được so sánh với các dữ liệu đã lưu trữ trong hệ thống Trong quá trình này, hình ảnh sẽ được chuyển đổi thành dữ liệu số, và kết quả cuối cùng sẽ thông báo xem vân tay có hợp lệ hay không, từ đó cho phép tiếp tục thực hiện các chức năng tiếp theo.
Cảm biến nhận dạng vân tay AS608 sử dụng giao tiếp UART TTL hoặc USB để kết nối với vi điều khiển và máy tính Việc kết nối này có thể thực hiện thông qua mạch chuyển đổi USB-UART hoặc giao tiếp USB trực tiếp.
Cảm biến vân tay AS608 tích hợp bộ xử lý nhận dạng vân tay bên trong, tự động gán vân tay với chuỗi dữ liệu và truyền qua giao tiếp UART, giúp đơn giản hóa quá trình sử dụng mà 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 UART, thiết bị này rất dễ sử dụng và lập trình, phù hợp cho các dự án tốt nghiệp.
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 Đồ án tốt nghiệp
- 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, bao gồm bộ vi điều khiển Tensilica L106 32-bit và bộ thu phát Wi-Fi Chip này có 11 chân GPIO và một đầu vào analog, cho phép lập trình giống như Arduino Mặc dù ESP8266 có tổng cộng 17 chân GPIO, nhưng 6 chân (6-11) được sử dụng để giao tiếp với chip nhớ flash trên bo mạch Với khả năng kết nối Wi-Fi, chip này có thể kết nối với mạng Internet, lưu trữ máy chủ web, và tương tác với điện thoại thông minh, mang lại vô vàn khả năng ứng dụng Do đó, ESP8266 đã trở thành 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 bộ phát triển như NodeMCU DevKit hoặc WeMos D1 có sự khác biệt về chân cắm, ăng-ten Wi-Fi và dung lượng bộ nhớ flash Những đặc điểm này ảnh hưởng đến khả năng và ứng dụng của từng bo mạch trong các dự án điện tử và đồ án tốt nghiệp.
ESP8266 có thể hoạt động như một module WiFi bên ngoài thông qua firmware AT tiêu chuẩn, kết nối với bất kỳ bộ vi điều khiển nào qua giao tiếp UART Ngoài ra, nó cũng có thể được lập trình trực tiếp làm bộ vi điều khiển hỗ trợ WiFi bằng cách sử dụng SDK được cung cấp để phát triển chương trình cơ sở mới.
Các chân GPIO của ESP8266 hỗ trợ cả IO Analog và Digital, bao gồm các giao thức như PWM, SPI, và I2C Chip này có nhiều ứng dụng trong lĩnh vực IoT, cho phép phát triển các dự án đa dạng và linh hoạt.
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 việc tiếp nhận thông tin từ cảm biến analog và kỹ thuật số, sau đó thực hiện các tính toán phức tạp hơn với sự hỗ trợ của RTOS hoặc SDK không phải hệ điều hành.
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 Đồ án tốt nghiệp
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 :
ESP 8266 có thể được lập trình thông qua trình biên dịch Arduino bằng cách tải xuống thư viện board và thiết lập tương tự như Arduino Uno Đối với driver, phiên bản cũ sử dụng CH340P, trong khi phiên bản mới sử dụng driver CP210x.
Module ds1307 và chuẩn giao tiếp I2C
Mạch thời gian thực RTC DS1307 cung cấp thông tin về ngày, tháng, năm, giờ, phút và giây cho vi điều khiển qua giao tiếp I2C Mạch tích hợp pin backup giúp duy trì thời gian ngay cả khi mất nguồn Ngoài ra, mạch còn có IC EEPROM AT24C32 để lưu trữ thông tin, rất phù 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à giao thức giao tiếp nối tiếp đồng bộ do Philips Semiconductors phát triển, cho phép truyền nhận dữ liệu giữa các IC thông qua chỉ hai đường tín hiệu.
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. Đồ án tốt nghiệp
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 có chức năng điều khiển tín hiệu SCL và truyền nhận dữ liệu hoặc lệnh qua đường SDA đến các thiết bị khác.
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, thường là các IC hoặc vi điều khiển.
Master và Slave được kết nối qua hai đường bus SCL và SDA hoạt động ở chế độ Open Drain, cho phép các thiết bị chỉ kéo các đường bus này xuống mức thấp (LOW) mà không thể kéo lên mức cao Điều này giúp ngăn ngừa hiện tượng ngắn mạch khi một thiết bị kéo lên mức cao trong khi thiết bị khác kéo xuống mức thấp Để duy trì mức cao mặc định, cần sử dụng một điện trở có giá trị từ 1 đến 4,7 kΩ.
Khi một thiết bị chủ hoặc IC bắt đầu một giao dịch, nó sẽ hạ mức điện áp của đường SDA từ cao xuống thấp trước khi đường SCL chuyển từ cao xuống thấp.
Khi thiết bị Master gửi điều kiện bắt đầu, tất cả các thiết bị Slave sẽ hoạt động ngay cả khi đang ở chế độ ngủ và chờ nhận bit địa chỉ.
Quá trình truyền nhận dữ liệu thường liên quan đến nhiều thiết bị và IC khác nhau Để phân biệt các thiết bị này, mỗi thiết bị sẽ được gán một địa chỉ vật lý cố định gồm 7 bit.
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 xác định quá trình truyền hoặc nhận dữ liệu từ thiết bị Master Khi Master gửi dữ liệu, bit này có giá trị '0', trong khi đó, bit này có giá trị '1' khi nhận dữ liệu.
Viết tắt của Acknowledged / Not Acknowledged, thuật ngữ này được sử dụng để so sánh bit địa chỉ vật lý của thiết bị với địa chỉ mà dữ liệu được gửi tới Nếu địa chỉ trùng khớp, Slave sẽ được đặt bằng '0', ngược lại, nếu không trùng, giá trị mặc định sẽ là '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. Đồ án tốt nghiệp
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ẽ đối chiếu địa chỉ vật lý với địa chỉ vừa nhận Nếu hai địa chỉ trùng khớp, Slave sẽ xác nhận bằng cách kéo đường SDA xuống mức 0 và thiết lập bit ACK/NACK.
‗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.
Sau khi dữ liệu được gửi thành công đến Slave, Master sẽ phát tín hiệu Stop để thông báo rằng quá trình truyền đã hoàn tất, với các tín hiệu SCL và SDA chuyển từ mức 0 lên mức 1.
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
Màn hình LCD 20x4 là thiết bị hiển thị chữ và số trong bảng mã ASCII, với mỗi ô hiển thị một ký tự duy nhất Các điểm tinh thể lỏng trong màn hình kết hợp theo trình tự "ẩn" hoặc "hiện" để tạo ra các ký tự cần thiết.
Màn hình LCD 20x4 là loại màn hình có 4 dòng, mỗi dòng hiển thị tối đa 20 ký tự Loại màn hình này rất phổ biến trong các mạch điện và thường được sử dụng trong các đồ án tốt nghiệp.
- Đ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, which stands for Universal Asynchronous Receiver/Transmitter, is fundamentally different from communication standards like SPI or I2C Its primary purpose is to facilitate the serial transmission and reception of data.
- 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, và trong truyền nhận không đồng bộ, các bên truyền và nhận cần thống nhất về Baudrate Các tốc độ Baudrate phổ biến thường được sử dụng để giao tiếp với máy tính bao gồm: 600, 1200, 2400, 4800, 9600, 14400 và 19200.
Khung truyền đóng vai trò quan trọng trong việc truyền dữ liệu thành công, không chỉ vì tốc độ baud của hai thiết bị truyền nhận giống nhau mà còn vì cấu hình khung truyền cũng phải đồng nhất Khung truyền quy định số bit trong mỗi lần truyền, bao gồm bit bắt đầu (Start bit), các bit kết thúc (Stop bit) và bit kiểm tra tính chẵn lẻ (Parity) Ngoài ra, số bit trong một gói dữ liệu cũng được xác định bởi khung truyền.
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
Bit đầu tiên trong một frame, được gọi là bit start, có vai trò thông báo cho bên nhận về việc sắp có một gói dữ liệu được truyền đến Trong giao thức UART, đường truyền luôn ở trạng thái cao mức ―1‖ cho đến khi chip quyết định truyền dữ liệu, lúc này nó sẽ gửi bit start bằng cách kéo xuống mức ―0‖ Do đó, bit start có giá trị điện áp 0V và là thành phần bắt buộc trong khung truyền.
Dữ liệu (data) là thông tin thu được trong quá trình truyền và nhận Trong STM32, dữ liệu được quy định với khung truyền là 8 bit hoặc 9 bit Khi truyền qua UART, bit có trọng số thấp nhất (LSB - least significant bit) đóng vai trò quan trọng trong việc xác định nội dung của dữ liệu.
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)
Bit Parity là một phương pháp kiểm tra tính chính xác của dữ liệu truyền tải, với hai loại chính là Parity chẵn (even parity) và Parity lẽ (odd parity) Parity chẵn yêu cầu số lượng bit 1 trong dữ liệu cùng với bit Parity phải là số chẵn, trong khi Parity lẽ yêu cầu tổng số này phải là số lẽ Bit Parity không phải là yếu tố bắt buộc, cho phép loại bỏ nó khỏi khung truyền nếu cần thiết.
- 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
Tốc độ truyền của mỗi UART cần phải nằm trong khoảng 10% để đảm bảo tính tương thích Để khắc phục nhược điểm của UART không hỗ trợ nhiều slave hoặc master, chúng ta có thể thay thế bằng CAN, một giao thức hỗ trợ nhiều thiết bị hơn chỉ với 2 dây, tùy thuộc vào sự hỗ trợ của chip.
Cấu hình CUBE MX cho mạch
STM32CubeMX là phần mềm miễn phí hỗ trợ cấu hình ngoại vi, thiết lập clock, tính toán dòng tiêu thụ và tạo dự án cho các dòng chip ARM STM32 Việc tạo dự án trở nên dễ dàng hơn nhờ khả năng lựa chọn các ngoại vi cần thiết và cấp lock tùy chỉnh mà không cần viết code.
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 Đồ án tốt nghiệp
Hình 2.28 Cấu hình clock cho chip
Để cấu hình tốc độ SPI phù hợp, cần đảm bảo rằng tốc độ không vượt quá 10MBit/S, tùy thuộc vào APB2 Việc tăng tốc độ quá mức sẽ làm giảm hiệu suất của bộ chia SPI Chúng ta sử dụng thạch anh ngoài, vì thạch anh nội chỉ cho phép tốc độ tối đa là 4MBit/S.
Chúng ta sẽ thiết lập UART1 và UART2 cho chip với tốc độ 9600 Để giao tiếp giữa STM32 và AS608, cần thiết lập tốc độ 57600.
Hình 2.29 Cấu hình UART1 và 2
Cấu hình spi: Đồ án tốt nghiệp
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à một phương thức cho phép truyền dữ liệu nhanh chóng giữa thiết bị ngoại vi và bộ nhớ, cũng như giữa các vùng bộ nhớ với nhau.
3.1 Sơ đồ khối hệ thống
Hình 3.1 Sơ đồ khối 3.1.1 Khối nguồn
Hình 3.2 Khối nguồn Tạo nguồn 5V ổn định cho mạch
Hình 3.3 Khối cảm biến Đồ án tốt nghiệp
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 Đồ án tốt nghiệp
- 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 toàn mạch, ESP8266 sẽ tự động kết nối với WiFi đã được lưu 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ờ, cho phép sử dụng đầu đọc thẻ từ và vân tay Ngược lại, 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 đọc vân tay sẽ không hoạt động.
Khi thẻ từ được đặt vào đầu đọc, nó sẽ quét các thông tin như mã sinh viên, họ tên và mã lớp Những dữ liệu này sau đó được xử lý và gửi lên Google Sheet để xác minh tính chính xác của mã sinh viên và mã lớp cho Đồ án tốt nghiệp.
Nếu thông tin của sinh viên hoàn toàn chính xác, sinh viên đó sẽ được đánh dấu là đã đi học Tuy nhiên, nếu thẻ sinh viên không thuộc nhóm học tương ứng, dù đầu đọc thẻ có nhận diện và hiển thị thông tin, mã lớp khác sẽ không được hiển thị trên Google Sheet.
Khi sử dụng module vân tay, nếu vân tay của bạn đã được đăng ký và ID của bạn nằm trong danh sách, bạn sẽ được điểm danh khi đặt vân tay lên module Ngược lại, nếu bạn có mã lớp khác nhưng ID của bạn vẫn có trong module, 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 Đồ án tốt nghiệp
Sơ đồ bố trí linh kiện:
Hình 3.8 Sơ đồ bố trí linh kiện trên mặt board Đồ án tốt nghiệp
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 Đồ án tốt nghiệp
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