【背景】
物联网(IoT)是继互联网之后的新型信息基础设施,是推动大数据和人工智能等信息科技发展和普及不可或缺的重要组成部分。物联网的出现极大地拓展了人们的学习、生活和工作空间,推动了物理世界与数字世界的相互融合。
智能家居作为物联网的典型应用之一,是在互联网影响之下物联化的体现,也是较为贴近学生生活的物联系统。 本节课以此为例,引导学生思考实现“智能家居”的关键因素-物物互联,从而让学生在实例中理解物联网的概念,初步体会物联网的实现离不开数据。分组制作“校园物联网系统控制大屏”,模拟控制教室内的风扇、灯等,让学生在案例的体验、探究中增强信息意识。
【环境】
Mind+编程软件、可视化面板,行空板,摄像头x2,传感器。
【目标】
了解物联网中控制与反馈的实现过程。使用行空板加传感器对环境亮度,声音大小进行显示,同时两个摄像头也可以更好地监控学生的行为。
【正式过程】
1.行空板连接电脑:
2.编程:
采用python编程,在原生IDE中编程:
import base64
from io import BytesIO
from PIL import Image
from pinpong.extension.unihiker import *
from pinpong.board import Board,Pin
from unihiker import Audio
from unihiker import GUI
import random
import math
import time
import siot
import cv2
def u_thread1_function():
time.sleep(5)
siot.publish_save(topic="siot/jiasudu", data=(int((accelerometer.get_strength() * 100))))
siot.init(client_id="61034410562427",server="192.168.1.17",port=1883,user="siot",password="dfrobot")
u_gui=GUI()
Board().begin()
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)
siot.publish_save(topic="siot/实时模式5", data=(random.randint(80, 100)))
siot.publish_save(topic="siot/Student", data=(random.randint(32, 40)))
canvas3=u_gui.draw_emoji(emoji="Sweat",x=0,y=0,duration=0.2)
canvas4=u_gui.draw_emoji(emoji="Smile",x=0,y=0,duration=0.2)
while True:
ret, grab = vd.read()
siot.publish(topic="siot/实时模式2", data=base642base64(grab))
siot.publish_save(topic="siot/guangzhao", data=light.read())
siot.publish(topic="siot/shengyin", data=u_audio.sound_level())
siot.publish(topic="siot/shengyin", data=u_audio.sound_level())
thread1=u_gui.start_thread(u_thread1_function)

4.可视化面板
连接行空板本地物联网IP,示例:“192.168.1.13”,并对各组件与对应主题进行配置。
5.展示

【反思】
因时间限制和安全方面等原因,不能使用物联网实际搭建以及量化使用等是本此尝试内容的遗憾。
感谢各位的阅读[广告: 有空到我网站逛逛?~ https://devcat.cn/]
# -*- coding: UTF-8 -*-
# MindPlus
# Python
import base64
from io import BytesIO
from PIL import Image
from pinpong.extension.unihiker import *
from pinpong.board import Board,Pin
from unihiker import Audio
from unihiker import GUI
import random
import math
import time
import siot
import cv2
# 事件回调函数
def u_thread1_function():
time.sleep(5)
siot.publish_save(topic="siot/jiasudu", data=(int((accelerometer.get_strength() * 100))))
siot.init(client_id="61034410562427",server="192.168.1.17",port=1883,user="siot",password="dfrobot")
u_gui=GUI()
Board().begin()
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)
print("链接成功!")
siot.publish_save(topic="siot/实时模式5", data=(random.randint(80, 100)))
siot.publish_save(topic="siot/Student", data=(random.randint(32, 40)))
canvas=u_gui.draw_text(text=" 智能行空板",x=0,y=0,font_size=20, color="#0000FF")
canvas3=u_gui.draw_emoji(emoji="Sweat",x=0,y=0,duration=0.2)
canvas4=u_gui.draw_emoji(emoji="Smile",x=0,y=0,duration=0.2)
while True:
ret, grab = vd.read()
siot.publish(topic="siot/实时模式2", data=base642base64(grab))
print("2")
siot.publish_save(topic="siot/guangzhao", data=light.read())
print(light.read())
siot.publish(topic="siot/shengyin", data=u_audio.sound_level())
print("2")
siot.publish(topic="siot/shengyin", data=u_audio.sound_level())
print("2")
thread1=u_gui.start_thread(u_thread1_function)
print("2")
附件
花生编程2023.08.08
不错不错
花生编程2023.08.08
厉害厉害
三春牛-创客2023.08.05
赞赞赞赞
三春牛-创客2023.08.05
厉害厉害
腿毛利小五郎2023.06.19
学习学习