a. Tổng quan về ARM Cortex M3
Kiến trúc ARM (viết tắt từ tên gốc là Acorn RISC Machine) là một loại cấu trúc vi xử lí 32-bit kiểu RISC (thuộc kiến trúc Harvard, có tập lệnh rút gọn) được sử dụng rỗng rãi trong các thiết kế nhúng. Do có đặc điểm tiết kiệm năng lượng, các bộ CPU ARM chiếm ưu thế trong các sản phẩm điện tử di động mà với các sản phẩm này việc tiêu tán công suất thấp là một mục tiêu thiết kế quan trọng hàng đầu.
14 Việc thiết kế ARM được bắt đầu từ năm 1983 trong một dự án phát triển của công ty máy tính Acorn. Nhóm thiết kế hoàn thành việc phát triển mẫu gọi là ARM1 vào năm 1985, và vào năm sau, nhóm hoàn thành sản phẩm thực gọi là ARM2 với thiết kế đơn giản chỉ gồm 30000 transistor. ARM2 có tuyến dữ liệu 32-bit, không gian địa chỉ-16 bit tức cho phép quản lí đến 64 Mbyte và 16 thanh ghi 32-bit. Thế hệ sau, ARM3 được tạo ra với 4KB cache và có chức năng được cải thiện tốt hơn nữa.
Trải qua nhiều thế hệ nhưng lõi ARM gần như không thay đổi kích thước. ARM2 có 30000 transistor trong khi ARM6 chỉ tăng lên đến 35000. Ý tưởng của nhà sản xuất lõi ARM là sao cho người sử dụng có thể ghép lõi ARM với một số bộ phận tùy chọn nào đó để tạo ra một CPU hoàn chỉnh, một loại CPU mà có thể tạo ra trên những nhà máy sản xuất bán dẫn cũ và vẫn tiếp tục tạo ra được sản phẩm với nhiều tính năng mà giá thành vẫn thấp.
Thế hệ thành công nhất có lẽ là ARM7TDMI với hàng trăm triệu lõi được sử dụng trong các máy điện thoại di động, hệ thống video game cầm tay, và Sega Dreamcast. Trong khi công ty ARM chỉ tập trung vào việc bán lõi IP, cũng có một số giấy phép tạo ra bộ vi điều khiển dựa trên lõi này.
Ngày nay, ARM được ứng dụng rộng tãi trên mọi lĩnh vực của đời sống: robot, máy tính, điện thoại, xe hơi…
ARM Cortex được chia làm 3 dòng:
- Cortex-A: Bộ xử lí dành cho hệ điều hành và các ứng dụng phức tạp. Hỗ trợ tập lệnh ARM, thumb và thumb-2.
- Cortex-R: Bộ xử lí dành cho hệ thống đòi hỏi khắt khe về đáp ứng thời gian thực. Hỗ trợ tập lệnh ARM, thumb và thumb-2.
- Cortex-M: Bộ xử lí dành cho dòng vi điều khiển, được thiết kế tối ưu về giá thành. Hỗ trợ tập lệnh thumb-2.
Tập đoàn ST Microelectronic đã cho ra mắt dòng STM32, vi điều khiển đầu tiên dựa trên nền lõi ARM Cortex-M3 thế hệ mới do hãng ARM thiết kế, lõi ARM Cortex-M3 là sự cải tiến của lõi ARMv7-M 32-bit truyền thống, từng mang lại sự thành công vang dội cho công ty ARM. Dòng STM32 thiết lập các tiêu chuẩn mới về hiệu suất, chi phí, cũng như khả năng đáp ứng các ứng dụng tiêu thụ năng lượng thấp và tính điều khiển thời gian thực khắt khe.
15 Trung tâm của bộ xử lý Cortex là một CPU RISC 32-bit. CPU này có một phiên bản được đơn giản hóa từ mô hình lập trình (programmer’s model) của ARM7/9, nhưng có một tập lệnh phong phú hơn với sự hỗ trợ tốt cho các phép toán số nguyên, khả năng thao tác với bit tốt hơn và khả năng đáp ứng thời gian thực tốt hơn.
ARM Cortex STM32 gồm nhân Cortex kết nối với bộ nhớ FLASH thông qua đường bus lệnh chuyên biệt. Các bus dữ liệu (Cortex Data busses) và hệ thống (Cortex System busses) được kết nối tới ma trận busses tốc độ cao (ARM Advanced High Speed Busses- AHB). SRAM nội kết nối với AHB và đóng vai trò là bộ DMA. Các thiết bị ngoại vi được kết nối bằng 2 hệ thống bus ngoại vi tốc độ cao (APB-ARM Advanced Peripheral Busses).
Các bus APBs thông qua các bus cầu nối AHB-APBs kết nối vào hệ thống AHB. Ma trận bus AHB sử dụng xung nhịp đồng hồ bằng với xung nhịp của nhân Cortex. Tuy nhiên thông qua bộ chia tần số AHB có thể hoạt động ở tần số thấp hơn để tiết kiệm năng lượng.
Hình 2.10 Hệ thống Bus nội của ARM
Cấu trúc bus nội cung cấp đường truyền chuyên biệt dành cho tập lệnh thực thi và ma trận bus đường dữ liệu cho nhân Cortex và bộ điều khiển DMA truy cập tài nguyên trên vi xử lý.
Bên cạnh hệ thống bus nội đa dạng STM32 còn cung cấp 4Gbytes không gian bộ nhớ liên tục dành cho lập trình. Bộ nhớ được bắt đầu từ địa chỉ 0x00000000.On- chip SRAM bắt đầu từ địa chỉ 0x20000000 và tất cả SRAM nội đều được bố trí ở điểm bắt đầu vùng bit band. Vùng nhớ thiết bị ngoại vi được ánh xạ từ địa chỉ 0x40000000 và ở vùng bit band. Các thanh ghi điều khiển của nhân Cortex được ánh xạ từ địa chỉ 0xE0000000.
Vùng nhớ dành cho flash được chia nhỏ thành 3 vùng. Vùng thứ nhất là User Flash bắt đầu từ địa chỉ 0x00000000. Kế tiếp là System Memory, còn gọi là vùng nhớ lớn. Vùng này có độ lớn 4Kbytes thông thường được nhà sản xuất cài đặt bootloader. Cuối cùng là vùng nhớ nhỏ bắt đầu từ địa chỉ 0x1FFFFF80 chứa thông tin cấu hình dành cho STM32. Bootloader thường được dùng để tải chương trình thông qua USART1 và chứa ở vùng User Flash.
16
Hình 2.11 Cấu trúc bộ nhớ của ARM
b. Giới thiệu về vi điều khiển STM32F103C8T6
Dòng ARM STM32F1 được chia ra làm 5 nhóm nhỏ, mỗi nhóm sẽ có số lượng bộ nhớ Flash, SRAM và số lượng ngoại vi khác nhau:
- Low-density: gồm các vi điều khiển STM32F101xx, STM32F102xx, STM32F103xx và có bộ nhớ Flash từ 16 đến 32 Kbytes.
- Medium-density: gồm các vi điều khiển STM32F101xx, STM32F102xx, STM32F103xx và có bộ nhớ Flash từ 63 đến 128 Kbytes.
- High-density: gồm các vi điều khiển STM32F101xx, STM32F103xx và có bộ nhớ Flash từ 256 đến 512 Kbytes.
- XL-density: gồm các vi điều khiển STM32F101xx, STM32F103xx và có bộ nhớ Flash từ 768 đến 1000 Kbytes.
- Connective line: gồm các vi điều khiển STM32F105xx, STM32F107xx. Vi điều khiển STM32F103C8T6 là họ vi điều khiển 32 bit của hãng TexasInstrument với thông số kĩ thuật:
64-128 Kb bộ nhớ Flash
USB 2.0 full-speed
7 bộ Timer
bộ ADC và 9 giao diện kết nối.
Lõi: ARM 32-bit Cortex-M3
Tần số hoạt động lên tới 72 Mhz
Bộ nhớ: 64-128 Kb Flash, 20 Kb SRAM
ADC: 2×12 bit, tần số lấy mẫu 1Mhz
DAC: không
DMA: Điều khiển 7 kênh DMA
Timer: 7 bộ, 16 bit
Giao diện kết nối: 2xI2C, 3xUSART, 2xSPI, CAN, USB 2.0 full-speed.
Kiểu chân: VFQFPN36, UFQFPN48, BGA100, LQFP48, LQFP64, LQFP100
17 Điều khiển động cơ
Thiết bị cầm tay và thiết bị y tế Ứng dụng công nghiệp
PLC
Inverters
Hệ thống cảnh báo HVAC
Hình 2.12 Sơ đồ các chân của ARM M3
Đề tài này sử dụng kit phát triển STM32F103C8T6 làm bộ điều khiển trung tâm của hệ thống. Kit STM32F103C8T6 được trang bị vi điều khiển STM32F103C8T6 tích hợp lõi ARM Cortex M3 32-bit. Kit STM32F103C8T6 là loại được sử dụng để nghiên cứu về ARM nhiều nhất hiện nay do có mức giá rẻ đồng thời có thể nạp bootloader để giao tiếp và lập trình với phần mềm đa dạng một cách dễ dàng, kit có chất lượng gia công tốt, độ bền cao.
18 Thông số kĩ thuật [10]:
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 2.5.2 Cảm biến vân tay R305
Hiện tại trên thị trường có rất nhiều loại cảm biến để nhận dạng và phát hiện người dùng như: cảm biến nhận dạng khuôn mặt, cảm biến hồng ngoại, cảm biến giọng nói, RFID… nhưng với tính bảo mật và tiện lợi, cảm biến vân tay rất phù hợp cho việc quản lý việc ra vào lớp học.
Đây là module nhận dạng vân tay giao tiếp trực tiếp qua giao thức UART có thể kết nối trực tiếp đến vi điều khiển hoặc qua PC adapter Max232/USB-Serial. Người sử dụng có thể lưu trữ trực tiếp dữ liệu vân tay vào module. Module có thể dễ dàng giao tiếp với các loại vi điều khiển chuẩn 3.3 hoặc 5V. Led đỏ được bật sáng nằm sẵn trong ống kinh trong quá trình lấy vân tay. Cảm biến có độ chính xác cao và có thể được nhúng vào các thiết bị như: điều khiển truy cập, két sắt, khóa cửa…
Hình 2.14 Cảm biến vân tay R305
a. Nguyên lí hoạt động
Nguyên lí hoạt động của module cảm biến vân tay R305 có 2 phần [11]: - Lấy dữ liệu hình ảnh của vân tay: Khi lấy dữ liệu, người dùng cần phải thực
hiện quét dấu vân tay 2 lần thông qua cảm biến quang học. Hệ thống sẽ tiến hành thuật toán xử lí hình ảnh của 2 lần quét đó, tạo ra một khuôn mẫu của các vân tay dựa trên kết quả xử lí và lưu trữ các bản mẫu.
- So sánh dấu vân tay (có thể theo chế độ 1:1 hoặc 1:N): Khi người dùng thực hiện quét vân tay, module sẽ chụp lại dữ liệu hình ảnh vân tay và so sánh với các mẫu vân tay đã được lưu trữ sẵn trong thư viện. Đối với chế độ 1:1, hệ thống sẽ so sánh trưc tiếp vân tay với mẫu được chỉ định cụ thể trong module; đối với chế độ 1:N, hoặc tìm kiếm, hệ thống sẽ tìm kiếm trong thư
19 viện để tìm vân tay phù hợp. Sau đó trả về kết quả đúng nếu trùng khớp hoặc kết quả sai nếu không trùng khớp dữ liệu đã được lưu trữ.
b. Các đặc tính
Module tích hợp nhiều loại chip xử lí trong cùng 1 module: cảm biến dấu vân tay quang học, bộ vi xử lí DSP tốc độ cao, bộ nhớ FLASH…
Dễ dàng sử dụng với các tính năng bảo mật cao, thông minh. Mức độ bảo mật có thể điều chỉnh được bởi người dùng, thích hợp cho các ứng dụng khác nhau Tiêu thụ điện năng thấp, giá thành không quá cao, kích thước nhỏ gọn, hiệu năng tốt.
Khả nặng chống tĩnh điện mạnh, chỉ số chống tĩnh điện đạt 15kV trở lên. Khả năng xử lí hình ảnh tốt, có thể chụp được hình ảnh có độ phân giải lên đến 500 dpi.
c. Thông số kĩ thuật [11]
- Điện áp cung cấp: DC 3.6-6.0V - Dòng cung cấp
+ Dòng làm việc bình thường: 40mA + Dòng đỉnh: 150mA
- Thời gian thu thập hình ảnh: <0.5 giây - Kích thước cửa sổ quét: 18x22mm - Chế độ quét: 1:1, 1:N
- Bộ nhớ lưu trữ: 256 bytes
- Mức độ bảo mật: 1, 2, 3, 4, 5(cao nhất) - Tỷ lệ lỗi chấp nhận nhầm (FAR): <0.001 - Tỷ lệ từ chối nhầm(FFR): <0.1%
- Thời gian tìm kiếm: <0.8 giây (1:880, trung bình)
- Giao tiếp với máy tính: UART (TTL mức logic) hoặc USB 1:1 - Tốc độ truyền: 9600xN bps, trong đó N = 1~12, mặc định N = 6 - Môi trường làm việc: Nhiệt độ -10°C ~ +40°C, độ ẩm 40% ~ 85% - Môi trường bảo quản: Nhiệt độ -40°C ~ +85°C, độ ẩm <85% d. Sơ đồ giao tiếp
Giao tiếp phần cứng của module R305 được thể hiện trong bảng sau: Bảng 2.1 Bảng giao tiếp phần cứng R305
Số thứ tự chân
Tên chân Chức năng
1 VCC Nguồn vào
2 GND Nối đất
3 TXD Dữ liệu truyền, kiểu TTL logic 4 RXD Dữ liệu nhận, kiểu TTL logic e. Giao thức truyền tin
20 R305 sử dụng chế độ truyền thông nối tiếp bán song công bất đồng bộ. Tốc độ truyền mặc đinh là 57600bps và có thể cài đặt tốc độ này trong dải từ 9600 đến 115200. Tại thời điểm được cấp nguồn, nó sẽ tốn 300ms cho việc thiết lập. Khung truyền với định dạng 10 bit: 1 bit bắt đầu (start bit) ở mức logic ‘0’, 8 bit dữ liệu với bit đầu LSB và 1 bit kết thúc (stop bit) ở mức logic ‘1’. Không có bit kiểm tra
Hình 2.15 Khung truyền trong giao thức truyền tin của R305 [11]
Module được kết nối với MCU theo kết nối sau:
Bảng 2.2 Bảng giao tiếp phần cứng R305 với MCU
Chân R305 Chân MCU
VCC VCC
GND GND
TXD RXD
RXD TXD
f. Giao thức truyền gói dữ liệu
Khi module R305 thực hiện việc giao tiếp truyền và nhận dữ liệu thì dữ liệu được gói theo định dạng sau
Bảng 2.3 Định dạng gói dữ liệu giao tiếp của R305
Header Adder Package identifier Package length Package content (instruction/data/parameter) Checksum
Chức năng và định dạng của từng phần được mô tả chi tiết trong bảng dưới:
Bảng 2.4 Chức năng cụ thể trong gói dữ liệu giao tiếp của R305
Tên Ký hiệu Độ dài Mô tả
Header START 2 bytes Có 2 bytes được truyền đầu tiên trong gói dữ liệu, mặc định là 0xEF01
Adder ADDER 4 bytes 4 byte địa chỉ của module, mặc định 0xFFFFFFFF, nhưng có thể được sửa đổi bởi lệnh. Byte cao sẽ được chuyển vào đầu tiên và nếu giá trị adder sai, module sẽ từ chối truyền
Package indentifier
PID 1 bytes Định dạng loại gói dữ liệu 0x01: gói lệnh
21 0x07: gói xác nhận
0x08: gói kết thúc dữ liệu Package
length
LENGTH 2 bytes Chiều dài gói dữ liệu tính từ package content đến checksum. Đơn vị chiều dài là byte (tối đa 256 bytes)
Package content
DATA Nội dung dữ liệu. Có thể là lệnh, dữ liệu, kết quả được xác nhận…
Checksum SUM 2 bytes Tổng số học của package identifier, package length, package content. Bit tràn được bỏ qua, bit cao được truyền đầu tiên Lệnh được gửi từ MCU đến cảm biến, cảm biến chỉ trả về các gói xác nhận. Định dạng bytes xác nhận:
- 0x00: thực thi hoàn tất - 0x01: lỗi nhận dữ liệu
- 0x03: thất bại đăng kí vân tay
- 0x06: không tạo được đặc điểm nhận dạng - 0x07: dấu vân tay quá nhỏ để lấy mẫu - 0x08: dấu vân tay không trùng khớp - 0x09: thất bại tìm kiếm vân tay
- 0x0A: lỗi kết hợp đặc điểm nhận dạng - 0x0B: chỉ số vượt khung lưu trữ - 0x0C: lỗi đọc dữ liệu vân tay - 0x0D: lỗi nạp dữ liệu
- 0x0E: không thể nhận dữ liệu - 0x0F: lỗi gửi hình ảnh
- 0x10: lỗi xóa dữ liệu - 0x11: lỗi xóa ID - 0x15: lỗi tạo ảnh - 0x18: lỗi ghi flash
- 0x19: lỗi không xác định
- 0x1A: chỉ số đăng kí không hợp lệ - 0x1B: gói dữ liệu sai
- 0x1C: sai số trang - 0x1D: lỗi cổng giao tiếp
2.5.3 Cảm biến nhiệt độ LM35
LM35 là một cảm biến nhiệt độ tương tự, nhiệt độ được xác định bằng cách đo hiệu điện thế ngõ ra của LM35.
Đơn vị nhiệt độ: °C.
22
Hình 2.16 Sơ đồ chân của LM35
LM35 không cần phải căn chỉnh nhiệt độ khi sử dụng. Độ chính xác thực tế: 1/4°C ở nhiệt độ phòng và 3/4°C ngoài (khoảng -55°C tới 150°C). LM35 có hiệu năng cao, công suất tiêu thụ là 60μA, thay đổi nhiệt độ nhanh và chính xác.
Cảm biến LM35 hoạt động bằng cách cho ra một giá trị hiệu điện thế nhất định tại chân Vout (chân ở giữa) ứng với mỗi mức nhiệt độ. Như vậy, bằng cách đưa vào chân bên trái của cảm biến LM35 hiệu điện thế 5V, chân phải nối đất, đo hiệu điện thế ở chân giữa bằng các chân được gắn tương ứng trên vi điều khiển sẽ thu được nhiệt độ hiện tại.
Cảm biến LM35 là bộ cảm biến nhiệt mạch tích hợp chính xác cao mà điện áp đầu ra của nó tỷ lệ tuyến tính với nhiệt độ theo thang độ Celsius. Chúng cũng không yêu cầu cân chỉnh ngoài vì vốn chúng đã được cân chỉnh.
Thông số kĩ thuật của LM35 [12]: + Điện áp đầu vào từ 4V đến 30V
+ Độ phân giải điện áp đầu ra là 10mV/°C + Độ chính xác cao ở 25°C là 0.5°C