基於MicroPython:TPYBoard心率監測器

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

1、前言

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

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

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

2.心率是最好的運動「導師」學習

若是是常常作運動的朋友應該都知道,平時運動時能夠根據心率數據更好地控制運動強度,由於心率和吸氧量及最大攝氧量呈線性關
系,並且最大心率百分比也和最大攝氧量的百分比呈線性關係,因此在跑步過程當中,使用心率控制運動強度是最簡單易行的方法。測試

2、心率監測的方法

一、PPG光電容積法ui

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

目前市面上絕大多數的智能手環/手錶都採用這種方式監測心率,並且這種方式的技術方案已經比較成熟,因此價格也相對較低。blog

二、心電信號測量法教程

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

3、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軟件啓動運行程序,確認程序無錯誤。

4、演示效果

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

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

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


5、總結

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

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

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

相關文章
相關標籤/搜索