物联网挑战赛—校园&居家物联网集控
2023-05-27248
AI 快速预览详细
本文介绍了如何利用行空板和Mind+1.8可视化面板,模拟制作一款自制的集控设备,实现家庭监控、噪音侦测及远程控制灯光和空调。通过opencv和base64用户库,可以实时显示家中情况;利用行空板上的响度传感器和可视化面板上的折线图控件,可以实时侦测并显示当前噪音值。整个项目同样适用于校园教室内,进一步体验物联网智能家居。
居家物联网集控设计:
目前市面上有很多家庭监控设备,利用mind+1.8可视化面板结合行空板,尝试模拟制作一款自制的集控设备,同时尝试控制家里的空调、灯光等设备,达到一体化控制。
解决方法:
1.根据直播王老师的介绍,利用opencv和base64的用户库,将实时拍到的画面进行显示,可以直接了解家里目前的情况。
2.利用行空板上的响度传感器,实时侦测当前噪音值,并在可视化面板上进行显示。
3.利用可视化面板上的折线图控件,显示噪音值的实时趋势,了解噪音变化情况。
4.加入日历和时钟,实时显示时间。
5.使用可视化面板上的开关按钮,控制家里灯光和空调,可以起到远程开启和关闭的效果。(目前程序还没达到这个效果)
整个内容同样可以适用于校园教室内,控制日光灯和电风扇的开启与关闭,加入智能判断可进一步起到节能作用。项目可复制、可操作性强,同时经过本项目的学习也可以进一步体验物联网智能家居,实践新课标主题内容。

代码
# -*- coding: UTF-8 -*-
# MindPlus
# Python
import base64
from io import BytesIO
from PIL import Image
from unihiker import Audio
import time
import siot
import cv2
siot.init(client_id="958466670138278",server="192.168.3.46",port=1883,user="siot",password="dfrobot")
u_audio = Audio()
siot.connect()
siot.loop()
def frame2base64(frame):
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
img = Image.fromarray(frame) #将每一帧转为Image
output_buffer = BytesIO() #创建一个BytesIO
img.save(output_buffer, format='JPEG') #写入output_buffer
byte_data = output_buffer.getvalue() #在内存中读取
base64_data = base64.b64encode(byte_data) #转为BASE64
return base64_data #转码成功 返回base64编码
def base642base64(frame):
data=str('data:image/png;base64,')
base64data = str(frame2base64(frame))
framedata = base64data[2:(len(base64data)-1)]
base642base64_data = data + str(framedata)
return base642base64_data
vd = cv2.VideoCapture()
vd.open(0)
while True:
ret, grab = vd.read()
siot.publish(topic="siot/实时模式1", data=base642base64(grab))
siot.publish_save(topic="siot/实时模式2", data=u_audio.sound_level())
time.sleep(1)
附件



