玩转Proteus+LabVIEW】手把手教你做会报警的虚拟气象站
下次打算加上数据库存储和微信报警功能,有兴趣的小伙伴可以一起玩~(所需文件已打包,包含仿真文件、VI程序和虚拟串口配置教程)(1)PC机上实时显示气象站位置信息及气象信息,包括光照、压力、空气质量参数及风向、风速等;(1)PC机上实时显示气象站位置信息及气象信息,包括光照、压力、空气质量参数及风向、风速等;包含仿真图,labview界面,流程图,程序,元器件清单,虚拟串口压缩包,原理图等等。包含仿
protues仿真与labview双向通信小型气象站 (1)PC机上实时显示气象站位置信息及气象信息,包括光照、压力、空气质量参数及风向、风速等; (2)异常信息报警功能; (3)具备串口通信功能,能实时发送测量数据到PC机; 包含仿真图,labview界面,流程图,程序,元器件清单,虚拟串口压缩包,原理图等等
最近在实验室折腾了个好玩的项目——用Proteus模拟气象站硬件,再通过LabVIEW搞个酷炫的监控界面。整个过程就像搭积木一样有趣,特别是当虚拟传感器数据和彩色界面联动起来的时候,简直像在玩高科技版的过家家。下面直接上干货!

硬件部分咱们用Proteus搭了个精简版气象站(图1),核心是ATmega328P配了堆传感器:
- 风向检测:电位器模拟(ADC0)
- 光照强度:光敏电阻(ADC1)
- 气压/空气:BMP280模块(I2C)
- 异常报警:红色LED+蜂鸣器
关键代码片段(Arduino风格):
void readSensors(){
// 读取模拟量
wind_dir = map(analogRead(A0), 0, 1023, 0, 360);
light = analogRead(A1);
// 读取BMP280
bmp.readPressure(&pressure);
bmp.readAirQuality(&air_quality); // 模拟空气质量算法
// 异常检测
if(pressure < 950 || air_quality > 80) {
digitalWrite(ALARM_LED, HIGH);
tone(BUZZER, 2000);
} else {
digitalWrite(ALARM_LED, LOW);
noTone(BUZZER);
}
}
这个函数每200ms执行一次,通过map函数把电位器信号转换成0-360度风向角。BMP280的读取用现成库,空气质量这里偷懒用了随机数模拟,实际项目要接具体传感器。
LabVIEW界面设计才是重头戏(图2),前面板做了个仪表盘风格:
- 雷达图显示实时风向
- 波形图表做历史曲线
- 布尔指示灯负责报警
- 谷歌地图控件显示GPS位置(模拟数据)
串口通信部分用了VISA模块,注意波特率要和Proteus里的COMPIM模块一致。这里有个坑——虚拟串口需要安装驱动,推荐用Virtual Serial Port Driver创建COM3/COM4对。

protues仿真与labview双向通信小型气象站 (1)PC机上实时显示气象站位置信息及气象信息,包括光照、压力、空气质量参数及风向、风速等; (2)异常信息报警功能; (3)具备串口通信功能,能实时发送测量数据到PC机; 包含仿真图,labview界面,流程图,程序,元器件清单,虚拟串口压缩包,原理图等等
数据解析代码框图(图3)用了字符串截取:
原始数据格式:"L:1023,P:1013,A:65,W:270,S:5.2#"
↓
截取#号前内容 → 按逗号分割 → 字符串转数值
↓
绑定到对应显示控件
调试时建议先打开串口调试助手验证数据格式,避免LabVIEW里空等数据。

异常报警机制做了双重触发——硬件端直接控制声光报警,软件端超过阈值会弹出警示框并记录日志。在LabVIEW中用"比较"函数配合条件结构实现,阈值可以通过前面板实时调整。
元器件清单精简版:
Proteus部分:
ATmega328P ×1
BMP280 ×1
电位器 ×1
光敏电阻 ×1
COMPIM ×1
LabVIEW部分:
VISA串口模块
波形图表控件
地图控件(需安装NI插件)
这个项目最爽的是改参数不用重新烧录芯片,比如调整报警阈值直接在前端面板拖滑块就行。下次打算加上数据库存储和微信报警功能,有兴趣的小伙伴可以一起玩~(所需文件已打包,包含仿真文件、VI程序和虚拟串口配置教程)
更多推荐
所有评论(0)