Để có thể lập trình được vi điều khiển ARM cần có một phần mềm dễ dàng sử dụng mà STM32CubeMX là một trong những phần mềm nổi bật.. MỤC TIÊU Thiết kế và thi công Kit lập trình vi
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM
BÁO CÁO TỔNG KẾT
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
Chủ nhiệm đề tài : Lê Kim Tĩnh
TP Hồ Chí Minh, 10/2021
THIẾT KẾ VÀ THI CÔNG KIT LẬP TRÌNH ARM
KẾT HỢP CẢM BIẾN Y SINH
SV2021 - 40
Trang 3BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM
BÁO CÁO TỔNG KẾT
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
THIẾT KẾ VÀ THI CÔNG KIT LẬP TRÌNH ARM
KẾT HỢP CẢM BIẾN Y SINH
SV2021 - 40
Thuộc nhóm ngành khoa học : Kĩ thuật
SV thực hiện : Lê Kim Tĩnh Nam, Nữ: Nam
Trang 4MỤC LỤC
MỤC LỤC i
DANH MỤC BẢNG v
DANH MỤC HÌNH ẢNH vi
DANH MỤC TỪ VIẾT TẮT x
MỞ ĐẦU 1
a TỔNG QUAN 1
b LÝ DO CHỌN ĐỀ TÀI 1
c MỤC TIÊU 2
d PHƯƠNG PHÁP NGHIÊN CỨU 2
e ĐỐI TƯỢNG NGHIÊN CỨU 2
f PHẠM VI NGHIÊN CỨU 2
Chương 1 CƠ SỞ LÝ THUYẾT 3
1.1 GIỚI THIỆU 3
1.2 TỔNG QUAN VỀ VI ĐIỀU KHIỂN ARM 3
1.3 VI ĐIỀU KHIỂN STM32F407VE 8
1.4 GIỚI THIỆU PHẦN CỨNG 20
1.5 GIỚI THIỆU PHẦN MỀM LẬP TRÌNH 32
Chương 2 TÍNH TOÁN VÀ THIẾT KẾ 33
2.1 GIỚI THIỆU 33
2.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG 33
2.2.1 Sơ đồ khối hệ thống 33
2.2.2 Nhiệm vụ và chức năng từng khối 33
Chương 3 THI CÔNG HỆ THỐNG 48
3.1 GIỚI THIỆU 48
3.2 THI CÔNG HỆ THỐNG 48
3.3 ĐÓNG GÓI BỘ ĐIỀU KHIỂN 59
Chương 4 THIẾT KẾ CÁC BÀI THỰC HÀNH 62
4.1 PHẦN MỀM LẬP TRÌNH STM32CUBEMX 62
4.1.2 Hướng dẫn sử dụng phần mềm 62
Trang 5Số hiệu: HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét: 00 Ngày hiệu lực: 10/10/2021 ii
4.1.3 Cấu trúc chương trình main.c 66
4.2 CẤU HÌNH XUNG CLOCK CHO VI ĐIỀU KHIỂN 72
4.3 Điều khiển LED đơn 75
4.3.1 Sơ đồ phần cứng 75
4.3.2 Cấu hình chân cho vi điều khiển 75
4.3.3 Bài tập mẫu 76
4.4 GIAO TIẾP NÚT NHẤN ĐƠN VÀ MA TRẬN PHÍM 77
4.4.1 Sơ đồ phần cứng 77
4.4.2 Cấu hình chân cho vi điều khiển 77
4.4.3 Bài tập mẫu 78
4.5 GIAO TIẾP VỚI MODULE LED 7 ĐOẠN 82
4.5.1 Sơ đồ phần cứng 82
4.5.2 Cấu hình chân cho vi điều khiển 83
4.5.3 Bài tập mẫu 83
4.6 GIAO TIẾP VỚI LED MATRIX 86
4.6.1 Sơ đồ phần cứng 86
4.6.2 Cấu hình cho vi điều khiển 87
4.6.3 Bài tập mẫu 87
4.7 ĐIỀU KHIỂN MODULE LCD TFT 90
4.7.1 Sơ đồ phần cứng 90
4.7.2 Cấu hình chân cho vi điều khiển 91
4.7.3 Các hàm sử dụng 91
4.7.4 Bài tập mẫu 95
4.8 ĐIỀU KHIỂN ĐỌC CẢM BIẾN LM35 96
4.8.1 Sơ đồ phần cứng 96
4.8.2 Cấu hình chân cho vi điều khiển 96
4.8.3 Bài tập mẫu 97
4.9 CẢM BIẾN KHOẢNG CÁCH HCR-04 101
4.9.1 Sơ đồ phần cứng 101
4.9.2 Cấu hình chân cho vi điều khiển 101
4.9.3 Bài tập mẫu 102
Trang 64.10 ĐỌC NHIỆT ĐỘ CẢM BIẾN DS18B20 103
4.10.1 Sơ đồ phần cứng 103
4.10.2 Cấu hình cho vi điều khiển 104
4.10.3 Bài tập mẫu 104
4.11 ĐIỀU KHIỂN MODULE THỜI GIAN THỰC DS3231 106
4.11.1 Sơ đồ phần cứng 106
4.11.2 Cấu hình chân vi điều khiển 106
4.11.3 Các hàm sử dụng 107
4.11.4 Bài tập mẫu 108
4.12 ĐỌC DỮ LIỆU CẢM BIẾN MLX90614 111
4.12.1 Sơ đồ phần cứng 111
4.12.2 Cấu hình chân vi điều khiển 111
4.12.3 Bài tập mẫu 111
4.13 ĐỌC DỮ LIỆU CẢM BIẾN NỒNG ĐỘ CỒN MQ3 111
4.13.1 Sơ đồ phần cứng 111
4.13.2 Cấu hình chân vi điều khiển 111
4.13.3 Bài tập mẫu 111
4.13.4 Bài tập mẫu 112
4.14 ĐIỀU KHIỂN MODULE HC06 114
4.14.1 Sơ đồ phần cứng 114
4.14.2 Cấu hình chân cho vi điều khiển 114
4.14.3 Các lệnh AT command 115
4.14.4 Cấu hình chân cho vi điều khiển 116
4.14.5 Bài tập mẫu 116
4.15 ĐIỀU KHIỂN MODULE NRF24L01 117
4.15.1 Sơ đồ phần cứng 117
4.15.2 Cấu hình cho vi điều khiển 118
4.15.3 Các hàm sử dụng 119
4.15.4 Bài tập mẫu 127
4.16 ĐIỀU KHIỂN MODULE ESP8266 129
4.16.1 Sơ đồ phần cứng 129
Trang 7Số hiệu: HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét: 00 Ngày hiệu lực: 10/10/2021 iv
4.16.2 Cấu hình chân cho vi điều khiển 129
4.16.3 Các thư viện sử dụng 130
4.16.4 Bài tập mẫu 135
KẾT LUẬN VÀ KIẾN NGHỊ 138
a KẾT LUẬN 138
b KIẾN NGHỊ 138
TÀI LIỆU THAM KHẢO 139
PHỤC LỤC 141
Trang 8DANH MỤC BẢNG
Bảng 1.1: Sơ đồ bộ nhớ 9
Bảng 1.2: Địa chỉ giới hạn của các ngoại vi 10
Bảng 3.1: Danh sách các linh kiện 50
Bảng 4.1: Giá trị Baud rate 115
Trang 9Số hiệu: HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét: 00 Ngày hiệu lực: 10/10/2021 vi
DANH MỤC HÌNH ẢNH
Hình 1.1: Cấu trúc cơ bản của vi điều khiển ARM 4
Hình 1.2: Cấu trúc lõi ARM Cortex M0 6
Hình 1.3: Các phiên bản của ARM Cortex-A 7
Hình 1.4: Các phiên bản ARM Cortex – R 7
Hình 1.5: Các phiên bản của ARM Cortex-M 8
Hình 1.6: Sơ đồ cấu trúc các khối của STM32F407 9
Hình 1.7: Cảm biến nhịp tim và nồng độ oxy trong máu MAX30102 20
Hình 1.8: Cảm biến nhiệt độ DS18B20 21
Hình 1.9: Cảm biến nhiệt độ LM35 22
Hình 1.10: Cảm biến siêu âm HC- SR04 23
Hình 1.11: Cảm biến nồng độ cồn MQ3 23
Hình 1.12: Cảm biến màu sắc TSC34725 24
Hình 1.13: Arduino Nano 25
Hình 1.14: Sơ đồ chân của Arduino Nano 25
Hình 1.15: Cảm biến Nhiệt MLX90614 26
Hình 1.16: Module phát Bluetooth HC-06 26
Hình 1.17: Module thu phát NRF24L01 27
Hình 1.18: Module thu phát Wifi ESP ESP8266-01 28
Hình 1.19: Cảm biến nhịp tim Pulse Sensor 29
Hình 1.20: Màn hình TFT LCD 29
Hình 1.21: IC L298 30
Hình 1.22: Sơ đồ chân của IC MAX7219 31
Hình 1.23: IC DS3231 32
Hình 2.1: Sơ đồ khối hệ thống 33
Hình 2.2: Sơ đồ nguyên lý khối nguồn 34
Trang 10Hình 2.3: Sơ đồ nguyên lý khối LED đơn 35
Hình 2.4: Sơ đồ nguyên lý khối LED 7 đoạn 36
Hình 2.5: Sơ đồ nguyên lý khối LED Matrix 36
Hình 2.6: Sơ đồ nguyên lý khối LCD TFT 37
Hình 2.7: Sơ đồ nguyên lý khối động cơ DC 38
Hình 2.8: Sơ đồ nguyên lý khối Realtime 38
Hình 2.9: Sơ đồ nguyên lý nút nhấn 39
Hình 2.10: Sơ đồ nguyên lý Module Bluetooth HC-06 40
Hình 2.11: Sơ đồ nguyên lý Module Wifi esp8266 40
Hình 2.12: Sơ đồ nguyên lý Module RF NRF24l01 40
Hình 2.13: Sơ đồ nguyên lý cảm biến MQ-3 41
Hình 2.14: Sơ đồ nguyên lý cảm biến LM35 42
Hình 2.15: Sơ đồ nguyên lý cảm biến DS18b20 42
Hình 2.16: Sơ đồ nguyên lý cảm biến MLX90614 42
Hình 2.17: Sơ đồ nguyên lý cảm biến Pulse sensor 43
Hình 2.18: Sơ đồ nguyên lý cảm biến MAX30102 44
Hình 2.19: Sơ đồ nguyên lý cảm biến TCS34725 44
Hình 2.20: Sơ đồ nguyên lý cảm biến HC-SR04 45
Hình 2.21: Sơ đồ nguyên lý Kết nối NI-CONECTER 45
Hình 2.22: Sơ đồ nguyên lý toàn mạch 47
Hình 3.1: Sơ đồ mạch in PCB 49
Hình 3.2: Sơ đồ linh kiện trên mạch PCB 50
Hình 3.3: Sơ đồ bố trí linh kiện mặt trên 53
Hình 3.4: Mạch PCB hoàn thiện 53
Hình 3.5: Lắp ráp khối nguồn 53
Hình 3.6: Lắp ráp khối led 7 đoạn 54
Trang 11Số hiệu: HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét: 00 Ngày hiệu lực: 10/10/2021 viii
Hình 3.7: Lắp ráp khối led Matrix 54
Hình 3.8: Lắp ráp khối led đơn 55
Hình 3.9: Lắp ráp khối LCD TFT 55
Hình 3.10: Lắp ráp khối cảm biến nồng độ cồn và nhiệt độ 55
Hình 3.11: Lắp ráp khối cảm biến nhịp tin và SPO2 56
Hình 3.12: Lắp ráp khối cảm biến màu sắc và khối đo khoảng cách 56
Hình 3.13: Lắp ráp khối nút nhấn 56
Hình 3.14: Lắp ráp khối thời gian thực và SSR 57
Hình 3.15: Lắp ráp khối động cơ 57
Hình 3.16: Lắp ráp khối nạp 57
Hình 3.17: Lắp ráp các khối giao tiếp không dây 58
Hình 3.18: Lắp ráp khối nạp 58
Hình 3.19: Lắp ráp hoàn chỉnh Board mạch 59
Hình 3.20: Thiết kế phần thân của hộp 60
Hình 3.21: Thiết kế hộp đựng Kit 60
Hình 3.22: Thi công hộp đựng Kit 61
Hình 4.1: Biểu tượng phần mềm STM32CubeIDE 62
Hình 4.2: Giao diện khi khởi động phần mềm 63
Hình 4.3: Chọn họ vi điều khiển 63
Hình 4.4: Cấu hình cho vi điều khiển 64
Hình 4.5: Cấu hình xung cho vi điều khiển 64
Hình 4.6: Cửa sổ Project Manage 65
Hình 4.7: Cửa sổ hiển thị khi biên dịch xong 65
Hình 4.8: Cấu hình Clock cho vi điều khiển 74
Hình 4.9: Chương trình cấu hình Clock cho hệ thống 74
Hình 4.10: Sơ đồ nguyên lý giao tiếp vi điều khiển với module 8 led đơn 75
Trang 12Hình 4.11: Cấu hình port cho 8 led đơn trong CubeMX 75
Hình 4.12: Sơ đồ nguyên lý giao tiếp vi điều khiển với ma trận phím 4x4 77
Hình 4.13: Cấu hình port cho nút nhấn đơn và ma trận phím 78
Hình 4.14: Sơ đồ nguyên lý giao tiếp vi điều khiển với module led 7 đoạn 83
Hình 4.15: Cấu hình port cho LED 7 đoạn 83
Hình 4.16: Sơ đồ nguyên lý giao tiếp vi điều khiển với module Led Matrix 86
Hình 4.17: Cấu hình port cho LED 7 Matrix 87
Hình 4.18: Sơ đồ nguyên lý giao tiếp giữa TFT LCD và vi điều khiển 90
Hình 4.19: Cấu hình giao tiếp SPI1 cho màn hình LCD TFT 91
Hình 4.20: Sơ đồ mạch nguyên lý giao tiếp giữa vi điều khiển và cảm biến LM35 96
Hình 4.21: Cấu hình chân ADC cho vi điều khiển 96
Hình 4.22: Cửa sổ Parameter Settings 97
Hình 4.23: Cửa sổ NVIC Setting 97
Hình 4.24: Sơ đồ nguyên lý cảm biến siêu âm 101
Hình 4.25: Sơ đồ mạch giao tiếp với cảm biến DS18B20 104
Hình 4.26: Cấu hình chân giao tiếp với cảm biến DS18B20 104
Hình 4.27: Sơ đồ mạch nguyên lý giao tiếp vi điều khiển với module DS3231 106
Hình 4.28: Cấu hình chân cho vi điều khiển giao tiếp với module DS3231 107
Hình 4.29: Sơ đồ nguyên lý giao tiếp giữa vi điều khiển và cảm biến MQ-3 111
Hình 4.30: Biểu đồ thể hiện độ nhạy đặc trưng cảm biến MQ-3 112
Hình 4.31: Sơ đồ mạch nguyên lý giao tiếp giữa vi điều khiển và module HC06 114
Hình 4.32: Cấu hình chân giao tiếp với module HC-06 115
Hình 4.33: Sơ đồ mạch nguyên lý giao tiếp giữa vi điều khiển và module NRF 118
Hình 4.34: Cấu hình chân vi điều khiển giao tiếp với module NRF 118
Hình 4.35: Sơ đồ mạch nguyên lý giao tiếp giữa vi điều khiển và module ESP 129
Hình 4.36: Cấu hình chân giao tiếp với module ESP8266 130
Trang 13Số hiệu: HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét: 00 Ngày hiệu lực: 10/10/2021 x
DANH MỤC TỪ VIẾT TẮT
ARM Advanced RISC Machine
A/D Analog to Digital
ADC Analog to Digital Converter
ASIC Application Specific Integrated Circuit
CPU Central Processor Unit
HTML HyperText Markup Language
HTTP HyperText Transfer Protocol
RISC Reduced Instructions Set Computer
SPI Serial Peripheral Interface
SQL Structured Query Language
TCP Transmission Control Protocol
TFT Thin Film Transistor
URL Uniform Resource Locator
USB Universal Serial Bus
VDC Volt Direct Current
WIFI Wireless Fidelity
WPA Wi-Fi Protected Access
Trang 14BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI
1 Thông tin chung:
- Tên đề tài: Thiết kế và thi công Kit lập trình vi điều khiển ARM kết hợp cảm biến
y sinh
- Chủ nhiệm đề tài: Lê Kim Tĩnh Mã số SV: 17129051
- Lớp: 171290 Khoa: Điện-Điện tử
- Thành viên đề tài:
- Người hướng dẫn: Thạc sĩ Nguyễn Thanh Nghĩa
2 Mục tiêu đề tài:
- Thiết kế kit lập trình
- Thu thập điều khiển thiết bị ngoại vi
- Xây dựng thư viện hoàn chỉnh
3 Tính mới và sáng tạo:
- Kit lập trình với vi điều khiển ARM
- Kết hợp các cảm biến y sinh
4 Kết quả nghiên cứu:
- Kit lập trình ARM
- Điều khiển các module từ đơn giản đến phức tạp
- Thư viện điều khiển
- Cuốn báo cáo kết quả
5 Đóng góp về mặt giáo dục và đào tạo, kinh tế - xã hội, an ninh, quốc phòng và khả năng áp dụng của đề tài:
- Phục vụ cho học tập lập trình và lập trình với cảm biến y sinh
6 Công bố khoa học của SV từ kết quả nghiên cứu của đề tài (ghi rõ tên tạp chí nếu
có) hoặc nhận xét, đánh giá của cơ sở đã áp dụng các kết quả nghiên cứu (nếu có):
Ngày tháng năm
SV chịu trách nhiệm chính thực hiện đề tài
(kí, họ và tên)
1 Phan Hoàng Nam 17129028 171290 Điện-Điện tử
2 Nguyễn Thu Trà 17129055 171290 Điện-Điện tử
Trang 15Số hiệu: HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét: 00 Ngày hiệu lực: 10/10/2021 xii
Nhận xét của người hướng dẫn về những đóng góp khoa học của SV thực hiện đề
tài (phần này do người hướng dẫn ghi):
Ngày tháng năm
Người hướng dẫn
(kí, họ và tên)
Trang 16MỞ ĐẦU
a TỔNG QUAN
Đỗ Minh Phương đã nghiên cứu và trình bày đề tài: Xử lý ảnh video theo thời gian thực trên Kit STM32[1] Bài báo cáo này đã trình bày nghiên cứu, thiết kế hệ thống thu nhập và xử lý luồng ảnh video thời gian thực trên Kit STM32 Nghiên cứu này đã phát triển được công cụ giúp thu thập, xử lý, phân tích luồng ảnh thu được từ video, hiển thị ảnh theo thời gian trên màn LCD và truyền tải ảnh về máy tính
Đồ án tốt nghiệp của Nguyễn Châu Ngân và Trần Thị Linh Đa với đề tài: Thiết
kế và thi công hệ thống điểm danh nhân viên sử dụng vi điều khiển ARM Nghiên cứu này đã dùng vi điều khiển ARM STM32F103VET6 để thu nhận tín hiệu từ thẻ RFID để hoàn thành đề tài [2]
Cùng với sự phát triển không ngừng của khoa học công nghệ, việc học tập nghiên cứu và sử dụng vi điều khiển ARM ngày càng được chú trọng hơn Từ đó các đề tài nghiên cứu về vi điều khiển ARM ngày càng nhiều Để có thể lập trình được vi điều khiển ARM cần có một phần mềm dễ dàng sử dụng mà STM32CubeMX là một trong những phần mềm nổi bật Phần mềm cho phép xử lý những tín hiệu thu nhận từ STM32 cung cấp mã code để người dùng lập trình
Ứng dụng của cảm biến y sinh vào việc chăm sóc sức khỏe và đời sống hàng ngày
là một điều thiết yếu Cùng với đó, việc sử dụng các cảm biến y sinh trong môi trường học tập cho các bạn sinh viên ngành kỹ thuật Y sinh càng thiết thực hơn Đồng thời, giúp các bạn sinh viên vận dụng tốt những kiến thức đễ lập trình được các cảm biến đã được học
b LÝ DO CHỌN ĐỀ TÀI
Hiện nay, lập trình với vi xử lý là một kỹ năng cần có của một kỹ sư điện Sau khi học xong lý thuyết với mục đích tiếp cận thực tế lập trình điều khiển và ứng dụng của vi điều khiển từ cơ bản đến nâng cao Giúp ôn lại các kiến thức đã học, rèn luyện
kỹ năng lập trình, kỹ năng gỡ rối, kiểm tra, giám sát, phân tích, suy luận, đánh giá Có rất nhiều bộ kit giúp hỗ trợ sinh viên lập trình như “Kit thực hành vi điều khiển PIC” của Ths Nguyễn Đình Phú Trong đó sử dụng vi điều khiển PIC 18F4550 để điều khiển
7 Module khác nhau Các bài lập trình được thiết kế từ cơ bản đến nâng cao Kết hợp phần cứng với phần mềm để phát huy tối đa kỹ năng lập trình [3]
Trang 17Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:2/141
Trên thị trường có rất nhiều kit lập trình đã dạng Trong đó phổ biến nhất là lập trình Arduino Arduino một nền tảng mã nguồn mở phần cứng và phần mềm Phần cứng bao gồm một board mạch nguồn mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặc ARM Atmel 32-bit Những Model hiện tại được trang bị gồm 1 cổng giao tiếp USB, 6 chân đầu vào analog, 14 chân I/O kỹ thuật số tương thích với nhiều board mở rộng khác nhau Với cộng đồng lớn, người lập trình có thể tiếp cận dễ dàng, giả đáp các thắc mắc, thư viện rộng mở từ đó phát triển đề tài của các nhân cũng như nâng cao
kỹ năng lập trình [4]
Qua tóm tắt trên, nhóm quyết định làm đề tài “Thiết kế và thi công Kit lập trình
vi điều khiển ARM kết hợp cảm biến y sinh” Kit sẽ được sử dụng vi điều khiển trung tâm là ARM STM32F4, cùng các khối chức năng và các cảm biến khác nhau để hỗ trợ cho người lập trình nói chung và sinh viên nói riêng có công cụ để áp dụng những kiến thức đã được học và tìm hiểu
c MỤC TIÊU
Thiết kế và thi công Kit lập trình vi điều khiển ARM kết hợp cảm biến y sinh là kit sử dụng vi điều khiển trung tâm là ARM STM32F4 cùng với khối chức năng: khối led đơn, khối led 7 đoạn quét, khối LCD, khối ma trận phím, khối nút nhấn, khối thời gian thực, khối điều khiển tốc độ động cơ, cảm biến SPO2, cảm biến nhịp tim, cảm biến
áp lực và các cảm biến khác
d PHƯƠNG PHÁP NGHIÊN CỨU
Phương pháp tham khảo tài liệu: Tham khảo các tài liệu về lập trình ARM và cách sử dụng phần mềm STM32CubeMX
Phương pháp thực nghiệm khoa học: Trực tiếp thu thập dữ liệu và lập trình ứng dụng các cảm biến sau đó hiển thị lên màn hình
e ĐỐI TƯỢNG NGHIÊN CỨU
Đối tượng nghiên cứu chính của đề tài là tín hiệu từ các cảm biến, lập trình hoạt động cho các cảm biến, cách thức truyền dữ liệu tín hiệu lên màn hình
f PHẠM VI NGHIÊN CỨU
Phạm vi nghiên cứu là tập trung vào xây dựng một hệ thống lập trình điều khiển các cảm biến y sinh từ lúc thu tín hiệu đến lúc hiển thị tín hiệu
Trang 18Chương 1 CƠ SỞ LÝ THUYẾT
1.1 GIỚI THIỆU
Sau khi lựa chọn được đề tài, để hiểu rõ hơn về tính thực thi và một số lý thuyết liên quan đến đề tài, nhóm chúng tôi xin được trình bày một số nội dung chính sau: Tổng quan về vi điều khiển ARM, Lý thuyết về vi điều STM32F407VE, giới thiệu sơ lược về Wifi, Bluetooth, RF, cũng như phần cứng và phần mềm được sử dụng để thực hiện đề tài này
1.2 TỔNG QUAN VỀ VI ĐIỀU KHIỂN ARM
1.2.1 Mô tả sơ lược về vi điều khiển ARM
ARM là một loại vi điều khiển 32bit và 64bit kiểu RISC, ARM lúc đầu được đặt tên theo công ty Acorn (ban đầu ARM có nghĩa là Acorn RISC Machine, trong đó RISC
là một cách thiết kế vi xử lý) sau này do có thêm nhiều công ty cùng phát triển và một
số lý do khác, người ta thống nhất gọi ARM là Advance RISC Machine ARM được sử dụng rộng rãi trong các thiết kế nhúng [5]
Ngày nay, hơn 75% CPU 32bit là thuộc họ ARM, điều này khiến ARM trở thành cấu trúc 32 bít được sản xuất nhiều nhất thế giới Bộ xử lý CPU của ARM hiện diện trong 95% smartphone, 90% ổ đĩa cứng, 40% truyền hình kĩ thuật số và set top box, 15% trong vi điều khiển, 20% trong máy tính di động và có mặt trên rất nhiều lĩnh vực,
từ TV cho đến các hệ thống tự động hóa và máy móc công nghiệp [6]
1.2.2 Cấu trúc cơ bản của ARM
Cấu trúc ARM bao gồm các đặc tính của RISC nổi bật như: Cấu trúc nạp/lưu trữ, không cho phép truy xuất bộ nhớ không thẳng hàng, tập lệnh trực giao, file thanh ghi lớn gồm 16x32-bit, chiều dài mã máy cố định là 32bit để dễ giải mã và thực hiện pipeline, để đạt được điều này phải chấp nhận giảm mật độ mã máy [7]
Trang 19Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:4/141
Hình 1.1: Cấu trúc cơ bản của vi điều khiển ARM
a Các tính chất nổi bật
− Hầu hết tất cả các lệnh đều cho phép thực thi có điều kiện, điều này làm giảm việc phải viết các tiêu đề rẽ nhánh cũng như bù cho việc không có một bộ dự đoán rẽ nhánh
− Trong các lệnh số học, để chỉ ra điều kiện thực hiện, người lập trình chỉ cần sửa mã điều kiện
− Có một thanh ghi dịch 32-bit, có thể sử dụng với chức năng tính toán với hầu hết các lệnh số học và việc tính toán địa chỉ
− Có các kiểu định địa chỉ theo chỉ số rất mạnh
− Có hệ thống con thực hiện ngắt hai mức ưu tiên đơn giản nhưng rất nhanh, kèm theo cho phép chuyển từng nhóm thanh ghi
− Kích thước miếng bán dẫn nhỏ hơn, bộ xử lý đơn giản đòi hỏi ít transistor hơn, do đó kích thước cần dùng nhỏ lại dành vùng diện tích trống để tăng các chức năng như bộ nhớ cache, chức năng quản lý bộ nhớ…
− Thời gian phát triển một sản phẩm ngắn hơn (do kĩ thuật đơn giản)
− Cấu hình mạnh hơn: Khi ta đặt ra các chỉ lệnh phức tạp tuy nó gần gũi với ngôn ngữ cấp cao, nhưng như thế vô tình cũng làm các chỉ lệnh khác phức
Trang 20tạp lên và để thực thi một chỉ lệnh như vậy cần tốn nhiều chu kì xung nhịp Trong khi đó nếu dùng RISC chỉ mất một chu kì xung nhịp cho mỗi lệnh, khi
ta phân nhỏ vấn đề phức tạp thành các vấn đề đơn giản thì cách giải quyết sẽ tốt hơn
− Tốc độ tính toán cao nhờ vào việc giải mã lệnh đơn giản, nhờ có nhiều thanh ghi (ít thâm nhập bộ nhớ), và nhờ thực hiện kỹ thuật ống dẫn liên tục và có hiệu quả (các lệnh đều có thời gian thực hiện giống nhau và có cùng dạng)
− Thời gian cần thiết để thiết kế bộ điều khiển là ít Điều này góp phần làm giảm chi phí thiết kế
− Bộ điều khiển trở nên đơn giản và gọn làm cho ít rủi ro mắc phải sai sót mà
ta thường gặp trong bộ điều khiển
− Có một số ít lệnh (thông thường dưới 100 lệnh)
− Có một số ít các kiểu định vị (thông thường hai kiểu: định vị tức thì và định
vị gián tiếp thông qua một thanh ghi)
− Có một số ít dạng lệnh (một hoặc hai)
− Các lệnh đều có cùng chiều dài
− Chỉ có các lệnh ghi hoặc đọc ô nhớ mới thâm nhập vào bộ nhớ
− Dùng bộ tạo tín hiệu điều khiển bằng mạch điện để tránh chu kỳ giải mã các
vi lệnh làm cho thời gian thực hiện lệnh kéo dài
− Ngoài ra các bộ xử lý RISC đầu tiên thực hiện tất cả các lệnh trong một chu
kỳ máy
b Lõi của Vi điều khiển ARM
− Lõi xử lý ARM là một khối chức năng được kết nối bởi các bus dữ liệu, các mũi tên thể hiện cho dòng chảy của dữ liệu, các đường thể hiện cho bus dữ liệu, các ô biểu diễn trong hình là một khối hoạt động hoặc một vùng lưu trữ Cấu hình này cho thấy các dòng dữ liệu và các thành phần tạo nên một bộ xử
lý ARM
− Tập lệnh ARM nằm trong hai nguồn thanh ghi Rn và Rm, kết quả được trả về thanh ghi đích Rd Nguồn toán hạng được đọc từ thanh ghi đang sử dụng trên bus nội bộ A và B tương ứng
− Khối số học và logic ALU hay bộ nhân MAC lấy các giá trị từ thanh ghi Rn
và Rm từ bus A, B và tính toán ra kết quả
Trang 21Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:6/141
− Mô hình thanh ghi theo kiến trúc Registry file giao tiếp với bộ nhớ thông qua các lệnh load – store và ALU để tính toán địa chỉ được lưu trong các thanh ghi
− Incrementer: bộ gia tăng cho thanh ghi địa chỉ
Hình 1.2: Cấu trúc lõi ARM Cortex M0
1.2.3 Phân loại các phiên bản của ARM
Để đáp ứng yêu cầu khắt khe và đa dạng của các hệ thống nhúng, bộ xử lý ARM Cortex được chia thành 3 dòng, được biểu hiện bằng các ký tự sau tên Cortex như dòng:
A, R, M
a Dòng A
Bộ vi xử lý ARM Cortex A là bộ xử lý có hiệu suất cao cung cấp một loạt các giải pháp cho các thiết bị thực hiện nhiệm vụ tính toán phức tạp, chẳng hạn như lưu trữ một nền tảng phong phú hệ điều hành (OS), và hỗ trợ nhiều ứng dụng phần mềm Tất
cả các bộ xử lý Cortex-A đặc biệt cung cấp hiệu suất 32bit cho máy tính cao cấp, với bộ
vi xử lý Cortex-A72 mới và cả Cortex-A57 và Cortex-A53 bộ xử lý kết hợp cung cấp hiệu suất 32-bit và 64-bit cho thế hệ điện thoại di động, mạng và máy chủ sản phẩm
được mô tả trong Hình 1.3 [7]
Trang 22Hình 1.3: Các phiên bản của ARM Cortex-A
Các bộ vi xử lý có sẵn trong đơn lõi và đa lõi cung cấp lên đến bốn đơn vị xử lý với khả năng tích hợp các khối xử lý đa phương tiện NEON Hỗ trợ các tập lệnh ARM, Thumb và Thumb-2 Ứng dụng của dòng A bao gồm: điện thoại thông minh, netbook, eReaders, TV kỹ thuật số, home Gateway, máy chủ và mạng
b Dòng R
Bộ vi xử lý Cortex R có hiệu suất vượt trội cho các ứng dụng thời gian thực, thời gian xử lý nhúng đã được phát triển cho các ứng dụng nhúng thời gian thực, nhu cầu về điện năng thấp, ngắt được cân bằng với hiệu suất vượt trội và khả năng tương thích mạnh
mẽ với nền tảng hiện tại Ứng dụng của dòng R bao gồm: hệ thống phanh ô tô, các giải phá hệ thống truyền lực, bộ ưu trữ khối lượng, Networking và in ấn
Hình 1.4: Các phiên bản ARM Cortex – R Tương tự như dòng A, các phiên bản của dòng R được thể hiện trong Hình 1.4
Bộ xử lý Cortex R dành cho các hệ thống đòi hỏi khắc khe về tính thời gian thực Hỗ
Trang 23Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:8/141
trợ các tập lệnh ARM, Thumb và Thumb-2 Các bộ vi xử lý Cortex R gồm có R4, Cortex-R5, Cortex-R7
Hình 1.5: Các phiên bản của ARM Cortex-M
Bộ xử lý Cortex M Chỉ hỗ trợ tập lệnh Thumb-2 Các bộ vi xử lý Cortex M gồm
có Cortex M0, Cortex M0+, Cortex M3, Cortex M4, Cortex M7
1.3 VI ĐIỀU KHIỂN STM32F407VE
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, … STM32F407 thuộc họ F4 dựa trên lõi RISC 32bit ARM Cortex -M4 hiệu suất cao hoạt động ở tần số lên tới 168MHz Lõi Cortex-M4 có độ chính xác đơn vị dấu phẩy động (FPU) hỗ trợ tất cả các hướng dẫn và loại dữ liệu xử lý
dữ liệu chính xác đơn ARM Nó cũng thực hiện một bộ đầy đủ các hướng dẫn DSP và
bộ bảo vệ bộ nhớ (MPU) để tăng cường bảo mật ứng dụng Mạch nạp cũng như công cụ lập trình khá đa dạng và dễ sử dụng
Trang 24Hình 1.6: Sơ đồ cấu trúc các khối của STM32F407
1.3.2 Cấu trúc bộ nhớ, thanh ghi
Bộ nhớ chương trình, bộ nhớ dữ liệu, thanh ghi và cổng I/O được tổ chức trong cùng một không gian địa chỉ 4Gbyte tuyến tính Các byte được mã hóa trong bộ nhớ ở định dạng endian nhỏ Byte được đánh số thấp nhất trong một từ được coi là byte có ý nghĩa nhỏ nhất và byte được đánh số cao nhất Tất cả các vùng nhớ không được phân bổ cho các bộ nhớ và thiết bị ngoại vi trên chip đều được coi là Reserved [9]
Bảng 1.1: Sơ đồ bộ nhớ
0xFFFF FFFF
0xE000 0000
Block 7 512MB Các ngoại vi nội của Cortex M4
Trang 25Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:10/141
0xDFFF FFFF
0xC000 0000
Block 6 512MB Không sử dụng 0xBFFF FFFF
0xA000 0000
Block 5 512MB Các thanh ghi FSMC 0x9FFF FFFF
0x8000 0000
Block 4 512MB FSMC bank3 và bank4 0x7FFF FFFF
0x6000 0000
Block 3 512MB FSMC bank1 và bank2 0x5FFF FFFF
0x4000 0000
Block 2 512MB Ngoại vi 0x3FFF FFFF
0x2000 0000
Block1 512MB SRAM 0x1FFF FFFF
0x0000 0000
Block 0 512MB Code Tổ chức bộ nhớ của ARM Cortex M4 có dung lượng là 4GB được chia làm 8 block từ Block 0 đến Block 7 mỗi block có dung lượng là 512MB Địa chỉ giới hạn của các ngoại vi trong Arm Cortex M4 được mô tả trong bảng 1.2 dưới đây
Bảng 1.2: Địa chỉ giới hạn của các ngoại vi
0xA000 0000 - 0xA000 0FFF FSMC control register AHB3 0x5006 0800 - 0x5006 0BFF RNG
AHB2
0x5006 0400 - 0x5006 07FF HASH
0x5006 0000 - 0x5006 03FF CRYP
0x5005 0000 - 0x5005 03FF DCMI
Trang 260x4001 5400 - 0x4001 57FF SPI6
APB2 0x4001 5000 - 0x4001 53FF SPI5
Trang 27Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:12/141
15[1:0]
MODER
14[1:0]
MODER13[1:0]
MODER12[1:0]
MODER11[1:0]
MODER10[1:0]
MODER9[1:0]
MODER8[1:0]
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 MODE
R7[1:0]
MODER6[1:0]
MODER5[1:0]
MODER4[1:0]
MODER3[1:0]
MODER2[1:0]
MODER1[1:0]
MODER0[1:0]
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw Bits 2y:2y+1 MODERy [1:0]: Bit cấu hình Port x (y = 0 15)
Những bit này được viết bằng phần mềm để cấu hình I/O mode
• 00: Input (trạng thái reset)
• 01: General purpose output mode
• 10: Alternate function mode
Trang 28OT4
OT0
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw Bits 31:16 Không sử dụng, giữ ở giá trị reset
Bits 15:0 OTy: Bit cấu hình Port x (y = 0…15)
Những bit này được viết bằng phần mềm để cấu hình I/O mode
0: Output push-pull (trạng thái reset)
1: Output open - drain
Thanh ghi GPIO port tốc độ output (GPIOx_OSPEEDR) (x = A I/J/K)
R15 [1:0]
OSPEED
R14 [1:0]
OSPEEDR13 [1:0]
OSPEEDR12 [1:0]
OSPEEDR11 [1:0]
OSPEEDR10 [1:0]
OSPEEDR9 [1:0]
OSPEEDR8 [1:0]
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OSPEED
R7[1:0]
OSPEED
R6[1:0]
OSPEEDR5[1:0]
OSPEEDR4[1:0]
OSPEEDR3[1:0]
OSPEEDR2[1:0]
OSPEED R1[1:0]
OSPEEDR0 1:0]
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw Những bit này được viết bằng phần mềm để cấu hình tốc độ I/O output
• 00: Low speed
Trang 29Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:14/141
15[1:0]
PUPDR
14[1:0]
PUPDR13[1:0]
PUPDR12[1:0]
PUPDR11[1:0]
PUPDR10[1:0]
PUPDR9[1:0]
PUPDR8[1:0]
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 PUPDR
7[1:0]
PUPDR
6[1:0]
PUPDR5[1:0]
PUPDR4[1:0]
PUPDR3[1:0]
PUPDR2[1:0]
PUPDR1[1:0]
PUPDR0[1:0]
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw Bits 2y:2y+1 PUPDRy[1:0]: Bit cấu hình Port x (y = 0 15
Những bit này được viết bằng phần mềm để cấu hình I/O pull-up or pull-down
Trang 302
IDR1
1
IDR1
0
IDR9
IDR8
IDR0
r r r r r r r r r r r r r r r r Bits 31:16 Reserved, giữ ở giá trị reset
Bits 15:0 IDRy: Port input data (y = 0 15)
Những bit này chỉ đọc và chỉ có thể truy cập ở chế độ word Các bit bày chứa giá trị đầu vào của cổng I / O tương ứng
Thanh ghi GPIO port output data (GPIOx_ODR) (x = A I/J/K)
ODR11
ODR10
ODR9
ODR8
ODR7
ODR6
ODR5
ODR4
ODR3
ODR2
ODR1
ODR0
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw Bits 31:16 Reserved, giữ ở giá trị reset
Bits 15:0 ODRy: Port output data (y = 0 15)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 BR1
Những bit này chỉ ghi và truy cập bằng chế độ word, half-word hoặc byte Việc đọc các bit này trả về giá trị 0x0000
• 0: Không có hành động nào đối với bit ODRx tương ứng
• 1: Reset bit ODRx tương ứng
Trang 31Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:16/141
Note: If both BSx and BRx are set, BSx has priority
Bits 15:0 BSy: Port x set bit y (y= 0 15)
Những bit này chỉ ghi và truy cập bằng chế độ word, half-word hoặc byte Việc đọc các bit này trả về giá trị 0x0000
• 0: Không có hành động nào đối với bit ODRx tương ứng
• 1: Set bit ODRx tương ứng
Thanh ghi khóa cấu hình cổng GPIO (GPIOx_LCKR) (x = A I/J/K)
Thanh ghi này được sử dụng để khóa cấu hình của các bit cổng khi một chuỗi ghi đúng được áp dụng cho bit 16 (LCKK) Giá trị của bit [15: 0] được sử dụng để khóa cấu hình của GPIO Trong chuỗi ghi, giá trị của LCKR [15: 0] không được thay đổi Khi chuỗi LOCK đã được áp dụng trên một bit cổng, giá trị của bit cổng này không còn có thể được sửa đổi cho đến khi MCU tiếp theo hoặc thiết lập lại ngoại vi
Chú ý: Một chuỗi ghi cụ thể được sử dụng để ghi vào thanh ghi GPIOx_LCKR Chỉ cho phép truy cập từ (dài 32 bit) trong chuỗi ghi này
1.3.5 Thanh ghi ADC
Các thanh ghi ngoại vi phải được ghi ở mức word (32 bit) Truy cập đọc có thể được thực hiện bằng byte (8 bit), half-word (16 bit) hoặc word (32 bit)
Thanh ghi trạng thái ADC (ADC_SR)
‒ Bit 5 OVR: Overrun (tràn)
Bit này được thiết lập bởi phần cứng khi dữ liệu bị mất (ở chế độ đơn hoặc ở chế độ kép / ba) Nó được xóa bằng phần mềm Phát hiện overrun chỉ được bật khi DMA = 1 hoặc EOCS = 1
Trang 320: Không có tràn xảy ra
1: Có Overrun xảy ra
‒ Bit 4 STRT: Cờ khởi động kênh thường
Bit này được thiết lập bởi phần cứng khi bắt đầu chuyển đổi kênh thông thường
Nó được xóa bằng phần mềm
0: Không có chuyển đổi kênh thường nào khởi động
1: Chuyển đổi kênh thường vừa mới khởi động
‒ Bit 3 JSTRT: Cờ khởi động kênh Injected
Bit này được thiết lập bởi phần cứng khi bắt đầu chuyển đổi nhóm được chèn Bit được xóa bằng phần mềm
0: Không có chuyển đổi nhóm Injected khởi động
1: Có nhóm Injected vừa mới khởi động
‒ Bit 2 JEOC: Kết thúc chuyển đổi kênh Injected
Bit này được thiết lập bởi phần cứng vào cuối quá trình chuyển đổi tất cả các kênh được chèn trong nhóm Bit bị xóa bởi phần mềm
0: Chuyển đổi chưa hoàn thành
1: Hoàn thành chuyển đổi
‒ Bit 1 EOC: Kết thúc chuyển đổi kênh thường
Bit này được thiết lập bởi phần cứng vào cuối quá trình chuyển đổi của nhóm kênh thông thường Nó bị xóa bằng phần mềm hoặc bằng cách đọc thanh ghi ADC_DR
0: Chuyển đổi chưa hoàn thành (EOCS=0), hoặc chuỗi chuyển đổi chưa hoàn thành (EOCS=1)
1: Chuyển đổi hoàn thành (EOCS=0), hoặc chuỗi chuyển đổi hoàn thành complete (EOCS=1)
‒ Bit 0 AWD: Cờ analog watchdog
Bit này được thiết lập bởi phần cứng khi điện áp được chuyển đổi vượt qua các giá trị được lập trình trong các thanh ghi ADC_LTR và ADC_HTR Nó được xóa bằng phần mềm
0: Không có sự kiện analog watchdog event xảy ra
1: Sự kiện analog watchdog xảy ra
Thanh ghi điều khiển ADC 1 (ADC_CR1)
• Địa chỉ bù: 0x04
Trang 33Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:18/141
• Giá trị reset: 0x0000
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved
OVRIE
DE
N
JAWDEN Reserved
rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 DISCNUM
[2:0]
JDISCE
O
AWDSG
L
SC
AN
JEOCIE
AWDIE
EOC
IE AWDCH[4:0]
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw Bits 31:27 Reserved, phải giữ ở giá trị reset
‒ Bit 26 OVRIE: Cho phép ngắt tràn
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt ngắt tràn
0: Tắt ngắt tràn
1: Bật ngắt tràn Một ngắt được sinh ra khi bit OVR được đặt
‒ Bits 25:24 RES[1:0]: Độ phân giải
Các bit này được viết bằng phần mềm để chọn độ phân giải của chuyển đổi 00: 12-bit (15 ADCCLK cycles)
01: 10-bit (13 ADCCLK cycles)
10: 8-bit (11 ADCCLK cycles)
11: 6-bit (9 ADCCLK cycles)
‒ Bit 23 AWDEN: Bật Analog watchdog trên những kênh thường
Bit này được đặt hoặc xóa bởi phần mềm
0: Tắt Analog watchdog trên kênh thường
1: Bật Analog watchdog trên kênh thường
‒ Bit 22 JAWDEN: Bật Analog watchdog trên những kênh Injected
Bit này được đặt hoặc xóa bởi phần mềm
0: Analog watchdog disabled on injected channels
1: Analog watchdog enabled on injected hannels
‒ Bits 21:16 Reserved, phải giữ ở giá trị reset
‒ Bits 15:13 DISCNUM[2:0]: Đếm kênh ở chế độ không liên tục
Trang 34Các bit này được viết bởi phần mềm để xác định số lượng kênh thông thường sẽ được chuyển đổi ở chế độ không liên tục, sau khi nhận được kích hoạt bên ngoài
000: 1 kênh
001: 2 kênh
111: 8 kênh
‒ Bit 12 JDISCEN: Đếm kênh Injected ở chế độ không liên
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt chế độ không liên tục trên các kênh được chèn của một nhóm
0: Tắt chế độ không liên tục trên kênh Injected
1: Bật chế độ không liên tục trên kênh Injected
‒ Bit 11 DISCEN: Đếm kênh thường ở chế độ không liên tục
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt chế độ Không liên tục trên các kênh thông thường
0: Tắt chế độ không liên tục trên kênh thường
1: Bật chế độ không liên tục trên kênh thường
‒ Bit 10 JAUTO: Tự động chuyển đổi nhóm Injected
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt chuyển đổi nhóm được chèn tự động sau khi chuyển đổi nhóm thông thường
0: Tắt tự động chuyển đổi nhóm Injected
1: Bật tự động chuyển đổi nhóm Injected
‒ Bit 9 AWDSGL: Kích hoạt watchdog trên một kênh trong chế độ quét
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt analog watchdog trên kênh được xác định bởi các bit AWDCH [4: 0]
0: Analog watchdog được bật trên tất cả các kênh
1: Analog watchdog bật trên một các kênh
‒ Bit 8 SCAN: chế độ quét
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt chế độ Quét Trong chế độ Quét, các đầu vào được chọn thông qua các thanh ghi ADC_SQRx hoặc ADC_JSQRx được chuyển đổi
0: Tắt chế độ quét
1: Bật chế độ quét
Trang 35Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:20/141
‒ Bit 7 JEOCIE: Cho phép ngắt các kênh Injected
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt kết thúc ngắt chuyển đổi cho các kênh Injected
0: Tắt ngắt JEOC
1: Bật ngắt JEOC Một ngắt được sinh ra khi bit JEOC được đặt
‒ Bit 6 AWDIE: Kích hoạt ngắt Analog watchdog
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt ngắt analog watchdog
0: Tắt ngắt Analog watchdog
1: Bật ngắt Analog watchdog
‒ Bit 5 EOCIE: Kích hoạt ngắt cho EOC
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt ngắt kết thúc chuyển đổi
0: Tắt ngắt EOC
1: Bật ngắt EOC Một ngắt được sinh ra khi bit EOC được đặt
‒ Bits 4:0 AWDCH[4:0]:Các bit lựa chọn kênh Analog watchdog
Chúng chọn kênh đầu vào để được bảo vệ bởi analog watchdog
1.4 GIỚI THIỆU PHẦN CỨNG
Từ những phần lý thuyết được tìm hiểu ở trên, nhóm quyết định lựa chọn phần cứng để thực hiện đề tài này với các cảm biến để thu tín hiệu và hiển thị trên màn hình LCD TFT 2.2 Inch
1.4.1 Cảm biến nhịp tim và nồng độ oxy trong máu
a Mô tả
Hình 1.7: Cảm biến nhịp tim và nồng độ oxy trong máu MAX30102
Hình 1.7 chính là Module cảm biến MAX30102, đây là module có khả năng đo
được nồng độ Oxy trong máu và nhịp tim Đó là một cảm biến quang học, nó phát ra hai bước sóng ánh sáng từ hai đèn LED - một LED đỏ và một LED hồng ngoại - sau đó đo
Trang 36sự hấp thụ của xung huyết (pulsing blood) bằng cách thu tín hiệu thông qua một bộ cảm biến ánh sáng (photodetector) Sự kết hợp màu LED đặc biệt này được tối ưu hóa để đọc
dữ liệu ở đầu ngón tay [10]
Cảm biến nhịp tim và Oxy trong máu MAX30100 được ứng dụng nhiều trong lĩnh vực y sinh, cảm biến sử dụng phương pháp đo quang phổ biến hiện nay, với thiết
kế và chất liệu mắt đo từ chính hãng Maxim cho độ chính xác và độ bền cao, độ nhiễu thấp Ngoài ra, cảm biến sử dụng giao tiếp I2C rất dễ tiếp cận với Arduino
Hình 1.8 chính là IC cảm biến nhiệt độ DS18B20 được thiết kế với độ phân giải
từ 9 – 12bit Với chuẩn giao tiếp 1-Wire (1 chân Data duy nhất) rất dễ kết nối và lập trình, cảm biến có chất lượng tốt, độ bền cao [11]
b Thông số kỹ thuật
• Điện áp hoạt động: 3 – 5 (VDC)
• Dòng điện tiêu thụ: 1 – 1.5 (mA)
• Nhiệt độ đo được: -55 đến +125 (ºC)
• Độ chính xác: ± 0.5 (ºC)
• Độ phân giải: 9 – 12bit
• Thời gian phản hồi: < 750 (ms)
• Chuẩn giao tiếp: digital TTL 1- Wire
Trang 37Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:22/141
1.4.2 Cảm biến nhiệt độ LM35
a Mô tả
Hình 1.9: Cảm biến nhiệt độ LM35
Hình 1.11 chính là cảm biến nhiệt độ LM35 nhóm sử dụng cho đề tài này Loại
cảm biến này có điện áp Analog đầu ra tuyến tính theo nhiệt độ thường được sử dụng
để đo nhiệt độ của môi trường hoặc theo dõi nhiệt độ của thiết bị, cảm biến có kiểu chân TO-92 với chỉ 3 chân rất dễ giao tiếp và sử dụng [12]
K: là điện áp đầu ra của LM35: K = 10mV/oC
t: nhiệt độ môi trường (oC)
U: điện áp đầu ra
1.4.3 Cảm biến siêu âm
a Mô tả
Cảm biến siêu âm Ultrasonic HC-SR04 được sử dụng để nhận biết khoảng cách
từ vật thể đến cảm biến nhờ sóng siêu âm, cảm biến có thời gian phản hồi nhanh, độ chính xác cao, phù hợp cho các ứng dụng phát hiện vật cản, đo khoảng cách bằng sóng siêu âm [13]
Trang 38Hình 1.10: Cảm biến siêu âm HC- SR04
Hình 1.10 mô tả cho cảm biến mà nhón sử dụng Cảm biến này sử dụng đầu dò
để gửi và nhận xung siêu âm chuyển tiếp thông tin về một vật thể ở gần Sóng âm tần
số cao phản xạ từ các ranh giới để tạo ra các mẫu tiếng vang riêng biệt [14]
Hình 1.11: Cảm biến nồng độ cồn MQ3
Hình 1.11 là cảm biến nồng độ cồn MQ3 mà nhóm sử dụng trong đề tài Cảm
biến có độ nhạy cao với các khí gas, alcohol, ethanol [16]
b Thông số kỹ thuật
• Điện áp hoạt động: 5VDC
Trang 39Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:24/141
(Hình 1.13) Với Arduino chúng ta có thể xây dựng các ứng dụng điện tử tương tác với
nhau thông qua phần mềm và phần cứng hỗ trợ [18]
Trang 40Hình 1.13: Arduino Nano
Với hình 1.14 là sơ đồ chân của Arduino Nano, mỗi chân trên mạch Arduino
Nano có chức năng cụ thể Do đó, dựa vào từng chức năng khác nhau mà lựa chọn chân phù hợp
Hình 1.14: Sơ đồ chân của Arduino Nano
• Dòng DC tối đa trên chân I/O: 40 mA
• Dòng DC tối đa trên chân 3.3V: 50 mA
• Bộ nhớ flash: 32KB
• Dòng ra tối đa: 500 mA
• Kích thước: 18.5x43 mm