基于鲁班猫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是越来越火热,从智能家居,到智慧办公,智慧工厂,智慧生产等,越来越多的硬件系统通过网络连接到一起,形成了智慧化的物联世界,通过彼此的连接,交换数据,完成协调统一的生产工作应用环境,协调的进行彼此的控制和响应,形成智慧化的物联世界。
二、项目创意与特点本项目名称为《鲁班猫智慧物联中控》,在面对越来越多的智能设备下,在一个典型的智慧物联场景里,如家庭环境,在家庭中有各个房间的温度,湿度,有各类的房间灯光照明,有空调,电动窗帘,冰箱,智能水表,智能电表,还有电视,手机等各类智能设备。在面向这些设备时,他们需要一个统一的互联互通的管理中心,这就是物联中控,它首先能够连接各个终端传感器,收集各个设备的信息数据,并且对各类设备发送相关的控制指令,同时还需要对外部进行联络和沟通。
鲁班猫智慧物联中控正是这个中控系统,它可以收集家居所有环境与设备的数据,它担负着对终端数据的采集,汇聚,存储,并按照设计的权限进行对外联络和报告。也对各类的智能应用管理提供统一的通信和控制命令转发等功能,并且能够跟云端进行沟通,根据需要把数据在云端保存或者处理。有了云端的数据,则可以互联网更广泛的应用对接,比如家庭能耗管理,远程自动控制,家居环境监测等。
本项目完成各类传感器数据采集与上报,本地数据可视化监控等功能。在以后的进一步开发中,可以使用鲁班猫强大的AI计算能力,对家庭内的设备进行智能化的控制,也可以对接手机等移动设备,完成远程的监控,管理和智能化的自动控制等需求应用。
该项目涉及到如下技术内容:
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上电压数据采集开发
使用CH32V208开发板的MQTT例程与ADC例程,整合两个例程,采集该芯片ADC0,与ADC1的数据,通过参考公司转换成电压值,测量范围为0V-12V,并设定在上报端口上把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 运行用户后,即可启动运行MQTTBreaker服务:
八、EMQX服务公网部署完整的展示智慧物联的应用,还需要中控系统与外部交换数据,因此在这里在公网E服务器上,部署一个支持MQTT的消息管理服务端,这里选择使用EMQX开源服务。
wgethttps://www.emqx.com/zh/download ... .8-el8-amd64.tar.gz 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地址:
最终成功的加载出中控控制台的页面,并实时的显示出各个终端传感器的数据。
附:
项目视频已经放在B,欢迎关注三连:
https://www.bilibili.com/video/B ... b638e3cc29864ce3a9c
|