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程序和虚拟串口配置教程)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐