描述
<h2>方案论证</h2>
<p>在本项目中,方案的选择是基于对智能温度计的功能需求和硬件实现可行性的分析。由于本项目的核心功能包括温度检测、通过数码管显示、温度阈值报警和上位机通信显示温度曲线,因此在选择硬件和软件方案时,我们重点考虑了如下几个方面:</p>
<ol>
<li>主控芯片选择。选用STM32系列单片机作为主控芯片,主要是基于其强大的性能、丰富的外设接口以及良好的开发支持。STM32具备多个USART、I2C和GPIO接口,非常适合用于温度传感器的接入和数据通信。STM32的高性能也确保了温度数据的快速处理与显示。</li>
<li>温度传感器的选择。本项目采用了SHT-40温湿度传感器,这是一款常见且稳定的数字温度传感器,具有高精度和广泛的应用。SHT-40通过IIC总线协议与主控芯片进行通信,简化了硬件接线,同时提供良好的温度测量精度(误差≤±0.5℃)。</li>
<li>数码管显示。温度数据采用3位数码管显示(格式为XX.X)℃,通过STM32的GPIO接口配合595进行驱动。数码管采用共阴方式,能够直观地显示温度,且显示内容更新频率较高,确保温度显示实时。</li>
<li>报警功能。温度的上下限报警值可由用户在上位机设置。当温度超过预设的临界值时,STM32会触发报警机制,通过GPIO引脚控制蜂鸣器进行提示,增强系统的实用性。</li>
<li>上位机通信。上位机与智能温度计之间的通信采用串口(USART)协议,主控芯片通过串口发送实时温度数据至上位机,同时接收上位机发送的控制命令。上位机通过图形化界面实时显示温度曲线,方便用户监控温度变化。</li>
</ol>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/c5571291442649389299c5076435e2bf.png" alt="image.png"></p>
<h2>电路设计(或硬件设计)</h2>
<p>主控部分:stm32g030k6t6
显示部分:sn74hc595驱动的3位数码管
采集部分:sht40温湿度传感器
通讯部分:nanouart-wl模块
供电部分:两节5号电池</p>
<p>在点亮数码管中,一个595用于数码管的位选(三个位置中的哪一个),其余两个595用于段选(一个八中的哪一段)。
供电部分采用两节5号电池供电,并用一个三极管防止反接。
为节省电源,我们将单片机设置为休眠模式,在按下按钮后唤醒,采集一次数据并通过无线串口发送,显示10s然后继续进入休眠。</p>
<h2>软件设计</h2>
<p>整个项目采用cubemx生成基础代码,主要用到了uart、iic、gpio等外设。代码工作量非常小,一小时左右完成。Cubemx中对GPIO的配置如下:
Cubemx中对IIC的配置如下:
Cubemx中对USART的配置如下:
芯片引脚总体设置如下:
附录三中读取SHT40温湿度数据代码过程解释如下:
① 参照SHT40传感器数据手册,单片机先通过IIC总线向传感器发送控制字{0XFD},使其进入高精度温湿度采集模式。
② 单片机接受从IIC总线传来的采集数据,再依据手册中对应的温湿度数值转化公式进行转化,即可得到采集到的温湿度数值。
③ 为了便于显示,我们将采集到的数值“X10”后,提取个位、十位、百位,来分别显示数值的小数位、个位、十位。
附录四中595驱动的数码管显示解释如下:
① 参考595时序手册,其对串行输入数据进行并行输出
② 在时钟SCLK下对于串行数据SER进行装载
③ 当数据装载完成后,RCLK上升沿,将装在完成的数据进行并行输出
附录五中,为使单片机进入休眠模式的代码,由中断触发唤醒。
附录六中附带与上位机沟通与报警的代码。主要功能为接收上位机中的报警指令,并激活蜂鸣器报警。
附录七中,为上位机面板与程序源码。主要功能为显示温度曲线,记录温度变化与上位机中对于实时温度做判断,与用户设置的温度报警阈值做对比,如果超过温度报警阈值,上位机程序通过串口发送报警指令。</p>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/789f92734c8b43118683f24d738b6bb3.png" alt="image.png"></p>
<h2>系统调试及测试</h2>
<p>系统调试过程分为硬件调试和软件调试两个阶段。</p>
<ol>
<li>硬件调试:
传感器调试。在硬件搭建初期,首先进行SHT-40传感器的连接与初始化,使用STM32的GPIO接口完成IIC总线的通信协议。通过调试代码确认STM32能够正常读取传感器的数据,并确保温度数据稳定准确。
数码管显示调试。在调试过程中,使用STM32的定时器中断功能驱动数码管显示。在每次温度数据读取后,将数据转换为适合数码管显示的格式,通过驱动程序控制数码管显示温度值,确保显示清晰、准确。
报警功能调试。在硬件部分完成后,设置温度上下限的临界值,并测试报警功能是否能够正确触发。当温度超出设定范围时,系统通过控制GPIO引脚点亮LED或发出蜂鸣声,进行报警提示。报警功能的测试表明系统在设定范围内表现良好。</li>
<li>软件调试:
温度采集与显示调试。软件部分主要涉及SHT-40的数据读取、数码管显示控制以及温度数据格式化。在调试过程中,通过调试器跟踪程序执行,验证每次采集到的温度数据是否正确,并确保数码管能够按照规定的格式显示温度。
上位机通信调试。采用USART进行数据通信,调试过程中确保温度数据能够准确、实时地从STM32发送到上位机。通过串口调试工具监控数据流,确保没有丢包或传输错误。
报警与配置调试。软件中温度上下限值的设置通过上位机进行配置,并通过USART协议发送给STM32进行处理。调试过程中,确保上下限值的设定和报警功能正常工作,且报警能够在温度越过设定值时触发。</li>
<li>系统测试:
在硬件调试和软件调试完成后,进入系统的整体测试阶段。通过在不同的温度环境下进行多次测试,确保系统的稳定性和温度精度。测试表明,温度测量误差控制在±0.5℃以内,系统能够在规定的温度范围内稳定工作,报警功能能够在超出临界值时触发,且上位机能够实时显示温度曲线。</li>
</ol>
评论(0)