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

#物联网挑战赛#——校园物联网气象站 简单

头像 ziyuboy 2023.05.29 252 4

一、项目介绍:

1.背景介绍:

  信息科技课标中第四学段提到结合跨学科主题“在线数字气象站”,让学生进行“物联网实践与探索”的内容学习。

fe98c3def25a4e60a957d6c77375233d.png

  校园物联网气象站项目,让学生使用行空板,通过连接常用的声音、湿度、温度、光线等传感器,配合SIOT物联网平台,实时描绘校园气象的信息状态,探寻数据的变化规律。校园物联网气象站能为学校提供实时的温度、湿度、风速、风向等方面的数据监测,帮助学生开展气象实践,进一步加强学生对于科技的认知,增强互联智能设计能力。

 

2.遇到的问题:

  校园物联网气象站,既需要有质量过硬、侦测数据准确的传感器,又需要有物联网平台的支撑进行实时数据采集和处理。

  采购整体的校园气象站硬件,价格昂贵,不能满足让学生进行互联智能设计的需要。物联网平台要保障数据稳定采集、实时传输、信息量大,而多数物联网平台达到一定数据量后需要交费才能使用,且依赖互联网网络的支持。

 

二、制作过程:

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

  (1)确定项目需求:制作一个能实时显示室内与室外不同环境中温度、湿度、光照、噪声等数据的校园物联网气象站。数据的实时显示,让孩子们看出气象数据的变化规律,并进行直观的数据对比。室内环境的实时画面,让气象站更有真实感。

  (2)整理现有硬件:行空板(板载声音、光线传感器)、DHT11温湿度传感器、连接线若干。

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

 

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

(1)在使用行空板调试的过程中,出现提示:AttributeError: module 'siot' has no attribute 'publish_save'

  解决办法:

  需要升级siot库,即:板子联网,然后终端运行 pip install -U siot。可见官方文档:https://www.unihiker.com.cn/wiki/pip_install

(2)行空板上的SIOT正常用着,突然就连不上了。SIOT无法登录,可视化面板提示连接失败。

  故障原因:在查看电脑网络连接时,把SIOT生成的本地连接给禁用了。该本地连接启用后,问题解决。

(3)可视化面板中,想显示摄像头画面,使用命令也与直播中使用的积木相同,却出现下面的提示:

微信图片_20230529122922.jpg

  李工@liliang9693 将该程序实地操作后,却一切正常,并将使用摄像头的代码进行了优化,同时添加案例教程:https://mindplus.dfrobot.com.cn/dashboard#target_16    

  通过学习案例教程,发现把USB摄像头插到了笔记本电脑上是不对的。将USB摄像头插到行空板,重新运行程序,故障解除。

 

三、资源

1.代码:

代码
#  -*- 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 pinpong.board import DHT22
from pinpong.board import DHT11
from pinpong.board import Board
from unihiker import Audio
import time
import siot
import cv2


Board().begin()
siot.init(client_id="6043251182327172",server="10.1.2.3",port=1883,user="siot",password="dfrobot")
u_audio = Audio()
siot.connect()
siot.loop()
dht1 = DHT11(Pin((Pin.P21)))
dht1 = DHT22(Pin((Pin.P21)))

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.getsubscribe(topic="siot/光线")
siot.getsubscribe(topic="siot/声音")
siot.getsubscribe(topic="siot/温度")
siot.getsubscribe(topic="siot/湿度")
siot.getsubscribe(topic="siot/温湿对照")
siot.getsubscribe(topic="siot/温湿柱")
siot.getsubscribe(topic="siot/画面")
siot.getsubscribe(topic="siot/日期")

while True:
    ret, grab = vd.read()
    siot.publish(topic="siot/画面", data=base642base64(grab))
    siot.publish_save(topic="siot/声音", data=u_audio.sound_level())
    siot.publish_save(topic="siot/光线", data=light.read())
    siot.publish_save(topic="siot/温度", data=dht1.temp_c())
    siot.publish_save(topic="siot/湿度", data=dht1.humidity())
    siot.publish_save(topic="siot/日期", data=time.strftime("%Y年%m月%d日"))
    siot.publish_save(topic="siot/温湿对照", data=(str((str(dht1.temp_c()) + str(","))) + str(dht1.humidity())))
    siot.publish_save(topic="siot/温湿柱", data=(str((str((str((str((str((str((str((str((str(dht1.temp_c()) + str("|"))) + str(dht1.humidity()))) + str(","))) + str((str((str(dht1.temp_c()) + str("|"))) + str(dht1.humidity()))))) + str(","))) + str((str((str(dht1.temp_c()) + str("|"))) + str(dht1.humidity()))))) + str(","))) + str((str((str((str(dht1.temp_c()) + str("|"))) + str(dht1.humidity()))) + str(","))))) + str((str((str(dht1.temp_c()) + str("|"))) + str(dht1.humidity())))))
    time.sleep(1)

2.源文件:

微信图片_20230529110839.png
微信图片_20230529110933.png

 

 

四、总结:

1.作品的完成度:

   校园物联网气象站,将最常见的温湿度、光照和噪声等数据进行实时显示,选取了室内和室外的“开心农场”作为采集数据的地点,利用SIOT平台实现了本地化的服务平台布署,具备了简易校园气象站的呈现效果。

 

2.可改善的空间:

  硬件方面,使用多块行空板,接入更多的传感器,让气象站的数据更加丰富。软件方面,选取适合的可视化面板组件,让气象站的呈现界面更加美观,区块划分更加合理,更利于气象数据的实时显示和对比。 

 

五、作品演示:

评论

user-avatar
  • 花生编程

    花生编程2023.07.30

    赞赞赞赞赞

    0
    • 花生编程

      花生编程2023.07.30

      厉害厉害

      0
      • 三春牛-创客

        三春牛-创客2023.07.27

        不错不错

        0
        • 三春牛-创客

          三春牛-创客2023.07.27

          厉害厉害

          0