ESP32專題(三)智慧照護-mmWAVE 毫米波雷達心率感測

mmWAVE 毫米波雷達感測模組並非醫療器材,且需經由專業工程師、學者二次開發方可使用,所測得之數值也僅供學術研究參考用途。

什麼是毫米波?

毫米波(Millimeter Wave,也記作 mmWAVE)指的是波長在 1mm~10mm(毫米)之間的無線射頻訊號,依據頻率與波長互為倒數的公式關係,即頻率在 24GHz~300GHz 之間的射頻訊號,可稱之為毫米波。最初毫米波是被用在 5G 行動網路,意圖用此高頻且乾淨的頻段達到高頻寬、低延遲、高承載的目的。但也因為該頻段較新其相應的設備尚待普及,因此毫米波的缺點則是成本高、衰減大與穿透低。目前常用的毫米波頻段有 24GHz、60GHz 與 77GHz等,超過 100GHz 的部分目前則尚未使用到。

ESP32專題(三)智慧照護-mmWAVE 毫米波雷達心率感測
毫米波頻譜

毫米波雷達感測器

除了 5G 行動網路之外,毫米波的另一種應用則是 ”毫米波雷達(mmWAVE Radar)”,運用其特性可以感測物體的細微變化與細小目標,量測精確度高響應速度快。且抗干擾能力優秀,不會受到環境溫濕度的變化而造成誤差或誤判,是近期感測技術中受到矚目的新星。毫米波雷達發射 Frequency Modulated Continuous Wave(FMCW)調變訊號,發射頻率會隨著時間不斷微調,訊號的回波將會被接收天線拾取,藉由訊號頻率的差異來判讀受測物的數據。如下圖所示,當時間在 t0 時,毫米波雷達發射的頻率為 f1,但接收到的頻率為 f0,便可得知是多久之前所發送出去的訊號。且因為是連續載波,響應速度較一般脈衝型的訊號來得好!

ESP32專題(三)智慧照護-mmWAVE 毫米波雷達心率感測
FMCW調變訊號示意圖(圖片來源:Seeed Studio

常見毫米波雷達應用領域涵蓋:

  • ADAS 先進輔助駕駛系統-如盲點偵測、自動跟車、自動停車等經常用到毫米波雷達感測。
  • 智慧交通-如超速與臨時停車的科技執法、鐵道入侵偵測、平交道人車偵測等。
  • 智慧家庭-如家電可以整合手勢控制、人數偵測等,用於空調與照明的智慧化。
  • 智慧照護-如心率感測、呼吸感測、跌倒偵測、睡眠監測等,用於初步的異常告警。
ESP32專題(三)智慧照護-mmWAVE 毫米波雷達心率感測
毫米波的應用範疇

毫米波雷達感測生理資訊

目前(2024年2月)市售的毫米波雷達模組多以人體偵測為主,取代傳統 PIR (Passive infrared sensor) 被動紅外線偵測人體動作,優點是不會因為環境溫度改變而誤判,如這款 24GHz mmWAVE Sensor 即是如此。其他較常見的則是用在汽車工業上的盲點偵測,裝設於汽車門板內朝向側後方位置偵測是否有來車。而筆者近期看到 60GHz Respiratory Heartbeat Sensor 這款毫米波雷達,則是可以偵測人體的心跳頻率與呼吸頻率,且規格宣稱準確度達 95% 以上,讓人不禁聯想到日後的智慧照護的種種可能性,若是裝設在家中,長輩不需要佩戴心率穿戴式裝置,即可以遠端即時取得心率狀態,在必要時發出警報,第一時間預防憾事發生!

ESP32專題(三)智慧照護-mmWAVE 毫米波雷達心率感測
60GHz Respiratory Heartbeat Sensor 毫米波雷達感測器(圖片來源:iCShop

傳統要量測心率多採用 ECG(Electrocardiography) 感測心臟發出的微小電位差異或PPG(Photoplethysmography) 感測血管的光反射訊號,無論哪一種方式都需要將感測器接觸到人體皮膚,若是要自主長期監測的也許可以自行忽略穿戴的不適感,但若是希望有心血管疾病的長者可以長期配戴也許就會受到當事者的拒絕與排斥。毫米波雷達 mmWAVE Radar 採用非接觸的方式除了不會造成受測者的反感外,價錢也更具有競爭優勢,且從官方提供的測試影片中可以看到,準確率幾乎如傳統 ECG 與 PPG 一樣準確!若想要學習PPG原理也可以參考CIRCUS Pi 團隊日前ESP32專題文章

Seeed Studio 心率感測比對範例

物聯網硬體設備

本篇筆者希望可以製作一個毫米波雷達的感測設備,並同時具有顯示、記錄與物聯網功能,用以模擬未來智慧照護的情境,解決照護人員不足或是獨居長者的問題!不過需要再次強調,本實驗僅供研究用途,所有生理感測數據皆為參考用不得作為評斷與診斷依據,若有任何不適還需洽詢專業醫護人員。

本次實驗所使用硬體材料清單:

筆者將上述材料組裝後固定於 L 型壓克力上,方便量測與觀察,成品如下圖所示。正面部分使用XIAO Expansion board 安裝 XIAO ESP32C3,旁邊擺放的則是 60GHz 毫米波雷達,注意其白框內部為天線發射區域,應避免受到金屬材質遮蔽。背面則是擺放鋰電池同時保留空間提供走線與插拔SD卡使用,讀者可依各自需求與喜好自行調整配置。

由於使用 XIAO Expansion board 擴充板,實際要接線的地方相對單純,只要將毫米波雷達感測模組上的 5V、GND、TX、RX 依序接到擴充板上的 5V、GND、RX、TX 即可。由於感測模組是走 UART 通訊協定,TX(發送腳)與 RX(接收腳)與 MCU 端需要互接,想要理解 ESP32 UART 的使用也可以參考 CIRCUS Pi 團隊著作 ESP32教學系列(七):以PMS5003T測量空氣品質 – 談UART的使用。連接時需要注意毫米波雷達的杜邦端子是 2.0mm 而擴充板是 2.54mm,這裡的線材需要自行壓接一下。另外鋰電池的部分接頭與擴充板上端子匹配,可以直接插上。SD 卡與RTC使用的 CR1220 電池則是依個人需求可自行決定是否安裝。

ESP32專題(三)智慧照護-mmWAVE 毫米波雷達心率感測
組裝後的實驗設備正面
ESP32專題(三)智慧照護-mmWAVE 毫米波雷達心率感測
組裝後的實驗設備背面

依據其手冊說明,這款 60GHz Respiratory Heartbeat Sensor 毫米波雷達的量測的距離(下圖中的H)為 40~200 公分之間,天線的發射角度為水平80度與縱向80度,範圍內需涵蓋人體胸腔位置方可以進行量測。

ESP32專題(三)智慧照護-mmWAVE 毫米波雷達心率感測
毫米波雷達的發射角度與範圍

程式邏輯架構

開始寫程式之前,先規劃列出所有 MCU 要做的功能:

  • 讀取毫米波雷達感測數值
  • 顯示數值到 OLED 上
  • 上傳資料到 MQTT Broker
  • 寫入數值到 SD Card

依據上述功能在初始化階段需要先設定 Serial (USB 除錯用)、Serial1(讀取毫米波雷達)、SD卡、OLED、RTC(寫入資料時帶時間資料)、WIFI連線、MQTT Broker 設定等。依據上述功能需要另外安裝的相依函示庫如下:

程式內的功能幾乎都是從函示庫中的範例擷取出來並且整合,唯獨多工任務是以個別 timestamp 時間戳記分別記錄各項功能處理的時間週期,藉此可彈性調整各項任務的執行頻率,並且避免用到 delay() 呼叫造成 MCU 的發呆與浪費,實作程式碼段落如下:

if ((millis() - time_mmwave) > INTERVAL_MMWAVE) {
    time_mmwave = millis();
		/* 
			... mmWAVE 任務內容...
		*/
}

OLED 顯示規畫分為五個區塊,左上顯示心率的圖示與數值,左下顯示呼吸率的圖示與數值,右上當連線 WIFI 時顯示(此時才會每15秒上傳數據到MQTT Broker),右中為偵測到SD卡時顯示(此時才會每秒一次記錄資料到SD卡),右下則是當接收到毫米波雷達更新數據時會顯示(每次顯示維持0.5秒)。

ESP32專題(三)智慧照護-mmWAVE 毫米波雷達心率感測
OLED 顯示說明

組態設定檔案 config.h 主要參數說明如下,若是在沒有WIFI網路環境也沒關係,5秒鐘連不上線即會以離線方式運行。SD 卡也可以選擇是否要安裝,若有安裝才會每秒記錄數值到CSV檔案內。最終完整的程式碼已釋出可於 GitHub 取得,

const char*   ssid = "WIFI_SSID";                 // WIFI 連線名稱,可不填,連不上可以離線顯示
const char*   password = "WIFI_PASS";             // WIFI 連線密碼,可不填,連不上可以離線顯示
const char*   mqtt_server = "broker.emqx.io";     // MQTT Broker 名稱,預設使用 EMQX 開放 Broker
const char*   mqtt_user = "username_if_needed";   // MQTT 使用者名稱,依需求填入,EMQX 可不填
const char*   mqtt_key = "key_if_needed";         // MQTT 使用者名稱,依需求填入,EMQX 可不填
const char*   topic_hr = "CircusPi/HeartRate";    // 上傳心跳率的 Topic 名稱
const char*   topic_br = "CircusPi/BreathRate";   // 上傳呼吸率的 Topic 名稱

實驗結果

程式燒錄完成後,斷開與電腦的連線以離機方式運行,將擴充板上方的滑動開關切至”ON”的位置即可啟動。擺放至筆者前方約 50 公分處,同時用指夾式血氧機比對,確實可以發現兩者的心率讀數相當接近,是具備一定程度的參考價值的!此外筆者的測試經驗發現,在靜止狀態下的數值是相對準確的,若是在移動狀態下的誤差會較大。因此若是在智慧照護的情境中,可以裝設在床旁偵測休息狀態或是椅子旁偵測進行靜態活動時(如看書、下棋等)的心率會比較理想。

ESP32專題(三)智慧照護-mmWAVE 毫米波雷達心率感測
使用指夾是血氧機與毫米波雷達心率感測比對

小結-智慧照護的未來情境

由於台灣生不如死(出生率低於死亡率)的人口結構,國家發展委員會推估台灣將於 2025 年達到超高齡社會,屆時65歲人口比率將超過20%,對醫療與照護系統造成更大的負擔。相信多數人跟筆者相同,不希望未來的自己給下一代或是社會造成額外負擔成本,若能借助像是 mmWAVE Radar 這類型的感測器達到科技輔助照護的情境,也許將是未來智慧照護的標準情境。

ESP32專題(三)智慧照護-mmWAVE 毫米波雷達心率感測
人口高齡化時程(圖片來源:國家發展委員會