【鲁班猫参赛作品赏析】
前言
鲁班猫(LubanCat)是野火科技推出的Linux、Android卡片电脑系列品牌。该系列卡片电脑硬件产品丰富,操作系统适配度高,开源资料众多,应用开发方便简单。
它有优越的性能以及多产品线覆盖教育、商业应用、工业控制等领域,具备广泛的应用场景。
笔者申请到的鲁班猫型号为LuBanCat-1,其硬件外形如下图,尺寸大约8cmx6cm,非常的小巧,这个小巧的板子下却隐藏丰富强大的功能。LubanCat-1有一颗包含四核Cortex-A55处理器、Mali G52 2EE图形处理器和高能效NPU的SOC, 搭配千兆网口、HDMI、USB3.0、MINI PCI-E、MIPI等外设,预留了USB、MINI PCI-E等通用接口,能够扩展到更多的使用场景。
根据其强大的性能与通信功能特点,笔者决定使用它来开发一款鲁班猫智慧物联中控设备。大家都知道现在IoT是越来越火热,从智能家居,到智慧办公,智慧工厂,智慧生产等,越来越多的硬件系统通过网络连接到一起,形成了智慧化的物联世界,通过彼此的连接,交换数据,完成协调统一的生产工作应用环境,协调的进行彼此的控制和响应,形成智慧化的物联世界。
而对一个物联管理单位,物联中控是最基本的单元,它担负着对终端数据的采集,汇聚,存储,并按照设计的权限进行对外联络和报告。也对各类的智能应用管理提供统一的通信和控制命令转发等功能。
该项目涉及到如下技术内容:
Httpd —— Http 服务提供基于c变量的模板http服务
C-CGI —— 支持http在服务端RPC进程通
MQTT —— 基于TCP/IP的订阅、发布消息服务
TDEngine —— 时序数据库
Websocket —— 支持web端的二进制网络数据通信
EChat —— 一款开源的js前端可视化图形库
Javascript —— web 开发语言,完成前端数据解析与可视化
项目材料
LuBanCAT-1 鲁班猫,智慧物联中控
CH32V208 单片机,提供两路ADC采集数据并通过以太网上报数据
Hi-Spark 鸿蒙开发板,Iot开发套件,提供温度,速度和天然气(甲烷)浓度检测数据
Ubuntu PC模拟电能采集站,提供每小时的家庭用电功率数据
WIFI 路由器,提供家庭有线网络的通讯和无线通讯
VMWare 虚机,提供鲁班猫开发环境
项目方案架构
鲁班猫智慧物联中控系统架构如下图所示,图中设备A,B为Iot传感数据采集设备,D作为一个电能表数据采集模拟端,E作为上报数据的互联网服务终端。而C位则是本次的主角鲁班猫,作为整个系统的物联核心。
CH32V208 ADC数据采集
使用CH32V208开发板的MQTT例程与ADC例程,整合两个例程,并设定MQTT服务地址为鲁班猫的地址,端口为1883
使用ch32v208编译下载到ch32v208上运行
在板上运行后,就会自动的连接鲁班猫中控,并发布ADC1,和ADC2测量到的电压值,每1秒上报一次,发布到中控台上。
Hi_Spark 温度、湿度与燃气浓度传感采集
使用HiSpark_Hi3861开发板,接上燃气传感器模块,与Hi3861单片机,使用OpenNarmony开发采集温度,湿度与燃气浓度数据,并只用MQTT客户端通过 wifi连接路由器,将采集到的数据上发到鲁班猫。
编译下载到HiSpark上运行
下载到Hi-Spart 开开发板后,经过初始化,将会通过wifi 自动把探测到的环境温度,湿度和天然气浓度数据,通过MQTT协议上报到鲁班猫中控板上,鲁班猫收到该传感信息后,通过websocker实时发布到web端,完成可视化管理,同时根据策略,处理后发布到公网EMQX服务里,完成数据汇聚和存储。
鲁班猫物联中控软件设计开发
鲁班猫开发板上,首先编译httpd工程,工程由jsoncpp和httpd组成,http是基于uHttp开源工程修改而来。主要需修改为增加了http与系统调用接口,支持通过C-CGI的方式,进行动态的网络渲染以及连接MQTT消息服务器,完成MQTT消息订阅并使用websocket转发给浏览器端。
分别在开发板上编译jsoncpp和httpd 工程
再编译MQTT工程,这里使用的是mosquitto-2.0.9 开源MQTT工程,该工程由CJSON,OpenSSL,mosquitto-2.0.9,子工程组成,只需要分别编译他们即可:
编译mosquitto-2.0.9工程,编译时需要把前面编译好的openssl和cjson动态库加入到mosquitto工程编译路径中。
把编译成功的MQTT服务程序和依赖的动态库,部署到bin目录下,并写一个mqtt配置文件和启动脚本文件。
创建好MQTT 运行用户后,即可启动运行MQTT Breaker服务:
EMQX服务公网部署
完整的展示智慧物联的应用,还需要中控系统与外部交换数据,因此在这里在公网E服务器上,部署一个支持MQTT的消息管理服务端,这里选择使用EMQX开源服务。
wget https://www.emqx.com/zh/downloads/broker/5.0.8/emqx-5.0.8-el8-amd64.tar.gztar -xvf emqx-5.0.8-el8-amd64.tar.gz//启动bin/emqx start//停止bin/emqx stop//查看状态bin/emqx_ctl status在公网服务端E需要开通18083,1883等业务端口,部署完毕后,可以打开浏览器登录到EMQX服务站点已启动:
同时需要存储上报的物联数据,用于大数据的采集与分析,因此在公网服务器上部署物联网数据库。这里使用知名的时序数据库TDengine,用于永久存储上报的物联数据,执行如下命令,编译安装TDenginegit clone
https://github.com/taosdata/TDengine.gitcd TDengine & build.sh
前端开发部署与效果
前端整合Echat工程,并且加入websocket客户端,用于接收httpd发回的数据,
部署到鲁班猫上前面编译的httpd的页面目录下,httpd/www下,然后在本地页面访问鲁班猫的IP地址:
最终成功的加载出中控控制台的页面,并实时的显示出各个终端传感器的数据。
视频展示
:44
原文来源:
https://bbs.elecfans.com/jishu_2356407_1_1.html
全部评论