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

使用云雀气象仪助力物联网可视化气象站 简单

头像 _深蓝_ 2024.03.12 90 1

一、项目背景

 

结合行空板的SIoT物联网服务,我们设计了一款能够图形化展示数据的可视化大屏平台。该平台不仅能够让用户轻松感知数据的大小,还能帮助判断数据的趋势。

Psiot_TIazobYwAz.png

 

二、方案设计

 

使用Mind+ 1.8.0制作物联网可视化气象站。

利用行空板自带的SIOT 2.0物联网平台进行数据存储和通信。

该项目包括大屏数据监测和文字通信系统。行空板通过云雀气象仪采集温湿度、风速、风向和大气压强等数据,并上传到物联网平台。连接可视化大屏后,学生可以直观地了解当前的气象状况,增强对生活中的气象现象的认识。

 

三、制作过程

 

硬件材料:

 

云雀气象仪 × 1行空板 × 14pin线 × 1 

软件:

 

Mind+ v1.8.0 

线路连接:

 

将行空板和云雀气象仪的Gravity接口使用4pin线连接起来。

9bc27b3b15554c0bf8cfbe159c10d108.png

 

设计可视化平台:

 

利用Mind+ v1.8.0的最新功能,用户可以自定义可视化平台。该平台支持多数据的可视化操作,并允许个性化面板设计。以下是一个示例的可视化面板,包括温湿度检测、风速、风向和气压的显示,以及与行空板终端的文字信息交流。

 

数据可视化_QrVTMpaPM6.jpg

 

打开行空板自带的SIoT服务

 

SIoT服务简介:
    SIoT(Smart IoT)是一款全面的智能物联网服务,具有以下主要功能:

连接多种物联网设备(如传感器、执行器等),通过标准通信协议进行数据交换。实时采集设备数据(如温度、湿度、位置等),用于监控状态和环境变化。提供数据处理和分析能力,包括数据过滤、聚合、报警等,以发现异常、预测趋势和优化性能。支持快速开发各种物联网应用(如智能家居、工业自动化等),提供API接口和开发工具。注重数据安全和服务可靠性,采用加密技术保护数据传输,冗余备份和故障恢复保证服务连续性。

    简而言之,SIoT服务是一个全面的物联网平台,助力实现设备连接、数据处理、应用开发以及智能化和自动化的物联网解决方案。

 

打开SIoT服务:

 

    使用行空板自带的SIoT服务:

    打开浏览器,输入地址10.1.2.3。
行空板后台_azvCh2wMym.jpg

打开控制台,点击应用开关,启动SIoT服务。

 

运行Slot_vQqsSL7bul.jpg

 

点击打开页面,新建主题,用于采集并存储云雀气象仪的数据。

 

siot_svcTGC7hjY.jpg

 

分别新建以下7个主题:温度、湿度、温湿度、风速、风向、大气压强、报告消息 

编写程序:

 

1.将编程模式切换为Python模式。

2.加入扩展命令单元:

具体操作:点击扩展,从官方库中加入行空板、代码生成器、MQTT-py模块。

从pinpong库中加入pinpong初始化。

从用户库中加入云雀气象仪(如果之前未加入,请在以下网址搜索并添加:https://gitee.com/liliang9693/ext-yunque)。

编写图形化程序:

 

积木程序_wtPI0q3isS.jpg

 

编写代码如下:

 

 

代码

#  -*- coding: UTF-8 -*-

# MindPlus
# Python
import sys
sys.path.append("/root/mindplus/.lib/thirdExtension/liliang-yunque-thirdex")
from DFRobot_Atmospherlum import *
from pinpong.board import Board
from unihiker import GUI
import time
import siot

# 事件回调函数
def on_message_callback(client, userdata, msg):
    if (msg.topic == "siot/报告消息"):
        s_message.config(text=(str(time.strftime("%H:%M:%S")) + str((str(":") + str(msg.payload.decode())))))

siot.init(client_id="16698909563024067",server="10.1.2.3",port=1883,user="siot",password="dfrobot")
Board().begin()
u_gui=GUI()
siot.connect()
siot.loop()
siot.set_callback(on_message_callback)
siot.getsubscribe(topic="siot/报告消息")
yunque_i2c = DFRobot_Atmospherlum_I2C(0x42)
while (yunque_i2c.begin() != 0):
    print("yunque_i2c initialize failed!")
    time.sleep(1)
print("Sensor initialize end!")
yunque_i2c.set_local_time()
time.sleep(1)

u_gui.draw_text(text="物联网可视化云雀\n气象仪数据发送端",x=20,y=10,font_size=15, color="#0000FF")
s_temp=u_gui.draw_text(text="",x=0,y=80,font_size=13, color="#0000FF")
s_speed=u_gui.draw_text(text="",x=0,y=130,font_size=13, color="#0000FF")
s_pressure=u_gui.draw_text(text="",x=0,y=180,font_size=13, color="#0000FF")
s_message=u_gui.draw_text(text="暂无消息",x=0,y=230,font_size=13, color="#0000FF")
s_time=u_gui.draw_text(text=time.strftime("%Y/%m/%d %H:%M:%S"),x=0,y=280,font_size=13, color="#0000FF")

while True:
    temp=yunque_i2c.get_value("Temp");humi=yunque_i2c.get_value("Humi");speed=yunque_i2c.get_value("Speed");dir=yunque_i2c.get_value("Dir");pressure=yunque_i2c.get_value("Pressure")
    # 以上代码的作用:将云雀气象仪采集的数据赋值给变量。
    s_temp.config(text="温湿度:"+temp+'℃,'+humi+'%.');s_speed.config(text="风速和风向:{}m/s,{}方向。".format(speed,dir));s_pressure.config(text="大气压强:{}hpa。".format(pressure));s_time.config(text=time.strftime("%Y/%m/%d %H:%M:%S"))
    # 该代码将云雀气象仪的采集数据显示在行空板上。
    siot.publish_save(topic="siot/温度", data=temp)
    siot.publish_save(topic="siot/湿度", data=humi)
    siot.publish_save(topic="siot/温湿度", data=(str(temp) + str((str(",") + str(humi)))))
    siot.publish_save(topic="siot/风速", data=speed)
    siot.publish_save(topic="siot/风向", data=dir)
    siot.publish_save(topic="siot/大气压强", data=pressure)
    time.sleep(300)

程序运行时,行空板显示当前的温湿度、风速、风向、大气压强和通信消息等信息。siot服务器已经获取到了数据并保存到数据库。

 

siot总数据一览_UugFGL1Seg.jpg

 

siot风速数据_nGzhtF8h32.jpg

 

siot大气压强数据_yxnuj5ZXrd.jpg

注意事项:

·在Python主程序开始前,首先拖入pinpong初始化命令,接着拖入云雀初始化,然后加入Mqtt初始化和连接模块。参数按默认设置即可。·在行空板显示对象命令中,首先定义对象,然后在循环执行中更新对象。为了代码简洁,建议使用代码生成器完成这部分工作。·在本次操作中,需要将温湿度、风速、风向和气压等测试量加入显示行列。由于图形化编程可能较为繁琐且耗时,本项目选择使用命令行形式编写代码,以实现更简洁的编程和更短的耗时。·在使用SIoT服务前,务必先打开服务并新建主题,以便在程序和可视化平台中使用。·云雀气象仪的扩展口支持扩展2个传感器,例如数字环境光传感器、氧气传感器、臭氧传感器、空气质量传感器、PM2.5空气质量传感器、二氧化碳传感器等。 

四、课程应用

 

       在初中学生的信息技术学习课程中,我们将引入云雀气象仪、SIoT服务、Mind+可视化平台和行空板等工具,通过实操方式让学生掌握物联网技术的基础知识和应用。

首先,云雀气象仪是一种便携式气象监测设备,能够测量温度、湿度、气压、光照等多种环境参数。学生可以通过连接云雀气象仪到行空板上,采集实时的气象数据。

接下来,我们利用局域网内的SIoT服务来实现设备间的通信和数据传输。由于SIoT服务的使用对于初中生来说可能有些复杂,因此我们将从简单的MQTT-Py模块操作开始教学。通过编写Python代码,学生可以学习如何使用MQTT协议发送和接收消息,这是实现设备间通信的基础。

然后,我们将引导学生在SIoT服务中新建主题,这是将不同设备的数据进行分类和管理的重要步骤。通过实践,学生将理解如何根据实际需求设置主题,并将云雀气象仪采集的数据发布到相应的主题上。

       为了更好地展示和分析收集到的气象数据,我们将引入Mind+可视化平台。这是一个适合初学者的图形化编程平台,可以快速创建交互式界面和数据可视化图表。学生将在平台上设计和实现一个简单的气象数据显示和分析界面,通过拖拽和配置各种图形元素,将SIoT服务中的气象数据实时显示出来。

        在整个学习过程中,我们将遵循“学中做、做中学”的教学理念,通过一系列简单易懂的案例,逐步引导学生从理解基础概念到熟练操作各个工具。在SIoT服务的新建主题环节,可以先让学生创建一个通用的主题,然后逐步细化为针对不同气象参数的主题。在Mind+可视化平台的设计阶段,可以先让学生创建一个简单的数据显示界面,然后再添加数据分析和报警等功能。

通过这样的教学方式,学生不仅能掌握物联网技术的基本原理和操作方法,还能在实践中锻炼解决问题的能力和创新思维。

 

IMG_20231222_141322(1)_czOe2pq41O.jpg

 

五、附件

评论

user-avatar
  • 罗罗罗

    罗罗罗2024.04.06

    666

    0