MAX30102血氧濃度感測積木

新冠肺炎疫情的影響,許多人討論染疫之後血氧的濃度會降低,甚至死亡,於是血氧機又成為疫情之下的流行商品。如果使用開發板來量測血氧有什麼模組可以使用,MAX30100、MAX30102、MAX30105是常見的測量血氧的模組,內部有紅光、綠光,以及紅外光的發射及感測器,血液中不同的血紅蛋白對不同的光波有不同的吸收率以及反射率,光線照射穿透手指時,隨著脈搏的舒張及收縮,感測器透過反射回來的光線進而量測出脈搏、血氧飽和度(SpO2),一般來說,正常的血氧濃度應該大於95%以上,有關血氧濃度以及數值異常的相關健康議題可以參考這一篇文章:https://chendengpharmacy.mystrikingly.com/blog/c1e0f7cc3ec

有朋友送了我一個MAX30102,於是就試著把積木做出來,本來使用原本的函式庫編譯時,在Arduino、ESP8266、ESP32都可以正常量測,唯有在7697上會出現問題,後來我修改了函式庫,讓7697執行時也可以使用這個血氧量測模組了。據說這個函式庫都適用於MAX30100、MAX30102、MAX30105等不同的模組(函式庫說明:This library should work with other MAX3010x sensors including the MAX30102, MAX30101, and MAX30100.),但因為我手中有的是MAX30102,其他的模組是否能正確量測我就不知道了。積木位於「吉哥積木」→「模組」→「MAX30102血氧濃度選單內。積木中使用到的血氧濃度量測的演算法參考的是這一篇文章:https://create.arduino.cc/projecthub/1NextPCB/iot-based-pulse-oximeter-using-esp32-549166

另外,要使用這些積木,吉哥積木至少需更新到「20210818」之後的版本,才會有正確的函式庫可以使用。

使用範例:

一、初始化時需要:

  1. 使用時須要先將MAX30102初始化,並設定紅色LED燈光的強度,依據現場環境或是手指透光率,設定紅光要多亮,預設是127。

  2. 如果有測心率的話,有可能會測到離譜的心跳數,所以可以設定合理的心率範圍,預設是20~250下,可自行修改,也可以不使用這個積木(會使用預設值20~250)。

二、重複無限次:

  1. 先判斷是否有偵測到手指,有偵測到手指才開始進行量測

  2. 量測心率需要時間,依據一次心跳的時間計算出一分鐘的心率,而且會排除無效的心率(依照初始化時所設定的合理偵測心率範圍來過濾),所以使用「心率1次平均值」這個積木,大約會需要1秒鐘(時間不固定),設定平均的次數愈大,量測時間會愈久,但也會愈準確。

  3. 量測血氧濃度(SpO2)及溫度的速度都還算快,若只是要測血氧值及溫度,便可以把量測心率的積木拿掉,因為量測心率如同以上所說,需要花比較久的時間。血氧濃度會從90%開始量測起,然後趨近於自己真正的血氧值,血氧濃度正常值都不能低於95%,所以如果持續的偵測低於95%,則要注意自己的健康了。

使用在ESP32量測心跳、血氧、溫度

使用在Arduino Uno量測心跳、血氧、溫度