2728|11

282

帖子

7

TA的资源

一粒金砂(高级)

楼主
 

【平头哥RVB2601创意应用开发】环境监测终端08-作品提交 [复制链接]

 
 

基于CH2601的分布式环境监测终端

作者:sipower

  • 一、项目背景(100-200字

随着工业发展,环境问题日益严重,除了常规的治理方法,对环境的实时监测也是管理环境的一种必要手段。本创意作品采用RVB2601开发板实现环境监测的物联网终端,在道路、小区、公园等公共场所多点布置该终端,可形成分布式监测网络,通过WiFi将检测结果上传服务器,可以供环境部门进行大数据统计,为环境治理提供助力

  • 二、作品简介(100-200字)+作品照片

本作品采用RVB2601开发板自带的麦克风采集噪音数据,经过量化转化为实时噪音水平。通过串口外接了一个温湿度采集模块,可以实时读取温湿度数据。采集到的数据均可在OLED屏幕上显示,并且设计了一个横向动态指示条,可以直观显示噪音的实时数据。通过板载WiFi模块连接阿里云物联网,实现web端实时查看监测数据。特别的设计一个指示灯端口,可以通过云端控制其开关。在实际应用中,可以将本模块安装于现有路灯中,通过指示灯端口控制路灯开关,实现云端智能控制。

1、作品照片

  • 三、系统框图(图文结合)

该终端整个系统框图如下基础功能包括:噪音采集,温湿度采集OLED显示结果,WiFi上传和下载,云端管理,远程灯光开关。预留扩展功能包括:光照度检测,空气质量检测,卫星定位数据解析。

 

2、系统框图

  • 四、各部分功能说明和解析(图文结合)

本作品目前已经实现的功能主要包含:噪音采集,温湿度采集,OLED显示,云端连接,web界面监控。下面分别详细介绍。

1、噪音采集

噪音采集使用RVB2601开发板自带的麦克风采集周围的声音,记录单位时间内的最大值,经过量化的数据用以表示环境噪水平。

硬件原理方面,RVB2601 通过 I2S I2C 总线连接 ES7210 ADC 芯片,实现硅麦的音频信号采样。采用I2C接口完成ES7210的配置,采用I2S接口读取ES7210的转换数据

3、噪音采集电路

软件驱动设计使用了CODEC编解码库,主要使用AD的输入通道。在官方例程ch2601_ft_demo基础上,截取其中录音部分代码。因为本次应用只需要声音幅值,对其代码大幅删减改造,将缓存缩小,只保留一个采样周期就行,每次采样完成,计算这个周期内的音频数据最大值,这个结果就作为要输出的实时音量数据。此数据还需要经过校准量化成最终的分贝值,比较遗憾的是没有借到分贝仪,没有实现最终的数据量化,只能简单除以一个系数,展示一下效果。从串口输出采集到的噪音值如下图。

4、串口输出音量

2、温湿度采集

本次使用的RVB2601开发板不带温湿度传感器,要想获得这两个参数,需要外接检测模块。检察了一下手头的资源,发现以前评测《安信可UWB室内定位模组》攒下的模块可以通过串口输出温湿度数据,软件接口也比较简单,就选定了此模块作为数据源。

5UWB模块

CH2601GPIO复用关系表格中可以看到,几乎每一个IO口都用上了,仔细研究OLED程序发现驱动代码并没有使用SPI接口,而是直接用IO模拟的SPI总线,这就给了我机会,可以用其他IO口替换掉被占用的串口引脚。考虑到我这个作品基本不用RGB三色灯,决定把这个灯的其中两个IO口转给OLED,这样就能空出UART1的收发引脚了。

6、改造后原理图

在软件设计方面,首先是更改OLED的驱动程序,重新设置引脚定义,代码更改后重新编译下载,程序直接就好使,没有遇到任何问题。然后是编写UART1驱动程序。中间遇到诸多问题,最终使用HAL库的中断收数超时机制实现了预期的目标。

3OLED显示

RVB2601开发板内置了一款分辨率为128*64的单色OLED显示屏,并且基于此平台移植完成了开源的LVGL GUI库。此前并没有使用过LVGL GUI库,这次现学现用,正好尝试一下。

首先设计界面草稿。我计划在屏幕上显示5行信息。第一行,标题,直接使用标签显示即可。第二行,温度,左边字段不需要更新,右边字段需要定时刷新,也全部使用标签显示。第三行和第四行分别是湿度和噪音水平,和温度显示采用一样方法。第五行计划做一个指示条,用来动态指示噪音的实时幅度,这样查看起来比较直观。

7、界面草稿

实际设计的时候遇到各种问题。首先是如何显示中文,经查询得知要自己制作内置字库并添加,看了几个教程,很繁琐的样子,为了加快速度,决定跳过这个中文显示,改用英文也是一样。

下一个问题是默认使用的英文字体是LV_FONT_MONTSERRAT_14”比较大,如果显示5行看着太挤了,通过更改配置项使用“LV_FONT_MONTSERRAT_12”字体相对好一点。我还试了改成更小的字体,有点惨不忍睹,都不能分辨了,有点像电影里的火星文。

做标题显示的时候,看到LVGL支持滚动显示,为了体现咱的学习成果,把原计划的两个单词的标题改成了一句话,让它在最上面滚动显示,展示更多信息。

在设置温度显示的时候,需要显示浮点数,我按照常规的方式写代码发现不能正常显示,然后查阅资料发现应该是为了提高效率,默认设置成了不支持浮点模式。本来想查手册改成支持浮点模式,后面看到有人采用了更妙的方法解决了。就是先将浮点数格式化成字符串,然后再以字符串显示就没问题了,我按照此方法操作,顺利解决此问题。

最后一个要实现的是噪音指示条。经过反复查阅手册,最终确定使用进度条LV_BAR”控件设计。直接按照手册简单例程搞上去后,发现两端都是圆角,不是我喜欢了类型。然后一通大搜索,被我找到了解决方案,经过我反复修改和调试,终于把界面框架搭建出来。

8、显示效果图

4、云端连接

RVB2601开发板内置了联盛德公司⾼性能&安全的 WiFi4 芯⽚ W800W800 通过 SPI ⼝与 CH2601 连接。W800 已经默认烧录基于 AT WiFi 透传固件,支持阿里云平台,开发者可基于 AT ⽹络指令,快速实现物联网的应⽤场景。

首先是阿里云物联网平台的准备工作。登陆阿里云IoT Studio平台,地址如下。

https://account.aliyun.com/login/login.htm?qrCodeFirst=false&oauth_callback=https%3A%2F%2Fstudio.iot.aliyun.com%2Fproject%2Fa123jX2VXQqAfhnk%2Fdevices%2Fa1iO8mTqhOz%2Fdev_001%2F1

在主页中点击“产品”一栏,进入产品列表,然后点击“创建产品”,录入自己想要的信息,点击最下面的确认,产品就创建完成。进入产品管理界面,添加产品属性,其中标识符是单片机和阿里云通讯的重要握手信息,最好设成简明好记的,编程时方便调试。我的产品主要是温度、湿度、噪声水平三个参数的采集,和一个指示灯的设置,共有四个属性。这些参数的数据类型和数据定义也要和单片机程序里面的一致。产品设置好后,添加设备。完成后在设备信息界面可以查看相关的证书密钥,如下图,这个回头用于单片机和阿里云连接用。

9、设备信息

至此阿里云端的设置就完成了。可以通过不同的界面查看各种配置,多熟悉一下就能熟练使用,整个操作界面还是很友好的。

然后是单片机程序编写。我是在ch2601_webplayer_demo 示例⼯程基础上进行的更改。通过在w800_api.c ⽂件⾥添加连接云平台的控制函数,接收数据的回调函数可以实现物联网连接和数据收发。具体的可以参考附件中的代码,此处不再赘述。在此处特别说明一下,由于云端传回的信息是JSON格式,需要在工程中添加cJSON库进行解码。下图是连接阿里云成功,从云端看到数据更新了。

10、云端连接成功

5web界面监控

为了展示环境监测的效果,我在阿里云IoT Studio平台设计一个web应用,将温度、湿度、噪声水平用仪表盘和折线图展示。为指示灯设计一个按钮和状态指示器,可以在云端控制其开关。

具体开发过程如下。登陆阿里云IoT Studio平台,地址如下。

https://account.aliyun.com/login/login.htm?qrCodeFirst=false&oauth_callback=https%3A%2F%2Fstudio.iot.aliyun.com%2Fproject%2Fa123jX2VXQqAfhnk%2Fdevices%2Fa1iO8mTqhOz%2Fdev_001%2F1

在主页中点击新建web应用,在弹出对话框中填入需要的信息,点击最下面的确认按钮创建应用。应用创建完成后进入编辑界面,具体各部分功能如图所示,根据自己需要进行页面设计。

11、页面设计

如果不太熟悉这个设计规则,官方也有详细的指导教程,见如下链接。

https://help.aliyun.com/document_detail/141613.html

根据需要添加组件,可以手工填入每个组件的坐标和大小,让排列更整齐。我为温度、湿度、噪声水平设置了仪表盘来显示实时数据,设置了折线图展示最近一个小时的数据变化。设置了一个按钮来控制指示灯开关,并用一个图标显示指示灯的状态。

12、设置好的界面

接下来为每个组件配置数据源以温度仪表盘为例,选中它,然后点击右边配置数据源,在弹出的对话框中依次选择目标产品,设备,属性,就能把组件和具体设备参数关联起来在配置过程中,可以随时点击右上角的预览按钮,查看设计效果。配置完所有组件后,就可以选择发布了。我的这个应用页面效果如下图,各个参数均展示出来了。

13页面效果

如果有多台监测终端,可以把这一页编成一组,然后把各组并列展示,就是分布式监测系统了。

  • 五、作品源码

链接如下:

https://download.eeworld.com.cn/detail/sipower/623518

  • 六、视频演示(视频简介+链接)

本次作品在设计过程中展示了多个不同成果的视频,分别如下链接。

1炫彩呼吸灯的效果

https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/userFiles/3890563388320980992/1649070469990/f4ee2f8055053c901c341b0b137ae8ee.mp4

2、云端控制开发板的LED灯开关

https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/userFiles/3890563388320980992/1649159094646/6492d5b42765f70bb8422b9e510771c8.mp4

3界面动态显示效果

https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/userFiles/3890563388320980992/1649592613590/6fc5b63d2371cd9ad821bc7efc3eb63d.mp4

4音乐光条效果

https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/userFiles/3890563388320980992/1650183724917/398df15910dd3e353262460f73a36173.mp4

5、在LVGL中显示音量变化

https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/userFiles/3890563388320980992/1650183742370/83e0fe35d8b0d7b46ca455feaa5f3993.mp4

6温湿度的数据采集并显示

https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/userFiles/3890563388320980992/1650647426254/1c18d9ea0e2063c1da4d5ff9fb17f08e.mp4

7、完成的作品展示

https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/userFiles/3890563388320980992/1650900845446/8f34e6a49992ecda1979a2433c647019.mp4

  • 七、项目总结(项目文字总结+帖子分享链接汇总)

这个作品大概用了一个月的业余时间设计完成。感谢平头哥提供的开发板和热心的技术支持,感谢EEWORLD提供展示的平台。通过本次作品设计,我学习了RISC-V的相关知识,感受到了国产芯片和开发平台的进步,相信总有一天,我们终将让国产芯片在世界各个地方发挥其不可替代的作用

设计过程中,同时在平头哥和EEWorld发帖分享经验总结,链接汇总如下:

环境监测终端01-开箱及设计炫彩呼吸灯

https://occ.t-head.cn/community/post/detail?id=4031491954960900096

https://bbs.eeworld.com.cn/thread-1198865-1-1.html

环境监测终端02-连接阿里云控制LED

https://occ.t-head.cn/community/post/detail?id=4031864498838708224

https://bbs.eeworld.com.cn/thread-1198899-1-1.html

环境监测终端03-使用LVGL设计界面

https://occ.t-head.cn/community/post/detail?id=4033682146182443008

https://bbs.eeworld.com.cn/thread-1199385-1-1.html

环境监测终端04-声音采集和动感光条显示

https://occ.t-head.cn/community/post/detail?id=4036161692982980608

https://bbs.eeworld.com.cn/thread-1200134-1-1.html

环境监测终端05-温湿度采集和显示

https://occ.t-head.cn/community/post/detail?id=4038106809214054400

https://bbs.eeworld.com.cn/thread-1200906-1-1.html

环境监测终端06-将数据同步到阿里云

https://occ.t-head.cn/community/post/detail?id=4038813387730259968

https://bbs.eeworld.com.cn/thread-1201066-1-1.html

环境监测终端07-web应用设计

https://occ.t-head.cn/community/post/detail?id=4039168982010368000

https://bbs.eeworld.com.cn/thread-1201211-1-1.html

 

  • 八、其他

在此处分享一些设计过程中的一些经验总结,希望对大家有帮助。

1、代码容量不够问题

当我把lvgl库和wifi库同时加入工程后,编译会提示编译完的代码超范围,意味着用户代码空间不够了。我仔细研究了flash默认配置,发现总共512KB的容量,只给了用户程序分配了256KB,剩下还有好多留给升级缓存了。在我这个作品中,没有计划做OTA升级,因此完全可以把用户空间扩大。具体操作如下图。

14、修改分区表

打开config.yaml分区表文件,将prim用户空间扩大,具体扩大到多少根据自己需要改,别超出flash有效范围就行。我这改到384KBmisc为升级缓存空间,起始地址也要注意修改成对应的新地址。改完注意保存。打开gcc_flash.ld文件,将flash长度修改成和config.yaml一样的,保存。这两个文件改完后,我们就有更多空间存代码了。

2CDK中不能查看函数定义问题

CDK中,右键函数,选择“goto declaration”可以查看函数定义。若点击后无法跳转,一般情况下是没有自动对工程进行解析,可以手动进行:

点击菜单栏 Project -> parse all project,等待Project View中的进度条结束,再次通过“goto declaration”功能,然后即可正常进行函数的查看。

3、获得平头哥官方提供的cJSON库的方式

连接物联网时,由于云端传回的信息是JSON格式,需要用到cJSON库进行解码。我推荐一个很容易获得平头哥官方提供的cJSON库的方式。在CDK欢迎页面,第一个实例是《WiFi智能灯控》例程,把它下载下来,不用编译,你会发现在“__workspace_pack__”这个文件夹下就有了cJSON库了。然后在库管理里面将cJSON库添加到工程中即可。

4、在LVGL中显示浮点数

在设置温度显示的时候,需要显示浮点数,我按照常规的方式写代码发现不能正常显示,然后查阅资料发现应该是为了提高效率,平头哥移植的LVGL默认设置成了不支持浮点模式。本来想查手册改成支持浮点模式,后面看到有人采用了更妙的方法解决了。就是先将浮点数格式化成字符串,然后再以字符串显示就没问题了,我按照此方法操作,顺利解决此问题。

5、注意在编辑上报字符串中”\”的数量。

在编辑cJSON字符串时,其中有一个消息是这样的:

snprintf(msg_buf,80,"{\\\"temp\\\":%.1f,\\\"humi\\\":%.1f,\\\"noise\\\":%d,\\\"led\\\":%d}",res_data.temp,res_data.humi,res_data.noise,res_data.led);

我开始没注意,少敲了一个,导致数据上传出错,查找了好长时间才发现。

环境监测终端_作品提交.docx (1.84 MB, 下载次数: 4)

最新回复

辛苦辛苦,做了蛮多的东西,完成度挺高。   详情 回复 发表于 2022-5-25 20:15
点赞 关注
 
 

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

温度显示的时,先将浮点数格式化成字符串,然后再以字符串显示这个方法确实妙

 
 
 

回复

7047

帖子

11

TA的资源

版主

板凳
 
楼主的经验值得大家学习,有空要好好学,认真学。
 
 
 

回复

153

帖子

0

TA的资源

一粒金砂(中级)

4
 

这是用的MQTT协议吗?

点评

对。 由于w800固件把协议封装好了,其实不用管的,只需要使用at指令做具体操作就行。  详情 回复 发表于 2022-5-12 11:58
 
 
 

回复

282

帖子

7

TA的资源

一粒金砂(高级)

5
 
梦溪开物 发表于 2022-5-11 15:26 这是用的MQTT协议吗?

对。

由于w800固件把协议封装好了,其实不用管的,只需要使用at指令做具体操作就行。

 
 
 

回复

11

帖子

1

TA的资源

一粒金砂(中级)

6
 

你好,我用你的源码,把WIFI连接和五元组信息改了,然后就只改了上传数据如下,别的都没改

 

按照《基于RVB2601连接⻜燕平台指导⼿册》教程,还是连接不上阿里云。

串口工具输出信息,已经连接成功

 程序中发送信息好像也成功了,但没收到信息

 

阿里云平台毫无反应

 

 

 能帮忙分析一下吗,这个地方困太久了,是不是阿里云平台设置有问题啊,希望大佬指点指点

image.png (25.33 KB, 下载次数: 0)

image.png

点评

你按照《基于RVB2601连接⻜燕平台指导⼿册》一步不差的操作,先保证在阿里云上能看到你设备连接成功,然后再考虑数据上报的功能。不要试图省掉其中的任何一个步骤。  详情 回复 发表于 2022-5-13 09:56
 
 
 

回复

282

帖子

7

TA的资源

一粒金砂(高级)

7
 
zhengyad 发表于 2022-5-12 23:01 你好,我用你的源码,把WIFI连接和五元组信息改了,然后就只改了上传数据如下,别的都没改   ...

你按照《基于RVB2601连接⻜燕平台指导⼿册》一步不差的操作,先保证在阿里云上能看到你设备连接成功,然后再考虑数据上报的功能。不要试图省掉其中的任何一个步骤。

点评

之前不是用的飞燕平台,连接不上,用你发的飞燕平台手册,按照手册操作,还是不行。我的疑问也是为什么阿里云上毫无反应  详情 回复 发表于 2022-5-13 10:59
 
 
 

回复

11

帖子

1

TA的资源

一粒金砂(中级)

8
 
sipower 发表于 2022-5-13 09:56 你按照《基于RVB2601连接⻜燕平台指导⼿册》一步不差的操作,先保证在阿里云上能看到你设备 ...

之前不是用的飞燕平台,连接不上,用你发的飞燕平台手册,按照手册操作,还是不行。我的疑问也是为什么阿里云上毫无反应

点评

你看下你的阿里云账户有没有出现欠费,如果欠费也没响应。  详情 回复 发表于 2022-5-13 12:30
 
 
 

回复

282

帖子

7

TA的资源

一粒金砂(高级)

9
 
zhengyad 发表于 2022-5-13 10:59 之前不是用的飞燕平台,连接不上,用你发的飞燕平台手册,按照手册操作,还是不行。我的疑问也是为什么阿 ...

你看下你的阿里云账户有没有出现欠费,如果欠费也没响应。

点评

非常感谢,联系了平头哥技术支持,把程序发过去,在那边试了试,我这边的阿里云显示在线了,确定是开发板的问题了  详情 回复 发表于 2022-5-13 20:43
 
 
 

回复

11

帖子

1

TA的资源

一粒金砂(中级)

10
 
sipower 发表于 2022-5-13 12:30 你看下你的阿里云账户有没有出现欠费,如果欠费也没响应。

非常感谢,联系了平头哥技术支持,把程序发过去,在那边试了试,我这边的阿里云显示在线了,确定是开发板的问题了

点评

最终发现是开发板不能用家里的WIFI,换个路由器也不行,用手机热点就可以了,但是家里手机和电视连接WIFI都是正常的,不知道这个开发板为什么不能通过这个WIFI连接阿里云。希望以后遇到类似问题的同学不要在这个地方  详情 回复 发表于 2022-5-24 14:15
 
 
 

回复

11

帖子

1

TA的资源

一粒金砂(中级)

11
 
zhengyad 发表于 2022-5-13 20:43 非常感谢,联系了平头哥技术支持,把程序发过去,在那边试了试,我这边的阿里云显示在线了,确定是开发板 ...

最终发现是开发板不能用家里的WIFI,换个路由器也不行,用手机热点就可以了,但是家里手机和电视连接WIFI都是正常的,不知道这个开发板为什么不能通过这个WIFI连接阿里云。希望以后遇到类似问题的同学不要在这个地方浪费时间。

 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

12
 

辛苦辛苦,做了蛮多的东西,完成度挺高。

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表