使用NodeMCU的基于物聯(lián)網(wǎng)的心跳監(jiān)測系統(tǒng)
一如既往,我們意識到在醫(yī)學科學中使用測量心跳來診斷各種問題。心跳用來監(jiān)測我們心臟的健康狀況。通過測量病人當前的心跳來診斷問題是醫(yī)學中一個古老的部分。因此,在這個項目中,我們將使用NodeMCU ESP8266構(gòu)建一個基于物聯(lián)網(wǎng)的監(jiān)測系統(tǒng),該系統(tǒng)將能夠測量當前的心跳并將數(shù)據(jù)發(fā)布到云平臺。因此,數(shù)據(jù)可以從全球任何地方訪問(只需要互聯(lián)網(wǎng)連接)。該項目有助于為患者提供高質(zhì)量的支持,并使醫(yī)務人員的工作更輕松。正常人也可以使用它作為他們生活的一部分來監(jiān)測他們的心臟健康。
我們用ESP8266做了很多項目,這里有一些例子,
如何使用ESP8266構(gòu)建基于LoRa的GPS跟蹤器
基于物聯(lián)網(wǎng)的庫存管理系統(tǒng),使用稱重傳感器和NodeMCU
基于物聯(lián)網(wǎng)的語音控制新像素LED -在谷歌助手上使用語音命令設置任何顏色
基于物聯(lián)網(wǎng)的色彩分選機,使用ESP8266和ThingSpeak
組件的要求
ESP8266 nodecu單板
OLED顯示器
心跳傳感器模塊
電路試驗板
跳線
LED燈
脈搏傳感器
它是一種模擬設備,用于測量人體的脈搏/心跳。它通過發(fā)射和感應光來監(jiān)測血管中血液的變化,這個過程被稱為光容積脈搏描記術(shù)。
它有三個引腳,GND, VCC和信號。
VCC引腳:該引腳用于向傳感器供電,使其工作。通常連接在NodeMCU單板的3.3V引腳上。其電壓范圍在3.3v到5v之間。
GND引腳:用于連接傳感器和NodeMCU單板的接地。
信號引腳:該引腳用于將脈沖速率數(shù)據(jù)以模擬形式傳輸?shù)絅odeMCU板。
OLED顯示器
有機發(fā)光二極管(OLED)顯示器用于顯示輸出數(shù)據(jù)。它們非常輕,像紙一樣薄,理論上是柔性的,能產(chǎn)生更亮、更清晰的圖像。
它有四個引腳VCC, GND, SCl和SDA。
VCC引腳:該引腳用于向OLED顯示器提供電壓以打開顯示器。OLED的電壓范圍為3.3v到6v。
GND引腳:用于連接顯示器和NodeMCU單板的接地。
SDA引腳:在I2C通信中用于數(shù)據(jù)傳輸。通常連接在NodeMCU單板的D2引腳上。
SCL引腳:該引腳用于I2C通信中的時鐘信號。通常連接在NodeMCU單板的D1引腳上。
線路圖
這里的聯(lián)系非常簡單。脈沖傳感器信號引腳連接到NodeMCU的A0上。OLED的SCL和SDA應分別連接到NodeMCU的D1和D2上。
同時,指示脈沖正側(cè)的RED LED連接到NodeMCU的D8引腳,另一側(cè)連接到地。
為遠程監(jiān)控設置Thingspeak
為了監(jiān)控云上的輸出數(shù)據(jù),我們將使用Thingspeak云平臺。在這里,我們將創(chuàng)建一個用于存儲心跳數(shù)據(jù)的字段。讓我們快速設置一下。
首先,在Thingspeak網(wǎng)站上創(chuàng)建一個新賬戶。
然后登錄到您的帳戶并創(chuàng)建一個新頻道。通道可以讀寫API密鑰,可以是公共的也可以是私有的。
為通道中的字段指定一個名稱,并將其用于數(shù)據(jù)監(jiān)視。
在通道內(nèi)找到API密鑰并復制它。不同通道的API密鑰是不同的,我們需要在代碼中使用它們來提供對通道ID的訪問。
有讀和寫兩個API鍵。如果你想發(fā)送和接收數(shù)據(jù)到Thingspeak,分別使用寫和讀API鍵。
項目代碼說明
該程序讀取脈沖傳感器的模擬參數(shù)并將其轉(zhuǎn)換為BPM(每分鐘跳動),并將數(shù)據(jù)顯示到OLED以及云平臺(Thingspeak)上。
首先,我們必須包含成功執(zhí)行代碼所需的所有庫。庫包括SPI, WIRE, Adafruit_SSD1306和Adafruit_GFX。ESP8266WiFi ThingSpeak。此外,我們還定義了進一步編程所需的變量和對象。
OLED顯示器的SSD1306控制器具有復雜的驅(qū)動程序,因此我們使用預定義庫Adafruit SSD1306來隱藏控制器的復雜性。
Adafruit_SSD1306構(gòu)造函數(shù)接受三個參數(shù):屏幕寬度、屏幕高度和ESP8266引腳編號,該引腳與顯示器的復位引腳相連。但是這里我們沒有連接任何RESET引腳。
在OLED上顯示圓形、線條和正方形等圖形基元。我們必須使用Adafruit GFX庫。
ESP8266WiFi庫,用于將WIFI模塊連接到WIFI連接上,提供連接信息。
Thingspeak庫用于通過互聯(lián)網(wǎng)連接到Thingspeak服務器,允許我們發(fā)送和接收數(shù)據(jù)。
您可以通過Sketch > Include Library > Manage libraries從Arduino IDE安裝所有這些庫。
A0引腳從脈沖傳感器讀取模擬數(shù)據(jù)。
變量MychannelNumber和mywriteAPIkey分別是Thingspeak帳戶通道的通道ID和API KEY,您將在其中發(fā)布數(shù)據(jù)。為了成功發(fā)送數(shù)據(jù),您需要更改這些雙變量數(shù)據(jù)。
在setup()函數(shù)中,啟動串行通信。
OLED顯示器初始化為begin(SSD1306_SWITCHCAPVCC, 0x3C)函數(shù),其中SSD1306_SWITCHCAPVCC打開內(nèi)部充電電路和顯示輸出,0x3C是顯示器的I2C地址。
clearDisplay()函數(shù)用于清除顯示并使其完全為空白。
WIFI .begin()函數(shù)用于初始化WIFI連接進程。它需要兩個參數(shù)WIFI名稱和同一網(wǎng)絡的密碼。
begin()函數(shù)與Thingspeak庫關(guān)聯(lián),它初始化連接進程以連接到Thingspeak服務器。
在上面的循環(huán)部分,我們已經(jīng)完成了所有的處理任務,比如比較和賦值,同時還運行了Thingspeak函數(shù)。
可變sensorValue存儲脈沖傳感器的模擬輸入。然后比較<= 590 & <=680范圍內(nèi)的值來檢測節(jié)拍。
如果檢測到節(jié)拍,則D8引腳上的LED打開10ms,否則它將不發(fā)光。
BPM計算:
我們對脈沖進行20秒的計數(shù),然后將其乘以3次,得到每分鐘的節(jié)拍數(shù),并在Arduino IDE的串行監(jiān)視器上顯示。
OLED顯示屏:使用許多功能來根據(jù)需要調(diào)整顯示。讓我們看看一些常用的函數(shù)。
setTextColor用于設置字體顏色。將白色設置為暗背景,黑色設置為亮背景。
setCursor接受x軸和y軸位置的兩個參數(shù),并將光標分配給該位置。
setTextSize用于設置字體大小(從1開始)。
display()命令指示庫將屏幕緩沖區(qū)批量傳輸?shù)絊SD1306控制器的內(nèi)存中,并在OLED屏幕上顯示所述內(nèi)容。
最后,我們使用Thingspeak的writefield()函數(shù)。它有四個參數(shù),從通道ID、字段號、數(shù)據(jù)變量和API Key開始。所有這些信息應該按照你的Thingspeak帳戶和頻道。
完整的代碼將在下面的代碼部分中找到。
項目運作
現(xiàn)在您已經(jīng)理解了代碼,您可以簡單地將其上傳到您的NodeMCU板,然后項目就應該開始工作了。
在OLED和云上監(jiān)測你的心跳。
本文編譯自iotdesignpro