Cấu tạo và cách giao tiếp với cảm biến nhịp tim MAX30100
Cảm biến MAX30100 là một module đo nhịp tim và nồng độ oxy trong máu (SpO2). Nó tích hợp đèn LED hồng ngoại, đèn LED đỏ, một cảm biến quang học, và một thuật toán xử lý tín hiệu để đo nhịp tim và SpO2 chính xác.
Cảm biến này giao tiếp với vi điều khiển thông qua giao thức I2C, giúp việc kết nối và lập trình dễ dàng hơn.
Chuẩn bị thiết bị và cách kết nối
Phần cứng:
- STM32F103C8T6 Bluepill
- Module MAX30100
- Màn hình I2C LCD1602
- Dây kết nối (jumper)
- Mạch nạp ST-Link V2
Phần mềm:
- STM32CubeIDE (khuyên dùng phiên bản mới nhất)
Chương trình chính
Các cấu hình ban đầu bao gồm:
- Cấu hình clock hệ thống
- Cấu hình chân PB4, PB5 làm 2 chân giao tiếp I2C với cảm biến nhịp tim MAX30100
- Cấu hình ngoại vi I2C2 sử dụng 2 chân PB10 – I2C2_SCL và PB11 – I2C2_SDA để giao tiếp với màn hình I2C LCD1602
- Cấu hình ngoại vi UART2 sử dụng 2 chân PA2 – USART2_TX và PA3 – USART2_RX sử dụng để in dữ liệu lên máy tính (nếu cần)
- Cấu hình các chân GPIO điều khiển led báo trạng thái và còi (nếu cần)
Các cấu hình ban đầu mình sẽ không trình bày rõ ràng ở đây, vui lòng bạn đọc tải xuống mã nguồn để biết thêm chi tiết..
Các thư viện cần sử dụng của dự án:
- Thư viện phục vụ quá trình giao tiếp với cảm biến nhịp tim MAX30100: my_i2c.h (my_i2c.c) chứa các hàm để đọc và ghi với các thanh ghi của cảm biến nhịp tim MAX30100 để điều khiển và đọc dữ liệu thô.
- Thư viện phục vụ quá trình tính toán và giải mã ra các giá trị về nhịp tim và SpO2: algorithm.h (algorithm.c), MAX30100.h (MAX30100.c), max30100_dsp.h (max30100_dsp.c).
- Thư viện phục vụ giao tiếp I2C với màn hình I2C LCD1602: i2c-lcd.h (source i2c-lcd.c).
- Thư viện chứa hàm in dữ liệu lên máy tính qua uart: debug.h (debug.c).
Kết nối cảm biến nhịp tim MAX30100 với kit STM32F103 Blue Pill:
Video thử nghiệm thực tế
Tải mã nguồn tại đây!