基于Cortex—M3的自动气象站设计
设计了一种气象数据采集系统,该系统能采集温度、湿度、气压、风速4个气象要素,采集的原始数据保存在本地SD卡中,同时对采集数据进行数据处理,处理后的数据打包成气象数据包,使用GPRS模块将数据包通过GSM网络上传到上位机。采集系统主控制器使用基于Conex—M3内核的STM32处理器,在处理器上移植μc/os—II实时操作系统作为软件平台,保证了数据采集中较好的实时性和稳定性。在数据处理方面,参考地面观测规范对温度、湿度、气压采用筛除大小值取算术平均的算法,对风速测量数据采用滑动平均算法。经实验验证,系统正常运行,测量精度达到设计要求,具有成本低廉,精度高,具有较好的实时性和稳定性。
1系统整体设计
整个气象数据采集系统硬件主要由气象数据采集传感器模块、主控制模块、数据存储模块、数据发送模块以及上位机接收模块组成。传感器采集模块在主控制器的驱动下完成温度、湿度、气压、风速数据的采集,主控制模块由使用Cortex—M3内核的STM32处理器的最小系统组成,完成对数据采集传感器模块的控制以及对采集数据的数据处理工作,数据处理按照《地面气象规范2003》的基本要求执行,数据存储模块使用SD卡来完成测量数据的本地备份,处理完的数据打包成气象数据包使用GPRS模块通过GSM网络发送至上位机,上位机模块由GPRS模块和PC组成,上位机通过GSM网络接收测量数据并进一步处理,整体结构如图1所示。
2气象数据采集模块
系统气压采集模块使用BMP085数字气压传感器,其和STM32通信使用标准的IIC协议,其内置的EEPROM中存储了补偿计算需要的11个参数,它们是11个连续存储的16位数据,存储地址为0XAA~0XBF,当STM32在读取了测量数据后需要通过补偿计算得到单位为hpa的测量数据。温湿度采集模块使用AM2301数字温湿度复合传感器,其与STM32通信使用单总线通信协议,该模块内置了一个8位的MCU,能自动完成数据的测量工作,当STM32得到了总线的控制权后,输出低电平大于800μs后,AM2301模块就得到了总线控制权并输出80μs的低电平作为响应信号并马上连续输出40bit的测量数据,测量数据格式为:40bit=湿度高8位+湿度低8位+温度高8位+温度低8位+校验位,其中校验位=湿度高位+湿度低位+温度高位+温度低位。风速采集模块使用FY-FS风杯式风速传感器,风吹动风杯转动会把风速信号转化为脉冲信号输出,STM32使用外部中断和定时中断来捕获脉冲频率并通过计算得到实时风速值。处理完成的数据存储在SD卡中,SD卡是一种存储容量为1G的FLASH产品,与STM32通过SPI协议通讯。数据发送模块使用SIM300,利用短信息方式(TEXT模式)通过GSM网络与上位机通信,STM32使用AT指令通过串口与SIM300通信,上位机使用SIM300模块接收测量数据进行下一步处理。