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

    关注

    2903

    文章

    44280

    浏览量

    371303
  • 超声波
    +关注

    关注

    63

    文章

    2990

    浏览量

    138237
  • 模组
    +关注

    关注

    6

    文章

    1436

    浏览量

    30293
  • 气象站
    +关注

    关注

    1

    文章

    740

    浏览量

    15647
  • 涂鸦智能
    +关注

    关注

    7

    文章

    198

    浏览量

    19447
收藏 人收藏

    评论

    相关推荐

    负氧离子气象站

    气象站
    pingao141378
    发布于 :2024年10月19日 08:52:28

    超声波和次声波的频率范围和应用

    超声波和次声波是两种不同频率的声波,它们在许多领域都有广泛的应用。以下是关于超声波和次声波的频率范围和应用的介绍:
    的头像 发表于 09-19 16:42 1930次阅读

    什么是超声波一体气象仪?

    超声波一体式气象仪是将多种气象测量功能集成于一体且基于超声波技术的仪器。它集超声波风速风向测量功能于一身,同时可能还集成了温度、湿度、气压等
    的头像 发表于 09-18 10:52 202次阅读
    什么是<b class='flag-5'>超声波</b>一体<b class='flag-5'>气象</b>仪?

    小型车载自动气象站:提供全面、及时的气象信息

    和记录车辆周围的气象数据,配有超声波多合一环境监测传感器,集成度较高,可对风速、风向、空气温度、空气湿度、噪声、PM2.5、PM10、二氧化碳等气象要素进行实时监测,为驾驶员提供即时的天气状况信息。此外,用户可以依据监测环
    的头像 发表于 09-12 16:52 243次阅读

    超声波测速的原理、方法及应用

    超声波测速是一种利用超声波在介质中的传播速度来测量物体速度的技术。它广泛应用于工业、医疗、交通等领域。 一、超声波测速的原理 超声波的定义 超声波
    的头像 发表于 08-16 10:36 3585次阅读

    校园气象站高校科普论文气象站多功能气象站

    校园气象站高校科普论文气象站多功能气象站是一种集气象监测、数据传输、数据处理、信息发布等功能于一体的数字化气象设备。它可以通过各种传感器实时
    的头像 发表于 08-06 17:53 409次阅读
    校园<b class='flag-5'>气象站</b>高校科普论文<b class='flag-5'>气象站</b>多功能<b class='flag-5'>气象站</b>

    便携式气象站:未来气象监测的便携新选择

    气象站
    万象环境科技
    发布于 :2024年06月23日 10:39:24

    便携式气象站:科技与便捷的完美融合

    气象站
    万象环境科技
    发布于 :2024年06月22日 21:14:07

    什么是自动气象站

    在科学技术迅猛发展的今天,自动气象站以其高效、精准、实时的特点,逐渐成为现代气象观测的先锋。它不仅极大地提升了气象观测的效率和准确性,还为农业生产、交通运输、环境保护等领域提供了重要的气象
    的头像 发表于 06-14 09:15 502次阅读
    什么是自动<b class='flag-5'>气象站</b>?

    超声波无损检测原理及应用

    超声波无损检测(Ultrasonic Non-Destructive Testing,简称UT)是一种利用超声波在材料内部传播的特性,检测材料内部缺陷和结构的无损检测技术。本文将详细介绍超声波无损
    的头像 发表于 05-24 16:48 4914次阅读

    超声波连接示波器问题

    我买了一只中心频率2.5Mhz的超声波探头,当我连接到示波器上的时候就有信号在显示屏上。 我想问的是示波器上的信号到底是接收的环境中的超声波信号? 还是当探头接到示波器上 探头就会自动的发射超声波然后再接收自己发射的
    发表于 05-04 14:46

    六要素超声波气象仪有哪些作用?原理是什么?

      JD-WQX6天气变化无常,对人们的生产和生活造成很大影响。如何准确地掌握天气变化,成为了每个人关注的焦点。而六要素超声波气象仪,就是一款能够帮助人们更好地了解天气变化的利器。   六要素
    的头像 发表于 03-29 15:37 424次阅读

    超声波气象传感器(超声波技术来测量大气环境参数的仪器)

    JD-WQX5超声波气象传感器是一种利用超声波技术来测量大气环境参数的仪器。它可以测量风速、风向、温度、湿度等多个气象参数,并且具有高精度、高稳定性、高可靠性等优点,被广泛应用于
    的头像 发表于 03-28 15:06 467次阅读

    什么是科研用的小型气象站

      JD-CQX7科研用的小型气象站是一种专门设计用于科学研究领域的气象监测设备,其主要特点是小巧轻便、灵活易用,并具有高精度的测量性能。这种气象站通常包括多个传感器,能够测量和记录气温、湿度、风速、风向、气压、降水量等多种
    的头像 发表于 03-15 15:26 364次阅读

    超声波发生器的原理

    超声波发生器又称超声波驱动电源、电子箱、超声波控制器,是大功率超声波系统的重要组成部分。超声波发生器的作用是将市电转换为与
    的头像 发表于 12-24 10:46 1675次阅读
    <b class='flag-5'>超声波</b>发生器的原理