# 心率监控设备_N32G45X **Repository Path**: hehung/Pulse_monitor_N32G45X ## Basic Information - **Project Name**: 心率监控设备_N32G45X - **Description**: 支持能够通过OLED显示检测的心率波形以及数值,并且将心率数值上传到贝壳物联云平台;还可以显示时间,天气,日期等信息。ESP8266作为wifi模块,上电会自动获取天气以及NTP时间并更新到本地,每1小时会自动更新一次时间以及天气,也可以通过手动按按键设置进行更新。支持通过物联网平台设置不同的城市获取不同城市的天气信息,兼顾心率监控功能的同时也可以作为一个桌面心率监控摆件使用。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2023-02-12 - **Last Updated**: 2024-02-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目背景 该项目是参加elecfans举办的N32开源项目移植所完成的项目,移植于我之前所完成的项目《物联网心率监控设备》。 被移植的开源地址:[心率监控设备](https://gitee.com/hehung/heart-rate-monitoring) 比赛地址:[国民技术N32开源移植挑战赛](https://bbs.elecfans.com/jishu_2313370_1_1.html) # 项目简介 支持能够通过OLED显示检测的心率波形以及数值,并且将心率数值上传到贝壳物联云平台;还可以显示时间,天气,日期等信息。ESP8266作为wifi模块,上电会自动获取天气以及NTP时间并更新到本地,每1小时会自动更新一次时间以及天气,也可以通过手动按按键设置进行更新。支持通过物联网平台设置不同的城市获取不同城市的天气信息,兼顾心率监控功能的同时也可以作为一个桌面心率监控摆件使用。 # 应用背景 该项目作为一个办公或者居家桌面摆件使用,随时随地监控心率值,然自己了解自己的身体状况,因为兼顾了获取时间,天气等功能,平时也可以当做一个天气/时钟摆件使用。 # 实现功能 1. 心率采集 2. 心率波形以及数值在OLED上显示 3. 心率数据上传贝壳物联云平台 4. 自动更新天气以及时间(NTP) 5. 通过贝壳物联设置当前城市,用于更新本地城市天气 6. 时间,日期,天气等信息显示 7. 按键切换显示界面以及更新时间以及天气信息 # 整体系统框架 ## RT-Thread使用情况 使用了RT-Thread OS以及组件,如下: ![](https://pic.imgdb.cn/item/63e8a4554757feff33e133a7.jpg) ## 硬件架构 使用到的硬件设备: 1. LED控制 - PA0,PB5(普通IO口输出) 2. 按键采集 - PA4,PA5(普通IO口输入) 3. 串口USART1 - USB串口打印输出 4. ESP8266-01 WIFI模块 - UART6 - TXD:PB0, RXD:PB1 5. OLED 12864显示屏 - IIC - SCL:PB8, SDA:PB9 6. Pluse sensor心率采集模块 - ADC1 IN2 - PA1 7. 定时器 timer1 - 用于周期性采集心率传感器数据以及处理心率值 8. RTC - 用于本地实时时钟 框图如下: ![](https://pic.imgdb.cn/item/63e8a4554757feff33e133e3.jpg) ## 软件框图 软件使用了多个线程,定时器以及外部中断: 1. 线程1用来驱动OLED显示 2. 线程2用来驱动LED周期性呼吸 3. 线程3用来驱动ESP8266工作 4. 线程4用来接收socket数据 具体框图如下: ![](https://pic.imgdb.cn/item/63e8a4554757feff33e13400.jpg) # 软件模块说明 1. 时间显示界面 左上角显示wifi连接状态(未连接时闪烁); IoT表示物联网平台连接状态(未连接时闪烁); 右上角显示的是天气(未获取最新天气显示天气更新中); 中间显示时间 左下角显示年月日 右下角显示星期 系统上电之后会自动更新天气以及时间,也会自动连接云平台。 该界面下长按按键切换到心率显示界面。 ![](https://pic.imgdb.cn/item/63e8a4554757feff33e13415.jpg) 2. 心率波形显示界面 显示采集到的心率波形以及心率数值(次每分钟) 该界面下会自动上传采集到的心率数值到贝壳物联云平台,5s上传一次。 短按按键返回时间显示界面。 ![](https://pic.imgdb.cn/item/63e8a4554757feff33e13422.jpg) 3. 设置界面 如下,该界面会显示如下三种设置,通过短按按键来切换。 当光标切换到某个选上上就表示该选项被选中,长按按键实现功能。 在更新时间上长按按键,自动更新时间; 在更新天气上长按按键,自动更新天气; 在退出上长按按键,退回到时间显示界面 ![](https://pic.imgdb.cn/item/63e8a45d4757feff33e14815.jpg) ![](https://pic.imgdb.cn/item/63e8a45e4757feff33e14b95.jpg) ![](https://pic.imgdb.cn/item/63e8a45e4757feff33e14bd1.jpg) 4. ESP8266任务 ESP8266会根据当前的命令自动决定是获取NTP时间还是更新天气还是上传数据等逻辑。当ESP8266处于idle状态时,会每10s中向贝壳物联云平台发送一个获取状态的命令表示设备在线,防止云平台自动关闭设备。 5. 心率传感器 心率传感器的采集在定时器1中完成,每2ms采集一次数据并进行计算,计算出心率值,一般经过10s左右,数据会比较稳定。 心率数据使用ADC采集。 6. 按键采集 按键通过外部中断来采集,并通过定时器0来处理按键状态,用于计算长按还是短按。 7. LED闪烁 红色LED会周期性闪烁。 - 当闪烁周期为100ms时,表示wifi没有连接; - 当闪烁周期为500ms时,表示物联网平台没有连接; - 当闪烁周期为1s时,表示wifi和物联网平台都连接了。 绿色LED闪烁表示心率传感器采集到了心率值。 # N32G45X资源使用 使用到的N32G45的资源有,详见上述 [硬件架构](#hardware): 1. GPIO - 用于LED控制以及读取按键的按下状态; 2. UART - 用于串口打印(RT-Thread OS)以及ESP8266通信; 3. ADC - 用于采集心率数值; 4. 定时器 - 用于2ms标准周期处理心率数据; 5. IIC - 用于OLED屏幕的驱动; 6. RTC - 用于内部实时时钟 # 移植过程 之前的项目是基于RA6M4单片机完成,采用了RT-Thread OS,本次移植过程同样使用RT-Thread OS,这样可以最大程度保证移植的完整性,同时也便捷的多。 ## 资源使用对比 ### 硬件资源对比 | 资源 | RA4M2 | N32G45 | | --- | --- | --- | | 内核 | Cortex-M33 | Cortex-M4 | | 主频 | 200MHz | 144MHz | | SRAM |192KB+64KB | 144KB | | FLASH |1MB | 512KB | 从上表可以看出,RA4M2的资源比N32G45的资源丰富一些,主频相比而言也高一些,但是不影响项目移植。 ### 资源应用对比 资源使用上基本一致,存在下面的区别: 1. 按键处理逻辑 开源项目RA6M4使用了中断来采集按键信息,但是N32G45使用了普通IO口来作为输入模式采集信息。 原因:RA6M4只有一个user按键,操作不便,这一个按钮需要负责所有按键操作,使用中断采集信息准确可靠,不易出错;而N32G45XVL-STB有四个user按键,每个user可以负责一种类型的操作,不需使用中断,减轻复杂性,本项目采用了开发板的KEY1和KEY2这两个按键。 2. IIC应用 开源项目RA6M4使用了软件IIC,而N32G45使用了硬件IIC。加快OLED刷新率,显示波形图不会卡顿。 3. LED驱动 开源项目RA6M4使用了一个PWM驱动的LED,而N32G45采用了普通IO口驱动LED。由于N32G45有三个颜色不同的LED,无需使用PWM驱动来标记不同的状态,普通IO驱动更简单。 ## 测试验证/性能对比 因为我的开源项目对单片机性能要求不高,所以性能对比中并不能看出来什么结果。 N32G45的OLED刷新会快一些,因为使用了硬件IIC。 测试结果显示,N32G45上可以完美运行物联网心率监控设备。 ## 移植过程总结 移植过程中重要集中在对硬件资源的了解以及应用上,本次比赛是我第一次接触国民技术的单片机,通过将项目移植到N32G45,我对国民技术的单片机有了更多的了解,单片机的资源丰富,接口操作简单,项目移植起来也比较轻松,最主要的是国民技术提供的芯片资料很丰富,分类清晰,想要查找的时候很简单快速,点赞。 同时我也了解到了过敏技术在单片机领域的发展,以及未来的发展前景,总的来时过敏技术的单片机还是很不错,不输国外芯片大厂的单片机,期望国产芯片越来越好,走向世界。 本次项目移植过程中,我还修改了一些发现的缺陷项,减少了项目的bug。 # 项目展示 全家福 ![](https://pic.imgdb.cn/item/63e8a45e4757feff33e14c1c.jpg) 心率采集图片: ![](https://pic.imgdb.cn/item/63e8a3f94757feff33e064e4.gif) # 演示视频 https://www.bilibili.com/video/BV1MR4y1B7r5/ # 结语 感谢elecfans以及国民技术给予的本次比赛的机会,本次比赛学到了很多,也了解到了国民技术的强大,期望越做越好,将中国芯带向世界。