基于STM32实现的心率血氧监测系统,可采集MAX30102的数据换算心率血氧上传至APP。
使用到以下模块: STM32F103VET6(我使用的是野火指南者) 7线SPI-OLED显示屏 MAX30102 DHT20 ESP8266 有源蜂鸣器 三种颜色LED 按键
PB6 ------ SCL PB7 ------ SDA VCC与GND分别接3.3V与地
PB6 ------ SCL PB7 ------ SDA PA5 ------ INT VCC与GND分别接3.3V与地
上述两个元器件在同一条I2C总线
VCC与GND分别接3.3V与地 PB13------ D0 PB15------ D1 PB12------ RES PC7 ------ DC PC6 ------ CS
我的ESP8266是野火指南者自带的,所以连线与它一致 PB8 ------ 使能 PB9 ------ RES PB10------ RX PB11------ TX
与野火一致,接PA8
与野火一致,接PB0和PB5,低电平有效。
接PA0
上电后,OLED进入温湿度页面,此页面会展示采集到的温湿度。 此页面下长按按键进入主菜单。
主菜单有以下选项(温湿度页面,心率血氧页面,开启AP,开启STA,报警设置,返回上级) 主菜单页面短按按键可以选中下一条,长按可以执行选中的功能。
当没有手指在MAX30102的时候,OLED显示no finger;放了手之后显示采集的心率血氧值。 MAX30102初始化、数字计算算法是官方例程修改的。
这是另一个菜单,里面显示了当前系统的报警范围(温湿度、心率的正常范围,血氧的最低门限,报警使能与数值修改方向) 页面短按按键可以选中下一条,长按可以执行选中的功能。 数字修改方向决定你长按某一报警值时,数字增大还是减小。 这些设置信息每隔1s会保存到内部FLASH当中,下次开机还会继续使用这些数据。
想要上传数据到APP,必须联网与APP套接字,这些东西在AP模式下通过APP发送,并保存到内部FLASH 长按此选项进入初始化AP页面,OLED显示初始化进度条,完成后WIFI模块进入AP模式,并等待用户数据。 初始化无论成功与否,都会给出提示信息。
利用保存的服务器信息开启STA模式,一旦成功会开启相应任务上传数据并接收APP控制命令。 初始化无论成功与否,都会给出提示信息。 给全了正确信息,热点可用以及服务器开启情况下才可以成功。
使用QT写的,可以作为TCP客户端与服务端工作。 客户端时,连接AP模式的下位机发送信息。 服务端时,接收下位机数据,并可视化。还可以发送指令控制下位机(我只做了报警数值设置) 能够绘制心率血氧值的折线图。
照着买的心率血氧仪做的,买的没有联网功能而且经常测不出数据,但是它用的LCD页面显示,显示的内容更丰富,设置项也更多。 作为心率血氧仪我应该做合格了。
sscanf真TM废内存,非要把任务栈设置512个字才能运行。
目前有的时候有个bug:重新开机后保存的数据有可能会部分被擦除(字节变成FF),这会导致保存的服务器信息是WIFI_CODE:12345(后面全是乱码),而设置的报警数值因为全FFFF也变成奇怪的数值,这个时候需要使用APP重新发送数据,我没有做“恢复出厂设置”这种功能。
这个bug为什么会出现我也不知道,大多数时候是没有问题的。