VID_20231229_175509
物联网系统利用大量的物联网设备(如温湿度/光照传感器,开关控制,安防等),从传感器节点收集设备状态信息,智能完成调节人机互动。然而在户外常常没有WIFI,并且使用公有的云端服务可能会带来隐私泄露及安全问题,为此我们使用飞腾派开发板+4G+EMQX+eKUIPER+ Zigbee 搭建了一套适用于户外的物联网数据边缘计算处理。
1. 项目组件
硬件部分:
控制器:飞腾派开发板
传感器: Zigbee 传感器网络
执行单元: 串口继电器卡,控制多个开关量
交互界面: HDMI 触控屏
监控单元: (USB/网络)摄像头
电源:太阳能12V 软件部分
EMQX :EMQX是开源云原生分布式物联网消息服务器,支持部署在资源受限的物联网边缘硬件。我们选择开源的EMQX 最为MQTT broker
EMQX eKuiper: 对物联网数据进行边缘化处理,kuiper是基于轻量级边缘式消息处理引擎,可以运行在有限的边缘设备上
Zigbee:物联网通讯协议,主要运行在传感器节点和Zigbee网关,网关通过串口和飞腾开发板互联。
2 项目主要框图
3. 实际硬件连接图
4. 飞腾派配置
选择Ubuntu 20.4操作系统,使用Python3 + C 作为项目变成语言
5.EMQX 运行
EMQX 的使用在其他文章理由介绍,运行成功之后如下提示:
//www.ws-dc.com/jishu_2401481_1_1.html
6. eKuiper 安装与运行
打算简单写一篇文章。后面再添加链接
7. 4G 模块调试
4G模块打算简单写一篇文章。后面再添加链接
8. 模块测试
本文只介绍一个小的单元测试,系统集成后面再增加。飞腾开发板I2C接口连接了BH1750光照传感器,模块测试的具体内容为读取传感器数据,并以1次/S的频率将光照传感器强度数据通过MQTT协议发布到smart主题上。
模块代码:
import json
import time
import os
import ctypes
from paho.mqtt import client as mqtt
DEVICE = 0x23
POWER_ON = 0x01
POWER_DOWN = 0X00
RESET = 0x07
CONTINUOUS_LOW_RES_MODE = 0x13
CONTINUOUS_HIGH_RES_MODE_1 = 0x10
CONTINUOUS_HIGH_RES_MODE_2 = 0x11
ONE_TIME_HIGH_RES_MODE_1 = 0x20
ONE_TIME_HIGH_RES_MODE_2 = 0x21
ONE_TIME_LOW_RES_MODE =0x23
hello_lib = ctypes.CDLL('./hello.dll')
bh1750lib = ctypes.CDLL('./libbh1750.so')
broker = '127.0.0.1'
port =1883
topic = 'testtopic'
def read_light():
light_level = 30
return light_level
def connect_mqtt():
client = mqtt.Client(client_id='light_01')
client.connect(host=broker,port=port)
return client
def run():
mqtt_client = connect_mqtt()
hello_lib.hello_world()
while True:
light_level = bh1750lib.readLight()
publish_msg ={'curent light level is':light_level}
mqtt_client.publish(
topic,
payload = json.dumps(publish_msg)
)
print(publish_msg)
time.sleep(20)
if __name__ == "__main__":
run()
运行测试:
python bh_sh.py获取传感器数据,并将数据上报到smart 主题:
在EMQX可以看到的订阅消息:
9.总结
上面我们介绍了搭建了基于飞腾派+4G+EMQX+Ekuiper + Zigbee网关的边缘计算平台的基本步骤,并简单测试了数据上报功能。使用飞腾派为边缘计算提供了丰富的外部通信接口,使用EMQX为物联网网关提供了设备之间的通讯,使用Zigbee节点传感器节点提供多个传感器节点管理。
之后,我们还会继续在分布传感器网络的计算和智能数据处理和执行单元控制方面继续深入。
|