基于物聯(lián)網(wǎng)的樹莓派心跳監(jiān)測系統(tǒng)
健康監(jiān)測一直是物聯(lián)網(wǎng)(IoT)的一個有前途的應(yīng)用。通過使用正確的技術(shù),我們不再需要依靠常規(guī)的健康檢查或當(dāng)?shù)氐尼t(yī)生來評估我們的身體。傳感器可以用來測量你身體的所有生命體征,這些信息可以遠(yuǎn)程實時共享,供世界其他地方的醫(yī)生診斷你,或者人工智能可以處理所有的數(shù)字并診斷你的問題。聽起來很有未來感,對吧?但我們正在逐漸向它邁進(jìn),我們離遠(yuǎn)程物聯(lián)網(wǎng)機(jī)械臂為我們做手術(shù)不遠(yuǎn)了。在此過程中,我們將構(gòu)建樹莓派心率監(jiān)測器來測量遠(yuǎn)程患者的心率,并將其顯示在Processing IDE上。之前我們還使用Arduino和ESP8266構(gòu)建了一個心率監(jiān)測器,并將值上傳到Thingspeak。
材料要求:
以下是使用Raspberry Pi構(gòu)建您自己的患者監(jiān)測系統(tǒng)所需的組件。
?覆盆子π
?脈搏傳感器
?ADS1115 ADC模塊
?跳線
?電源或移動電源
脈沖速率傳感器:
在我們進(jìn)入實際項目之前,讓我們先看看脈沖速率傳感器是如何工作的。脈搏/心跳傳感器的工作非常簡單。傳感器有兩面,一面是LED和環(huán)境光傳感器,另一面是一些電路。這個電路負(fù)責(zé)放大和噪聲消除工作。傳感器正面的LED被放置在我們?nèi)梭w的靜脈上。這可以是你的指尖或耳尖,但它應(yīng)該直接放在靜脈的頂部。
現(xiàn)在LED發(fā)出的光會直接落在靜脈上。只有當(dāng)心臟跳動時,靜脈里才會有血液流動,所以如果我們監(jiān)測血液流動,我們就能監(jiān)測心臟跳動。如果檢測到血流,那么環(huán)境光傳感器就會接收到更多的光,因為它們會被血液反射,隨著時間的推移,這種接收光的微小變化就會被分析出來,從而確定我們的心跳。在這個項目中,脈沖傳感器作為樹莓派的心跳傳感器。
有三根電線從傳感器出來,分別是信號(S), Vcc (3 - 5 V)和GND。
信號線分別顯示為紫色、紅色和黑色。在我們的項目中,傳感器將由Arduino的3.3V引腳供電,由于樹莓派默認(rèn)不能讀取模擬電壓,因此信號引腳將通過ADS115 ADC模塊連接到樹莓派上。
線路圖:
完整的樹莓派物聯(lián)網(wǎng)患者監(jiān)護(hù)系統(tǒng)電路圖如下圖所示。
正如你所看到的,我們已經(jīng)使用了帶有脈沖傳感器的ADS115 ADC模塊,脈沖傳感器通過I2C通信連接到樹莓派,這樣我們就可以在樹莓派上測量心跳。以下是它們之間的聯(lián)系:
?脈沖傳感器的信號引腳- ADC模塊的>a0
?脈沖傳感器的Vcc引腳-> 3.3V的樹莓
?脈沖傳感器的GND引腳-> Pi的GND
?RPI的Tx -> RPI的Rx
?ADC的GND -> RPI的GND
?ADC模塊的VCC -> +5v的RPI
?ADC模塊的SCL和SDA ->的SCL和SDA的RPI
安裝與配置
由于ADC模塊在I2C通信,我們使用UART進(jìn)行串行通信,我們必須在shell中使用raspi-config命令啟用樹莓派的UART和I2C,如下所示。
現(xiàn)在選擇Interfacing Options并按enter。
現(xiàn)在選擇I2C并按enter
現(xiàn)在選擇Yes并按enter
現(xiàn)在通過選擇ok按enter鍵
現(xiàn)在通過選擇Serial并按enter鍵來啟用Serial
現(xiàn)在選擇no并按enter鍵禁用串口登錄shell。
現(xiàn)在選擇Yes并按enter鍵以啟用串行。
現(xiàn)在選擇ok并按enter。
現(xiàn)在選擇finish并按enter
現(xiàn)在選擇Yes并按enter鍵進(jìn)行重啟。
現(xiàn)在安裝i2c包
現(xiàn)在使用給定的命令測試并獲得連接設(shè)備的I2C地址:
現(xiàn)在使用給定的命令為ADC模塊安裝ads1115 python庫
在樹莓派上安裝Processing
現(xiàn)在使用給定的命令將Processing安裝到現(xiàn)有的安裝上:
現(xiàn)在我們可以看到樹莓派菜單中的處理圖標(biāo):
這里我們需要運行pulse_sensor python代碼,然后處理本文末尾給出的代碼。然后我們將看到如下圖所示的結(jié)果
一個完整的工作視頻也可以在這個頁面的底部找到。下面將解釋python代碼和Processing代碼。
樹莓派的Python代碼測量心跳
在此代碼中,我們通過I2C通信連接ADC模塊以獲得脈沖傳感器的模擬輸出。從脈沖傳感器獲得原始模擬輸出后,我們找到了上峰值和下峰值。然后找出兩個峰值點之間的時間差,然后將其轉(zhuǎn)換為BPM。我們將原始模擬輸出和BPM發(fā)送到串行端口,串行端口從處理IDE中讀取以供進(jìn)一步處理。完整的心跳傳感器樹莓派python代碼在本頁的底部給出。
在首先編寫代碼時,我們導(dǎo)入了一些模塊,這些模塊在代碼中用于不同的目的
現(xiàn)在我們有一些用于計算和動作的變量。并創(chuàng)建了一個串行對象
現(xiàn)在給定的部分代碼用于發(fā)送數(shù)據(jù)到處理
現(xiàn)在給出了讀取脈沖傳感器和測量BPM的函數(shù)。
處理代碼顯示心跳值圖形在樹莓派
在處理代碼時,我們從樹莓的串口獲取數(shù)據(jù),這是我們上面解釋過的python代碼發(fā)送的環(huán)回信號。現(xiàn)在我們找到原始模擬輸入和BPM。并根據(jù)模擬值繪制圖形,顯示BPM值。在處理代碼時,首先導(dǎo)入了一些必要的庫模塊
在這之后,我們?nèi)×艘恍┳兞?
然后在設(shè)置功能中,我們初始化了串口,配置了串口,初始化了默認(rèn)圖形
現(xiàn)在在serialEvent函數(shù)中,我們已經(jīng)讀取并提取了接收到的數(shù)據(jù)
現(xiàn)在在繪制函數(shù)中,我們已經(jīng)將輸入值映射到圖形維度,然后繪制圖形。
給定的代碼行負(fù)責(zé)在圖上顯示BPM
這里我們還有另一個功能,用于放大和縮小繪圖。通過按-,我們可以縮小,按+,我們可以放大脈沖圖。為了控制這個,首先我們必須點擊圖形上的任何地方,然后需要按-和+。
通過這種方式,您可以使用樹莓派測量患者的心跳,并將其顯示為屏幕上的圖形。如果需要,您還可以將此串行數(shù)據(jù)發(fā)送到ThingSpeak或其他物聯(lián)網(wǎng)平臺,如IFTTT, Artik Cloud, Firebase, Particle Cloud, Amazon AWS,并在全球范圍內(nèi)遠(yuǎn)程共享數(shù)據(jù)。
本文編譯自iotdesignpro