版本协议

Public Domain

专业版
#第九届立创电赛#温湿度传感器

创建时间:4个月前

89 0

视频

描述

<h3>1、项目功能介绍</h3> <p id="u56996930">桌面温湿度检测仪项目使用<strong>STM32G030K6T6</strong>芯片作为主控芯片,这款芯片使用的是ArmCortex-M0+内核;最大主频64Mhz。具有32KB的Flash以及8K的SRAM,供电电压在2.0V~3.6V之间。</p> <p>使用这款芯片可以通过STM32CubeMX软件进行基础代码生成与配置,图形化的方式可以快速上手使用芯片,对新手小白非常友好。</p> <p>此次的温湿度检测仪可以实现高精度的温湿度检测,检测模块使用的是盛思锐生产的第四代</p> <p>SHT40温湿度传感器模块,有着高精度,超低功耗的16位相对湿度和温度。</p> <p>该显示仪可同时显示当前环境的温度和湿度,并且在1s后刷新一次,还有一个通过按键触发中断,并且显示当前的电池电压,显示时间维持1s左右。</p> <h3>2、硬件部分:</h3> <p><strong>2-1整体原理图设计:</strong><img src="//image.lceda.cn/pullimage/4253Wle2PHIbSG0tLrrtQ3EQoQxkbJnXXVzabx9B.png"></p> <p> </p> <p><strong>2-2主控电路:</strong></p> <p><strong><img src="//image.lceda.cn/pullimage/JUF5m2IAnIAPGiLlil9ppYsW252GgDj0OiOBP7O4.png"></strong></p> <p> </p> <p>主控MCU的供电通过L1的磁珠和C2的电容,达到滤波的目的,使MCU获得干净的电源,主控的外围引脚连接按照产品手册中的引脚定义进行使用,这里需要注意的是有特定功能的引脚要使用其功能,如传感器的接入要使用IIC的功能,就要预留带有IIC功能的引脚。方便后期的引脚使用。</p> <p><strong>2-3晶振电路:</strong></p> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/pullimage/A1fia9aIjSRiMpg3MD3pj8a27PmkPoA8q2oTplfT.png" width="286" height="241"></p> <p>使用32.768KHz的时钟晶振来给RTC提供计时,可以使温湿度检测仪有计时功能,方便后期的功能拓展。</p> <p><strong>2-4温湿度传感器电路:</strong><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/pullimage/Jdc51c1USbSjxve2amAL65UpqdFG9aVLYfGkKtQh.png"></p> <p>本次项目的核心部件,使用SHT40温湿度传感器模块,SHT40是盛思锐生产的第四代,高精度,超低功耗的16位相对湿度和温度传感器,主要特性参数:相对湿度精度可以达到:±1.5%RH,温度精度可以达到:±0.1℃,平均的工作电流:0.4μA,空闲电流:80nA,工作范围:0-100%RH,-40-125℃,可以满足日常的温湿度测量需求。</p> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/pullimage/sTbNQI4bDuRV0cJhm4fHktG3QAB5Q8yGmZzRmAhv.png" width="307" height="294"></p> <p>SHT40非常小,焊接难度很高,所以这里直接使用的本次大赛专供的SHT40模块,方便使用。</p> <p><strong>2-5三态输出 8 位移位寄存器电路:</strong></p> <p><img src="//image.lceda.cn/pullimage/on7lFJjyPdN9Jq5wCgbjh65ZAP7FiLLPxeJtfNhQ.png"></p> <p>为了点亮多个数码管,这边选用了SN74HC595PWR寄存器来连接数码管进行显示,通过MCU较少的引脚就可以控制多个数码管。</p> <p><strong>2-6按键电路:</strong><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/pullimage/RgoyIMyRRpqmkBlsAaacrHCF9eSMm2Ak041Ao4s5.png"></p> <p> </p> <p>原本的按键是用来唤醒MCU的休眠状态,由于我加入了电源开关,代码中就没设置单片机的休眠模式,该按钮就用作中断显示当前检测仪的电源电压。</p> <p><strong>2-7测试LED电路:</strong><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/pullimage/qiU1d7UzjGMUxM2hE3VT58OHIGb4c1NaLMuTVLWI.png"></p> <p>为了方便后期软件的调试,使用两颗LED来进行软件部分的代码调试使用,两个灯分别连在了移位寄存器和MCU的GPIO上。</p> <p><strong>2-8数码管电路:</strong><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/pullimage/kPpf7Bnjq1xDt9G1UjM0yEmnTzCeAbt8zl5HTCs6.png" width="540" height="133"></p> <p>数码管这边使用了两个0.28寸共阴极3位数码管,来分别显示温度和湿度,实际中,由于共阴极数码管缺货,我使用的是共阳极数码管,若是共阴极,则代码中的对应位取反即可。</p> <p><strong>2-9电池电量测量电路:</strong><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/pullimage/V0104tCsCI7i4FfzR4cDY8YHV0DDPzTmoYjlAuBe.png"></p> <p>使用两个10K电阻对要采集的电源进行分压,以免要测的电源电压过大而烧坏单片机,为了确保测量的精度,使用MCU内部的基准电压作为参考电压。</p> <p><strong>2-10电池电路:</strong></p> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/pullimage/2jfQjjhBSbZ3Ot5OrtOsGhGQbi7X0XaIEwFjffCl.png" width="419" height="186"></p> <p>电池供电部分使用两节5号电池为整体系统供电,为了防止电池反接烧坏IO口,这边使用WST3401来实现防反接保护,并加入了电源开关。</p> <p><strong>2-11调试接口:</strong></p> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/pullimage/tmYUtMhH6apkCud7LINJGcIWOTURtBeo6M92ENXx.png"></p> <p>通过外接SWD下载调试接口实现对整体项目的软件的烧录和调试。</p> <h3>3、PCB展示</h3> <p><strong>3-1PCB整体布局走线</strong></p> <p><strong><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/pullimage/OR2KG9e027vCbqoc1HAw3Idd9E2xaVLu08L1cDFS.png" width="590" height="364"></strong></p> <p> </p> <p><strong>3-2 PCB 3D图展示</strong></p> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/pullimage/nXVWLzr6Ue4X1SFKfuhhU5dLbB74lPB4eT2igsIl.png" width="526" height="294"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/pullimage/WwzR3boUuqt3ARZyaVc6074p1sEN2bw4X6eZbGx0.png" width="527" height="268"></p> <p> </p> <h3>4、软件部分</h3> <p><strong>4-1软件的前期准备</strong></p> <p>软件部分使用STM32CubeMX软件生成基础的代码配置,如GPIO口的初始化,IIC初始化,ADC初始化,中断初始化。</p> <div>STM32CubeMX软件的基本使用流程</div> <div>首先需要下载对应芯片的固件包<img src="//image.lceda.cn/pullimage/QFkAr8NtlMQjCJee10yJZrGhWFy4G3gltR8aX8jZ.png" width="666" height="385"><img src="//image.lceda.cn/pullimage/JJnaklE2U1Uwz9EvtPx7OQQoQjRX8VdjFSBlIc3b.png" width="688" height="386"></div> <div>点击新建项目,开始创建本次的软件代码项目。<img src="//image.lceda.cn/pullimage/mepj40TNFX388xGYQZfPHrhAWRGISLQXv6kEurLd.png"></div> <p> </p> <p><strong>4-2代码部分</strong></p> <p>主函数,循环显示温度和湿度,若按键触发中断后,则显示当前电压值,第二行可显示自定义的字符,显示大概1秒左右,并将中断标志变量置0。</p> <p><img src="//image.lceda.cn/pullimage/holXEZ0VjpgyTBqD9gOBj6ToGcmha7i3opBnxqNk.png"></p> <p> </p> <p>获取温度函数,使用IIC通讯协议,发送读写地址后,获取的值经过公式计算即可得到温湿度的值</p> <p><img src="//image.lceda.cn/pullimage/qhampQD0pACReXLzd0ykX3pH5Z1LyhCsDWs7zVmM.png"></p> <p> </p> <p>ADC获取电压函数,获取要检测的电压的采集值和内部基准电压采集通道的值,换算后即可得到电池的电压。</p> <p><img src="//image.lceda.cn/pullimage/6mZjhKVIG1IqcqyE3BR9pX6y8jDImVdEv59i8pbj.png" width="494" height="298"></p> <p> </p> <p>中断函数,按键触发中断后,将led的状态反转并将中断标志置1。<img src="//image.lceda.cn/pullimage/ywWx0knS6FCDLrAMfl6AgfPP86sd5BNjogyvaYX8.png"></p> <p> </p> <p>移位数据寄存器发送数据函数<img src="//image.lceda.cn/pullimage/S0obGBxSMbzUUBVOdPnUpIz53ER84mPnUgh3ZB4E.png"></p> <p> </p> <p>数码管显示函数<img src="//image.lceda.cn/pullimage/Ifw0onXYN0C8lEaDbtRn9joKJ0GaKgAuFKNJYt2a.png"></p> <p> </p> <p><strong>5.最终实物展示<img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/pullimage/YO6ZqeBjNFy5LvgMk1PmkKDQAGvmKpbc1QtjWCg8.jpeg" width="444" height="284"></strong></p> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/pullimage/dn8JUaln5P15wpoYwkRHwhvriSy5ufNMtkFAQki0.jpeg" width="445" height="297"></p>

文档

BOM

暂无

附件

附件名 下载
01_code.rar

成员

评论(0)

  • 表情
    emoji
    小嘉工作篇
    小嘉日常篇
  • 图片
成功
工程所有者当前已关闭评论
goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow