R307 giao tiếp STM32 là dùng Cảm biến vân tay bao gồm cảm biến vân tay quang, bộ xử lý DSP tốc độ cao, thuật toán so sánh vân tay hiệu suất cao, chip FLASH dung lượng lớn. Nó có hiệu suất ổn định và cấu trúc đơn giản. Đầu vào vân tay, xử lý hình ảnh, so sánh vân tay, tìm kiếm và lưu trữ mẫu. R307 là một bộ cảm biến vân tay có độ phân giải 508 DPI, có thể giao tiếp UART/USB. Trên cảm biến tích hợp chip thu hình ảnh và thuật toán trên cùng 1 mạch, công suất tiêu thụ nhỏ, chi phí thấp, thực hiện chính xác bền bỉ, cùng với công nghệ quang tiên tiến, gia công sản xuất chính xác, khả năng xửa lý hình ảnh tốt, có thể chụp hình lên đến 500 DPI. Vì thế cảm biến này thường được dùng để phát triển thành sản phẩm đầu cuối như: điều khiển truy cập, khóa xe hơi…
- Phone : 0967.551.477
- Zalo : 0967.551.477
- FB : Huỳnh Nhật Tùng
- Email : dientunhattung@gmail.com
- Địa Chỉ: 106/14 Đường số 51, Phường 14, Gò Vấp, Tp HCM
- Chi tiết: Nhận làm mạch và đồ án Điện tử
Table of Contents
1. Linh kiện cần thiết làm mạch đọc cảm biến vân tay R307 giao tiếp STM32
1.1 Vi điều khiển STM trong mạch đọc cảm biến vân tay R307 giao tiếp STM32
a. Giới thiệu
STM32 là một trong những dòng chip phổ biến của ST với nhiều họ thông dụng như F0,F1,F2,F3,F4….. Stm32f103 thuộc họ F1 với lõi là ARM COTEX M3. STM32F103 là vi điều khiển 32 bit, tốc độ tối đa là 72Mhz. Giá thành cũng khá rẻ so với các loại vi điều khiển có chức năng tương tự. Mạch nạp cũng như công cụ lập trình khá đa dạng và dễ sử dụng. Một số ứng dụng chính: dùng cho driver để điều khiển ứng dụng, điều khiển ứng dụng thông thường, thiết bị cầm tay và thuốc, máy tính và thiết bị ngoại vi chơi game, GPS cơ bản, các ứng dụng trong công nghiệp, thiết bị lập trình PLC, biến tần, máy in, máy quét, hệ thống cảnh báo, thiết bị liên lạc nội bộ… Phần mềm lập trình: có khá nhiều trình biên dịch cho STM32 như IAR Embedded Workbench, Keil C… Ở đây mình sử dụng Keil C nên các bài viết sau mình chỉ đề cập đến Keil C.
Thông tin khác
Vi xử lý có rất nhiều loại bắt đầu từ 4 bit cho đến 32 bit, vi xử lý 4 bit hiện nay không còn nhưng vi xử lý 8 bit vẫn còn mặc dù đã có vi xử lý 64 bit. Lý do sự tồn tại của vi xử lý 8 bit là phù hợp với một số yêu cầu điều khiển trong công nghiệp. Các vi xử lý 32 bit, 64 bit thường sử dụng cho các máy tính vì khối lượng dữ liệu của máy tính rất lớn nên cần các vi xử lý càng mạnh càng tốt. Các hệ thống điều khiển trong công nghiệp sử dụng các vi xử lý 8 bit hay 16 bit như hệ thống điện của xe hơi, hệ thống điều hòa, hệ thống điều khiển các dây chuyền sản xuất, …
b. Sơ lược về STM32:
- 1 cổng Mini USB dùng để cấp nguồn, nạp cũng như debug.
- 2 MCU bao gồm 1 MCU nạp và 1 MCU dùng để lập trình.
- Có chân Output riêng cho các chân mạch nạp trên MCU1.
- Có chân Output đầy đủ cho các chân MCU2.
- Chân cấp nguồn ngoài riêng cho MCU2 nếu không sử dụng nguồn từ USB.
- Thạch anh 32,768khz dùng cho RTC và Backup.
- Chân nạp dùng cho chế độ nạp boot loader.
- Nút Reset ngoài và 1 led hiển thị trên chân PB9, 1 led báo nguồn cho MCU2.
c.Thông số kỹ thuật STM32
- Vi điều khiển: STM32F103C8T6.
- Điện áp cấp 5VDC qua cổng Micro USB sẽ được chuyển đổi thành 3.3VDC qua IC nguồn và cấp cho Vi điều khiển chính.
- Tích hợp sẵn thạch anh 8Mhz.
- Tích hợp sẵn thạnh anh 32Khz cho các ứng dụng RTC.
- Ra chân đầy đủ tất cả các GPIO và giao tiếp: CAN, I2C, SPI, UART, USB,…
- Tích hợp Led trạng thái nguồn, Led PC13, Nút Reset.
- Kích thước: 53.34 x 15.24mm
- Sử dụng với các mạch nạp:
- ST-Link Mini
- J-link
- USB TO COM
- Kết nối chân khi nạp bằng ST-Link Mini
- Nạp theo chuẩn SWD
- TCK — SWCLK
- TMS — SWDIO
- GND — GND
- 3.3V — 3.3V
d. Cấu hình
- ARM 32-bit Cortex M3 với clock max là 72Mhz.
- Bộ nhớ:
- 64 kbytes bộ nhớ Flash(bộ nhớ lập trình).
- 20kbytes SRAM.
- Clock, reset và quản lý nguồn.
- Điện áp hoạt động 2.0V -> 3.6V.
- Power on reset(POR), Power down reset(PDR) và programmable voltage detector (PVD).
- Sử dụng thạch anh ngoài từ 4Mhz -> 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.
- 7 kênh DMA.
- Hỗ trợ DMA cho ADC, I2C, SPI, UART.
- 7 timer.
- 3 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..
- 2 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:
- 2 bộ I2C(SMBus/PMBus).
- 3 bộ USART(ISO 7816 interface, LIN, IrDA capability, modem control).
- 2 SPIs (18 Mbit/s).
- 1 bộ CAN interface (2.0B Active)
- USB 2.0 full-speed interface
- Kiểm tra lỗi CRC và 96-bit ID.
e.Bộ nhớ
Vi điều khiển ATmega328:- 64 KB bộ nhớ Plash: trong đó bootloader chiếm 0.5KB.
- 20 KB cho SRAM: (Static Random Access Menory): giá trị các biến khai báo sẽ được lưu ở đây. Khai báo càng nhiều biến thì càng tốn nhiều bộ nhớ RAM. Khi mất nguồn dữ liệu trên SRAM sẽ bị mất.
- 1 KB cho EEPROM: (Electrically Eraseble Programmable Read Only Memory): Là nơi có thể đọc và ghi dữ liệu vào đây và không bị mất dữ liệu khi mất nguồn.
1.2 Cảm biến điện vân tay R307 giao tiếp STM32 kích khóa chốt điện
a. Giới thiệu cảm biến vân tay R307 giao tiếp STM32
- Cảm biến nhận dạng vân tay R307 bao gồm cảm biến vân tay quang, bộ xử lý DSP tốc độ cao, thuật toán so sánh vân tay hiệu suất cao, chip FLASH dung lượng lớn. Nó có hiệu suất ổn định và cấu trúc đơn giản. Đầu vào vân tay, xử lý hình ảnh, so sánh vân tay, tìm kiếm và lưu trữ mẫu.
- R307 là một bộ cảm biến vân tay có độ phân giải 508 DPI, có thể giao tiếp UART/USB. Trên cảm biến tích hợp chip thu hình ảnh và thuật toán trên cùng 1 mạch, công suất tiêu thụ nhỏ, chi phí thấp, thực hiện chính xác bền bỉ, cùng với công nghệ quang tiên tiến, gia công sản xuất chính xác, khả năng xửa lý hình ảnh tốt, có thể chụp hình lên đến 500 DPI. Vì thế cảm biến này thường được dùng để phát triển thành sản phẩm đầu cuối như: điều khiển truy cập, khóa xe hơi…
b. Thông số kỹ thuật
- Điện áp nguồn: DC 4.2 ~ 6.0V
- Chip sử dụng AS606
- Dòng hoạt động: 50mA
- Dòng điện cực đại: 80mA
- Thời gian nhập hình ảnh dấu vân tay: <0,3 giây
- Diện tích nhập vân tay: 14×18 mm
- Phương pháp so sánh :
- Phương pháp so sánh (1: 1)
- Chế độ tìm kiếm (1: N)
- tập tin chữ ký: 256-byte
- tệp mẫu: 512 byte
- Dung lượng lưu trữ: 1000 vân tay
- Mức độ bảo mật: 5 (từ thấp đến cao: 1,2,3,4,5)
- Tỷ lệ chấp nhận sai (FAR): <0,001%
- Tốc độ từ chối (FRR): <1,0%
- Thời gian tìm kiếm: <1,0 giây
- Giao diện máy chủ: Tốc độ truyền thông UART USB1.1 (UART): (9600 N) bps trong đó N = 1 12 (giá trị mặc định N = 6, tức là 57600bps)
- Môi trường làm việc:
- Nhiệt độ: -20 ° C- + 40 ° C
- Độ ẩm tương đối: 40% RH-85% RH (không ngưng tụ)
- Môi trường lưu trữ:
- Nhiệt độ: -40 ° C- + 85 ° C
- Độ ẩm tương đối: <85% H (không ngưng tụ hơi nước)
- Thích hợp cho khóa vân tay, két vân tay và các ứng dụng khác
c. Tính năng nỗi bật cảm biến vân tay R307
- Nhỏ gọn: cảm biến nhỏ gọn, không bên ngoài chip DSP bảng mạch thuật toán có gắn, dễ cài đặt, ít thất bại.
- Tiêu thụ điện năng cực thấp: Mức tiêu thụ điện năng chung của sản phẩm cực kỳ thấp, phù hợp với yêu cầu tiêu thụ điện năng thấp.
- Khả năng chống tĩnh điện mạnh: Nó có khả năng chống tĩnh điện mạnh và chỉ số chống tĩnh điện đạt trên 15KV.
- Phát triển ứng dụng rất đơn giản: các nhà phát triển có thể kiểm soát theo hướng dẫn được cung cấp bởi phát triển sản phẩm ứng dụng dấu vân tay của riêng mình, mà không cần phải có kiến thức chuyên môn nhận dạng vân tay.
- Mức an toàn có thể điều chỉnh: phù hợp với các ứng dụng khác nhau, mức độ an toàn có thể được điều chỉnh bởi người dùng.
- Dung lượng lưu trữ cảm biến vân tay R307 là 1000 vân tay
Một số tính năng khác
- Mô-đun vân tay R307 có cùng lúc với RS232 và USB2.0, giao diện kép giao tiếp với các thiết bị bên ngoài, giao diện USB2.0 có thể được kết nối với máy tính, giao diện RS232 TTL, tốc độ truyền mặc định là 57600, có thể thay đổi, Vui lòng tham khảo giao thức truyền thông, nó có thể được kết nối với một thiết bị chip đơn như ARM, DSP, v.v. và MCU 3,3V có thể được kết nối trực tiếp. Chuyển đổi cấp độ là cần thiết để kết nối với máy tính. Vui lòng chú ý đến dịch chuyển cấp độ, chẳng hạn như mạch MAX232.
- Sau khi cấp nguồn cảm biến nhận dạng vân tay được bật, cửa sổ thu thập dấu vân tay sẽ nhấp nháy, cho biết việc tự kiểm tra là bình thường. Nếu nó không nhấp nháy, vui lòng kiểm tra cẩn thận nguồn điện, xem nó có bị đảo ngược hay không. Con chip này có một chút nhiệt trong quá trình hoạt động bình thường, điều này là bình thường và đã được kiểm tra nghiêm ngặt và có thể được sử dụng một cách tự tin.
- Module Nhận Dạng Vân Tay R307 bao gồm cảm biến vân tay quang học, bộ xử lý DSP tốc độ cao, thuật toán so sánh vân tay hiệu suất cao, chip FLASH dung lượng lớn, phần mềm và phần cứng khác.
- Module Nhận Dạng Vân Tay R307 có hiệu suất ổn định và cấu trúc đơn giản, có đầu vào vân tay, xử lý hình ảnh, so sánh vân tay, tìm kiếm và lưu trữ mẫu.
- Module Nhận Dạng Vân Tay R307 tiêu thụ điện năng thấp, hiệu suất làm việc cao.
d. Chức năng cảm biến R307 giao tiếp STM32
- Hoàn thành độc lập các chức năng thu thập dấu vân tay, đăng ký vân tay, so sánh vân tay (1: 1) và tìm kiếm dấu vân tay (1: N).
- Kích thước nhỏ: Sản phẩm nhỏ và gọn, không có bảng mạch với chip DSP thuật toán bên ngoài. Nó được tích hợp thành một, thuận tiện cho việc cài đặt
- Tiêu thụ điện năng cực thấp: Mức tiêu thụ điện năng chung của sản phẩm cực kỳ thấp, phù hợp cho những dịp có mức tiêu thụ điện năng thấp.
- Khả năng chống tĩnh điện mạnh: nó có khả năng chống tĩnh điện mạnh, và chỉ số chống tĩnh điện đạt trên 15KV.
- Mức độ bảo mật có thể điều chỉnh: phù hợp với các ứng dụng khác nhau, mức độ bảo mật có thể được điều chỉnh bởi người dùng
- R307 tích hợp hỗ trợ cả RS232 và USB 2.0,khi R307được bật, cửa sổ thu thập dấu vân tay sẽ nhấp nháy một lần, cho biết việc tự kiểm tra là bình thường. Nếu nó không nhấp nháy, vui lòng kiểm tra cẩn thận nguồn điện, cẩn thận đảo ngược hoặc kết nối không chính xác. Khi sử dụng chip hơi nóng là bình thường.
e. Nguyên lý hoạt động
Có RS232 trên mô-đun vân tay R307 để giao tiếp với bên ngoài; giao diện RS232 là mức TTL, tốc độ truyền mặc định là 57600, bạn có thể thay đổi nó, vui lòng tham khảo giao thức truyền thông; nó có thể được kết nối với các thiết bị có cổng nối tiếp như như ARM, DSP, v.v., MCU 3.3 V 5V có thể được kết nối trực tiếp. Khi kết nối với máy tính yêu cầu cần chuyển đổi mức, hãy chú ý đến chuyển đổi mức, chẳng hạn như mạch MAX232 (chuyển từ RS232 sang TTL).
Sau khi bật nguồn mô-đun vân tay, cửa sổ nhận dấu vân tay sẽ nhấp nháy một lần, cho biết quá trình tự kiểm tra diễn ra bình thường. Nếu mô-đun không nhấp nháy, vui lòng kiểm tra cẩn thận nguồn điện để xem nó được kết nối ngược hay sai. Chip có một số nhiệt trong quá trình hoạt động bình thường. Đây là hiện tượng bình thường. Nó đã được kiểm tra nghiêm ngặt và có thể yên tâm sử dụng.
f. Ứng dụng R307 giao tiếp STM32
Hiện nay vân tay được ứng dụng để kiểm soát rất nhiều trong đời sống chúng ta:
- Khóa két sắt.
- Khóa ô tô.
- Máy chấm công.
- Mmartphone.
- Khóa Laptop.
- Khà thông minh…..
1.3 Khóa chốt điện cảm biến vân tay R307 giao tiếp STM32
a. Giới thiệu khóa chốt điện
- Khóa điện DC12V KD-03 có chức năng hoạt động như một ổ khóa, sử dụng van điện từ để kích đóng, mở bằng điện.
- Được sử dụng trong nhà thông minh, tủ điện, cửa điện…- Khóa chất lượng tốt, độ bền cao.
- Khóa chốt điện từ 2 đầu LY-03 được thiết kế khá tiện lợi khi tích hợp cả 2 loại đầu khóa với 2 trạng thái khác nhau để thích hợp hơn với người sử dụng. Cũng giống như các loại Khóa chốt điện từ khác, khi cung cấp dòng điện vào khóa sẽ sinh ra lực hút của nam châm điện làm thay đổi trạng thái.Khóa chốt điện từ 2 đầu LY-03 12VDC/24VDC có đầu tròn thường đóng (chưa có điện chốt khóa đưa ra ngoài) , đầu vát xéo là đầu thường mở (chưa có điện chốt khóa thụt vào trong). Với hai loại điện áp 12V hoặc 24V phù hợp cho mọi người lựa chọn.Khóa chốt điện tử LY-03 loại thường mở được thiết kế nhỏ gọn, chính xác, chắc chắn, dễ lắp đặt và sử dụng. Với vỏ làm bằng thép nên độ bền cao. Sản phẩm được thiết kế thường mở, chỉ khi có điện mới khóa được.
b. Thông số kỹ thuật khóa chốt điện
- Điện áp:
- Mã sản phẩm W0ON: 12VDC
- Mã sản phẩm D6LC: 24VDC
- Khóa thường mở, khi có điện khóa mới đóng
- Dòng tiêu thụ 12V: 0.3A
- Dòng tiêu thụ 24V: 0.2A
- Lỗ an ninh: bị khóa khi tắt nguồn
- Chiều dài chốt mở rộng: 9.8mm
- Kích thước khóa: 53 x 39 x 25 mm
- Kích thước chốt: 9.8 x 9(mm)
- Trọng lượng: 150g
- Tốc độ phản ứng: < 1s.
- Thời gian kích liên tục: < 10s
- Đi kèm gá chốt khóa.
- Chất liệu vỏ và chốt: Thép không gỉ
c. Ứng dụng của khóa chốt điện
- Khóa và mở cửa bằng nguồn điện 12VDC/24VDC, phù hợp với các văn phòng, nhà ở, nơi giám sát an ninh…
- Điều khiển đóng mở cửa từ xa khi kết hợp với thiết bị điều khiển từ xa, hệ thống nhà thông minh
- Lắp đặt tại các phòng đặc biệt mà khi có điện cửa sẽ đóng, chỉ khi ngắt điện cửa mới mở được nhằm bảo đảm an toàn
- Lưu ý do khóa thường mở nên khi mất điện khóa sẽ mở do đó cần cân nhắc các vị trí lắp cho phù hợp
- Nếu hoạt động thời gian dài sản phẩm sẽ nóng và điều đó là hoàn toàn bình thường (có thể cấp điện trong thời gian dài nhưng nhiệt độ tối đa của bộ phận thân khóa là 70 độ C nên cần điều chỉnh thời gian cấp nguồn cho phù hợp, tránh hư hại sản phẩm)
2. Hướng dẫn đồ án cảm biến vân tay R307 giao tiếp STM32 kích khóa chốt điện
Phần này chưa được chia sẻ.
LIÊN HỆ thông tin ở TẠI ĐÂY để được hổ trợ tốt hơn.
Phần cứng
Phần mềm
#include <Adafruit_Fingerprint.h> #include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); void setup() { Serial.begin(9600); while (!Serial); // For Yun/Leo/Micro/Zero/... delay(100); Serial.println("fingertest"); pinMode(12, OUTPUT); // set the data rate for the sensor serial port finger.begin(57600); if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor!"); } else { Serial.println("Did not find fingerprint sensor :("); while (1) { delay(1); } finger.getTemplateCount(); Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates"); Serial.println("Waiting for valid finger..."); } void loop() // run over and over again { getFingerprintIDez(); delay(50); //don't ned to run this at full speed. digitalWrite(12, LOW); } uint8_t getFingerprintID() { uint8_t p = finger.getImage(); switch (p) { case FINGERPRINT_OK: Serial.println("Image taken"); break; case FINGERPRINT_NOFINGER: Serial.println("No finger detected"); return p; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); return p; case FINGERPRINT_IMAGEFAIL: Serial.println("Imaging error"); return p; default: Serial.println("Unknown error"); return p; // OK success! p = finger.image2Tz(); switch (p) { case FINGERPRINT_OK: Serial.println("Image converted"); break; case FINGERPRINT_IMAGEMESS: Serial.println("Image too messy"); return p; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); return p; case FINGERPRINT_FEATUREFAIL: Serial.println("Could not find fingerprint features"); return p; case FINGERPRINT_INVALIDIMAGE: Serial.println("Could not find fingerprint features"); return p; default: Serial.println("Unknown error"); return p; // OK converted! p = finger.fingerFastSearch(); if (p == FINGERPRINT_OK) { Serial.println("Found a print match!"); } else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Communication error"); return p; } else if (p == FINGERPRINT_NOTFOUND) { Serial.println("Did not find a match"); return p; } else { Serial.println("Unknown error"); return p; } // found a match! Serial.print("Found ID #"); Serial.print(finger.fingerID); Serial.print(" with confidence of "); Serial.println(finger.confidence); return finger.fingerID; } // returns -1 if failed, otherwise returns ID # int getFingerprintIDez() { uint8_t p = finger.getImage(); if (p != FINGERPRINT_OK) return -1; p = finger.image2Tz(); if (p != FINGERPRINT_OK) return -1; p = finger.fingerFastSearch(); if (p != FINGERPRINT_OK) return -1; // found a match! digitalWrite(12, HIGH); delay(3000); digitalWrite(12, LOW); Serial.print("Found ID #"); Serial.print(finger.fingerID); Serial.print(" with confidence of "); Serial.println(finger.confidence); return finger.fingerID; }
3. Hoạt động của mạch đọc cảm biến vân tay R307 giao tiếp STM32 kích chốt điện
Khi cấp điện hệ thống hoạt động, vi điều khiển hiển thị thông tin ban đầu. Lúc này vi điều khiển chờ tín hiệu từ cảm biến vân tay R307 giao tiếp STM32 trả về thông qua tín hiệu giao tiếp UART. Khi nhận được tín hiệu vi điều khiển xử lý, nếu đúng vân tay được lưu thì hệ thống kích hoạt mở cửa bằng khóa chốt điện
4. Cụ thể hoạt động của mạch đọc cảm biến vân tay R307 giao tiếp STM32 kích chốt điện:
Chúc các bạn thành công…!!!