_shenlan_ 发表于 2023-12-27 12:59

【云雀气象仪】使用行空板监测云雀气象仪数据

本帖最后由 _shenlan_ 于 2023-12-27 12:59 编辑

# 【云雀气象仪】使用行空板监测云雀气象仪数据

## 云雀简介

- 云雀气象仪是一款集多种气象监测功能于一身的便携设备
- 可以测量风速、风向、温度、湿度以及气压等数据
- 为气象监测提供了全面的信息
- 采用了高精度的传感器,确保了测量数据的准确性
- 具备16M的存储空间,能够存储大量的气象数据,并通过Type-C接口导出进行分析
- 优秀的兼容性,可以与Arduino、Microbit、行空板等常用的开源硬件控制器连接,方便用户进行二次开发和扩展应用
- 预留了两个传感器扩展接口,以接入更多传感器
- 模块化设计,若空间不足,用户可叠加百叶扇来增加内部空间
![](https://img.dfrobot.com.cn/wiki/5cabf4771804207b131ae8cb/04e12ed54b3e468b54ce20a1628a2d75.png "云雀气象仪")
## 行空板简介

- 行空板(又称UNIHIKER)是一款由DFRobot公司自主研发的国产教学用开源硬件
- 主要设计用于Python编程教学,特别针对青少年和教育环境
- 旨在解决Python教学难度大和入门门槛高的问题,推动Python在青少年中的普及
- 设计理念是简化操作和提高教学效果,其用户界面友好,操作步骤简单
- 师生能够快速上手并投入到编程学习中
- 开源的特性,用户不仅可以学习编程基础知识,还可以探索更深层次的硬件控制和系统定制,从而提升创新能力和实践技能
![](https://img.dfrobot.com.cn/wiki/none/61788796a3fd1aa3d6d31b8e618a0e44.png "行空板")
## 电路连接

- 使用4pinIIC接线将云雀数据接入行空板
![](https://img.dfrobot.com.cn/wiki/5cabf4771804207b131ae8cb/9bc27b3b15554c0bf8cfbe159c10d108.png)
![](https://cdn-us.imgs.moe/2023/12/19/IMG_20231219_151234_j0Ey5zbGV5.jpg)

## 编写程序

### 软件安装

- 下载安装最新版的Mind+软件,打开后切换编程模式为Python模式
![](https://cdn-us.imgs.moe/2023/12/19/python模式_UHdWsxUEaG.jpg)


### 选择扩展

- 点击左侧命令工具栏中的扩展,将行空板和代码生成器(官方库选项卡)Pinpong初始化(pinpong库)和用户库中的云雀气象仪选择(如没有云雀气象仪,请输入以下网址搜索https://gitee.com/liliang9693/ext-yunque)
![](https://cdn-us.imgs.moe/2023/12/19/扩展01_XeCf7OYv4J.jpg)

![](https://cdn-us.imgs.moe/2023/12/19/扩展02_3Kv9ANjaXW.jpg)

![](https://cdn-us.imgs.moe/2023/12/19/扩展03_H4UhDu60IW.jpg)

### 编写图形化程序

![](https://cdn-us.imgs.moe/2023/12/19/简单测云雀_ggKQpv5dAz.jpg)


python代码如下:
'''python

#-*- 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


Board().begin()
u_gui=GUI()
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)

a=u_gui.draw_text(text="",x=0,y=20,font_size=20, color="#0000FF")
b=u_gui.draw_text(text="",x=0,y=300,font_size=10, color="#0000FF")

while True:
    text="当前气象站数据如\n下:温度、湿度、\n风速、风向、气压"
    text=text+"\n"+str((yunque_i2c.get_value("Temp")))+","+str((yunque_i2c.get_value("Humi")))+","+str((yunque_i2c.get_value("Speed")))+","+str((yunque_i2c.get_value("Dir")))+",\n"+str((yunque_i2c.get_value("Pressure")))
    a.config(text=(str(text) + str((yunque_i2c.get_unit("Pressure")))))
    b.config(text=time.strftime("%Y/%m/%d %H:%M:%S"))
    time.sleep(1)


'''
连接行空板,运行程序观察云雀气象仪的数据变化。
![](https://cdn-us.imgs.moe/2023/12/19/1702971019863_VWGibciy8O.jpg)

![](https://cdn-us.imgs.moe/2023/12/19/1702971045386_4NKSpvcxiH.jpg)
本例中格式特别简单,接着设计一款美观漂亮的的气象数据图
图形化程序如下:

![](https://cdn-us.imgs.moe/2023/12/19/行空板测数据截图_8SfbyTZCmQ.jpg)
python代码如下:
'''python

#-*- 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
from math import *
import time


Board().begin()
u_gui=GUI()
altitude = 0
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)

bg=u_gui.draw_image(image="背景.jpg",x=0,y=0)
title=u_gui.draw_text(text="   黄河中学气象站",x=0,y=0,font_size=20, color="#0000FF")
temp=u_gui.draw_image(image="温度.png",x=0,y=80)
hum=u_gui.draw_image(image="湿度.jpg",x=130,y=80)
f1=u_gui.draw_line(x0=0,y0=150,x1=240,y1=150,width=2,color="#0000FF")
wd=u_gui.draw_image(image="风向.jpg",x=0,y=160)
speed=u_gui.draw_image(image="风速.jpg",x=130,y=160)
f2=u_gui.draw_line(x0=0,y0=230,x1=240,y1=230,width=2,color="#0000FF")
altitude=u_gui.draw_image(image="海拔.jpg",x=0,y=240)
pressure=u_gui.draw_image(image="气压.jpg",x=130,y=240)
N_temp=u_gui.draw_text(text="",x=60,y=90,font_size=15, color="#0000FF")
N_hum=u_gui.draw_text(text="",x=190,y=90,font_size=15, color="#0000FF")
N_wd=u_gui.draw_text(text="",x=60,y=170,font_size=15, color="#0000FF")
N_speed=u_gui.draw_text(text="",x=190,y=170,font_size=15, color="#0000FF")
N_altitude=u_gui.draw_text(text="",x=60,y=250,font_size=15, color="#0000FF")
N_pressure=u_gui.draw_text(text="",x=190,y=250,font_size=15, color="#0000FF")
times=u_gui.draw_text(text="当前时间",x=0,y=290,font_size=10, color="#0000FF")

while True:
    time.sleep(2)
    temp = (float("123"))
    pressure = (float("123"))
    altitude=int(0.287*(273+temp)/9.8*log(100000/pressure*100))
    N_temp.config(text=(str((yunque_i2c.get_value("Temp"))) + str((yunque_i2c.get_unit("Temp")))))
    N_hum.config(text=(str((yunque_i2c.get_value("Humi"))) + str((yunque_i2c.get_unit("Humi")))))
    N_wd.config(text=(yunque_i2c.get_value("Dir")))
    N_speed.config(text=(str((yunque_i2c.get_value("Speed"))) + str((yunque_i2c.get_unit("Speed")))))
    N_altitude.config(text=altitude)
    N_pressure.config(text=(str((yunque_i2c.get_value("Pressure"))) + str((yunque_i2c.get_unit("Pressure")))))
    times.config(text=time.strftime("%Y/%m/%d %H:%M:%S"))


'''
连接行空板,运行程序观察效果。
![](https://cdn-us.imgs.moe/2023/12/19/1702971126684_5FT0xhYeuj.jpg)



- 注意事项:
- Python主程序开始前,首先拖入pinpong初始化命令。接着拖入云雀初始化。参数按默认即可。
- 在行空板显示对象命令中,首先定义对象,接着在循环执行中更新对象。
- 在本次操作中,需要将温湿度,风速,风向气压等很多的测试量加入显示行列。使用图形化编程较为繁琐而且耗时。我使用命令行的形式,代码更加简洁,耗时更短。

## 课程应用

在信息技术与科学新课程标准中,我们鼓励学生通过实践和探索来学习。为了让同学们更好地了解云雀气象仪和行空板,我们不仅让老师编写行空板的程序,还让学生自己尝试编写属于自己的程序代码。
- 首先老师向同学们介绍云雀气象仪和行空板的基本原理和使用方法。
- 然后老师示范如何编写一个简单的程序用于读取云雀气象仪的数据并将其显示在行空板上。
- 同学们接着被划入1-2个小组,每个小组负责编写一个程序用于监测校园内的温湿度风速和气压等气象状况。在编写程序的过程中学生们需要运用他们所学的编程知识和技能解决实际问题例如他们需要考虑如何从云雀气象仪获取数据如何在行空板上显示数据,这个过程不仅可以锻炼学生们的编程能力还可以提高他们的团队协作能力和解决问题的能力。
- 在程序编写完成后每个小组都会测试自己的程序。他们会将云雀气象仪放在校园的不同位置观察并记录下各个位置的温湿度风速和气压等气象状况然后他们会将这些数据输入到自己的程序中看看程序是否能正确地读取和显示这些数据。
通过这个过程学生们不仅可以了解到云雀气象仪和行空板的工作原理还可以发现和解决实际问题。他们会发现编程不仅仅是在电脑前敲代码更是一种解决问题的工具同时他们也会获得关于气象学的一些基本知识如温湿度风速和气压等概念。

!["同学们积极使用云雀气象仪"]("同学们积极使用云雀气象仪")

## 总结本方案的优缺点

### 优点:

- 电路连接简单:这使得设备的安装和调试过程相对容易降低了操作难度同时也减少了可能出现的问题和故障。
- 直接从行空板读出云雀的测量数据:这种方式能够快速准确地获取云雀的测量数据为后续的数据处理和分析提供了便利。
- 学生容易上手提起学生的兴趣:由于设备操作相对简单且具有一定的趣味性因此能够激发学生的学习热情提高学习效果。
- 可操作性强任何功能可以通过编程获得:这使得设备的功能更加灵活可以根据实际需求进行定制和扩展提高了设备的实用性和适应性。

### 缺点:

- 行空板没有通过编程加入存储数据的功能:这意味着在设备运行过程中无法将测量数据保存下来只能实时读取和分析数据。
- 携带不便:由于增加了行空板设备使得整个系统的体积和重量都增加。
- 需要手动编写程序显示云雀的测量数据:可能需要一定的学习和实践才能掌握编程技能,增加了使用的难度。
- 编程加入功能越多,程序越复杂::随着设备以及功能的增加,编程程序也会变得更加复杂和繁琐,需要投入更多的时间和精力进行开发和维护。

秦天qintian0303 发表于 2023-12-28 15:35

<p>通过Type-C接口导出,这个气象仪的数据接口到底有哪些?&nbsp;</p>

wangerxian 发表于 2023-12-31 21:04

<p>下回我也要尝试一下,这种模块化的编程。</p>

_shenlan_ 发表于 2024-1-6 15:55

秦天qintian0303 发表于 2023-12-28 15:35
通过Type-C接口导出,这个气象仪的数据接口到底有哪些?&nbsp;

<p>云雀气象仪使用Type-C接口插到电脑USB接口上,电脑中出现新的盘符,在该磁盘中就有云雀气象仪的存储的数据。</p>

_shenlan_ 发表于 2024-1-6 15:56

wangerxian 发表于 2023-12-31 21:04
下回我也要尝试一下,这种模块化的编程。

<p>记得要试试哦</p>
页: [1]
查看完整版本: 【云雀气象仪】使用行空板监测云雀气象仪数据