Posted in

วัดอัตราการเต้นของหัวใจ Heartbeat Sensor กับ Arduino แสดงผลผ่าน OLED

วัดอัตราการเต้นของหัวใจ Heartbeat Sensor กับ Arduino แสดงผลผ่าน OLED

ในบทความนี้เราจะมาเรียนรู้การเชื่อมต่อเซ็นเซอร์วัดอัตราการเต้นของหัวใจ (Heartbeat Sensor)
เข้ากับ Arduino เพื่อวัดค่าแบบเรียลไทม์ และแสดงผลบนหน้าจอ OLED

เหมาะสำหรับผู้เริ่มต้นที่สนใจด้าน IoT, สุขภาพ และ Embedded System


อุปกรณ์ที่ใช้ (Components)


ขาใช้งานของ Heartbeat Sensor

  • VCC → ไฟเลี้ยง 5V
  • GND → กราวด์
  • Signal → ขา Analog (เช่น A0)

หลักการทำงานของ Heartbeat Sensor

เซ็นเซอร์วัดชีพจรทำงานโดยตรวจจับการเปลี่ยนแปลงของการไหลเวียนของเลือดใต้ผิวหนัง
ซึ่งเกิดจากการขยายและหดตัวของหลอดเลือดในแต่ละจังหวะการเต้นของหัวใจ

เซ็นเซอร์แบบ Optical จะใช้ LED ยิงแสงเข้าไปในผิวหนัง
และใช้ตัวรับแสง (Photodiode) วัดแสงที่สะท้อนกลับมา

เมื่อเลือดไหลมากขึ้น → ดูดซับแสงมากขึ้น → ค่าที่อ่านเปลี่ยนไป
กระบวนการนี้เรียกว่า Photoplethysmogram (PPG)


โครงสร้างวงจรภายใน

  • Photodiode + IR LED → ตรวจจับชีพจร
  • Op-Amp → ขยายสัญญาณ
  • RC Filter → ลดสัญญาณรบกวน
  • Diode → ป้องกันแรงดันย้อนกลับ

การต่อวงจร (Wiring)

  • VCC → 5V (Arduino)
  • GND → GND
  • Signal → A0
  • OLED → SDA / SCL (I2C)

คำถามที่พบบ่อย (FAQ)

ปลอดภัยหรือไม่?
ปลอดภัย เพราะใช้แสงระดับต่ำ ไม่เป็นอันตราย

ใช้ทางการแพทย์ได้ไหม?
เหมาะสำหรับการทดลองหรือฟิตเนส ไม่ใช่อุปกรณ์ทางการแพทย์

ใช้ได้กับทุกคนไหม?
ใช้ได้ แต่สีผิวและลักษณะผิวอาจมีผลต่อความแม่นยำ


โค้ดโปรแกรม Arduino


#include <Adafruit_SSD1306.h>

#define OLED_Address 0x3C
Adafruit_SSD1306 oled(128, 64);

int a=0;
int lasta=0;
int lastb=0;

int LastTime=0;
int ThisTime;

bool BPMTiming=false;
bool BeatComplete=false;

int BPM=0;

#define UpperThreshold 520
#define LowerThreshold 510

void setup() {
  oled.begin(SSD1306_SWITCHCAPVCC, OLED_Address);
  oled.clearDisplay();
  oled.setTextSize(2);
  Serial.begin(9600);
}

void loop() {

  if(a>127) {
    oled.clearDisplay();
    a=0;
    lasta=a;
  }

  ThisTime=millis();
  int value=analogRead(0);
  Serial.println(value);

  oled.setTextColor(WHITE);

  int b=60-(value/16);
  oled.writeLine(lasta,lastb,a,b,WHITE);

  lastb=b;
  lasta=a;

  if(value>UpperThreshold) {
    if(BeatComplete) {
      BPM=ThisTime-LastTime;
      BPM=int(60/(float(BPM)/1000));
      BPMTiming=false;
      BeatComplete=false;
      tone(8,1000,250);
    }

    if(BPMTiming==false) {
      LastTime=millis();
      BPMTiming=true;
    }
  }

  if((value<LowerThreshold)&(BPMTiming))
    BeatComplete=true;

  oled.writeFillRect(0,50,128,16,BLACK);
  oled.setCursor(0,50);
  oled.print("BPM:");
  oled.print(BPM);

  oled.display();
  a++;
}

วิดีโอสาธิตการทำงาน


สรุป

โปรเจคนี้ช่วยให้เข้าใจการอ่านค่าสัญญาณชีพจร
และการประมวลผลสัญญาณจากเซ็นเซอร์จริง

สามารถต่อยอดได้ เช่น:

  • ส่งข้อมูลขึ้น Cloud (IoT)
  • แสดงผลผ่านมือถือ
  • พัฒนาเป็นอุปกรณ์สุขภาพ

เริ่มจากวัดชีพจร → ต่อยอดสู่ระบบสุขภาพอัจฉริยะ