Hướng dẫn sử dụng cảm biến nhịp tim (Pulse Sensor) với Arduino

Hướng dẫn sử dụng cảm biến nhịp tim (Pulse Sensor) với Arduino

Cảm biến nhịp tim (Pulse Sensor) là một module quang học nhỏ gọn được sử dụng để đo nhịp tim từ ngón tay. Nó là một công cụ hữu ích trong các dự án liên quan đến đo lường nhịp tim và theo dõi sức khỏe. Trong bài viết này, hãy cùng mình khám phá cách sử dụng cảm biến đo nhịp tim (Pulse Sensor) kết hợp với Arduino để đọc và hiển thị dữ liệu nhịp tim. Qua đó sẽ tìm hiểu về nguyên lý hoạt động của cảm biến, cách kết nối cảm biến với Arduino.

Linh kiện cần thiết cho dự án

TÊN LINH KIỆN SỐ LƯỢNG NƠI BÁN
Arduino Uno R3 1 Shopee | Cytron
Cảm biến nhịp tim (Pulse Sensor) 1 Shopee | Cytron
Breadboard 1 Shopee | Cytron
Dây cắm (Đực – Đực) 10 – 20 Shopee | Cytron

Tổng quan về cảm biến nhịp tim – Pulse Sensor

Mặt trước của cảm biến đo nhịp tim, được thiết kế hình logo trái tim, nơi bạn đặt ngón tay. Bên trên của cảm biến có một lỗ tròn nhỏ và được đặt một đèn LED màu xanh lá của Kingbright.

Ngay bên dưới lỗ tròn là một cảm biến ảnh ánh sáng APDS-9008 của Avago. Cảm biến này tương tự như cảm biến được sử dụng trong điện thoại di động, máy tính bảng và máy tính xách tay dùng để điều chỉnh độ sáng của màn hình dựa trên điều kiện ánh sáng xung quanh.

Ở mặt sau của module là một Op-Amp MCP6001 của Microchip và một bộ lọc R/C. Ngoài ra, còn có một Diode được bảo vệ tránh trường hợp bạn cắm sai nguồn.

Module yêu cầu nguồn điện DC từ 3,3 đến 5V và dòng điện dưới 4mA.

Thông số kỹ thuật

Maximum Ratings VCC 3.0 – 5.5V
IMax (Maximum Current Draw) < 4mA
VOut (Output Voltage Range) 0.3V to Vcc
Wavelength LED Output 565nm
Sensor Input 525nm
Dimensions L x W (PCB) 15.8mm (0.625″)
Lead Length 20cm (7.8″)

Cảm biến nhịp tim hoạt động như thế nào?

Nguyên lý hoạt động của cảm biến nhịp tim dựa trên nguyên tắc quang học. Cảm biến đo nhịp tim arduino sử dụng một đèn LED và một bộ cảm biến quang để đo nhịp tim của người sử dụng.

Khi đèn LED phát ra ánh sáng và chiếu qua da, một phần ánh sáng được hấp thụ bởi mô và mạch máu ở lớp da dưới cùng. Trong quá trình này, khi máu chảy qua các mạch máu, sự thay đổi về lượng máu và huyết sắc tố trong mạch máu sẽ tạo ra sự thay đổi về độ hấp thụ ánh sáng.

Cảm biến quang sẽ thu nhận ánh sáng phản xạ từ da và chuyển đổi nó thành tín hiệu điện. Tín hiệu này chứa thông tin về các biến thể liên quan đến nhịp tim, bao gồm mức độ thay đổi ánh sáng phản xạ theo thời gian.

Sau đó, tín hiệu điện được xử lý và phân tích để xác định nhịp tim. Thông qua các thuật toán và quy trình xử lý tín hiệu, cảm biến nhịp tim quang học có thể xác định nhịp tim của người sử dụng dựa trên sự biến đổi trong ánh sáng phản xạ.

Sơ đồ chân cảm biến đo nhịp tim

  • Signal: là chân đầu ra tín hiệu. Được kết nối với đầu vào (Analog pin) của Arduino.
  • VCC: chân nguồn dương. Điện áp cấp từ 3.3V hoặc 5V.
  • GND: chân âm.

Sơ đồ đấu nối cảm biến nhịp tim với Arduino

Arduino Uno R3 Cảm biến đo nhịp tim Arduino
VCC VCC
GND GND
A0 Signal

Cài đặt thư viện

Để có thể giao tiếp với cảm biến nhịp tim, các bạn cần phải cài đặt thư viện ‘PulseSensor Playground’

Truy cập theo đường dẫn bên dưới: Sketch > Include Library > Manage Libraries…

Tiếp theo, ở cửa sổ thư viện Arduino IDE, nhập từ khóa ‘pulsesensor’ vào ô tìm kiếm chọn thư viện giống hình bên dưới và tiến hành cài đặt.

Code ví dụ về cảm biến nhịp tim – Chớp tắt LED theo nhịp tim

Sau khi cài đặt thành công thư viện ở trên, các bạn truy cập vào đường dẫn: File > Examples > PulseSensor Playground, ở đây mình sẽ chọn một ví dụ để đo nhịp tim ‘GettingStartedProject

int const PULSE_SENSOR_PIN = 0;   // 'S' Signal pin connected to A0

int Signal;                // Store incoming ADC data. Value can range from 0-1024
int Threshold = 550;       // Determine which Signal to "count as a beat" and which to ignore.

void setup() {
	pinMode(LED_BUILTIN,OUTPUT);  // Built-in LED will blink to your heartbeat
	Serial.begin(9600);           // Set comm speed for serial plotter window
}

void loop() {

	Signal = analogRead(PULSE_SENSOR_PIN); // Read the sensor value

	Serial.println(Signal);                // Send the signal value to serial plotter

	if(Signal > Threshold){                // If the signal is above threshold, turn on the LED
		digitalWrite(LED_BUILTIN,HIGH);
	} else {
		digitalWrite(LED_BUILTIN,LOW);     // Else turn off the LED
	}
	delay(10);
}

Giải thích Code

int const PULSE_SENSOR_PIN = 0;

int Signal;
int Threshold = 550;

PULSE_SENSOR_PIN định nghĩa chân nối của cảm biến nhịp tim, trong bài viết này mình sử dụngchân A0 (Analog 0).

Signal biến lưu trữ giá trị đầu vào từ cảm biến, được đọc từ chân PULSE_SENSOR_PIN. Giá trị của biến này có thể trong khoảng từ 0 đến 1024, tương ứng với giá trị đọc từ ADC (Analog-to-Digital Converter).

Threshold ngưỡng quyết định xem tín hiệu được xem là nhịp tim hay không. Nếu giá trị Signal vượt quá ngưỡng này, đèn LED sẽ được bật.

void setup() {
	pinMode(LED_BUILTIN,OUTPUT);
	Serial.begin(9600);
}

Trong hàm setup(), thiết lập chế độ đầu ra cho chân LED_BUILTIN (chân điều khiển đèn LED tích hợp trên Arduino). Hàm Serial.begin(9600) sẽ khởi tạo kết nối serial với tốc độ truyền dữ liệu 9600 baud.

void loop() {

	Signal = analogRead(PULSE_SENSOR_PIN); // Read the sensor value

	Serial.println(Signal);                // Send the signal value to serial plotter

	if(Signal > Threshold){                // If the signal is above threshold, turn on the LED
		digitalWrite(LED_BUILTIN,HIGH);
	} else {
		digitalWrite(LED_BUILTIN,LOW);     // Else turn off the LED
	}
	delay(10);
}

Trong hàm loop(), đọc giá trị từ cảm biến đo nhịp tim bằng cách gọi analogRead(PULSE_SENSOR_PIN). Giá trị đọc được gửi đến cửa sổ serial plotter bằng cách sử dụng Serial.println(Signal). Sau đó, kiểm tra xem giá trị Signal có vượt quá ngưỡng Threshold hay không. Nếu vượt quá, đèn LED được bật, nếu không, đèn LED tắt.

Bài viết liên quan

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments