【STM32】自动气象站(下位机:STM32 + 上位机:QT)

话不多说先看看效果:

光照:L=2.50勒克斯
气压:P=946.17pa
温度:T=22.3℃
当前时间:14时31分59秒
通过串口发送给上位机。

设计方案:

1.设计内容

简易自动气象站将实现以下功能:
测量功能。对温度、气压和光强等气象要素进行测量并把测量值用液晶显示出来供用户读取。
自记功能。用25系列存储器实现掉电存储,不丢失数据。
异步通信功能。通过UART口与上位计算机经行信息交互。配上DS3231实现定时自动发送数据的功能。
存储功能。上位机能够收下位机传输的数据并存储于E盘的txt文档中。用户可以通过指令调取
之前存储的数据。并能通过指令更改下位机的时间信息。
自动告警功能。用STM32F103C8T6的内部温度传感器测量片内温度,如果超过阈值则报警。
质控功能。根据当前时间计算存储的位置,但是W25Q64的最小擦除单位为一个扇区(每个扇区16页,每页256个字节),为了防止存储数据跨页的尴尬局面,我们让数据长度为256的因数,通过牺牲一些存储空间从而做到数据无跨页现象。具体为:地址=小时数2048+分钟数32(每条数据长度为32个字节)。

2.系统总体设计

各采集模块把采集到的数据发送给主控模块处理,主控模块再把处理后的是数据发送给上位
机。上位机再通过可视化界面把这些数据的大小、有效性直观反馈给用户。

2.1下位机设计
综合考虑该系统所需的RAM、FLASH和制作成本等因素,我们MCU采用STM32F103C8T6。
由PT100铂电阻搭建惠斯通电桥配合放大器构成温度传感器。气压传感器则是用BMP180。由于GY-30的低功耗特性,我们采用它作为光照强度传感器。综合考虑容量和价格因素我们选用W25Q64作为存储模块。时钟芯片采用低成本、高精度的实时时钟DS3231。显示采用0.66寸OLED液晶显示。在下位机采集到各气象要素后要进行质控监测来判断数据的有效性,通过串口与上位机通信。
2.2上位机设计
上位机软件是在window10操作系统上基于Qt Creator软件开发环境运行的位机模块。上位机可接收并存储下位机发送的时间数据和气象各要素的质控后的测量数据,并通过柱状图和指示灯直观的显示给用户。用户还可以通过特殊指令对下位机进行查询和更改操作。具体系统框图如图2-1所示。

3.硬件电路设计

3.1气压采集模块
气压采集模块主要有bmp180和bmp280两种选择。
BMP280作为其前身BMP180,他们的定位是手机等便携低功耗设备,对精度与稳定性要求没那么高。而bmp280相对bmp180具有更小尺寸的优点,但是价格方面相对昂贵。本次实验对芯片尺寸要求没有那么高,而且鉴于两者测量精度都相差无几,因此我们还是选用BMP180气压传感器。
BMP180被设计成直接连接到经由I2C总线的移动设备的微控制器(我们通过模拟IIC协议控制BMP180实时读取大气压强)。该BMP180有一个压阻传感器,模拟 - 数字转换器,并与E2PROM和一个串行I 2 C接口的控制单元。压力和温度数据由BMP180的E2PROM中的校准数据来补偿。 E2PROM中已存储的个人校准数据的176位。这是用于补偿偏移量,温度依赖性和传感器的其他参数。 BMP180的采样率可以提高到128个样本每秒(标准模式),用于动态测量。在这种情况下,它足以对测量温度有每秒一次,在同一期间使用该值对于所有的压力测量。因此该传感器可以完成对温度的修正以及气压的测量。

3.2温度采集模块
热电阻接线采用了二线制接法,由3个通用型运放op 07组成三运放仪表放大器电路形式(本电路仪表放大器放大倍数为:(1+2R3/R4)R2/R1=(1+210K/100)10K/10K≈48)辅以相关的电阻外围电路,加上两放大器同相输入端的桥式信号输入电路,选用电阻时,我们使用尽可能低的温度系数的电阻,以获得尽可能低的漂移,并且在电路中增加各种抗干扰措施,比如在电源的引入端增加电源退耦电容,在信号输入端增加RC低通滤波或在运放的反馈回路增加高频消噪电容,在PCB设计中精心布局合理布线,正确处理地线等,以提高电路的抗干扰能力,最大限度地发挥电路的能。
3.3光强采集模块
光强采集模块方面可以采用光敏电阻或者光敏传感器,若是采用光敏电阻则需要利用其它模块将其数字化,而光敏传感器内置16bitAD转换器直接数字输出,省略了复杂的计算。
光强采集模块采用GY-30气压传感器。GY-30采用ROHM原装BH1750FVI芯片,供电电源:3-5v,光照度范围:0-65535lx,光源接近于视觉灵敏度的分光特性可对广泛的亮度进行检测,勒克斯的高精度测定标准NXPIIC通信协议模块内部包含通信电平转换,与5V单片机I/O直接连接。

扫描二维码关注公众号,回复: 11620601 查看本文章

3.4液晶显示模块
在显示模块方面我们可以采用数码管显示或OLED显示屏。OLED显示屏相对于数码管显示有着高的对比度、较低耗电、极高反应速度的优点,因此我们选用OLED显屏。

3.5储存数据模块
在储存方面W25Q64BV串行闪存为有限的系统提供存储解决方案空间,针脚和电源。 相比AT93C46 单片机直插储存器芯片,W25Q64BV提供更高的灵活性和性能。它们非常适合将代码映射到RAM,直接从Dual / Quad SPI执行代码(XIP)并存储语音,文本和数据。

3.6时钟模块
在高精度时钟芯片方面,主要有DS3231,M41TC8025, HYM8025可供选择。
这三者在计时方面的功能都相差无几,但是DS3231除计时精度高之外,还具有一些其它功能,这些功能扩展了系统主机的附加功能和选择范围。该器件内部集成了一个非常精确的数字温度传感器,可通过I2C接口对其进行访问(如同时间一样),用来校准辅助测量温度。这个温度传感器的精度为±3°C。片上控制电路可实现自动电源检测,并管理主电源和备用电源(即低压电池)之间的电源切换。如果主电源掉电,该器件仍可继续提**确的计时和温度,性能不受影响。当主电源重新加电或电压值返回到容许范围内时,片上复位功能可用来重新启动系统微处理器。因此我们选用低成本,具有温度传感器的DS3231作为计时模块。
以下是DS3231的关键特性:
(1)0°C至+40°C范围内精度为±2ppm -40°C至+85°C范围内精度为±3.5ppm
(2)工作温度范围 商用级:0°C至+70°C 工业级:-40°C至+85°C
(3)数字温度传感器输出:精度为±3°C

3.6稳压器模块
AMS1117-3.3是一种输出电压为3.3V的正向低压降稳压器,相比于LM7805,AMS1117-3.3内部集成过热保护和限流电路,更重要的是AMS1117在测试环境下有着更高的温度稳定性。

3.7系统PCB和原理图


4.软件电路设计
气象数据采集系统上位机软件基于Qt Creator软件开发环境并在window10操作系统上运行的。Qt Creator是一个用Qt开发的轻量级跨平台集成开发环境,因为其良好的封装机制和丰富的API函数被广泛使用。基于Qt类库本身,用户可通过自定义或内建对话框的方式构建操作面板和显示面板。
4.1串口通信模块
该上位机主要实现串口通信功能,并通过可视化图像把接收的数据反馈给用户。串行通信接口,是采用串行通信方式的扩展接口,串行接口(Serial Interface)是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本,适用于远距离通信,但传送速度较慢。在Qt中并没有特定的串口控制类,通常使用的是第三方写的qext-serialport类。串口设置的各属性包括串口号、波特率、数据位、校验位和停止位,数据包头可根据个人设定,供解析数据的时候使用。
串口调试模块的主要功能是通过配置串口参数,能够对串口传输数据进行实时显示,当采集到的数据量达到需求,可以保存数据到自定义文件内方便后续的处理。
4.2上位机功能
上位机软件的主要功能包括:
(1)数据通信:实现与下位机的串口通信,包括配置参数,发送和接收数据包的任务。
(2)数据显示:
①显示串口接收到的数据,包括日期、和测量数据;
②根据各气象要素的测量值结合坐标信息绘制图形(柱状图)。
3)文件管理:将接收到的数据进行存储和更改存入PC机。

上方GroupBox框内为上位机接收的数据,如下图5-3所示。

5.系统测试
5.1作品实物展示

原文出自:hhh航航(b站专栏)

详情:https://www.icxbk.com/article/detail/1621.html

猜你喜欢

转载自blog.csdn.net/ICXBK/article/details/107941393