使用NodeMCU的基于物联网的心跳监测系统
扫描二维码
随时随地手机看文章
一如既往,我们意识到在医学科学中使用测量心跳来诊断各种问题。心跳用来监测我们心脏的健康状况。通过测量病人当前的心跳来诊断问题是医学中一个古老的部分。因此,在这个项目中,我们将使用NodeMCU ESP8266构建一个基于物联网的监测系统,该系统将能够测量当前的心跳并将数据发布到云平台。因此,数据可以从全球任何地方访问(只需要互联网连接)。该项目有助于为患者提供高质量的支持,并使医务人员的工作更轻松。正常人也可以使用它作为他们生活的一部分来监测他们的心脏健康。
我们用ESP8266做了很多项目,这里有一些例子,
如何使用ESP8266构建基于LoRa的GPS跟踪器
基于物联网的库存管理系统,使用称重传感器和NodeMCU
基于物联网的语音控制新像素LED -在谷歌助手上使用语音命令设置任何颜色
基于物联网的色彩分选机,使用ESP8266和ThingSpeak
组件的要求
ESP8266 nodecu单板
OLED显示器
心跳传感器模块
电路试验板
跳线
LED灯
脉搏传感器
它是一种模拟设备,用于测量人体的脉搏/心跳。它通过发射和感应光来监测血管中血液的变化,这个过程被称为光容积脉搏描记术。
它有三个引脚,GND, VCC和信号。
VCC引脚:该引脚用于向传感器供电,使其工作。通常连接在NodeMCU单板的3.3V引脚上。其电压范围在3.3v到5v之间。
GND引脚:用于连接传感器和NodeMCU单板的接地。
信号引脚:该引脚用于将脉冲速率数据以模拟形式传输到NodeMCU板。
OLED显示器
有机发光二极管(OLED)显示器用于显示输出数据。它们非常轻,像纸一样薄,理论上是柔性的,能产生更亮、更清晰的图像。
它有四个引脚VCC, GND, SCl和SDA。
VCC引脚:该引脚用于向OLED显示器提供电压以打开显示器。OLED的电压范围为3.3v到6v。
GND引脚:用于连接显示器和NodeMCU单板的接地。
SDA引脚:在I2C通信中用于数据传输。通常连接在NodeMCU单板的D2引脚上。
SCL引脚:该引脚用于I2C通信中的时钟信号。通常连接在NodeMCU单板的D1引脚上。
线路图
这里的联系非常简单。脉冲传感器信号引脚连接到NodeMCU的A0上。OLED的SCL和SDA应分别连接到NodeMCU的D1和D2上。
同时,指示脉冲正侧的RED LED连接到NodeMCU的D8引脚,另一侧连接到地。
为远程监控设置Thingspeak
为了监控云上的输出数据,我们将使用Thingspeak云平台。在这里,我们将创建一个用于存储心跳数据的字段。让我们快速设置一下。
首先,在Thingspeak网站上创建一个新账户。
然后登录到您的帐户并创建一个新频道。通道可以读写API密钥,可以是公共的也可以是私有的。
为通道中的字段指定一个名称,并将其用于数据监视。
在通道内找到API密钥并复制它。不同通道的API密钥是不同的,我们需要在代码中使用它们来提供对通道ID的访问。
有读和写两个API键。如果你想发送和接收数据到Thingspeak,分别使用写和读API键。
项目代码说明
该程序读取脉冲传感器的模拟参数并将其转换为BPM(每分钟跳动),并将数据显示到OLED以及云平台(Thingspeak)上。
首先,我们必须包含成功执行代码所需的所有库。库包括SPI, WIRE, Adafruit_SSD1306和Adafruit_GFX。ESP8266WiFi ThingSpeak。此外,我们还定义了进一步编程所需的变量和对象。
OLED显示器的SSD1306控制器具有复杂的驱动程序,因此我们使用预定义库Adafruit SSD1306来隐藏控制器的复杂性。
Adafruit_SSD1306构造函数接受三个参数:屏幕宽度、屏幕高度和ESP8266引脚编号,该引脚与显示器的复位引脚相连。但是这里我们没有连接任何RESET引脚。
在OLED上显示圆形、线条和正方形等图形基元。我们必须使用Adafruit GFX库。
ESP8266WiFi库,用于将WIFI模块连接到WIFI连接上,提供连接信息。
Thingspeak库用于通过互联网连接到Thingspeak服务器,允许我们发送和接收数据。
您可以通过Sketch > Include Library > Manage libraries从Arduino IDE安装所有这些库。
A0引脚从脉冲传感器读取模拟数据。
变量MychannelNumber和mywriteAPIkey分别是Thingspeak帐户通道的通道ID和API KEY,您将在其中发布数据。为了成功发送数据,您需要更改这些双变量数据。
在setup()函数中,启动串行通信。
OLED显示器初始化为begin(SSD1306_SWITCHCAPVCC, 0x3C)函数,其中SSD1306_SWITCHCAPVCC打开内部充电电路和显示输出,0x3C是显示器的I2C地址。
clearDisplay()函数用于清除显示并使其完全为空白。
WIFI .begin()函数用于初始化WIFI连接进程。它需要两个参数WIFI名称和同一网络的密码。
begin()函数与Thingspeak库关联,它初始化连接进程以连接到Thingspeak服务器。
在上面的循环部分,我们已经完成了所有的处理任务,比如比较和赋值,同时还运行了Thingspeak函数。
可变sensorValue存储脉冲传感器的模拟输入。然后比较<= 590 & <=680范围内的值来检测节拍。
如果检测到节拍,则D8引脚上的LED打开10ms,否则它将不发光。
BPM计算:
我们对脉冲进行20秒的计数,然后将其乘以3次,得到每分钟的节拍数,并在Arduino IDE的串行监视器上显示。
OLED显示屏:使用许多功能来根据需要调整显示。让我们看看一些常用的函数。
setTextColor用于设置字体颜色。将白色设置为暗背景,黑色设置为亮背景。
setCursor接受x轴和y轴位置的两个参数,并将光标分配给该位置。
setTextSize用于设置字体大小(从1开始)。
display()命令指示库将屏幕缓冲区批量传输到SSD1306控制器的内存中,并在OLED屏幕上显示所述内容。
最后,我们使用Thingspeak的writefield()函数。它有四个参数,从通道ID、字段号、数据变量和API Key开始。所有这些信息应该按照你的Thingspeak帐户和频道。
完整的代码将在下面的代码部分中找到。
项目运作
现在您已经理解了代码,您可以简单地将其上传到您的NodeMCU板,然后项目就应该开始工作了。
在OLED和云上监测你的心跳。
本文编译自iotdesignpro