16.6 C
London
Thứ Tư, Tháng 10 8, 2025

STM32 HAL driver với cảm biến nhịp tim MAX30100 sử dụng STM32CUBE IDE

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).
Cấu trúc file trong mã nguồn trên STM32CUBE IDE

Kết nối cảm biến nhịp tim MAX30100 với kit STM32F103 Blue Pill:

Sơ đồ đấu dây

Video thử nghiệm thực tế

Tải mã nguồn tại đây!

5/5 - (1 bình chọn)
Admin Peter
Admin Peterhttps://capitlab.com/
Coder & Hardware Designer $ Embedded Linux

Nội dung hấp dẫn

Giao thức I2C – Ví dụ với STM32

I2C (Inter-Integrated Circuit) là một giao thức truyền thông nối tiếp sử dụng 2 dây là SCL (tín hiệu clock) và SDA (tín hiệu dữ liệu)

Modbus RTU STM32 (Phần 3)

Ở phần 1 và phần 2 mình đã giới...

Modbus RTU STM32 (Phần 2)

Giao thức Modbus trên STM32

Modbus RTU STM32 (Phần 1)

Trong các hệ thống điều khiển công nghiệp, Modbus...

Thiết kế mạch cầu H tích hợp PID

Bài viết này mình sẽ chia sẻ cho...

Đặt mạch Trung Quốc, mua linh kiện hiếm

Bài viết nói về đặt mạch Trung Quốc và...

Nội dung liên quan

Modbus RTU STM32 (Phần 3)

Ở phần 1 và phần 2 mình đã giới thiệu về giao thức Modbus và cấu hình STM32CubeMX cho project. Ở phần cuối này,...

Modbus RTU STM32 (Phần 2)

Giao thức Modbus trên STM32

Modbus RTU STM32 (Phần 1)

Trong các hệ thống điều khiển công nghiệp, Modbus RTU là một trong những giao thức truyền thông phổ biến và dễ triển khai...