洪嵐峰 發表於 2023-4-23 13:19:34

PIC12F508製作偵測血氧機

PIC12F508製作偵測血氧機
需要的零件和相關資訊:

所需零件:

PIC12F508微控制器
MAX30100血氧傳感器模塊
16x2液晶顯示器模塊
220歐姆電阻
10K歐姆電阻
0.1uF陶瓷電容
杜邦線
連結腳位:
PIC12F508的連接腳位如下:


    ┌───┐
VDD –|1  8|-- VSS
GP5 –|2  7|-- GP0
GP4 –|3  6|-- GP1
GP3 –|4  5|-- GP2
    └───┘
MAX30100血氧傳感器模組的連接腳位如下:


      ┌───┐
VIN –|1  8|-- GND
SCL –|2  7|-- SDA
INT –|3  6|-- RD
      └───┘
16x2液晶顯示器模組的連接腳位如下:


     ┌───┐
VSS –|1 16|-- VDD
RS –|2 15|-- RW
E   –|3 14|-- D0
D1 –|4 13|-- D1
D2 –|5 12|-- D2
D3 –|6 11|-- D3
D4 –|7 10|-- D4
D5 –|8  9|-- D5
     └───┘
程式碼:

以下是用於讀取MAX30100血氧傳感器的基本程式碼

您可以使用此程式碼作為開始:


#include <Wire.h>
#include "MAX30100_PulseOximeter.h"

#define REPORTING_PERIOD_MS     1000

PulseOximeter pox;

uint32_t tsLastReport = 0;

void onBeatDetected()
{
    Serial.println("Beat!");
}

void setup()
{
    Serial.begin(115200);

    Serial.print("Initializing pulse oximeter..");

    if (!pox.begin()) {
        Serial.println("FAILED");
        for(;;);
    } else {
        Serial.println("SUCCESS");
    }

    pox.setOnBeatDetectedCallback(onBeatDetected);

    pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);
    pox.setPulseAmplitudeRed(0x0A);
    pox.setPulseAmplitudeIR(0x0A);
}

void loop()
{
    pox.update();

    if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
        Serial.print("Heart rate:");
        Serial.print(pox.getHeartRate());
        Serial.print("bpm / SpO2:");
        Serial.print(pox.getSpO2());
        Serial.println("%");

        tsLastReport = millis();
    }
}
頁: [1]
查看完整版本: PIC12F508製作偵測血氧機