0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

超声波气象站搭建指南

涂鸦开发者 2022-03-24 15:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文将展示如何基于涂鸦智能平台搭建一个属于自己的超声波气象站!

超声波气象站的测量维度包括:

- 温度测量(DHT22)

- 湿度测量(DHT22)

- 气压测量(BMP180)

- 风向、风速测量(防水超声波测距模组)

- 紫外线等级测量(CJMCU-GUVA-S12SD

- PM2.5测量(GP2Y1014AU)

也就是六个维度的气象信息的测量!

气象站采用ESP32作为主控,使用Arduino平台进行开发,开发IDE为Visual Studio Code + Platform IO

物联网通讯方面使用涂鸦WBR3模组,使用低代码MCU开发形式。控制界面(APP)使用涂鸦的客制化面板。

Q1: 什么是超声波气象站?

A1: 超声波气象站是利用超声波模组对声速进行测量的一种气象站。由于风速会引起声速的变化:超声波顺风传播时,声速会加快;逆风时风速将减慢;通过测量一组正交的声速矢量,进行合成分析后可以分析出当前的风速、风向信息。

Q2: 超声波气象站有什么优点?

A2: 传统的气象站对于风向和风速的测量通常使用风向仪和风速仪,这两种仪器都具有转动的机械结构,体积庞大、寿命较短。使用超声波对风速、风向测量可以压缩气象站体积、提高气象站寿命。

Q3: 为什么选择涂鸦平台?

A3: 涂鸦平台的开发比较省事。在MCU低代码开发的方式中,可以通过网页实现对APP的设计,而且一些常用的组件也非常精美。

系统框架

pYYBAGI64muATjkRAACsyoicgyM570.png

如何利用超声波对风速进行测量

pYYBAGI65leAI2McAAAv5gPCUhk344.png

超声波探头布置如图所示,两组探头互相垂直分布。

- 此时若A组探头间距离S已知,声速C已知,且此时风速为0。则此时超声波的行进速度T为声速,可算出无风时超声波从发射探头移动到接收探头的时间T1=S/C。

- 若此时存在风向为发射探头指向接收探头,风速为1m/s的风,则超声波行进速度变为C+1m/s,同样可以算出该情况下超声波从发射探头移动到接收探头的时间T2=S/(C+1)。

在距离已知、声速已知的情况下,通过获取超声波模块返回的超声波行进时间T2,可以推算出A组探头方向的风速V1=(S / T2) - (S / T1)。同理可推算出B组探头方向的风速V2

由于A、B组探头垂直分布,故当存在任意方向、任意大小的风时,可通过矢量合成的方法计算出风速和风向。

模块及驱动

DHT22

DHT22使用DHT-Sensor-Library进行驱动,详细方法参考GitHub页面,使用该库需要依赖Adafruit Unified Sensor Driver库。

DHT dht(DHT_PIN, DHT_TYPE);
float h = dht.readHumidity();
float t = dht.readTemperature();
    if(isnan(h) || isnan(t)){
        Serial.println("Failed to read from DHT sensor.");
        return;
}

此处h获取值为湿度,t获取值为温度。

BMP180

BMP180使用Adafruit BMP085 Library驱动,同上,需要依赖Adafruit BrushIO库。

Adafruit_BMP085 bmp;
air_pressure = bmp.readPressure()

超声波模组

// Clears the trigPin condition
digitalWrite(TRIG_1, LOW);
delayMicroseconds(2);
// Sets the trigPin HIGH (ACTIVE) for 10 microseconds
digitalWrite(TRIG_1, HIGH);
delayMicroseconds(20);
digitalWrite(TRIG_1, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(ECHO_1, HIGH);

超声波模组使用脉冲测量获取反射时间,代码如上。后续通过布置探头位置,分析两组超声波模组的反射时间可获得风速、风向信息。

CJMCU-GUVA-S12SD紫外线模组

该紫外线模组输出为电压模拟量,analogRead()函数可以实现紫外线等级的测量。

GP2Y1014AU PM2.5模组

digitalWrite(DUST_IN, LOW);
delayMicroseconds(SAMPLING_TIME);
int voMeasured = analogRead(DUST_OUT);
​
delayMicroseconds(DELTA_TIME);
digitalWrite(DUST_IN, HIGH);

通过给模组的LED驱动脚施加脉冲,测量输出脚电压,可以实现对pm2.5的浓度测量。

涂鸦智能接入

这次的开发方式为MCU低代码开发,即是利用涂鸦模组进行开发。涂鸦模组负责物联网信息处理,MCU仅需要通过串口控制涂鸦模组进行物联网信息的通讯。

创建产品

在进行涂鸦智能的开发时,需要进行产品创建。作为气象站开发,可以选择温湿度传感器

poYBAGI66NiAOxDCAAFjRNS76ZY668.png

DP点创建

在涂鸦智能中,每个气象数据维度可以被抽象为DP(功能点)。在选择了温湿度传感器这个产品后,涂鸦提供了常用的功能点:

DP ID

功能点名称

标识符

数据传输类型

数据类型

功能点属性

1

温度

temp_current

只上报(ro)

数值型(Value)

数值范围: -200-600, 间距: 1, 倍数: 1, 单位: ℃

2

湿度

humidity_value

只上报(ro)

数值型(Value)

数值范围: 0-100, 间距: 1, 倍数: 0, 单位: %

4

电池电量

battery_percentage

只上报(ro)

数值型(Value)

数值范围: 0-100, 间距: 1, 倍数: 0, 单位: %

除了这些标准功能中的DP点之外,因为我们还需要风速、风向这些数据,所以还需要添加自定义的DP点:


DP ID

功能点名称

标识符

数据传输类型

数据类型

功能点属性

101

PM2.5浓度

pm25

只上报(ro)

数值型(Value)

数值范围: 0-100, 间距: 1, 倍数: 0, 单位:

102

风向角

wind_value

只上报(ro)

数值型(Value)

数值范围: 0-364, 间距: 1, 倍数: 1, 单位:

103

风向

wind_direction

只上报(ro)

字符型(String)

104

风速

wind_speed

只上报(ro)

数值型(Value)

数值范围: 0-100, 间距: 1, 倍数: 1, 单位:

105

紫外线等级

uv_level

只上报(ro)

数值型(Value)

数值范围: 0-10, 间距: 1, 倍数: 0, 单位:

106

气压

pressure

只上报(ro)

数值型(Value)

数值范围: 0-1999, 间距: 1, 倍数: 0, 单位: hPa

在功能点中,DP ID为该功能点的标识,MCU在控制涂鸦模组进行数据上传时需要用到。

功能点属性中的倍数为0时,MCU上传的数据被识别为上传的数据本身。若倍数为1,则此时若上传数据为50时,该数据将被涂鸦除以10^1,即50会被识别为5。

面板编辑

在产品开发的面板选项卡,可以对自己的APP面板进行自定义。

我使用的面板类型为:面板类型:Studio 面板-个人面板

下面是在手机中的实机效果:

pYYBAGI66keAPHipAADI4FfNr00178.pngpYYBAGI66lyAPlh0AADLiHukTLk106.png

硬件开发

在完成了传感器驱动、电源板管理后,需要与涂鸦模组进行通讯,实现信息上报。

在这里我选择的是WBR3 Wi-Fi & Bluetooth 模组。

该模组在初次上电时,可以打开智能生活APP实现配网和面板加载,在完成了配网之后就可以进行实时开发了。

// define dp
#define temp_pid   1
#define humi_pid   2
#define battery_pid 4
#define pm25_pid     101
#define wind_angle_pid  102
#define wind_direct_pid 103
#define wind_speed_pid  104
#define uv_level_pid   105
#define pressure_pid   106
​
// Create TuyaWifi object
TuyaWifi my_device;
​
// input your device pid here
unsigned char pid[] = {""};
// select mcu version, 1.0.0 as commonly use
unsigned char mcu_ver[] = {"1.0.0"};
​
// create an array to restore the datapoint 
unsigned char dp_array[][2] = 
{
  {temp_pid, DP_TYPE_VALUE},
  {humi_pid, DP_TYPE_VALUE},
  {battery_pid, DP_TYPE_VALUE},
  {pm25_pid, DP_TYPE_VALUE},
  {wind_angle_pid, DP_TYPE_VALUE},
  {wind_direct_pid, DP_TYPE_STRING},
  {wind_speed_pid, DP_TYPE_VALUE},
  {uv_level_pid, DP_TYPE_VALUE},
  {pressure_pid, DP_TYPE_VALUE},
};
​
unsigned char dp_process(unsigned char dpid,const unsigned char value[], unsigned short length)
{
 /* all DP only report */
 return TY_SUCCESS;
}
​
void dp_update_all(void)
{
 
}
​
void setup(){
   ...
  my_device.init(pid, mcu_ver);
    my_device.set_dp_cmd_total(dp_array, 9);
  // register call back function
    my_device.dp_process_func_register(dp_process);
    my_device.dp_update_all_func_register(dp_update_all);
}
​
void loop() {
  // SDK handle
  my_device.uart_service();
  // Check the wifi connection
    if ((my_device.mcu_get_wifi_work_state() == WIFI_CONNECTED) || (my_device.mcu_get_wifi_work_state() == WIFI_CONN_CLOUD)) {
  update_sensor();
    // report all the data
    my_device.mcu_dp_update(temp_pid, temp, 1);
    my_device.mcu_dp_update(humi_pid, humi, 1);
    my_device.mcu_dp_update(battery_pid, battery_level, 1);
    my_device.mcu_dp_update(pm25_pid, pm25, 1);
    my_device.mcu_dp_update(wind_angle_pid, wind_angle, 1);
    my_device.mcu_dp_update(wind_speed_pid, wind_speed, (sizeof(dp_string_value) / sizeof(dp_string_value[0])));
    my_device.mcu_dp_update(wind_speed_pid, wind_speed, 1);
    my_device.mcu_dp_update(uv_level_pid, uv_index, 1);
    my_device.mcu_dp_update(pressure_pid, air_pressure, 1);
  }
  ...

MCU工作流程

pYYBAGI66rqALe-AAAD-UBW7E-A480.png
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2939

    文章

    47317

    浏览量

    407850
  • 超声波
    +关注

    关注

    63

    文章

    3241

    浏览量

    144089
  • 模组
    +关注

    关注

    6

    文章

    1719

    浏览量

    32018
  • 气象站
    +关注

    关注

    1

    文章

    841

    浏览量

    16902
  • 涂鸦智能
    +关注

    关注

    7

    文章

    288

    浏览量

    20511
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    超声波气象站:精准监测的技术新选择

    超声波气象站:精准监测的技术新选择 柏峰【BF-CSQX】在气象监测技术持续升级的背景下,超声波气象站凭借无机械损耗、高灵敏度、强环境适应性
    的头像 发表于 10-24 10:12 439次阅读
    <b class='flag-5'>超声波</b><b class='flag-5'>气象站</b>:精准监测的技术新选择

    超声波自动气象站技术方案

    超声波自动气象站技术方案 柏峰【BF-CSQX】一、项目背景与需求分析 1.1 项目背景 传统机械转动式气象站存在部件磨损、易受恶劣天气影响(如风沙堵塞、雨雪结冰)、维护成本高等问题,难以满足现代化
    的头像 发表于 10-16 14:18 173次阅读
    <b class='flag-5'>超声波</b>自动<b class='flag-5'>气象站</b>技术方案

    景区负氧离子气象站

    气象站
    pingao141378
    发布于 :2025年10月14日 14:06:19

    北斗自动气象站: 护航无网区的 “气象信使”

    北斗自动气象站: 护航无网区的 “气象信使”柏峰【BF-BDQX】在沙漠深处的油田、高原无人区的牧区,或是地震灾后的通信中断地带,一种能摆脱网络依赖的气象设备正持续传递着关键数据 —— 它就是北斗自动
    的头像 发表于 09-08 11:35 863次阅读
    北斗自动<b class='flag-5'>气象站</b>: 护航无网区的 “<b class='flag-5'>气象</b>信使”

    超声波清洗机是什么,它如何通过超声波振动来清洗物品?

    超声波清洗机的工作原理超声波清洗机是一种广泛用于清洗物品的设备,它利用超声波振动来去除污垢和杂质。本文将深入探讨超声波清洗机的工作原理以及它如何通过
    的头像 发表于 06-30 16:59 829次阅读
    <b class='flag-5'>超声波</b>清洗机是什么,它如何通过<b class='flag-5'>超声波</b>振动来清洗物品?

    超声波换能器:原理与多领域应用解析

    一、引言 在现代科技的发展进程中,超声波技术占据着重要地位,从工业生产到医疗诊断,从日常生活到科研探索,超声波的身影无处不在。而超声波换能器作为超声波技术的核心部件,如同一位幕后英雄,
    发表于 06-28 15:09

    超声波换能器--声波世界的 “神奇魔法师”

    在科技的奇妙世界里,有这样一位 “魔法师” —— 超声波换能器,它在众多领域施展着神奇的声波魔法,今天就让我们一起揭开它神秘的面纱,一探其中的奥秘。 超声波换能器的原理:神奇的压电效应 超声
    发表于 06-11 17:30

    气象超声波传感器:精准感知,守护每一刻气候脉搏

    在气候变化加剧、极端天气频发的当下,气象数据的精准监测成为应对自然灾害、保障生产生活的关键。而气象超声波传感器,凭借其高精度、高可靠性与智能化特性,正成为气象监测领域的“隐形守护者”。
    的头像 发表于 06-04 08:36 428次阅读
    <b class='flag-5'>气象</b><b class='flag-5'>超声波</b>传感器:精准感知,守护每一刻气候脉搏

    超声波清洗的原理是什么?超声波清洗是如何起作用的?

    超声波清洗是一种利用高频超声波振动来清洗物体表面和难以达到的细微部分的清洁技术。其工作原理基于声波的物理特性和声波对液体中微小气泡的影响。以下是超声
    的头像 发表于 05-26 17:21 2188次阅读
    <b class='flag-5'>超声波</b>清洗的原理是什么?<b class='flag-5'>超声波</b>清洗是如何起作用的?

    超声波多功能气象传感器:精准感知,气象监测新利器

    气象监测领域,精准的数据是预测天气变化、保障农业生产、指导工业生产以及守护公众安全的关键。如今,超声波多功能气象传感器凭借其卓越的性能,成为了这一领域的新利器,为气象监测带来了全新的
    的头像 发表于 05-16 08:45 517次阅读

    超声波频率和功率对在线式超声波清洗的影响如何?

    在线式超声波清洗是一种高效、环保的清洗方式,在多个行业得到了广泛应用。然而,超声波频率和功率是影响清洗效果和清洗速度的关键因素。在本文中,我们将从理论和实践两个方面分析超声波频率和功率对在线式
    的头像 发表于 05-09 16:39 851次阅读
    <b class='flag-5'>超声波</b>频率和功率对在线式<b class='flag-5'>超声波</b>清洗的影响如何?

    给孩子一堂自然课:气象站如何让科学触手可及?

    气象站
    奕帆科技
    发布于 :2025年05月06日 14:57:01

    超声波焊接工艺详解 超声波焊接应用领域

    一、超声波焊接工艺详解 超声波焊接是一种利用高频振动波进行焊接的工艺。其工作原理是将高频振动波传递到两个需焊接的物体表面,在加压的情况下,使两个物体表面相互摩擦而形成分子层之间的熔合。以下是关于
    的头像 发表于 01-31 15:12 2795次阅读

    超声波焊接技术原理

    在现代工业生产中,塑料材料因其轻便、耐腐蚀和成本效益高而被广泛使用。超声波焊接技术作为一种高效的塑料连接方法,因其快速、清洁、无需使用粘合剂或溶剂而受到青睐。 超声波焊接技术原理 超声波焊接技术
    的头像 发表于 01-19 11:01 2860次阅读

    自动气象站的工作原理与应用

    自动气象站是现代气象观测网络的重要组成部分,它通过集成传感器、数据采集与处理系统、通讯设备等技术手段,实现了对大气环境参数的实时监测和高效数据传输。以下是对自动气象站的工作原理与应用的详细探讨
    的头像 发表于 12-18 13:56 1192次阅读