基于MicroPython:TPYBoard心率監測器

轉載請注明文章來源,更多教程可自助參考docs.tpyboard.com,QQ技術交流群:157816561,公眾號:MicroPython玩家匯

一、前言

這幾年智能穿戴設備大火,尤其是手環類,從Apple Watch到榮耀手環,再到不知名的某些品牌,智能穿戴設備是鋪天蓋地的來了。
而其中心率監測基本上是所有穿戴設備的“標配”,為啥會如此重視心率監測?心率監測到底有必要嗎?

1.持續的心率監測有助于診斷疾病

人每一次脈搏的搏動,都代表一次有效的心臟跳動,每分鐘心臟跳動的次數就是心率。心率是最直接反映我們心臟健康的標志。心臟
是血液泵出的動力,也是各器官系統以及整個身體正常運行的保證。

2.心率是最好的運動“導師”

如果是經常做運動的朋友應該都知道,平時運動時可以根據心率數據更好地控制運動強度,因為心率和吸氧量及最大攝氧量呈線性關
系,而且最大心率百分比也和最大攝氧量的百分比呈線性關系,所以在跑步過程中,使用心率控制運動強度是最簡單易行的方法。

二、心率監測的方法

1、PPG光電容積法

由于人體的皮膚、骨骼、肌肉、脂肪等對于光的反射是固定值,而毛細血管和動脈、靜脈由于隨著脈搏容積不停變大變小,所以對光
的反射值是波動值,而這個波動值正好與心率一致,所以光電容積法正是通過這個波動的頻率來確定使用者的心率數據。

目前市面上絕大多數的智能手環/手表都采用這種方式監測心率,而且這種方式的技術方案已經比較成熟,所以價格也相對較低。

2、心電信號測量法

還有一種就是心電信號測量法,它通過智能穿戴設備上搭載的傳感器捕捉人每次心跳時微小的電極變化,再經過算法還原出心率跳動
的頻率,原理和心電圖類似原理。目前已經很少有智能穿戴設備采用這種方式了。

三、TPYBoard心率監測器的制作過程

上面叨叨了這么多,接下來就進入正題。開始心率監測器的制作。首先先來介紹,里面最重要的器件-MAX30102心率模塊。
MAX30102心率模塊介紹

MAX30102是一個集成的脈搏血氧儀和心率監測儀生物傳感器的模塊。它集成了一個紅光 LEO 和一個紅外光 LEO 、光電檢測器、光器
件,以及帶環境光抑制的低噪聲電子電路。MAX30102采用一個 1.8V電源和一個獨立的 5.0V 用于內部 LEO 的電源,應用于可穿戴設
備進行心率和血氧采集檢測,佩戴于手指、耳垂和手腕等處。標準的I2C兼容的通信接口可以將采集到的數值傳輸給Arduino、STM32
等單片機進行心率和血氧計算。此外,該芯片還可通過軟件關斷模塊,待機電流接近為零,實現電源始終維持供電狀態。

參考了各種資料,用micropython寫了個MAX30102模塊的驅動,這里不就不貼源碼,給個地址(文章末)大家自己去下載學習,里面也
有各種手冊、STM32單片機以及Arduino實現的源碼。

現在可以監測心率數據,但是還需要一個顯示屏來進行顯示,這里我選擇用OLED顯示屏。先參照下面信息,把硬件連接起來。

TPYBoard v102 MAX30102模塊
3V3 VIN
Y10 SDA
Y9 SCL
GND GND
Y12 INT

 

 

 

 

 

 

 

 

接好線了之后,把MAX30102模塊的相關驅動文件拷貝到TPYBFLASH磁盤中,然后編寫main.py。保存完畢,使用PuTTY軟件啟動運行程序,確認程序無錯誤。

四、演示效果

1. 程序運行后,顯示屏會顯示一個心形的圖案,同時MAX30102模塊上的紅色LED燈會亮起;

2. 將手指放置模塊紅色LED處,按下板載的USR按鍵啟動測量,顯示屏會提示測量中;

3. 確保手指接觸良好的情況下,大約等待40秒左右,顯示屏會顯示測量出的心率值,此時就可以把手拿開了。


五、總結

使用MAX30102測量的心率值與榮耀手環4測量的心率值接近(大概有2-3值的差別)。程序中也有對血氧飽和度的測試,大家可以從程
序中提取出來顯示在顯示屏上。但是需要注意的是,因為是基于查找表來確定血氧含量,所以每個血氧傳感器都需要和專業儀器進行
標定才準確。此外,RED LED的波長尤其容易受到環境溫度影響,所以程序上要考慮到溫度對血氧精確度的影響,這也是MAX30102本
身帶有溫度傳感器功能的主要原因。所以程序中的血氧飽和度是僅供參考,并不準準確。

GitHub源碼下載地址:https://github.com/TPYBoard/TPYBoard-v102

MAX30102參考資料:http://old.tpyboard.com/downloads/docs/MAX30102參考資料.rar

 

posted @ 2019-06-19 10:59 小五義 閱讀(...) 評論(...) 編輯 收藏
内部期期公开一波中特