2022年新版信息科技课程标准(2022版)明确了信息科技课程培养的核心素养:信息意识、计算思维、数字化学习与创新、信息社会责任,并将总目标在各学段具体化,其中将“在线数字气象站”作为跨学科主题纳入了物联网实践与探索模块。为帮助大家进一步的落实新课标内容要求,以及满足大班跨学科教学需求,现就云雀气象仪制作一款气象监测仪。
云雀气象仪能够测量风速、风向、温度、湿度、气压数据,可输出标准物理量数据。现在我们就mind+的物联网大屏,制作云雀气象站。
材料清单
- 云雀气象仪 X1 链接
材料清单
- 行空板 X1
材料清单
- 灯带 X1
1、3D打印制作气象仪外观材料。
2、设计界面
大屏界面
行空板界面
3、编写程序
可视化面板编辑,设置数据源。(行空板操作文档)
功能:1、物联网大屏可以控制采集器的工作与关停,并在行空板上显示相应的工作状态,采集工作进行时灯带以跑马灯的形式工作,关停时灯带停止。
2、大屏可以图文显示采集到的数据值,湿度、湿度、风向、气压值、风速和采集时间等。
知识要点:物联网大屏数据源的设置及云雀气象仪的使用(见产品文档)。
# -*- coding: UTF-8 -*-
# MindPlus
# Python
from pinpong.extension.unihiker import *
from pinpong.board import Board,Pin
from pinpong.board import NeoPixel
from DFRobot_Atmospherlum import *
from pinpong.board import Board
from unihiker import GUI
import random
import time
import siot
# 事件回调函数
def on_message_callback(client, userdata, msg):
global ztt
if ((msg.topic == "siot/qxz") and (msg.payload.decode() == "1")):
ztt = 1
if ((msg.topic == "siot/qxz") and (msg.payload.decode() == "0")):
ztt = 0
Board().begin()
u_gui=GUI()
siot.init(client_id="",server="10.1.2.3",port=1883,user="siot",password="dfrobot")
siot.connect()
siot.loop()
siot.set_callback(on_message_callback)
yunque_i2c = DFRobot_Atmospherlum_I2C(0x42)
while (yunque_i2c.begin() != 0):
print("yunque_i2c initialize failed!!")
time.sleep(1)
print("Sensor initialize success!!")
yunque_i2c.set_local_time()
time.sleep(1)
sd=u_gui.draw_image(image="在线数字气象站.jpg",x=0,y=0)
aa=u_gui.draw_text(text="数据更新时间:",x=28,y=60,font_size=8, color="#000000")
bb=u_gui.draw_text(text="风速值:",x=30,y=90,font_size=12, color="#0000FF")
cc=u_gui.draw_text(text="风向:",x=30,y=120,font_size=12, color="#0000FF")
dd=u_gui.draw_text(text="温度值:",x=30,y=150,font_size=12, color="#0000FF")
ee=u_gui.draw_text(text="温度值:",x=30,y=180,font_size=12, color="#0000FF")
sw=u_gui.draw_text(text="气压值:",x=30,y=210,font_size=12, color="#0000FF")
zt=u_gui.draw_text(text="气象站工作状态:",x=30,y=240,font_size=8, color="#CC0000")
siot.getsubscribe(topic="siot/qxz")
siot.publish_save(topic="siot/qxz", data="1")
np1 = NeoPixel(Pin((Pin.P23)),7)
np1.brightness(255)
ztt = 1
while True:
print(ztt)
if (ztt == 1):
zt.config(text="气象站工作状态:运行...")
FengSu = (yunque_i2c.get_value("speed"))
FengXiang = (yunque_i2c.get_value("dir"))
WenDu = (yunque_i2c.get_value("Temp"))
ShiDu = (yunque_i2c.get_value("Humi"))
QiYa = (yunque_i2c.get_value("Pressure"))
datetime = (yunque_i2c.get_time_stamp())
aa.config(text=(str("数据更新时间:") + str(datetime)))
bb.config(text=(str("风速值:") + str((str(FengSu) + str((yunque_i2c.get_unit("speed")))))))
cc.config(text=(str("风向:") + str(FengXiang)))
dd.config(text=(str("温度值:") + str((str(WenDu) + str((yunque_i2c.get_unit("Temp")))))))
ee.config(text=(str("湿度值:") + str((str(ShiDu) + str((yunque_i2c.get_unit("Humi")))))))
sw.config(text=(str("气压值:") + str((str(QiYa) + str((yunque_i2c.get_unit("Pressure")))))))
siot.publish_save(topic="siot/fengsu", data=FengSu)
siot.publish_save(topic="siot/fx", data=FengXiang)
siot.publish_save(topic="siot/wd", data=WenDu)
siot.publish_save(topic="siot/sd", data=ShiDu)
siot.publish_save(topic="siot/qy", data=QiYa)
siot.publish_save(topic="siot/datetime", data=datetime)
for my_variable in range(0, 7):
np1[my_variable] = ((random.randint(0, 255)),(random.randint(0, 255)),(random.randint(0, 255)))
time.sleep(0.5)
np1[my_variable] = (0,0,0)
time.sleep(2)
if (ztt == 0):
zt.config(text="气象站工作状态:停止运行...")
aa.config(text="数据更新时间:")
bb.config(text="风速值:")
cc.config(text="风向:")
dd.config(text="温度值:")
ee.config(text="温度值:")
sw.config(text="气压值:")
for my_variable in range(0, 7):
np1[my_variable] = (0,0,0)
time.sleep(1)
程序运行:
花生编程2023.07.09
赞
花生编程2023.07.09
厉害
三春牛-创客2023.07.07
赞
三春牛-创客2023.07.07
赞
三春牛-创客2023.07.07
赞
三春牛-创客2023.07.07
厉害