37款傳感器與執行器的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止這37種的。鑒於本人手頭積累了一些傳感器和執行器模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流為目的,這里准備逐一動手嘗試系列實驗,不管成功(程序走通)與否,都會記錄下來---小小的進步或是搞不掂的問題,希望能夠拋磚引玉。
【Arduino】168種傳感器模塊系列實驗(資料代碼+仿真編程+圖形編程)
實驗九十一:XD-58C pulsesensor光學心率脈搏生物模擬傳感器
脈搏傳感器是用來測試心跳速率的傳感器,學生、藝術家、運動員、創造者、游戲或者移動終端開發人員,可以開發出和心率有關的互動作品。傳感器可以戴在手指或者耳垂上,通過互聯線可以與Arduino相連。它還有一個開源的app程序,可以實時的把您的心率用圖線顯示出來。實質是一款集成了放大電路和噪聲消除電路的光學心率傳感器。


脈搏(英語:Pulse)
為人體表可觸摸到的動脈搏動。人體循環系統由心臟、血管、血液所組成,負責人體氧氣、二氧化碳、養分及廢物的運送。血液經由心臟的左心室收縮而擠壓流入主動脈,隨即傳遞到全身動脈。動脈為富有彈性的結締組織與肌肉所形成管路。當大量血液進入動脈將使動脈壓力變大而使管徑擴張,在體表較淺處動脈即可感受到此擴張,即所謂的脈搏。正常人的脈搏和心跳是一致的。正常成人為60到100次/分,常為每分鍾70-80次,平均約72次/分。老年人較慢,為55到60次/分。脈搏的頻率受年齡和性別的影響,胎兒每分鍾110—160次,嬰兒每分鍾120-140次,幼兒每分鍾90-100次,學齡期兒童每分鍾80-90次。
脈搏即動脈搏動,脈搏頻率即脈率。正常人脈率規則,不會出現脈搏間隔時間長短不一的現象。正常人脈搏強弱均等,不會出現強弱交替的現象。另外,運動和情緒激動時可使脈搏增快,而休息,睡眠則使脈搏減慢。成人脈率每分鍾超過100次,稱為心動過速;每分鍾低於60次,稱為心動過緩。臨床上有許多疾病,特別是心臟病可使脈搏發生變化。因此,測量脈搏對病人來講是一個不可缺少的檢查項目。中醫更將切脈作為診治疾病的主要方法。心動周期中,由於心室收縮和舒張的交替進行脈管發生周期性擴張和回位的搏動。病情危重,特別是臨終前脈搏的次數和脈率都會發生明顯的變化。脈搏的變化也是醫生對病人診斷的其中一項依據。

光電式脈搏傳感器的原理
光學脈搏波傳感器的原理是通過檢測綠色LED發出的光隨血管容積的變化,光的吸收量也發生變化,從而得到了脈搏波。根據郎伯-比爾(lamber-beer)定律,物質在一定波長處的吸光度和他的濃度成正比,當恆定波長的光照射到人體組織上時,通過人體組織吸收、反射衰減后測量到的光強在一定程度上反映了被照射部位組織的結構特征。脈搏主要由人體動脈舒張和收縮產生的,在人體指尖,組織中的動脈成分含量高,而且指尖厚度相對其他人體組織而言比較薄,透過手指后檢測到的光強相對較大,因此光電式脈搏傳感器的測量部位通常在人體指尖。手指組織可以分成皮膚、肌肉、骨骼等非血液組織和血液組織,其中非血液組織的光吸收量是恆定的,而在血液中,靜脈血的搏動相對於動脈血是十分微弱的,可以忽略,因此可以認為光透過手指后的變化僅由動脈血的充盈而引起的,那么在恆定波長的光源的照射下,通過檢測透過手指的光強可以間接測量到人體的脈搏信號。


脈搏傳感器
指的是用於檢測脈搏相關信號的傳感器。脈搏指的是動脈搏動,脈搏傳感器即是用來檢測動脈搏動時產生的壓力變化,將之轉換成可以被更直觀觀察和檢測的電信號。脈搏傳感器按照輸出方式有模擬輸出、數字輸出兩種。按照采集信號的方式主要可以分為壓電式、壓阻式、光電式等三種。其中壓電式和壓阻式通過微壓力型的材料(壓電片、電橋等)將脈搏跳動的壓力過程轉換為信號輸出。光電式脈搏傳感器則通過反射或對射式的方式,將血管在脈搏跳動過程中透光率的變化轉換為信號輸出。脈搏傳感器主要應用在醫療設備、教學設備,教學實訓等領域,如血氧測量、心率監測、中醫脈象診斷等等。脈搏傳感器按照輸出方式有模擬輸出、數字輸出兩種。按照采集信號的方式主要可以分為壓電式、壓阻式、光電式等三種,其中光電式多數為紅外光。紅外脈搏傳感器,利用特定波長紅外線(典型的有570、870um)對血管末端血液微循環產生的血液容積的變化的敏感特性,檢測由於心臟的跳動,引起指尖的血液中血氧蛋白含量變化,經過信號放大、調整等電路處理后,可以輸出同步於脈搏跳動的脈沖信號,從而計算出脈率,也可以輸出反映指尖血容積變化的完整的脈搏波波形信號。主要應用於臨床上脈率的測量、監測和脈搏波的病理分析。還可計算血氧飽和度。

一般用綠光-- 紅光作為測量光源
早起多數采用紅光為光源,隨着進一步的研究和對比,綠光作為光源得到的信號更好,信噪比也比其他光源好些,所以現在大部分穿戴設備采用綠光為光源。但是考慮到皮膚情況的不用(膚色、汗水),高端產品會根據情況自動使用換綠光、紅光和IR多種光源。綠光作為光源的幾個特點:
1. 皮膚的黑色素會吸收大量波長較短的波
2. 皮膚上的水份也會吸收大量的UV和IR部分的光
3. 進入皮膚組織的綠光(500nm)-- 黃光(600nm)大部分會被紅細胞吸收
4. 紅光和接近IR的光相比其他波長的光更容易穿過皮膚組織
5. 血液要比其他組織吸收更多的光
6. 相比紅光,綠(綠-黃)光能被氧合血紅蛋白和脫氧血紅蛋白吸收


PulseSensor 是一款用於脈搏心率測量的光電反射式模擬傳感器。將其佩戴於 手指或耳垂等處,通過導線連接可將采集到的模擬信號傳輸給 Arduino 等單片 機用來轉換為數字信號,再通過 arduino 單片機簡單計算后就可以得到心率數 值,此外還可將脈搏波形上傳到電腦上顯示波形。PulseSensor 是一款開源硬 件,目前國外官網上已有其對應的 arduino 程序和上位機 Processing 程序, 其適用於心率方面的科學研究和教學演示,也非常適合用於二次開發。

模塊參數
電路板直徑:16mm
電路板厚度:1.6mm(普通 PCB 板厚度)
LED 峰值波長:515nm
供電電壓:3.3v 或 5v 均可
輸出信號類型:模擬信號
輸出信號大小:0~3.3v(3.3v 電源)或 0~5v(5v 電源)

實驗接線示意圖

【Arduino】168種傳感器模塊系列實驗(資料代碼+圖形編程+仿真編程)
實驗九十一:pulsesensor光學心率脈搏生物模擬傳感器
實驗開源代碼
/*
【Arduino】168種傳感器模塊系列實驗(資料代碼+圖形編程+仿真編程)
實驗九十一:pulsesensor光學心率脈搏生物模擬傳感器
*/
int ledPin = 13;
int sensorPin = 0;
double alpha = 0.75;
int period = 20;
double change = 0.0;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(115200);
}
void loop() {
static double oldValue = 0;
static double oldChange = 0;
int rawValue = analogRead(sensorPin);
double value = alpha * oldValue + (1 - alpha) * rawValue;
Serial.println(value);
oldValue = value;
delay(period);
delay(10);
}
實驗串口返回情況

實驗注意事項
1、保持指尖與傳感器接觸良好
2、不要太用力按, 否則血液循環不暢會影響測量結果
3、保持鎮靜, 測量時身體不要過多移動,這個會影響測量結果
4、不要用冰涼的手指進行測試,因為血液循環不好會讓測量結果不准確
5、本模塊515nm 的波長適合采集皮膚表微動脈的搏動信號(比如手指),而手腕處的動脈采集到的信號很小,不是很理想,建議可以考慮更改放大倍數或者振動類的傳感器。

實驗開源圖形編程(Mind+、Mixly、編玩邊學)

實驗串口返回情況

實驗開源仿真編程(Linkboy V4.62)


