回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页
best-icon

物联网挑战赛+智慧校园可视化数据平台 简单

头像 qzs1982 2023.05.31 140 4

一、项目介绍:

1.背景介绍:

        2022版信息科技新课标第四学段跨学科主题之一:"未来智能场景畅想”,所以安排物联网实验教学——让学生进行"物联网实践与探索"的内容学习。

        通过本项目让学生学会使用掌控板,配合SIOT物联网平台,实时控制教室各模块的信息状态,同时探寻数据的变化规律。本项目能为学生提供实时灯光开关、颜色变化、亮度控制,同时能实时监控教室,帮助学生体验物联网实践与探索,进一步加强学生对于科技的认知,增强互联智能设计能力。

2.遇到的问题:

        教室监控系统,既需要有质量过硬、侦测数据准确的传感器,又需要有物联网平台的支撑进行实时数据采集和处理。

        采购整体的监控系统硬件,价格昂贵,不能满足让学生进行互联智能设计的需要,一般物联网平台需要付费才能使用,且依赖互联网网络的支持,而采用slot本地服务器比较适合学校日常教学。

二、制作过程:

1.创意实现的过程、步骤:

(1)确定项目需求:制作一个能实时控制室内灯光控制系统、灯光系统数据的实时显示以及教室实时监控,让孩子们能体验本项目学习与实践。

(2)硬件准备:掌控板(板载声音、光线传感器)、台式机摄像头。

(3)完成程序编写和调试。

2.在制作过程中发现的问题:

在mind+、python模式下加载opencv模块编程实现抓取摄像头画面,在实践中发现创建视频对象videocapture对象,使用对象打开视频或设备时,程序出现失败的提示。

解决办法:确保摄像头与计算机连接正常,驱动安装正确;

三、作品演示

四、总结:

 

1.作品的完成度:

 

   智慧教室,利用掌控板的板载传感器模拟将教室最常见的光照和噪声等数据进行实时显示,利用SIOT平台实现了教室灯光远程控制与监控,具备了简易智慧教室的呈现效果。

 

 

2.可改善的空间:

 

硬件方面,使用开源硬件(掌控板、行空板、arduino、micro:bit),接入更多的传感器、电子执行部件(如舵机模拟电风扇或空调),让智慧教室的数据更加丰富。软件方面,选取适合的可视化面板组件,让智慧教室的呈现界面更加美观,区块划分更加合理;程序还需要优化的空间,使利用语音合成的效果与控制效果同步; 

 

五、资源:(代码+源文件)

1.程序代码部分:网络监控

网络监控程序截图.png

掌控板LED控制代码部分

代码截图.jpg

 

 

 

 

 

2.python代码见下:

代码
#  -*- coding: UTF-8 -*-

# MindPlus
# Python
import base64
from io import BytesIO
from PIL import Image
import siot
import cv2


siot.init(client_id="05277883028804675",server="192.168.10.100",port=1883,user="siot",password="dfrobot")
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
print("MQTT  ok")
vd = cv2.VideoCapture()
vd.open(0)
if vd.isOpened():
    print("视频ok")
    while not (cv2.waitKey(20) & 0xff== 27):
        ret, img = vd.read()
        siot.publish(topic="siot/实时模式1", data=base642base64(img))
    vd.release()
    cv2.destroyAllWindows()
    siot.stop()

附件

评论

user-avatar
  • 花生编程

    花生编程2023.08.03

    赞赞赞

    0
    • 花生编程

      花生编程2023.08.03

      厉害厉害

      0
      • 三春牛-创客

        三春牛-创客2023.07.31

        赞赞赞赞

        0
        • 三春牛-创客

          三春牛-创客2023.07.31

          厉害厉害

          0