基于RT-Thread+RA6M4的心率监控设备

RTThread物联网操作系统 2022-09-21 19:13

作者

hehung

原文链接:

https://club.rt-thread.org/ask/article/14a31ef90c896fd9.html


应用背景

作为一个办公或者居家桌面摆件使用。随时随地监控心率值,然自己了解自己的身体,因为兼顾了获取时间,天气等功能,不测试心率的时候也可以作为一个时钟摆件。

实现功能

  1. 心率采集

  2. 心率波形以及数值在OLED上显示

  3. 心率数据上传贝壳物联云平台

  4. 自动更新天气以及时间(NTP)

  5. 通过贝壳物联设置当前城市,用于更新本地城市天气

  6. 时间,日期,天气等信息显示

  7. 按键切换显示界面以及更新时间以及天气信息


整体系统框架

RT-Thread使用情况

使用了RT-Thread OS以及组件,如下:


硬件架构

使用到的硬件设备:

  1. 板载LED - PWM - P106

  2. 板载按键 - 外部中断以及定时器 - P105

  3. ESP8266-01 WIFI模块 - UART0 - TXD:P101, RXD:P100

  4. OLED 12864显示屏 - IIC - SCL:P512, SDA:P511

  5. Pluse sensor心率采集模块 - ADC - P000

  6. 定时器0 - 用于判断按键按下时间长短

  7. 定时器1 - 用于周期性采集心率传感器数据以及处理心率值

  8. 串口7 - 普通串口使用,用来监控数据 - TXD:P613, RXD:P614

  9. 外部中断0 - 按键采集


框图如下:


软件框图

软件使用了多个线程,定时器以及外部中断。

  1. 线程1用来驱动OLED显示

  2. 线程2用来驱动LED周期性呼吸

  3. 线程3用来驱动ESP8266工作

  4. 线程4用来接收socket数据


具体框图如下:


软件模块说明

1、时间显示界面

左上角显示wifi连接状态(未连接时闪烁);

IoT表示物联网平台连接状态(未连接时闪烁);

右上角显示的是天气(未获取最新天气显示天气更新中);

中间显示时间

左下角显示年月日

右下角显示星期

系统上电之后会自动更新天气以及时间,也会自动连接云平台。

该界面下长按按键切换到心率显示界面。


2、心率波形显示界面

显示采集到的心率波形以及心率数值(次每分钟)

该界面下会自动上传采集到的心率数值到贝壳物联云平台,5s上传一次。

短按按键返回时间显示界面。


3、设置界面

如下,该界面会显示如下三种设置,通过短按按键来切换。

当光标切换到某个选上上就表示该选项被选中,长按按键实现功能。

在更新时间上长按按键,自动更新时间;

在更新天气上长按按键,自动更新天气;

在退出上长按按键,退回到时间显示界面


1、ESP8266任务

ESP8266会根据当前的命令自动决定是获取NTP时间还是更新天气还是上传数据等逻辑。当ESP8266处于idle状态时,会每10s中向贝壳物联云平台发送一个获取状态的命令表示设备在线,防止云平台自动关闭设备。

2、心率传感器

心率传感器的采集在定时器1中完成,每2ms采集一次数据并进行计算,计算出心率值,一般经过10s左右,数据会比较稳定。

心率数据使用ADC采集。

3、按键采集

按键通过外部中断来采集,并通过定时器0来处理按键状态,用于计算长按还是短按。


视频展示

https://www.bilibili.com/video/BV1p94y1D7en/

代码地址

https://gitee.com/hehung/heart-rate-monitoring

总结

本次参加比赛受益良多。感谢瑞萨以及RT-Thread给的机会。

这是我第一次使用瑞萨的单片机,也让我感受到了瑞萨单片机的易用,工具链支持很好,底层驱动都无需用户自己编写,对于新手接触而言非常容易上手,加上RT-Thread OS才做系统简直是强强联手,事半功倍。

希望瑞萨与RT-Thread越做越好,让工程师能越来越快越好的开发作品。


END


爱我就给我点在看


点击 阅读原文”进入官网

RTThread物联网操作系统 帮助您了解RT-Thread相关的资讯.
评论 (0)
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦