基于单片机的气象站labview上位机监测系统
基于单片机的气象站LabVIEW上位机监测系统
点击链接下载资料:https://download.csdn.net/download/m0_51061483/92081472
1. 系统功能概述
本设计是一套基于单片机的智能气象监测系统,结合LabVIEW上位机实现气象数据的采集、显示与分析。系统以单片机为核心控制单元,利用多种环境传感器实时采集光照强度、气压、空气质量、风速、风向及温湿度等气象参数,并通过串口通信模块将数据传输至上位机。上位机通过LabVIEW软件平台进行实时数据显示、曲线绘制、报警提示及数据记录,实现了从环境感知到数据可视化的完整系统闭环。
系统集成度高、功能完善、交互直观,可广泛应用于农业气候监测、智慧城市、校园科研实验及环境检测等领域。
系统的主要功能包括:
- 数据采集功能:实时获取环境中的光照强度、温湿度、气压、空气质量(如PM2.5或CO₂浓度)、风速与风向等参数。
- 上位机数据显示:LabVIEW界面通过串口实时显示各传感器采集的数据,并以图表或仪表形式直观展示。
- 异常报警功能:当任一气象参数超过设定阈值时,系统发出声光报警,并在上位机界面进行红色警示提示。
- 数据通信功能:通过串口模块(如CH340或MAX232)实现单片机与PC机之间的双向通信,支持实时传输与命令响应。
- 数据记录与分析功能:上位机可对实时数据进行存储,并提供历史数据的曲线分析、阈值趋势判断及异常分析功能。
系统实现了“采集—传输—显示—报警—记录”的一体化功能架构,既可独立运行,也可作为智能环境监控系统的前端节点。
2. 系统电路设计
整个气象监测系统主要包括以下部分:
- 单片机最小系统电路
- 各类传感器采集电路
- 串口通信电路
- 显示与报警电路
- 电源模块
各模块之间通过总线或接口连接,实现高可靠性的数据交互与信号传输。
2.1 单片机最小系统电路
系统核心采用 STM32F103C8T6 单片机。该芯片内置高性能ARM Cortex-M3内核,运行主频可达72MHz,具备丰富的外设接口(USART、ADC、I²C、SPI等),非常适合多传感器数据采集与控制场景。
单片机最小系统主要包括:
- 时钟电路:采用8MHz外部晶振及内部PLL倍频,为系统提供稳定时钟源。
- 复位电路:通过RC复位和按键复位电路,确保系统上电或异常时能稳定复位。
- 电源电路:由DC 12V输入,经AMS1117-5.0与AMS1117-3.3稳压输出,分别供电给传感器和单片机核心系统。
该最小系统为各个功能模块提供可靠的硬件运行平台。
2.2 光照强度检测模块
光照检测采用 光敏电阻(LDR)+ 电阻分压电路 或 BH1750数字光照传感器。
当采用光敏电阻方案时,光照强度变化引起分压电压变化,经ADC采样后转换为对应的光照强度值。
若采用BH1750,则通过I²C总线与单片机通信,直接输出以勒克斯(Lux)为单位的光照值,精度高且线性度好。
单片机周期性读取光照值,用于判断昼夜变化或环境亮度情况,并将数据传送至上位机显示。
2.3 温湿度检测模块
温湿度检测采用 DHT22 数字温湿度传感器。
该传感器内部集成电容式湿度测量元件和NTC温度测量元件,可通过单总线输出温湿度数据。单片机通过定时采样方式读取DHT22输出的数字信号,经解析后得到当前温度和湿度值。
温湿度是气象监测的基础参数,系统会在LabVIEW上位机界面中以仪表或曲线形式动态显示温湿度变化趋势。
2.4 气压与空气质量检测模块
系统采用 BMP280 数字气压传感器 采集大气压力数据。该模块通过I²C接口与单片机通信,内部具有高精度ADC,可测量300~1100hPa范围内的大气压力。系统可通过计算公式换算出海拔高度,实现多维环境参数监测。
空气质量检测部分可选用 MQ-135 气体传感器,用于检测空气中的有害气体浓度(如CO₂、NH₃、NOx等)。MQ-135输出模拟电压信号,经单片机ADC采样后可得到空气质量等级,LabVIEW上位机会根据数值变化显示空气质量状态,如“优”“良”“中”“差”等。
2.5 风速与风向检测模块
风速检测可采用 霍尔风速传感器,当风轮旋转时,霍尔元件周期性输出脉冲信号。单片机通过计数法计算单位时间内脉冲数,即可得出风速值。
风向检测则采用 电位器式风向传感器,通过不同方向对应的电阻变化输出不同电压,单片机ADC采样后即可得出当前风向角度。
风速与风向数据通过LabVIEW显示在罗盘式仪表上,便于观察风力变化趋势。
2.6 串口通信电路
串口通信是本系统的重要数据通道。单片机通过 USART1 接口 与上位机PC进行通信,通信速率通常设定为9600bps或115200bps。
系统可选用 CH340 或 MAX232 模块 进行电平转换,确保与PC串口的兼容性与信号稳定性。
通过UART通信协议,系统按固定格式打包气象数据并发送至上位机。数据帧格式如下:
$TEMP,25.6;HUM,58.4;PRESS,1013;LIGHT,532;WIND,3.4;DIR,90;AIR,45#
LabVIEW上位机程序通过解析该数据帧提取各项参数,实现实时数据显示与存储。
2.7 报警与显示电路
系统包含蜂鸣器与LED指示灯两种报警方式。
- 当温度、气压、空气质量等参数超过设定阈值时,蜂鸣器鸣响并闪烁LED灯。
- 单片机根据报警类型输出不同频率信号,使蜂鸣器发出不同音调,实现多级报警。
此外,可选接LCD1602显示模块,用于在现场实时查看气象参数及系统运行状态。
3. 系统程序设计
系统软件包括单片机下位机程序与LabVIEW上位机程序两部分。
下位机程序负责传感器数据采集、PID式滤波、数据打包与串口发送;
上位机程序负责数据解析、实时显示、报警判断与记录存储。
3.1 下位机主程序结构
主程序采用循环采样与中断触发机制,保证实时性与系统稳定性。主程序流程如下:
#include "stm32f10x.h"
#include "dht22.h"
#include "bmp280.h"
#include "uart.h"
#include "adc.h"
#include "mq135.h"
#include "bh1750.h"
#include "wind.h"float temperature, humidity, pressure, light, air, windspeed, winddir;int main(void){SystemInit();UART1_Init(115200);ADC_Init();DHT22_Init();BH1750_Init();BMP280_Init();MQ135_Init();WIND_Init();while(1){temperature = DHT22_ReadTemp();humidity = DHT22_ReadHumi();pressure = BMP280_ReadPressure();light = BH1750_ReadLight();air = MQ135_ReadValue();windspeed = WIND_ReadSpeed();winddir = WIND_ReadDir();UART_SendData(temperature, humidity, pressure, light, air, windspeed, winddir);Delay_ms(1000);}
}
该程序通过定时采样实现各传感器数据的同步采集,并周期性打包发送。
3.2 串口通信与数据打包
数据通过串口发送至上位机,格式化为标准帧结构,便于LabVIEW解析。
void UART_SendData(float t, float h, float p, float l, float a, float ws, float wd){char buffer[100];sprintf(buffer, "$TEMP,%.2f;HUM,%.2f;PRESS,%.2f;LIGHT,%.2f;AIR,%.2f;WIND,%.2f;DIR,%.2f#",t, h, p, l, a, ws, wd);UART_SendString(buffer);
}
3.3 数据滤波与误差校正
为了提高测量精度,程序采用滑动平均滤波与异常数据剔除机制:
float FilterValue(float *data, int len){float sum = 0;for(int i=0; i<len; i++){sum += data[i];}return sum / len;
}
该函数用于对温度、湿度、气压等参数进行平滑处理,有效消除瞬态干扰。
3.4 上位机LabVIEW程序设计
LabVIEW上位机程序是系统的可视化核心,其主要模块包括:
- 串口通信模块:通过VISA串口函数实现数据接收与缓存。
- 数据解析模块:利用字符串分割函数解析数据帧,提取各参数。
- 显示模块:包括温湿度仪表、气压计、风速风向仪、空气质量曲线、光照强度条形图等。
- 报警模块:判断参数是否超限,触发LED警示或声响报警。
- 数据存储模块:将实时数据写入CSV文件,便于后续分析与绘图。
上位机流程如下伪代码:
while (True)data = VISA_Read()if data starts with "$" and ends with "#":parse(data)updateDisplay()if any param > threshold:triggerAlarm()saveToFile()
end
LabVIEW界面可根据用户需求进行个性化定制,如增加地图定位模块、历史数据趋势曲线、气象综合指数计算等。
3.5 报警控制与数据管理
上位机根据参数阈值自动判断报警状态,逻辑如下:
if (Temperature > 40 or AirQuality > 80)LED = REDSoundAlarm()
elseLED = GREEN
同时系统可自动记录异常数据段,以供后期统计分析。
4. 系统总结
本系统基于STM32单片机与LabVIEW软件平台,实现了气象数据的实时采集、传输、显示、报警与记录。通过集成多种传感器,系统能够全面反映环境状况;利用串口通信技术实现了高效数据交互;LabVIEW提供了可视化界面,使用户能够直观地了解实时气象变化。
系统具有以下优点:
- 模块化设计,硬件扩展方便;
- 软件架构清晰,移植性强;
- 控制与显示一体化,实时性高;
- 可扩展云端数据上传与远程监测功能。
该设计不仅可用于气象科研与教学实验,也可作为智慧农业与城市环境监测的基础平台,为环境信息化管理提供技术支持。