Hình 2 .7 Sơ đồ khối chip điều khiển LCD
Hình 2.9 Sơ đồ khối UART
Truyền thơng UART
Start bit
Start-bit cịn được gọi là bit đồng bộ hóa được đặt trước dữ liệu thực tế. Nói chung, một đường truyền dữ liệu khơng hoạt động được điều khiển ở mức điện áp cao. Để bắt đầu truyền dữ liệu, truyền UART kéo đường dữ liệu từ mức điện áp cao (1) xuống mức điện áp thấp (0). UART thu được thông báo sự chuyển đổi này từ mức cao sang mức thấp qua đường dữ liệu cũng như bắt đầu hiểu dữ liệu thực. Nói chung, chỉ có một start-bit.
Bit dừng
Bit dừng được đặt ở phần cuối của gói dữ liệu. Thông thường, bit này dài 2 bit nhưng thường chỉ sử dụng 1 bit. Để dừng sóng, UART giữ đường dữ liệu ở mức điện áp cao.
Bit chẵn lẻ
Bit chẵn lẻ cho phép người nhận đảm bảo liệu dữ liệu được thu thập có đúng hay khơng. Đây là một hệ thống kiểm tra lỗi cấp thấp & bit chẵn lẻ có sẵn trong hai phạm
vi như Chẵn lẻ – chẵn lẻ cũng như Chẵn lẻ – lẻ. Trên thực tế, bit này không được sử dụng rộng rãi nên không bắt buộc.
Dữ liệu bit và khung dữ liệu
Các bit dữ liệu bao gồm dữ liệu thực được truyền từ người gửi đến người nhận. Độ dài khung dữ liệu có thể nằm trong khoảng 5 & 8. Nếu bit chẵn lẻ khơng được sử dụng thì chiều dài khung dữ liệu có thể dài 9 bit. Nói chung, LSB của dữ liệu được truyền trước tiên sau đó nó rất hữu ích cho việc truyền.
Ưu điểm nhược điểm
Những ưu và nhược điểm của UART bao gồm những điều sau đây Nó chỉ cần hai dây để truyền dữ lệu.
Tín hiệu CLK là khơng cần thiết.
Nó bao gồm một bit chẵn lẻ để cho phép kiểm tra lỗi.
Sắp xếp gói dữ liệu có thể được sửa đổi vì cả hai mặt được sắp xếp. Kích thước khung dữ liệu tối đa là 9 bit.
Nó khơng chứa một số hệ thống phụ (hoặc).
2.4.2 Giao thức SPI
Các chân giao tiếp SPI
SPI (Serial Peripheral Bus) là một chuẩn truyền thông nối tiếp tốc độ cao do
hãng Motorola đề xuất. Đây là kiểu truyền thông Master-Slave, trong đó có 1 chip Master điều phối q trình tuyền thơng và các chip Slaves được điều khiển bởi Master vì thế truyền thơng chỉ xảy ra giữa Master và Slave. SPI là một cách truyền song công (full duplex) nghĩa là tại cùng một thời điểm q trình truyền và nhận có thể xảy ra đồng thời. SPI đơi khi được gọi là chuẩn truyền thơng “4 dây” vì có 4 đường giao tiếp trong chuẩn này đó là SCK (Serial Clock), MISO (Master Input Slave Output), MOSI (Master Ouput Slave Input) và SS (Slave Select). Hình 1 thể hiện một kết SPI giữa một chip Master và 3 chip Slave thông qua 4 đường.
SCK: Xung giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền đồng bộ nên cần 1
đường giữ nhịp, mỗi nhịp trên chân SCK báo 1 bit dữ liệu đến hoặc đi. Đây là điểm khác biệt với truyền thông không đồng bộ mà chúng ta đã biết trong chuẩn UART. Sự tồn tại của chân SCK giúp q trình truyền ít bị lỗi và vì thế tốc độ truyền của SPI có thể đạt rất cao. Xung nhịp chỉ được tạo ra bởi chip Master.
MISO – Master Input / Slave Output: nếu là chip Master thì đây là đường Input
cịn nếu là chip Slave thì MISO lại là Output. MISO của Master và các Slaves được nối trực tiếpvới nhau.
MOSI – Master Output / Slave Input: nếu là chip Master thì đây là đường
Output cịn nếu là chip Slave thì MOSI là Input. MOSI của Master và các Slaves được nối trực tiếp với nhau.
SS – Slave Select: SS là đường chọn Slave cần giap tiếp, trên các chip Slave
đường SS sẽ ở mức cao khi không làm việc. Nếu chip Master kéo đường SS của một Slave nào đó xuống mức thấp thì việc giao tiếp sẽ xảy ra giữa Master và Slave đó. Chỉ có 1 đường SS trên mỗi Slave nhưng có thể có nhiều đường điều khiển SS trên Master, tùy thuộc vào thiết kế của người dùng.
Hình 2.10: Giao diện SPI
Đơi khi chuẩn SPI được sử dụng chỉ để ghi dữ liệu từ Master ra Slaver thì chân MISO sẽ khơng được dùng.
Cơ chế hoạt động
Mỗi chip Master hay Slave có một thanh ghi dữ liệu 8 bits. Cứ mỗi xung nhịp do Master tạo ra trên đường giữ nhịp SCK, một bit trong thanh ghi dữ liệu của Master được truyền qua Slave trên đường MOSI, đồng thời một bit trong thanh ghi dữ liệu của chip Slave cũng được truyền qua Master trên đường MISO. Do 2 gói dữ liệu trên 2 chip được gởi qua lại đồng thời nên quá trình truyền dữ liệu này được gọi là “song cơng”. Hình 2 mơ tả q trình truyền 1 gói dữ liệu thực hiện bởi module SPI trong AVR, bên trái là chip Master và bên phải là Slave.
Các chế độ hoạt động
Cực của xung giữ nhịp (Clock Polarity): được gọi tắt là CPOL là khái niệm dùng
chỉ trạng thái của chân SCK ở trạng thái nghỉ. Ở trạng thái nghỉ (Idle), chân SCK có thể được giữ ở mức cao (CPOL=1) hoặc thấp (CPOL=0).
Phase (CPHA): dùng để chỉ cách mà dữ liệu được lấy mẫu (sample) theo xung giữ
nhịp. Dữ liệu có thể được lấy mẫu ở cạnh lên của SCK (CPHA=0) hoặc cạnh xuống (CPHA=1).
Sự kết hợp của SPOL và CPHA làm nên 4 chế độ hoạt động của SPI. Nhìn chung việc chọn 1 trong 4 chế độ này không ảnh hưởng đến chất lượng truyền thơng mà chỉ cốt sao cho có sự tương thích giữa Master và Slave. Khi giao tiếp vi điều khiển giữa các ic khác các bạn phải chú ý xem ic đó hoạt động ở chế độ nào mà cấu hình vi điều khiển cho phù hợp
CPHA=0
CPHA=1
2.4.3 Giao tiếp I2C
Giới thiệu
I2C là tên viết tắt của cụm từ tiếng anh “Inter-Integrated Circuit”. Nó là một giao thức giao tiếp được phát triển bởi Philips Semiconductors để truyền dữ liệu giữa một bộ xử lý trung tâm với nhiều IC trên cùng một board mạch chỉ sử dụng hai đường truyền tín hiệu.
Do tính đơn giản của nó nên loại giao thức này được sử dụng rộng rãi cho giao tiếp giữa vi điều khiển và mảng cảm biến, các thiết bị hiển thị, thiết bị IoT, EEPROMs, v.v …
Đây là một loại giao thức giao tiếp nối tiếp đồng bộ. Nó có nghĩa là các bit dữ liệu đượ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 một tín hiệu đồng hồ tham chiếu.
Đặc điểm
Sau đây là một số đặc điểm quan trọng của giao thức giao tiếp I2C:
Chỉ cần có hai đường bus (dây) chung để điều khiển bất kỳ thiết bị / IC nào trên mạng I2C.
Không cần thỏa thuận trước về tốc độ truyền dữ liệu như trong giao tiếp UART. Vì vậy, tốc độ truyền dữ liệu có thể được điều chỉnh bất cứ khi nào cần thiết.
Cơ chế đơn giản để xác thực dữ liệu được truyền.
Sử dụng hệ thống địa chỉ 7 bit để xác định một thiết bị / IC cụ thể trên bus I2C.
Các mạng I2C dễ dàng mở rộng. Các thiết bị mới có thể được kết nối đơn giản với hai đường bus chung I2C.
Phần cứng
Bus I2C (dây giao tiếp) chỉ gồm hai dây và được đặt tên là Serial Clock Line (SCL) và Serial Data Line (SDA). Dữ liệu được truyền đi được gửi qua dây SDA và được đồng bộ với tín hiệu đồng hồ (clock) từ SCL. Tất cả các thiết bị / IC trên mạng I2C được kết nối với cùng đường SCL và SDA như sau:
Master và Slave
Các thiết bị kết nối với bus I2C được phân loại hoặc là thiết bị Chủ (Master) hoặc là thiết bị Tớ (Slave). Ở bất cứ thời điểm nào thì chỉ có duy nhất một thiết bị Master ở trang thái hoạt động trên bus I2C. Nó điều khiển đường tín hiệu đồng hồ SCL và quyết định hoạt động nào sẽ được thực hiện trên đường dữ liệu SDA.
Tất cả các thiết bị đáp ứng các hướng dẫn từ thiết bị Master này đều là Slave. Để phân biệt giữa nhiều thiết bị Slave được kết nối với cùng một bus I2C, mỗi thiết bị Slave được gán một địa chỉ vật lý 7-bit cố định.
Khi một thiết bị Master muốn truyền dữ liệu đến hoặc nhận dữ liệu từ một thiết bị Slave, nó xác định địa chỉ thiết bị Slave cụ thể này trên đường SDA và sau đó tiến hành truyền dữ liệu. Vì vậy, giao tiếp có hiệu quả diễn ra giữa thiết bị Master và một thiết bị Slave cụ thể.
Tất cả các thiết bị Slave khác không phản hồi trừ khi địa chỉ của chúng được chỉ định bởi thiết bị Master trên dịng SDA.
Hình 2.14: Một master kết nối nhiều slave
Giao thức truyền dữ liệu
Dữ liệu được truyền giữa thiết bị Master và các thiết bị Slave thông qua một đường dữ liệu SDA duy nhất, thơng qua các chuỗi có cấu trúc gồm các số 0 và 1 (bit). Mỗi chuỗi số 0 và 1 được gọi là giao dịch (transaction) và dữ liệu trong mỗi giao dịch có cấu trúc như sau:
Start Condition
Bất cứ khi nào một thiết bị chủ / IC quyết định bắt đầu một giao dịch, nó sẽ chuyển mạch SDA từ mức điện áp cao xuống mức điện áp thấp trước khi đường SCL chuyển từ cao xuống thấp.
Khi điều kiện bắt đầu được gửi bởi thiết bị Master, tất cả các thiết bị Slave đều hoạt động ngay cả khi chúng ở chế độ ngủ (sleep mode) và đợi bit địa chỉ.
Hình 2.16: Điều kiện bắt đầu quá trình truyền dữ liệu
Khối địa chỉ
Bao gồm 7 bit và được lấp đầy với địa chỉ của thiết bị Slave đến / từ đó thiết bị Master cần gửi / nhận dữ liệu. Tất cả các thiết bị Slave trên bus I2C so sánh các bit địa chỉ này với địa chỉ của chúng.
Bit Read/Write
Bit này xác định hướng truyền dữ liệu. Nếu thiết bị Master / IC cần gửi dữ liệu đến thiết bị Slave, bit này được thiết lập là ‘0’. Nếu IC Master cần nhận dữ liệu từ thiết bị Slave, bit này được thiết lập là ‘1’.
Bit ACK, NACK
ACK / NACK là viết tắt của Acknowledged/Not-Acknowledged. Nếu địa chỉ vật lý của bất kỳ thiết bị Slave nào trùng với địa chỉ được thiết bị Master phát, giá trị của bit này được set là ‘0’ bởi thiết bị Slave. Ngược lại, nó vẫn ở mức logic ‘1’ (mặc định).
Khối dữ liệu
Bao gồm 8 bit và chúng được thiết lập bởi bên gửi, với các bit dữ liệu cần truyền tới bên nhận. Khối này được theo sau bởi một bit ACK / NACK và được set thành ‘0’ bởi bên nhận nếu nó nhận thành cơng dữ liệu. Ngược lại, nó vẫn ở mức logic ‘1’. Stop Condition
Sau khi các khung dữ liệu cần thiết được truyền qua đường SDA, thiết bị Master chuyển đường SDA từ mức điện áp thấp sang mức điện áp cao trước khi đường SCL chuyển từ cao xuống thấp.
CHƯƠNG 3: TÍNH TỐN VÀ THIẾT KẾ
3.1 Giới thiệu
Đề tài “Thiết kế thiết bị chấm công bằng phương pháp trắc học nhận dạng vân tay sử dụng esp32” bao gồm:
Hệ thống có các chức năng như sau: hệ thống chính là điểm danh cho nhân viên bằng cách tiến hành qt vân tay. Sau đó, thơng tin nhân viên sẽ được gửi lên Internet để ghi chép thời điểm điểm danh nhân viên…..Thêm nữa là cho phép quản lí thêm vân tay, xóa vân tay.
3.2 Tính tốn và thiết kế hệ thống
3.2.1 Thiết kế sơ đồ khối hệ thống
Hệ thống gồm 6 khối ghép lại với nhau theo nhiều hướng tạo nên một hoạt động ổn định được trình bày trong sơ đồ khối hình 3.1 như sau:
Hình 3.1: Sơ đồ khối hệ thông cuẩ thiết bị
Chức năng từng khối:
Khối nguồn: cung cấp nguồn 5V cho các khối cịn lại
Khối xử lí trung tâm: thu thập dữ liệu từ các thiết bị sau đó xử lí và điều khiển khối hiển thị và khối server. Khối này do ESP32 DEVKIT V1 thực hiện.
Khối cảm biến vân tay: tiến hành quét vân tay của nhân viên và lưu trữ dấu vân tay. Khối này do module cảm biến vân tay R305 thực hiện.
Khối hiển thị: hiển thị thông tin chế độ hoạt động khi người dùng thao tác. Khối này sử dụng module lcd16x2
Khối điều khiển: Khối này để người dung thực thi nhập mã số, phục vụ cho nhiệm vụ lưu trữ vân tay.
3.2.2 Tinh tốn và thiết kế mạch
a. Khối xử lí trung tâm
ESP32 DEVKIT V1 sử dụng esp32. Nó có 25 chân digital I/O và 5 chân nguồn EN,VCC,GND , kết nối USB, một jack cắm điện và một nút reset như trong hình 3.2. Nó chứa tất cả mọi thứ cần thiết để tạo thành khối xử lí trung tâm với đầy đủ các port.
Ý tưởng thiết kế của nhóm là kết hợp nhiều module lại với nhau, do vậy sẽ có nhiều chân kết nối nên việc lựa chọn ESP32 DEVKIT V1 là rất phù hợp.
Hình 3.2: Khối xử lí trung tâm sử dụng ESP32 DEVKIT V1
Trong quá trình kết nối các module và lập trình cho hệ thống:
- Bộ nhớ sử dụng hết 930754 bytes vào khoảng 71% bộ nhớ
- Tổng số chân I/O sử dụng 16 chân, cơng thức tính dịng tiêu thụ: Dòng tiêu thụ = 16x40mA=640 mA
b. Khối cảm biến vân tay
Khối cảm biến vân tay sẽ gửi tín hiệu về khối xử lý, khối xử lý sẽ nhận tín hiệu và chuyển đến khối khác để chuyển tín hiệu đó đi. Đồng thời, khối cảm biến vân tay chỉ hoạt dộng khi khối xử lí trung tâm yêu cầu.
Trên thị trường có rất nhiều loại cảm biến vân tay như đầu đọc vân tay R303S có khả năng lưu trữ 1000 mẫu vân tay, đầu đọc vân tay R101 có khả năng lưu trữ 1000 mẫu, module R301 có khả năng lưu trữ 500 mẫu vân tay, module R305 có khả năng lưu trữ 120 vân tay…..Do đề tài của nhóm thực hiện quét vân tay cho nhân viên sử dụng khoảng 1000 vân tay nên lựa chọn module vân tay R305 để thực hiện trong đề tài này.
Cảm biến vân tay R305 tích hợp xử lí hình ảnh và tuật tốn xử lí cùng một chip. Khả năng xử lí ảnh chụp tốt với độ phân giải đến 51x288 pixels. Chuẩn giao tiếp: USB- UART(TTL logical logic) từ 9600-115200 bps, 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 : 4.2 – 6.0 VDC
+ Dòng điện tiêu thụ: <120mA.
Cách nối day cho cảm biến R305 vào ESP32 DEVKIT V1 theo thứ tự chân: Dây số 1 nối với nguồn 5V và dây số 2 vào GND arduino
Dây số 3 nối với chân số 32 RX1 và dây số 4 nối chân 33 TX1 của ESP32 DEVKIT V1
c. Khối hiển thị
Hiển thị trạng thái làm việc của hệ thống trên màn hình LCD 20x4, với 4 hàng ta có thể dễ dàng thao tác giữa người dùng với mơ hình hệ thống
Hình 3.3: LCD 20x4
Vì sử dụng mạch chuyển giao LCD 20x4 sang I2C, chỉ cần 2 chân SDA và SCL của ESP32 DEVKIT V1 kết nối với 2 chân SDA và SCL của module là đã có thể hiển thị thơng tin lên LCD
Hình ảnh thực tế của mạch chuyển giao tiếp được thể hiện ở hình 3.4:
Hình 3.4: Mạch chuyển giao tiếp LCD sang I2C
Hai chân nguồn VCC và GND được kết nối với chân 3,3 V và GND của ESP32 DEVKIT V1
SDA được kết nối với chân 19 và SCL được kết nối với chân 21 của ESP32 DEVKIT V1
Cách kết nối giữa LCD 20x4 sử dụng mạch chuyển giao giao tiếp LCD sang I2C và ESP32 DEVKIT V!, được thể hiện ở trên.
d. Khối ngoại vi
Trong khối này có phím ma trận 4x4. Sơ đồ nối dây và hình ảnh thực tế của ma trận bàn phím 4x4 được thể hiện trong hình 3.5 sau:
e. Khối nguồn
Nguồn cấp cho khối xử lí trung tâm