• 方案介绍
  • 相关推荐
申请入驻 产业图谱

基于单片机的气象站labview上位机监测系统

1小时前
126
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

基于单片机的气象站LabVIEW上位机监测系统设计

点击链接下载资料:https://download.csdn.net/download/m0_51061483/92081472


1. 系统功能概述

本设计基于单片机实现一套小型智能气象站系统,并通过LabVIEW上位机实现实时监控与数据可视化。该系统集成多种气象参数采集模块,包括光照强度、气压、空气质量、风速、风向、温湿度等传感器模块。通过串口通信方式,单片机与上位机进行数据交互,实现气象环境的智能监测与远程管理。

系统的核心目标是实现数据的自动采集、实时传输、动态显示和超限报警。通过LabVIEW上位机界面,用户可直观地查看气象参数变化趋势,便于环境监测、农业种植、气候研究等应用场景。

系统功能主要包括以下四个方面:

  1. 数据采集功能:利用多种传感器实时采集气象数据,包括光照强度、气压、空气质量、风速、风向及温湿度等。
  2. 上位机显示功能:利用LabVIEW软件设计上位机界面,实时显示气象站测得的数据和地理位置。
  3. 异常报警功能:当任意监测参数超出设定范围时,系统通过蜂鸣器报警或界面提示警告信息。
  4. 串口通信功能:单片机通过UART接口与上位机通信,实现数据的实时传输与记录。

整个系统采用模块化设计,具备良好的扩展性与稳定性,可根据不同应用需求灵活调整测量项目。


2. 系统电路设计

系统硬件主要由以下几个部分组成:

  1. 单片机最小系统模块
  2. 传感器采集模块
  3. 串口通信模块
  4. 显示与报警模块
  5. 电源稳压与滤波模块

以下对各模块进行详细说明。


2.1 单片机最小系统模块

单片机是整个气象站的核心控制单元,负责数据采集、处理、通信和控制任务。
本系统选用 STM32F103C8T6 单片机作为主控芯片。该芯片基于ARM Cortex-M3内核,主频72MHz,具备丰富的外设接口,包括ADC、USART、I2CSPI等,非常适合多传感器综合采集与数据处理任务。

单片机主要承担以下任务:

  • 接收各传感器模拟或数字信号
  • 进行A/D转换与数据滤波;
  • 根据设定阈值判断异常并控制报警;
  • 通过USART串口与上位机进行通信。

系统采用12MHz晶振提供稳定时钟信号,通过复位电路与电源滤波确保系统可靠启动。


2.2 传感器采集模块

气象参数采集是系统的核心环节,设计中集成多种传感器,实现多维度的环境监测。

(1)温湿度传感器模块

系统采用 DHT11DHT22 传感器,用于测量空气温度和湿度。
该模块通过单总线通信与单片机连接,具有采样周期短、精度高的特点。

温湿度测量原理:DHT内部包含电容湿度传感器与NTC温度传感器,单片机周期性读取其输出的数字信号,并通过公式进行温湿度计算。

(2)光照强度传感器模块

采用 光敏电阻(LDR)BH1750数字光照传感器
光敏电阻输出为模拟电压信号,通过单片机ADC通道读取。
若采用BH1750,则通过I2C总线通信,输出数字光强值(单位:Lux)。

(3)气压传感器模块

使用 BMP180/BMP280 数字气压传感器
该模块通过I2C总线与STM32通信,可同时输出大气压与海拔高度数据。
在程序中,系统自动换算并显示实时气压值(单位:hPa)。

(4)空气质量传感器模块

采用 MQ-135气体传感器,可检测空气中CO₂、氨气、苯类等污染气体浓度。
传感器输出为模拟电压信号,经A/D转换后,单片机通过公式换算为空气质量指数。

(5)风速传感器模块

采用 霍尔效应式风速传感器。传感器输出脉冲信号,其频率与风速成正比。
单片机通过定时器捕获脉冲数,计算单位时间内的风速值。

公式:

风速 (m/s) = K * 频率 + B

其中 K、B 为校准系数。

(6)风向传感器模块

采用 多电阻式风向传感器。该传感器在不同方向输出不同电压值。
单片机通过ADC读取电压并判断风向。

例如:

  • 0.4V 表示东风
  • 1.2V 表示南风
  • 2.8V 表示西风
  • 4.0V 表示北风

通过查表法实现方向识别。


2.3 串口通信模块

串口通信模块负责单片机与LabVIEW上位机之间的数据交互。
系统采用 USART1接口波特率设定为9600bps。

在硬件上,STM32的TXD和RXD引脚通过USB转TTL模块(如CH340或CP2102)连接PC机,实现数据传输
通信协议采用自定义格式,数据包包含传感器标识、测量值和单位。

示例数据帧格式如下:

#TEMP:25.6#HUM:60.2#LIGHT:523#PRESS:1012#AQ:32#WS:2.8#WD:NW$

上位机通过LabVIEW解析该字符串,提取各参数并进行显示。


2.4 显示与报警模块

报警模块由蜂鸣器与红色LED灯组成。
当任意气象参数超出设定阈值时,单片机立即输出高电平驱动蜂鸣器鸣响并点亮LED,实现声光报警。

系统还可通过串口发送报警信息至上位机,由LabVIEW界面显示警告标志。


2.5 电源与滤波模块

整个系统采用5V直流供电,通过AMS1117-3.3稳压芯片为STM32和各传感器提供3.3V稳定电源
在电源输入端加装电解电容瓷片电容,用于滤除纹波与高频干扰,保证系统稳定运行。


3. 程序设计

系统软件采用分层设计思想,分为以下功能模块:

  1. 主程序模块
  2. 传感器采集模块
  3. 数据处理模块
  4. 串口通信模块
  5. 报警模块
  6. 上位机通信协议模块

3.1 主程序设计

主程序采用循环方式实时执行数据采集、分析与通信任务。

主程序流程如下:

  1. 系统初始化(时钟、串口、LCD、传感器等);
  2. 周期性采集传感器数据;
  3. 判断是否超限并触发报警;
  4. 将数据打包发送至上位机;
  5. 刷新显示并继续下一轮循环。

代码示例如下:

int main(void)
{
    System_Init();
    Sensor_Init();
    UART_Init(9600);
    LCD_Init();
    
    while(1)
    {
        Read_AllSensors();
        Process_Data();
        Check_Alarm();
        Send_To_PC();
        Display_LCD();
        Delay_ms(1000);
    }
}

3.2 传感器采集模块

每个传感器对应一个独立函数,负责数据读取与数值换算。

以温湿度模块为例:

void Read_DHT11(float *temp, float *humi)
{
    DHT11_Start();
    DHT11_ReadData(&temp_int, &temp_dec, &humi_int, &humi_dec);
    *temp = temp_int + temp_dec / 10.0;
    *humi = humi_int + humi_dec / 10.0;
}

对于模拟传感器(如MQ135或光敏电阻),通过ADC读取电压并换算:

float Read_ADC(uint8_t channel)
{
    uint16_t value = ADC_GetConversionValue(channel);
    return (float)value * 3.3 / 4096;
}

3.3 数据处理模块

数据采集后需进行平均滤波与单位转换,保证测量稳定性。

float Average_Filter(float *data, uint8_t num)
{
    float sum = 0;
    for(uint8_t i=0; i<num; i++) sum += data[i];
    return sum / num;
}

通过该模块,可有效消除采样抖动与干扰噪声。


3.4 串口通信模块

串口通信模块负责数据格式化与发送。

void Send_To_PC(void)
{
    printf("#TEMP:%.2f#HUM:%.2f#LIGHT:%d#PRESS:%.1f#AQ:%d#WS:%.2f#WD:%s$rn",
           temperature, humidity, light, pressure, air_quality, wind_speed, wind_dir);
}

在LabVIEW端,利用“VISA Serial Read”模块接收并解析数据,实现图形化显示。


3.5 报警模块

报警模块实时监测各气象参数是否超限,当温度、气压或空气质量异常时,执行报警逻辑。

void Check_Alarm(void)
{
    if(temperature > 35 || air_quality > 100)
    {
        BEEP_ON();
        LED_ON();
        Send_Warning();
    }
    else
    {
        BEEP_OFF();
        LED_OFF();
    }
}

上位机界面同步显示红色报警提示,并可记录异常时间。


3.6 上位机LabVIEW程序设计

上位机采用LabVIEW平台开发,利用其强大的可视化与串口通信功能,实现气象数据的实时显示与管理。

LabVIEW程序主要包括以下模块:

  1. VISA串口通信模块:负责接收来自单片机的数据;
  2. 字符串解析模块:利用字符串分割函数提取各参数值;
  3. 数据显示模块:以仪表、表格、曲线等形式实时显示气象数据;
  4. 报警模块:当参数超限时,界面发出红色闪烁警示并播放提示音;
  5. 数据记录模块:通过文件I/O功能将监测数据保存至本地文件,方便后期分析。

界面设计思路:

  • 左侧显示风速、风向、气压、光照强度等仪表盘;
  • 中部显示实时曲线图;
  • 右侧显示温湿度与空气质量条形图;
  • 底部显示系统运行状态与报警日志。

4. 系统总结

本设计实现了一套基于STM32单片机与LabVIEW上位机的智能气象监测系统,具备实时数据采集、动态显示、异常报警与远程监控等功能。

系统的主要特点包括:

  • 高集成度与稳定性:多传感器协同工作,实时采集多维气象信息;
  • 人机交互友好:上位机界面直观、响应迅速,支持数据可视化;
  • 扩展性强:可扩展至雨量检测、紫外线监测等功能;
  • 实用性广:适用于农业大棚、环境监测、校园气象站等领域。

通过本系统的设计与实现,不仅掌握了多传感器信号采集与单片机控制技术,还实现了嵌入式与上位机通信的综合应用,为后续智能气象数据分析与环境自动控制系统的开发奠定了坚实基础。

相关推荐