2021年7月27日 星期二

[Arduino] MAX30102 血氧心律脈搏傳感器(三) --- 你的模組需要修改電路嗎?

目前市面上便宜的 MAX3010x 系列血氧心律脈搏傳感器有數種款式(外觀和顏色),而 MAX30100 款(綠板)確定是電路設計有問題(註A),導致血氧濃度和心律脈搏等讀數不正確。

據我觀察,綠板的 MAX30102 款也有同樣問題,而黑板的則沒問題。



MAX30100/MAX30102 綠板電路圖如下


圖中 RCWL-9183 IC (註B)是將外部電源降壓為 3.3V,再經過一只三極管(註C)降壓為 1.8V。


接下來就是問題所在

一般的 SCL/SDA 準位是 5V 或是 3.3V,而它是 1.8 V。如果你將 SCL/SDA 直接連到 Arduino 或 ESP8266 、ESP32等開發板,讀到的數據就會不正確,詳下圖


解決之道 --- 修改電路

修改綠板的電路把電壓準位改為 3.3V,用刀片把連接 1.8V 的線切斷(黃色箭頭處,註D),再用一條導線連從電阻連到 3.3V 輸出端(紅色箭頭處)。


改好之後,可以再試一下讀取血氧心跳數據和未改前有何不同。


黑板為何不必修改電路

因為黑板的電路設計確實有依照商品說明裡寫的有 3.3V 和 1.8V 兩種電壓準位可選擇,如下圖


它預設狀態是使用 1 顆 0 歐姆電阻(黃色橢圓圈處)連接到 3.3V 電壓(黃色箭頭處)來讓 SCL/SDA達到 3.3V 電壓準位。


如果您要改為 1.8V,可以將該電阻轉180度連到綠色箭頭處。電路板後面也有預留電壓準位選擇焊板(黃色橢圓圈處),但必須先移除 0 歐姆電阻,然後再將中間焊板與1.8V焊板短路。


註A: 這款傳感器設計的 SCL/SDA 電壓準位是從 1.8V 拉過來,而一般常見的電壓準位是 5V 或 3.3V,這還是首次看到 1.8V 呢。由於我本身非電子專業背景,無法判定原設計是否錯誤,說不定這款模組原先就是專為 1.8V 的電子設備使用的,後來卻被拿來連接 5V 的 Arduino、3.3V 的 ESP8266 和 ESP32。果真如此的話,想要當一位 Maker 也不能只是傻傻地拿到模組就用,還是要多多少少了解一下手上的模組他的電路是如何設計的。

註B: 因不同製造商,編號有多款,或是 N1IF、HX-JE...等。

註C: 此圖未標出零件編號,因不同製造商,編號有多款,或是 65K5...等。

註D: 請用電錶測量切斷處確實斷開。


後記

翻看 Digi-Key 的電路圖,原始設計的電壓準位應該是有 1.8V/3.3V 這兩種選項,今天會有這個問題,可能是對岸在抄板製造時省略了部分細節,導致這個結果。


參考資訊

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

Digi-Key https://www.digikey.com/en/articles/adding-heart-rate-monitoring-functionality-to-fitness-gear


購買資訊

MAX30102 綠板 https://www.ruten.com.tw/item/show?22125280142290

MAX30102 黑板 https://www.ruten.com.tw/item/show?22130046170972


2021年7月26日 星期一

[ESP32-CAM] ESP32-CAM 的電源探討

有玩家使用 ESP32-CAM 後,發現影像有水波紋,更糟的情況是系統不穩定頻頻重置,這有可能是供給的電源電壓不穩定或是電流不足所導致。

要討論電源,通常都須從源頭開始,這個源頭就是電腦,因為 ESP32-CAM 會連接電腦,至少上傳程式的時候一定會這樣做。

電源從電腦到 ESP32-CAM 開發板,這期間可是經過層層關卡,如下圖:

電腦USB ---- USB 線 ---- USB2TTL模組 ---- ESP32-CAM 開發板


由上圖可以看到,電要從電腦傳到 ESP32-CAM 會經過 3 道關卡,這 3 道關卡都要滿足後,ESP32-CAM 才能正常運作,以下是一些建議事項:

1. 電腦 USB 電壓輸出需要的是穩定的 5V,而且輸出電流最好在 1.2A 以上。注意:有些筆電無法提供太大的電流。

2. USB 的線徑要粗、材質要好,如果導線太細或材質不好,都會阻礙電流流動,這樣電流就不夠了。另外, USB 線要盡量地短,太長的話電阻大,也會影響電流流動。

3. USB2TTL 模組的品質也要好一點,作資料傳輸時才會快速與穩定。有一些 USB2TTL 模組提供 5V 和 3.3V 電源,請使用 5V 連到 ESP32-CAM 的 5V 腳位,不建議像上圖那樣是連 3.3V。

如果以上都無法提供品質好的電源給 ESP32-CAM 開發板,就需要考慮使用外部電源。如下圖的 External Power 5V。

此時要記得,USB2TTL 模組的 5V 就不要連到 ESP32-CAM 開發板了,但 Gnd 還是要連上。


最後很重要的建議

不管是在下載(UPLOAD)模式或是運行(RUN)模式,建議可以在 ESP32-CAM 開發板的 5V 腳位處加入 10uF(註A) 和 0.1uF 這 2 只電容,這樣會讓你的電流更穩定。(圖片來源:Ai-Thinker 官網)


註A: 10uF 以上也可以,像是 47uF。


購買資訊

ESP32-CAM 開發板 https://shopee.tw/-RWG-ESP32-CAM-%E9%96%8B%E7%99%BC%E6%9D%BF-WiFi-%E8%97%8D%E7%89%99-%E6%94%9D%E5%83%8F%E9%A0%AD-i.14363185.5837501179?position=1

ESP32-CAM-MB 下載板 https://shopee.tw/-RWG-ESP32-CAM-CH340C-USB2TTL-%E4%B8%8B%E8%BC%89%E6%9D%BF-i.14363185.10313109190?position=0

ESP32-CAM 天線 https://shopee.tw/-RWG-ESP32-Cam-2.4G-WIFI%E5%85%A7%E7%BD%AE%E7%99%BC%E5%B0%84%E5%99%A8%E5%85%A7%E7%BD%AE%E5%A2%9E%E7%9B%8A%E5%85%A8%E5%90%91%E9%8A%85%E7%AE%A1%E5%A4%A9%E7%B7%9A-%E5%B8%B6%E7%B5%95%E7%B7%A3%E8%AD%B7%E5%A5%97-ipx-%E6%8E%A5%E5%8F%A3-i.14363185.4747431761?position=2


[ESP32-CAM] 好用的 ESP32-CAM 下載模組 --- ESP32-CAM-MB

ESP32-CAM 功能強大,但對於剛接觸這塊模組的玩家來說,它在下載(upload)程式方面不是很友善,即使是對老鳥來說也覺得麻煩,而 ESP32-CAM-MB 這塊模組剛好可以解決這個問題。


在 UPLOAD 程式之前,先按住 RST 鍵(註A)再按一下 IO0 鍵後同時放開這兩鍵,就可以讓 ESP32-CAM 進入 Download 模式,這樣是不是方便許多。


簡單說明一下MB的架構

最近剛好在學畫電路板,需要認識許多電路的組成原理和架構,所以就稍加注意了一下 ESP32-CAM-MB。由於自身非電子本科,以下若有錯誤敬請先學前輩們指正。

ESP32-CAM-MB 的設計架構不複雜,就是在一塊小電路板上放置了一個 CH340C USB2TTL IC,讓 ESP32-CAM 可以連接電腦 upload 程式。再來就是拉出 IO0 和 RST 兩個按鍵,讓 upload 的接線過程更方便。以下簡單說明它的設計架構:


1.供電方面是從 micro USB端口進來 5V,先經過 SL 限流電阻作保護,再到 6206A LDO 穩壓,6206A 兩端有數顆電容穩定電流,然後供電給 CH340C 和 ESP32-CAM。

2. CH340C 與 ESP32-CAM 的 TX/RX 腳位連接,中間各串接一只電阻起保護作用。

3.板載 IO0 按鍵從 ESP32-CAM 的 IO0 腳引出,所以作用與 ESP32-CAM 的 IO0 腳相同。按一下可以讓 ESP32-CAM 進入 Download 模式。

4.由於無法直接從 ESP32-CAM 的腳位引出 Reset,所以板載 RST 按鍵是從 CH340C IC 著手,將 CH340C 腳位的電位拉低使之重置。旁邊的 T4 相當於是 1N4148 的作用。


註A:如果此 RST 按鍵不起作用,那麼也可以再回去按一下 ESP32-CAM 開發板上的。


相關資料

ESP-CAM-MB https://randomnerdtutorials.com/upload-code-esp32-cam-mb-usb/?fbclid=IwAR2X9KzLdirXz7g3JULKh0iy85atz2rPj0ME_9RoKd7MaM82B3AtR7vYIUM

LS http://pdf.datasheetcatalog.com/datasheet/vishay/sl.pdf

6206A LDO datasheet https://www.mouser.com/datasheet/2/760/XC6206-846335.pdf

CH340x datasheet https://cdn.sparkfun.com/datasheets/Dev/Arduino/Other/CH340DS1.PDF

T4 https://www.alldatasheet.net/datasheet-pdf/marking/58920/DIODES/1N4148W.html


採購資訊

ESP32-CAM 開發板 https://shopee.tw/-RWG-ESP32-CAM-%E9%96%8B%E7%99%BC%E6%9D%BF-WiFi-%E8%97%8D%E7%89%99-%E6%94%9D%E5%83%8F%E9%A0%AD-i.14363185.5837501179?position=1

ESP32-CAM-MB 下載板 https://shopee.tw/-RWG-ESP32-CAM-CH340C-USB2TTL-%E4%B8%8B%E8%BC%89%E6%9D%BF-i.14363185.10313109190?position=0


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