版本协议

Public Domain

专业版
#第九届立创电赛#温湿度仪

创建时间:10个月前

189 0

描述

<div class="document"> </div> <div class="document"> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="font-size: 14pt;">1、项目功能介绍</span></h3> <hr class="horizontal-splitline normal-bold-2"> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #000000; font-size: 14px;">本设计使用STM32G0作为主控MCU,采用盛思锐的SHT40温湿度传感器进行环境中温度以及湿度的数据采集,通过两个三位数码管进行数据展示。</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #000000; font-size: 14px;">电源方面为了设计简单,采用的是两节干电池进行供电,MCU多数情况工作于休眠状态,通过按键唤醒后依次显示两次当前温度以及湿度。</span></p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </h3> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="font-size: 14pt;">2、项目属性</span></h3> <hr class="horizontal-splitline normal-bold-2"> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #000000; font-size: 14px;">该项目用于参加第九届立创电,项目参考官方温湿度计的设计进行复刻。</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="font-size: 14pt;">3、开源协议</span></h3> <hr class="horizontal-splitline normal-bold-2"> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span class="ql-size-13">Public Domain</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="font-size: 14pt;">4、硬件部分</span></h3> <hr class="horizontal-splitline normal-bold-2"> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><strong><span style="font-size: 12pt;">4.1、STM32G0最小系统</span></strong></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/007b9335b58145428ce49b372002fcb5.png" alt="" width="794" height="395"></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">对于STM32G0而言仅仅需要一个外部的复位电路+电源即可进行运行,复位电路使用的是一个10K的电阻+100nF的电容构成。</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><strong><span style="font-size: 12pt;">4.2、SHT40温湿度模块</span></strong></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/da3de16c00604b5da0aa4c0dfcb256ab.png" alt="" width="418" height="402"></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">本次设计中,为了减小焊接难度,使用的是立创商城中的一款焊接好的SHT40模块,需要注意的是,如果想要温湿度传感器正面向外,需要将1管教设置为SDA</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="font-size: 12pt;"><strong>4.3、数码管驱动</strong></span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/f309237640b04fceb3802bd444cd2cfb.png" alt="" width="1115" height="173"></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">由于单片机管教的输出能力有限,本设计中使用的三片74HC595进行数码管驱动;</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">U3、U4分别控制两个数码管的段选,U5用于控制数码管位选;同时三个595的使能引脚连接到单片机的管脚上,便于进一步降低功耗。</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="font-size: 12pt;"><strong>4.4、数码管</strong></span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/226e438f79b2424eaa3bfc587c2b743b.png" alt="" width="1133" height="321"></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">本设计中选择数码管是两片三位共阴极数码管,因此在驱动的时候需要将段选设置为高电平,位选设置位低电平即可点亮。</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"> </p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><strong><span style="font-size: 14pt;">5、软件部分</span></strong></h3> <hr class="horizontal-splitline normal-bold-2"> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;">软件方面,使用STM32CubeMX + Keil v5进行开发,通过STM32CubeMX进行硬件配置以及代码生成,Keil V5进行逻辑代码开发。</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"> </p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"><span style="font-size: 12pt;"><strong>需要注意的是</strong></span>:本设计使用的是Keil V5的AC5编译器进行开发,对于高版本默认不带AC5,需要手动安装,然后进行选择。</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/7c72cbeb6cb044ca9946fcd8c97e2fc9.png" alt="" width="778" height="587"></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"> </p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"><span style="font-size: 12pt;"><strong>5.1、74HC595驱动</strong></span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/13a2913c373e4b3384e86903ba517220.png" alt="" width="998" height="341"></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;">74HC595的操作逻辑比较简单,依照数据手册的时序进行发送即可,总结如下:</p> <ol> <li class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;">开启当前74HC595的使能管脚(拉低);</li> <li class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;">依次通过SER管脚发送8个数据,电平稳定后,通过SCLK管脚触发一个上升沿即可完成一位数据写入;</li> <li class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;">所有数据写入完成后,通过RCLK管脚触发一个上升沿即可完成数据锁存,此时74HC595依照输入的数据进行输出;</li> </ol> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"> </p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"><strong><span style="font-size: 12pt;">5.2、数码管显示段码表</span></strong></p> <table style="border-collapse: collapse; width: 19.152%; height: 327px;"> <tr> <td style="width: 49.9952%;">0</td> <td style="width: 49.9952%;">0x3F</td> </tr> <tr> <td style="width: 49.9952%;">1</td> <td style="width: 49.9952%;">0x06</td> </tr> <tr> <td style="width: 49.9952%;">2</td> <td style="width: 49.9952%;">0x5B</td> </tr> <tr> <td style="width: 49.9952%;">3</td> <td style="width: 49.9952%;">0x4F</td> </tr> <tr> <td style="width: 49.9952%;">4</td> <td style="width: 49.9952%;">0x66</td> </tr> <tr> <td style="width: 49.9952%;">5</td> <td style="width: 49.9952%;">0x6D</td> </tr> <tr> <td style="width: 49.9952%;">6</td> <td style="width: 49.9952%;">0x7D</td> </tr> <tr> <td style="width: 49.9952%;">7</td> <td style="width: 49.9952%;">0x07</td> </tr> <tr> <td style="width: 49.9952%;">8</td> <td style="width: 49.9952%;">0x7F</td> </tr> <tr> <td style="width: 49.9952%;">9</td> <td style="width: 49.9952%;">,0x6F</td> </tr> </table> 依照段码表中的数据发送,即可在在数码管上显示对应的字符。 <p> </p> <p><span style="font-size: 12pt;"><strong>5.3、温湿度读取</strong></span></p> <p><img src="//image.lceda.cn/oshwhub/aa72dc5dcaa344a3be16b5d37ee5b1d5.png" alt="" width="1161" height="269"></p> <span style="font-size: 12pt;">SHT40传感器通过I2C1和STM32连接,在读取的时候参照SHT40的数据手册即可,首先发送传感器地址,然后读取6个字节。</span> <p><span style="font-size: 12pt;">其中第一、第二个字节表示温度;第四个、第五个字节表示湿度,通过数据手册给出的计算方式即可换算成对应的温湿度。</span></p> <p> </p> <p><span style="font-size: 12pt;"><strong>5.4、主程序逻辑</strong></span></p> <p><strong><span style="font-size: 14pt;"><img src="//image.lceda.cn/oshwhub/2eb47d7ccd55414a8754ffeb6d8ce1f4.png" alt="" width="1055" height="532"></span></strong></p> <span style="font-size: 12pt;">在main函数中,完成各类外设的初始化(GPIO、数码管、I2C、定时器等)之后,进入主循环。</span></div> <div class="document"><span style="font-size: 12pt;">MCU正常情况下工作在睡眠模式下,当按键被按下时,触发中断唤醒MCU,MCU读取SHT40的温度、湿度,然后依次在数码管1和2上显示出来。</span><span style="font-size: 12pt;">在循环显示两次之后,修改当前状态,再次触发进入休眠模式。</span> <p> </p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><strong><span style="font-size: 14pt;">6、BOM清单</span></strong></h3> <hr class="horizontal-splitline normal-bold-2"> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">BOM清单详见后文,所有元器件从立创商城采购。</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><strong><span style="font-size: 14pt;">7、大赛LOGO验证</span></strong></h3> <hr class="horizontal-splitline normal-bold-2"> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">完整实物图如下所示:</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/5cba976ae0d0479fb0c43fd22d79d5e3.jpg" alt="实物图" width="497" height="382"></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">PCB图如下所示</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/0e05d8edf977471382b850ad2c4159ad.jpg" alt="PCB图" width="496" height="381"></p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </h3> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="font-size: 14pt;">8、演示您的项目并录制成视频上传</span></h3> <hr class="horizontal-splitline normal-bold-2"> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p> </div>

文档

BOM

暂无

附件

附件名 下载
立创电赛:温湿度计-功能演示.mp4
程序源码.7z

评论(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