2021年6月29日 星期二

[Arduino] MAX30102 血氧心律脈搏傳感器(二)

本文在說明如何使用 MAX30102 血氧心律脈搏傳感器量測心跳和血氧,如果您尚未了解這塊模組的基本使用方法,請詳「MAX30102 血氧心律脈搏傳感器(一)」。



電路接線

Arduino      Max30102
   5V                VIN
   A5                SCL
   A4                SDA
   (不接)          INT
   (不接)          IRD
   (不接)          RD
   GND            GND
註:下圖有誤, SCL、SDA之接線應該對調才是正確。



測量每分鐘心跳數(PRbpm)

Step1 點擊下拉功能表 [檔案] > [範例] > [SparkFun MAX3010x Pluse...] ,開啟「Example5_HeartRate」。



Step2 上傳程式到 Arduino,並打開「序列埠監控視窗」,將鮑率調到 115200,您就可以看到有數據傳到視窗裡。

下圖是手指尚未按住模組時的數據。


下圖是手指按住模組時的數據。


建議您手指按住模組的時間久一些,每分鐘心跳數才會比較正確。


測量血氧(%SpO2)

Step1 點擊下拉功能表 [檔案] > [範例] > [SparkFun MAX3010x Pluse...] ,開啟「Example8_SPO2」。

Step2 上傳程式到 Arduino,並打開「序列埠監控視窗」,將鮑率調到 115200,您會看到視窗裡有一行訊息,此時請您用食指按住模組,然後在視窗上面的欄位內輸入任意一個字,並點擊 [傳送] 鈕。

接著您會看到有數據傳到視窗裡。



過了數秒後,接著才出現血氧測定的數據,如下圖


建議您手指按住模組的時間久一些,血氧數據才會比較正確。


後記

1. 量測心跳和血氧需要一段時間,所以手指要確實按住模組時間久一些,並且在實務上會有音效和螢幕提醒使用者何時開始量測,何時結束。

2. 因 MAX30102 模組本身精度和外在環境條件等因素,此實驗之心跳和血氧等數據只能僅供參考,如欲求得更精確數據,則有待更多實驗數據後進行校正。

3. CDC 提供關於 COVID-19 病人血氧監測注意事項,其中提到血氧濃度大等於 95% 才屬正常,若低於此數值,應立即通報當地衛生單位。      


參考資料

Youtube https://youtu.be/_0rAVkETtoQ

Youtube https://youtu.be/rACZQrHHxuU

Youtube https://youtu.be/8SOTsR1k8-g

使用 ESP8266 https://how2electronics.com/max30100-pulse-oximeter-with-esp8266/

使用 ESP32 http://www.esp32learning.com/code/max30102-pulse-oximetry-and-heart-rate-monitor-sensor-and-esp32.php

解決 MAX30100 模組問題 https://youtu.be/ZqdmA4NAqb0


採購資訊

露天(S&R) https://www.ruten.com.tw/item/show?22125280142290

露天(RWG) https://www.ruten.com.tw/item/show?22125280090933

蝦皮 https://shopee.tw/-RWG-MAX30102-%E8%A1%80%E6%B0%A7-%E5%BF%83%E7%8E%87%E8%84%88%E6%90%8F-%E5%82%B3%E6%84%9F%E5%99%A8-%E6%A8%A1%E5%A1%8A-i.14363185.7792558591


2021年6月28日 星期一

[Arduino] MAX30102 血氧心律脈搏傳感器(一)

 MAX30102 是一個集成的脈搏血氧儀和心率監測儀生物傳感器的模塊。它集成了一個紅光 LED和一個紅外光 LED、光電檢測器、光器件,以及帶環境光抑制的低噪聲電子電路。

MAX30102 採用一個 1.8V 電源和一個獨立的 5V 用於內部 LED 電源,它可應用於穿戴設備進行心率和血氧采集檢測,佩戴於手指、耳垂和手腕等處,標準的12C通信接口將採集到的數值傳輸給 Arduino 單片機進行心率和血氧計算。

此外,該芯片還可通過軟件關斷模塊,待機電流接近為零,實現電源始終維持供電狀態。正因為其優異的性能,該芯片被大量應用在了三星 Galaxy S7 手機。與前代產品 MAX30100 相比, MAX30102 集成了玻璃蓋可以有效排除外界和內部光干擾,擁有最優可靠的性能。






原理說明

傳統的脈搏測量方法有三種:
一是心電信號中提取
二是從測量血壓時壓力傳感器測到的波動來計算脈率
三是光容積法。

前兩種方法提取信號都會限制病人的活動,如果長時間使用會增加病人生理和心理上的不舒適感。而光容積法脈搏測量作為監護測量中最普遍的測量方法之一,其具有方法簡單、佩戴方便、可靠性高等特點。

光容積法的基本原理是利用人體組織在血管搏動時造成透光率不同來進行脈搏和血氧飽和度測量的,其使用的傳感器由光源和光電轉換器兩部分組成。通過繃帶或夾子固定在病人的手指、手腕或耳垂。測血氧飽和度時,根據氧合血紅蛋白(Hb02)和血紅蛋白(Hb)對紅外光、紅外光的吸收量來計算。血管隨著心跳舒張和收縮,舒張時血量多,吸收的紅光紅外光多,收縮時血量少,吸收的紅光紅外光少。根據反射到傳感器的光量周期性變化,可以計算出心率。血氧飽和度計算公式。


模塊參數

電路板尺寸: 15*20mm
電路板厚度: 2.5mm
模塊功能:測心率、測血氧濃度、測溫度
供電電壓: 3.3~5V (經測試使用3.3~5V皆可)
檢測信號類型:光反射信號(PPG)
輸出信號接口: I2C 接口
通信接口電平: 3.3V
紅光LED峰值波長: 650nm-670nm
紅外線LED峰值波長: 870nm-900nm


電路接線

Arduino      Max30102
   5V                VIN
   A5                SCL
   A4                SDA
   (不接)          INT
   (不接)          IRD
   (不接)          RD
   GND            GND
註:下圖有誤, SCL、SDA之接線應該對調才是正確。


使用說明

Step1 安裝程式庫。點擊 Arduino 下拉功能表 [工具] > [管理程式庫],開啟「程式庫管理員」視窗。

Step2 在上方欄位內輸入「max30102」,找到「SparkFun MAX3010x Pulse ...」程式庫,安裝它。安裝完成後,關閉視窗。


Step3  點擊下拉功能表 [檔案] > [範例] > [SparkFun MAX3010x Pluse...] ,開啟「Example1_Basic_Readings」。



Step4 上傳程式到 Arduino。

Step5 打開「序列埠監控視窗」,將鮑率調到 9600,您就可以看到有數據傳到視窗裡。

下圖是手指尚未按住模組時的數據。


下圖是手指按住模組時的數據。


後記

1. 如果用 I2C_Scan 程式掃描模組,其位址是 0x57。

2. 如果要自訂 SDA、SCL 腳位,可使用 Software I2C 程式。

3. 實際量測心跳和血氧,請詳「MAX30102 血氧心律脈搏傳感器(二)」。

4. 如果您手上的是 MAX30100 模組,因為這個模組電路設計有誤,可參照下列網址修改電路

https://electronicsinnovation.com/solved-max30100-not-working-initializing-pulse-oximeter-failed/


參考資料

Makersportal https://makersportal.com/blog/2019/6/24/arduino-heart-rate-monitor-using-max30102-and-pulse-oximetry

Instructables https://www.instructables.com/DIY-Blood-Oxygen-Meter/

Youtube https://www.youtube.com/watch?v=cEtyMkubXj4


採購資訊

露天(S&R) https://www.ruten.com.tw/item/show?22125280142290

露天(RWG) https://www.ruten.com.tw/item/show?22125280090933

蝦皮 https://shopee.tw/-RWG-MAX30102-%E8%A1%80%E6%B0%A7-%E5%BF%83%E7%8E%87%E8%84%88%E6%90%8F-%E5%82%B3%E6%84%9F%E5%99%A8-%E6%A8%A1%E5%A1%8A-i.14363185.7792558591

2021年6月23日 星期三

[履帶車] TT馬達小型履帶車套件組裝說明

    一般自走車都是輪式的,輪式自走車在平地行走速度快,但對於崎嶇地形就顯得心有餘而力不足,這時履帶車就可派上用場。其實,履帶車有不少優點,這也就是為甚麼履帶車自有其一派死忠粉絲。

    本履帶車套件使用 2 只 TT 減速馬達作為動力來源,對於這樣的小履帶車而言,其動力自是綽綽有餘。而履帶材質為硬塑膠,拆裝非常容易,不必使用到任何工具。

    本履帶車採雙層底盤設計,電池盒置於下層底盤下方,可降低車體重心提供更高的行駛穩定度,同時可讓玩家方便更換電池。這裡也預留了 L9110S 馬達驅動模組孔位。

    下層底盤上方和上層板底盤下方這些空間就可以讓玩家安裝更多的電子零組件。上層板預留了伺服馬達孔槽,如果伺服馬達搭配超音波測距模組,則可以讓玩家做出雷達掃描的效果。這裡也預留了 Arduino Uno 開發板孔位。



準備工具

1. M2/M3 十字起子 *1

2. 小鐵鎚 *1


組裝步驟

Step1 利用十字起子將壓克力內部之扳手和小墊片取出備用。建議您一併移除壓克力板表面之護膜。


Step2 用 M2 螺絲、螺帽將電池盒和三角形鐵片固定到壓克力底盤反面(沒有字那一面)。

提醒您:電池盒開關需朝向底盤外側。


這是正面

Step3 建議您先焊上馬達的電源線,然後再用長螺絲、螺帽將馬達和固定鐵件鎖在一起。

提醒您:馬達的電極銅片需靠內側。同時也要注意固定鐵件螺孔的位置。




Step4 將馬達外側軸插入輪子長形孔,並用自攻螺絲鎖緊。



Step5 用 M3 螺絲將馬達組鎖到壓克力底盤上。


這是底面情形


Step6 將車軸用鐵鎚輕輕敲進輪子中(須從長形孔那端插進去),車軸外露長度約 2 公分。



Step7 用車軸套將輪子固定到三角形鐵件內。



Step8 將履帶片拼接成兩條,每條 18 片。


Step9 將兩條履帶各套進一邊車輪。
提醒您:履帶片有方向性,建議您左右輪的履帶片方向是一致的。



這是反面情形


Step10 使用 M3 螺絲鎖緊 4 支尼龍柱。



Step11 再使用 M3 螺絲將頂板鎖緊到 4 支尼龍柱上。至此大功告成。




採購資訊




2021年6月17日 星期四

[接插件] IT系列針形冷壓接線端子

常常玩自走車的人應該都會遇到一件事,那就是電線常常會脫落或是斷裂。為了解決這個惱人的問題,最近我終於找到這款「IT系列針形冷壓接線端子」神器,可以輕輕鬆鬆徹底解決這個問題了。



一般市售自走車的 TT 減速馬達由於消耗電流不大,使用 24AWG 絞線即可,這個直徑的電線剛好可以插進 IT0.5-2 針形冷壓端子,再用壓線鉗壓緊。而端子細端則可以插進馬達驅動板的固定端子,如果嫌不太好插入,可以用鉗子將它稍稍壓扁些,如下圖


如果像是 370 這類的大電流減速馬達使用 18~22 AWG 絞線,則可以選擇 IT1-2 針形冷壓端子,規格表如下圖




我後來發現針形冷壓端子它更多的功用:

1. 端子母端與公端可以緊密接合。


2. 端子公端可以和公排針緊密接合(需稍微施力插入)。



3. 端子公端插入公排針,再用壓線鉗壓緊,可以當作加強版的杜邦線使用。


4. 應該有更多功能待發現。


採購資訊

露天(S&R) https://www.ruten.com.tw/item/show?22124153815419

露天(RWG) https://www.ruten.com.tw/item/show?22124153859608

蝦皮(RWG) https://shopee.tw/-RWG-IT0.5-2-1-2-%E5%86%B7%E5%A3%93%E6%8E%A5%E7%B7%9A%E7%AB%AF%E5%AD%90-%E9%87%9D%E5%BD%A2-%E6%8F%92%E9%87%9D-%E7%AB%AF%E5%AD%90-(1%E6%8B%8D2%E5%80%8B)-i.14363185.8667843499

2021年6月13日 星期日

[DT-BL10 開發板] 使用 Arduino IDE 撰寫程式

如果您尚不瞭解 DT-BL10 開發板強大的功能,您可以參考這篇文

http://pizgchen.blogspot.com/2021/06/bl602-bl602.html


DT-BL10 開發板可以讓專業工程師在 Linux 環境裡撰寫程式、編譯並燒錄,而一般非專業人士也可以使用 Arduino IDE 來撰寫程式,關於這部分的原廠資料在下列網址

https://github.com/pine64/ArduinoCore-bouffalo

底下我們將為您說明如何建置這個環境。



Step1 在 Arduino IDE 的 [偏好設定] > [額外的開發板管理員網址] 內加入下面這一行

https://nutcracker.pine64.org/arduino/package_bouffalo_index.json

如下圖


Step2 點擊 [確定],關閉 Arduino IDE 後再重新開啟。

Step3 點擊下拉功能表 [工具] > [開發板] > [開發板管理員],出現下列視窗


Step4 在欄位內鍵入 [RISC-V],找到 [Arduino for Bouffalo Labs RISC-V MCUs],並安裝它。


Step5  選擇開發板型號。點擊下拉功能表 [工具] > [開發板] > [Bouffalo Arduino Core] > [PINE64 PineCone]。


Step6 選擇上傳速度。點擊下拉功能表 [工具] > [Upload speed] > [2000000]。 


Step7 選擇序列埠。點擊下拉功能表 [工具] > [序列埠] > [COM6]。我的是 COM6,您的可能是其他的。

DT-BL10 開發板是使用 CH340x USB2TTL,您必須先安裝這部分的驅動程式,我們不在此說明。


Step8 開始撰寫 Hello World! 程式。開啟一個新檔案,並鍵入下列程式,如下

void setup() {

  Serial.begin(115200);

}


void loop() {

  Serial.println("Hello wolrd!");

  delay(1000);

}


Step9 DT-BL10 開發板有兩種模式,一種是上傳模式,另一種是執行模式。在上傳程式之前需要先按住 [D8] 按鍵,然後再按一下 [EN] 按鍵,之後同時放掉這兩顆按鍵。此時會進入上傳模式,您就可以點擊 [上傳]。如果正確無誤,訊息欄會出現 [上傳完畢]。


提醒您:

上傳完畢後,DT-BL10 開發板會自動轉為執行模式,如果下一次還要再上傳程式,仍需要再使用 [D8] 與 [EN] 按鍵轉換為上傳模式。


Step10 點擊下拉功能表 [工具] > [序列埠監控視窗],鮑率要設為 115200,您就可以看到 Hello World!,如下圖。


相關資料

Linux 開發環境建置 https://www.cnblogs.com/doiting/p/14124068.html

Linux 燒錄程式 https://www.cnblogs.com/doiting/p/14124131.html


採購資訊

Aliexpress  https://www.aliexpress.com/item/1005001652077181.html

蝦皮 https://shopee.tw/-RWG-DT-BL10-BL602-%E9%96%8B%E7%99%BC%E6%9D%BF-%E4%BD%8E%E5%8A%9F%E8%80%97-WiFi-BLE-ESP32-%E9%80%B2%E9%9A%8E-i.14363185.6291609262

露天(S&R) https://www.ruten.com.tw/item/show?22123054264056

露天(RWG) https://www.ruten.com.tw/item/show?22123054067406