鲁班猫的智慧物联中控系统
【鲁班猫创意氛围赛】项目提交:基于鲁班猫1的智慧物联中控系统
大信(QQ:8125036)
一、前言
鲁班猫(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 开发语言,完成前端数据解析与可视化
二、项目材料
CH32V208
单片机,提供两路ADC采集数据并通过以太网上报数据
Hi-Spark 鸿蒙
开发板,Iot开发套件,提供温度,速度和天然气(甲烷)浓度检测数据
Ubuntu PC模拟电能采集站,提供每小时的家庭用电功率数据
WIFI 路由器,提供家庭有线网络的通讯和无线通讯
VMWare 虚机,提供鲁班猫开发环境
三、项目方案架构
鲁班猫智慧物联中控系统架构如下图所示,图中设备A,B为Iot传感数据采集设备,D作为一个电能表数据采集模拟端,E作为上报数据的互联网服务终端。而C位则是本次的主角鲁班猫,作为整个系统的物联核心。
四、CH32V208 ADC 数据采集
使用CH32V208开发板的MQTT例程与ADC例程,整合两个例程,并设定MQTT服务地址为鲁班猫的地址,端口为1883
使用ch32v208编译下载到ch32v208上运行
五、Hi_Spark 温度、湿度与燃气浓度传感采集
使用HiSpark_Hi3861开发板,接上燃气传感器模块,与Hi3861单片机,使用OpenN
ARMony开发采集温度,湿度与燃气浓度数据,并只用MQTT客户端通过 wifi连接路由器,将采集到的数据上发到鲁班猫。
编译下载到HiSpark上运行
六、鲁班猫物联中控软件设计开发
鲁班猫开发板上,首先编译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 运行用户后,即可启动运行MQTTBreaker服务:
七、EMQX服务公网部署
完整的展示智慧物联的应用,还需要中控系统与外部交换数据,因此在这里在公网E服务器上,部署一个支持MQTT的消息管理服务端,这里选择使用EMQX开源服务。
tar -xvf emqx-5.0.8-el8-amd64.tar.gz
//启动
bin/emqx start
//停止
bin/emqx stop
//查看状态
bin/emqx_ctl status
在公网服务端E需要开通18083,1883等业务端口,部署完毕后,可以打开浏览器登录到EMQX服务站点已启动:
同时需要存储上报的物联数据,用于大数据的采集与分析,因此在公网服务器上部署物联网数据库。这里使用知名的时序数据库TDengine,用于永久存储上报的物联数据,执行如下命令,编译安装TDengine
git clone https://github.com/taosdata/TDengine.git
cd TDengine & build.sh
八、前端开发部署与效果
前端整合Echat工程,并且加入websocket客户端,用于接收httpd发回的数据,
部署到鲁班猫上前面编译的httpd的页面目录下,httpd/www下,然后在本地页面访问鲁班猫的IP地址:
最终成功的加载出中控控制台的页面,并实时的显示出各个终端传感器的数据。