一、项目背景
结合行空板的SIoT物联网服务,我们设计了一款能够图形化展示数据的可视化大屏平台。该平台不仅能够让用户轻松感知数据的大小,还能帮助判断数据的趋势。
二、方案设计
使用Mind+ 1.8.0制作物联网可视化气象站。
利用行空板自带的SIOT 2.0物联网平台进行数据存储和通信。
该项目包括大屏数据监测和文字通信系统。行空板通过云雀气象仪采集温湿度、风速、风向和大气压强等数据,并上传到物联网平台。连接可视化大屏后,学生可以直观地了解当前的气象状况,增强对生活中的气象现象的认识。
三、制作过程
硬件材料:
云雀气象仪 × 1行空板 × 14pin线 × 1
软件:
Mind+ v1.8.0
线路连接:
将行空板和云雀气象仪的Gravity接口使用4pin线连接起来。
设计可视化平台:
利用Mind+ v1.8.0的最新功能,用户可以自定义可视化平台。该平台支持多数据的可视化操作,并允许个性化面板设计。以下是一个示例的可视化面板,包括温湿度检测、风速、风向和气压的显示,以及与行空板终端的文字信息交流。
打开行空板自带的SIoT服务
SIoT服务简介:
SIoT(Smart IoT)是一款全面的智能物联网服务,具有以下主要功能:
简而言之,SIoT服务是一个全面的物联网平台,助力实现设备连接、数据处理、应用开发以及智能化和自动化的物联网解决方案。
打开SIoT服务:
使用行空板自带的SIoT服务:
打开浏览器,输入地址10.1.2.3。打开控制台,点击应用开关,启动SIoT服务。
点击打开页面,新建主题,用于采集并存储云雀气象仪的数据。
分别新建以下7个主题:温度、湿度、温湿度、风速、风向、大气压强、报告消息
编写程序:
1.将编程模式切换为Python模式。
2.加入扩展命令单元:
具体操作:点击扩展,从官方库中加入行空板、代码生成器、MQTT-py模块。
从pinpong库中加入pinpong初始化。
从用户库中加入云雀气象仪(如果之前未加入,请在以下网址搜索并添加:https://gitee.com/liliang9693/ext-yunque)。
编写图形化程序:
编写代码如下:
# -*- 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服务器已经获取到了数据并保存到数据库。
注意事项:
·在Python主程序开始前,首先拖入pinpong初始化命令,接着拖入云雀初始化,然后加入Mqtt初始化和连接模块。参数按默认设置即可。·在行空板显示对象命令中,首先定义对象,然后在循环执行中更新对象。为了代码简洁,建议使用代码生成器完成这部分工作。·在本次操作中,需要将温湿度、风速、风向和气压等测试量加入显示行列。由于图形化编程可能较为繁琐且耗时,本项目选择使用命令行形式编写代码,以实现更简洁的编程和更短的耗时。·在使用SIoT服务前,务必先打开服务并新建主题,以便在程序和可视化平台中使用。·云雀气象仪的扩展口支持扩展2个传感器,例如数字环境光传感器、氧气传感器、臭氧传感器、空气质量传感器、PM2.5空气质量传感器、二氧化碳传感器等。四、课程应用
在初中学生的信息技术学习课程中,我们将引入云雀气象仪、SIoT服务、Mind+可视化平台和行空板等工具,通过实操方式让学生掌握物联网技术的基础知识和应用。
首先,云雀气象仪是一种便携式气象监测设备,能够测量温度、湿度、气压、光照等多种环境参数。学生可以通过连接云雀气象仪到行空板上,采集实时的气象数据。
接下来,我们利用局域网内的SIoT服务来实现设备间的通信和数据传输。由于SIoT服务的使用对于初中生来说可能有些复杂,因此我们将从简单的MQTT-Py模块操作开始教学。通过编写Python代码,学生可以学习如何使用MQTT协议发送和接收消息,这是实现设备间通信的基础。
然后,我们将引导学生在SIoT服务中新建主题,这是将不同设备的数据进行分类和管理的重要步骤。通过实践,学生将理解如何根据实际需求设置主题,并将云雀气象仪采集的数据发布到相应的主题上。
为了更好地展示和分析收集到的气象数据,我们将引入Mind+可视化平台。这是一个适合初学者的图形化编程平台,可以快速创建交互式界面和数据可视化图表。学生将在平台上设计和实现一个简单的气象数据显示和分析界面,通过拖拽和配置各种图形元素,将SIoT服务中的气象数据实时显示出来。
在整个学习过程中,我们将遵循“学中做、做中学”的教学理念,通过一系列简单易懂的案例,逐步引导学生从理解基础概念到熟练操作各个工具。在SIoT服务的新建主题环节,可以先让学生创建一个通用的主题,然后逐步细化为针对不同气象参数的主题。在Mind+可视化平台的设计阶段,可以先让学生创建一个简单的数据显示界面,然后再添加数据分析和报警等功能。
通过这样的教学方式,学生不仅能掌握物联网技术的基本原理和操作方法,还能在实践中锻炼解决问题的能力和创新思维。
罗罗罗2024.04.06
666