【国民技术N32项目移植】1. 新建工程+LED与按键跳坑总结
【国民技术N32项目移植】3. 硬件IIC驱动RT-Thread OS SSD1306软件包
该项目是参加elecfans举办的N32开源项目移植所完成的项目,移植于我之前所完成的项目《物联网心率监控设备》。
被移植的开源地址:心率监控设备
比赛地址:国民技术N32开源移植挑战赛
支持能够通过OLED显示检测的心率波形以及数值,并且将心率数值上传到贝壳物联云平台;还可以显示时间,天气,日期等信息。ESP8266作为wifi模块,上电会自动获取天气以及NTP时间并更新到本地,每1小时会自动更新一次时间以及天气,也可以通过手动按按键设置进行更新。支持通过物联网平台设置不同的城市获取不同城市的天气信息,兼顾心率监控功能的同时也可以作为一个桌面心率监控摆件使用。
该项目作为一个办公或者居家桌面摆件使用,随时随地监控心率值,然自己了解自己的身体状况,因为兼顾了获取时间,天气等功能,平时也可以当做一个天气/时钟摆件使用。
使用了RT-Thread OS以及组件,如下:
[]()
使用到的硬件设备:
框图如下:
软件使用了多个线程,定时器以及外部中断:
线程1用来驱动OLED显示
线程2用来驱动LED周期性呼吸
线程3用来驱动ESP8266工作
线程4用来接收socket数据
具体框图如下:
时间显示界面
左上角显示wifi连接状态(未连接时闪烁);
IoT表示物联网平台连接状态(未连接时闪烁);
右上角显示的是天气(未获取最新天气显示天气更新中);
中间显示时间
左下角显示年月日
右下角显示星期
系统上电之后会自动更新天气以及时间,也会自动连接云平台。
该界面下长按按键切换到心率显示界面。
心率波形显示界面
显示采集到的心率波形以及心率数值(次每分钟)
该界面下会自动上传采集到的心率数值到贝壳物联云平台,5s上传一次。
短按按键返回时间显示界面。
设置界面
如下,该界面会显示如下三种设置,通过短按按键来切换。
当光标切换到某个选上上就表示该选项被选中,长按按键实现功能。
在更新时间上长按按键,自动更新时间;
在更新天气上长按按键,自动更新天气;
在退出上长按按键,退回到时间显示界面
ESP8266任务
ESP8266会根据当前的命令自动决定是获取NTP时间还是更新天气还是上传数据等逻辑。当ESP8266处于idle状态时,会每10s中向贝壳物联云平台发送一个获取状态的命令表示设备在线,防止云平台自动关闭设备。
心率传感器
心率传感器的采集在定时器1中完成,每2ms采集一次数据并进行计算,计算出心率值,一般经过10s左右,数据会比较稳定。
心率数据使用ADC采集。
按键采集
按键通过外部中断来采集,并通过定时器0来处理按键状态,用于计算长按还是短按。
LED闪烁
红色LED会周期性闪烁。
当闪烁周期为100ms时,表示wifi没有连接;
当闪烁周期为500ms时,表示物联网平台没有连接;
当闪烁周期为1s时,表示wifi和物联网平台都连接了。
绿色LED闪烁表示心率传感器采集到了心率值。
使用到的N32G45的资源有,详见上述 硬件架构:
之前的项目是基于RA6M4单片机完成,采用了RT-Thread OS,本次移植过程同样使用RT-Thread OS,这样可以最大程度保证移植的完整性,同时也便捷的多。
资源 | RA4M2 | N32G45 |
---|---|---|
内核 | Cortex-M33 | Cortex-M4 |
主频 | 200MHz | 144MHz |
SRAM | 192KB+64KB | 144KB |
FLASH | 1MB | 512KB |
从上表可以看出,RA4M2的资源比N32G45的资源丰富一些,主频相比而言也高一些,但是不影响项目移植。
资源使用上基本一致,存在下面的区别:
按键处理逻辑
开源项目RA6M4使用了中断来采集按键信息,但是N32G45使用了普通IO口来作为输入模式采集信息。
原因:RA6M4只有一个user按键,操作不便,这一个按钮需要负责所有按键操作,使用中断采集信息准确可靠,不易出错;而N32G45XVL-STB有四个user按键,每个user可以负责一种类型的操作,不需使用中断,减轻复杂性,本项目采用了开发板的KEY1和KEY2这两个按键。
IIC应用
开源项目RA6M4使用了软件IIC,而N32G45使用了硬件IIC。加快OLED刷新率,显示波形图不会卡顿。
LED驱动
开源项目RA6M4使用了一个PWM驱动的LED,而N32G45采用了普通IO口驱动LED。由于N32G45有三个颜色不同的LED,无需使用PWM驱动来标记不同的状态,普通IO驱动更简单。
因为我的开源项目对单片机性能要求不高,所以性能对比中并不能看出来什么结果。
N32G45的OLED刷新会快一些,因为使用了硬件IIC。
测试结果显示,N32G45上可以完美运行物联网心率监控设备。
移植过程中重要集中在对硬件资源的了解以及应用上,本次比赛是我第一次接触国民技术的单片机,通过将项目移植到N32G45,我对国民技术的单片机有了更多的了解,单片机的资源丰富,接口操作简单,项目移植起来也比较轻松,最主要的是国民技术提供的芯片资料很丰富,分类清晰,想要查找的时候很简单快速,点赞。
同时我也了解到了过敏技术在单片机领域的发展,以及未来的发展前景,总的来时过敏技术的单片机还是很不错,不输国外芯片大厂的单片机,期望国产芯片越来越好,走向世界。
本次项目移植过程中,我还修改了一些发现的缺陷项,减少了项目的bug。
全家福
心率采集图片:
代码以开源,放在gitee上:
地址:https://gitee.com/hehung/Pulse_monitor_N32G45X
https://www.bilibili.com/video/BV1MR4y1B7r5/
感谢elecfans以及国民技术给予的本次比赛的机会,本次比赛学到了很多,也了解到了国民技术的强大,期望越做越好,将中国芯带向世界。
更多回帖