概述
数采一期下位机是基于ART-PI开发板开发,服务器采用阿里云学生版云服务器ECS,单机器部署支持每秒采集2000台设备温度压力数据,连接对象(下称下位机)可以是设备也可以是网关(连接协议目前仅支持基于WebSocket,详情参考SocketIO),下位机采集或汇总的数据并通过 WIFI 上传云端远程实时监视,也可本地连接串口与 PC 端通讯,上位机通过自定义解析数据后展示到相关订阅端(可同时同步到多个Android手机)。对于物联网初创公司、自由开发者、学生,是一个相当实用的设计。数据流向完全透明,不存在黑匣子,有助于开发者快速掌握物联网运行流程。
开发环境
硬件:ART-PI
RT-Thread版本:RT-Thread Nano v3.1.3
开发工具及版本:CubeMX v6.1.0、Keil v5.33、VSCode v1.51.1、Android Studio 4.1.1、HBuilder X v2.9.8.20201110、NodeJS v14.15.1、MongoDB v4.4.1(1主2副)、redis v6.0
RT-Thread使用情况概述
内核部分:调度器。
软件包:CJSON v1.7.7
硬件框架
ART-Pi是 RT-Thread 团队经过半年的精心准备,专门为嵌入式软件工程师、开源创客设计的一款极具扩展功能的 DIY 开源硬件。
软件框架说明
本项目采用WebSocket协议进行设备与云端互联,本期目标,融合CubeMX、keil、RTT Nano的同时提供OTA功能和压力传感器(LPS22HH)的示例。本项目可分为4个部分:
第一部分 服务端
本期采用关键技术有nodejs、eggjs、socketio、mongodb等,主要为设备提供云端连接服务、可定制化协议解析、消息转发,报警等功能。
第二部分 后台管理端
本期采用关键技术有vue、element-ui、vue-router、vuex、monaco-editor等,主要提供一些权限分组管理,设备模型的定义(不同协议的解析),设备OTA测试。
第三部分 下位机
本期采用关键技术有RTT Nano、CJson、WebSocketClient等,主要实现了设备温度采集上传,模拟温度过载报警,OTA,以及C++14的示例代码。
第四部分 移动端
本期采用关键技术有uniapp、vue、echarts等,主要实现了设备数据实时上报、数据下发、模拟报警的功能。
软件模块说明
sensor_thread_entry:传感器线程,采集数据并通过WebSocketClient发送给云端。
led_ thread _entry:闪灯线程,用来指示当前系统的运行状态。
wifi_ thread _entry: wifi线程,用来处理来自服务器的数据。
演示效果
视频:
代码地址
请下载附件获取代码。
若使用上有啥问题,请联系QQ: 296565890,微信:xiaosichuan2013
本项目遵循 Apache 许可证 2.0 版本,所包含4个端均可以免费在商业产品中使用,不需要公布应用程序源码,没有潜在商业风险。
真心希望有志同道合的朋友一期参与此开源项目
工作时间不一定及时回复,忘谅解!
比赛感悟
纸上得来终觉浅,绝知此事要躬行。陆游的这首诗,完美的诠释了我在这次比赛中的收获。
物联网的时代,RTOS多线程是核心,通过综合对比,我最终选择了国产的RT-Thread。
通过本次比赛,让我深深体会到RTT Nano的小而美,尤其是在改动部分源码后,RTT Nano支持C++ 14,lambda、auto、函数重载、类模板用起来真是爽!(开启C++支持)
虽然本次比赛没有用到RT-Thread提供的软件包,但手动写一次WebSocketClient收获已经很满意了。
最后感谢主办方提供了这么好的一个平台,不仅能展示自我,也能学到很多知识,还要感谢论坛上那些解决我问题以及提供技术支持的大佬,希望有朝一日我也能给开源社区贡献一份自己力量。