回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

云雀气象仪大屏 简单

头像 2023.03.07 255 6

image.png

    2022年新版信息科技课程标准(2022版)明确了信息科技课程培养的核心素养:信息意识、计算思维、数字化学习与创新、信息社会责任,并将总目标在各学段具体化,其中将“在线数字气象站”作为跨学科主题纳入了物联网实践与探索模块。为帮助大家进一步的落实新课标内容要求,以及满足大班跨学科教学需求,现就云雀气象仪制作一款气象监测仪。

12.png

  云雀气象仪能够测量风速、风向、温度、湿度、气压数据,可输出标准物理量数据。现在我们就mind+的物联网大屏,制作云雀气象站。

    

材料清单

材料清单

  • 行空板 X1

材料清单

  • 灯带 X1

1、3D打印制作气象仪外观材料。2.png

 

image.png

    2、设计界面

界面.jpg

                                                                         大屏界面

界面.png

                                                                        行空板界面

3、编写程序

 

screenshots-在线数字气象站.mp-1678158431173.png

    可视化面板编辑,设置数据源。(行空板操作文档)

image.png

功能: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)

程序运行:

 

image.png

评论

user-avatar
  • 花生编程

    花生编程2023.07.09

    0
    • 花生编程

      花生编程2023.07.09

      厉害

      0
      • 三春牛-创客

        三春牛-创客2023.07.07

        0
        • 三春牛-创客

          三春牛-创客2023.07.07

          0
          • 三春牛-创客

            三春牛-创客2023.07.07

            0
            • 三春牛-创客

              三春牛-创客2023.07.07

              厉害

              0