本帖最后由 JerryZhen 于 2024-6-5 14:17 编辑
最近一直在忙着设计楼控网关的展示箱,用于展会宣传,现在不同以往,好酒也怕巷子深,卖点宣传很重要。从设计到硬件到软件等一系列工作,其实很繁琐的,经过一个月的奋战,现在已经基本完工,先上张图和视频,展示下效果。
gateway
项目硬件部分设计思路如下,T527作为数据采集网关,显示部分通过HDMI接显示屏,数据采集部分通过bacnet协议读取楼控DDC设备中的逻辑点位信息,进而将网络中的设备状态在屏幕上进行可视化。项目的原理图如下。可以看到,我们是通过DDC控制两个电机,两个led灯,以及两个温湿度传感器。主控T527会每秒去采集一次DDC中的点位信息,然后将采集到的数据可视化到屏幕上。
项目的软件部分:软件的核心就是数据采集,具体代码如下:
import BAC0
from app.services.cache import redis_client
points = {
"led1": {
"read":'192.168.20.51:47808 binaryOutput 501 presentValue',
"default":"inactive",
},
"led2":{
"read": '192.168.20.51:47808 binaryOutput 502 presentValue',
"default":"inactive",
},
"motor1": {
"read": '192.168.20.108:47808 binaryOutput 501 presentValue',
"default":"inactive",
},
"motor2": {
"read": '192.168.20.108:47808 binaryOutput 502 presentValue',
"default":"inactive",
} ,
"temperature": {
"read": '192.168.20.108:47808 analogInput 301 presentValue',
"default": "0.0"
},
"humidity": {
"read": '192.168.20.108:47808 analogInput 302 presentValue',
"default": "0.0"
},
# "switch1": '192.168.20.51:47808 binaryInput 201 presentValue',
# "switch2": '192.168.20.51:47808 binaryInput 202 presentValue',
# "switch3": '192.168.20.108:47808 binaryInput 201 presentValue',
# "switch4": '192.168.20.108:47808 binaryInput 202 presentValue',
}
class BacnetClient:
def __init__(self, host:str):
self.conn = BAC0.connect(host)
def close(self):
self.conn.disconnect()
def read_points(self):
for point, pointinfo in points.items():
try:
point_value = self.conn.read(pointinfo["read"])
if point in ["temperature", "humidity"]:
point_value = '%.1f'%point_value
redis_client.set(point, point_value)
except Exception as e:
print("read error", e)
bacnet_client = BacnetClient("192.168.20.65/24")
if __name__ == "__main__":
ret = bacnet_client.read_points()
print(ret)
bacnet_client.close()
总结:米尔-全志 T527,配备八核A55高性能处理器,RISC-V协处理器,支持2Tops NPU,拥有丰富的通讯接口,功能强大。非常适合工控行业,本次采用米尔的这款板卡用于原型设计,由于米尔配套的资料齐全,大大缩短了项目周期,为米尔和全志芯点赞。