版本协议

GPL 3.0

标签
专业版
#第九届立创电赛#多功能环境检测仪

创建时间:3个月前

204 1

视频

  • petal_20240726_114031Part001.mp4

  • petal_20240726_114031Part002.mp4

  • petal_20240726_114031Part003.mp4

描述

<h3 style="line-height: 1.8;"><span style="font-size: 18pt;">1. 项目功能介绍</span></h3> <hr> <p style="line-height: 1.8;">本项目基于STM32G030K6T6,利用盛思锐SHT40温湿度传感器模块实现了温湿度检测,实现了温湿度实时检测和蓝牙监控,在一段时间不对检测器进行操作的情况下,芯片将进入停止模式以保证芯片的低功耗运行。</p> <h3 style="line-height: 1.8;"><span style="font-size: 18pt;">2. 硬件设计</span></h3> <hr> <p style="line-height: 1.8;">主控芯片选用STM32G030K6T6</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/1c265a55d92b4e40a926c54307dad75b.png" width="598" height="306"></p> <p style="line-height: 1.8;">由于所有器件均为3.3V供电,而供电电源为2节3.7V的14500电池,因此需要对7.4V的电源进行降压,选用LM1117S对电源进行降压,电源与降压模块电路如下</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/fe0e560628f94a128b28dcde986d78cb.png" width="348" height="188"></p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/76d2568bbcad45448435ac051dac6016.png" width="331" height="150"></p> <p style="line-height: 1.8;">考虑到芯片为了实现低功耗运行,因此需要启用RTC以保证时间的准确性,因此外接晶振,其电路如下</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/a3156494003f46029cc88dce0ac3d7c5.png" width="369" height="166"></p> <p style="line-height: 1.8;">同时,需要有唤醒按键使芯片从停止模式切换为运行模式</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/9dc30208edc349beb4c85df187429682.png" width="331" height="105"></p> <p style="line-height: 1.8;">SHT40温湿度传感器模块电路,该传感器与MCU的通信方式为IIC,其中SDA和SCL两根线需要连接上拉电阻</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/decb1633066549cf8d45ddc68cecaaaa.png" width="245" height="269"></p> <p style="line-height: 1.8;">为了实现程序下载,SWD下载调试接口电路如下</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/7c8fabc855a246a5b7f84f300d86fc98.png" width="290" height="166"></p> <p style="line-height: 1.8;">四个用户自定义按键,此处我将其定义为页面的上翻下翻以及确认和取消</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/2ba346a8d7ae4af3baefda65e6e3e2d5.png" width="575" height="219"></p> <p style="line-height: 1.8;">为了能存储温湿度数据和字库数据,需要一颗EEPROM,需要注意的是,EEPROM与MCU的通信连接方式也为IIC,因此SDA和SCL两根线也需要上拉电阻连接</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/81df967375294616a0573a8726476bd1.png" width="351" height="201"></p> <p style="line-height: 1.8;">LCD选用的使1.8寸TFT屏幕,该屏幕与MCU之间采用SPI通信,其电路为</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/01cbf5412e5646d9ab1f4fe5e008e3c1.png" width="406" height="219"></p> <p style="line-height: 1.8;">其中我为了让MCU在停止模式下LCD能够熄屏,因此我在电源和LCD的VCC引脚之间加入了一个自锁开关,后来发现这其实是没必要的,因为通过更改背光引脚(BL)的电平即可实现屏幕的亮灭,因此可以将这个自锁开关去掉。当然,在之后的调试中发现,没有VCC供电的情况下LCD屏幕依然可以亮,但是亮度较暗,因此如果应用场景为夜晚,害怕屏幕太亮,也可以将这个自锁开关保留。</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/4a43be3eba5d4010ae9d3b5052c9b11e.png" width="382" height="206"></p> <p style="line-height: 1.8;">为了实现与手机APP的通信,我加入了一个蓝牙模块,蓝牙模块选用的使6328A串口蓝牙模块,物料编号C20539408。由于该蓝牙模块EDA中没有模型,因此我选用1x5pin的排针代替,同时,由于该蓝牙模块为邮票孔连接,也可以将EDA中的模型改为表贴,从而降低蓝牙模块的高度,从而为LCD屏幕留出更多高度,降低温湿度检测仪的整体厚度。</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/7f3378633c3e46069782ba8b7a60d990.png" width="233" height="155"></p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/1c34c5781def4a108ccbf9a20d2fc7b7.jpg" width="249" height="249"></p> <p style="line-height: 1.8;">最后,为了测试和监控MCU的工作状态,加入一个LED灯珠</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/fbbe5a34490a484dba53a1d0471ee4ef.png" width="436" height="110"></p> <p style="line-height: 1.8;">在PCB设计时,为了减少电磁干扰和加工工艺的影响,需要将晶振底部的铺铜和形态尖锐的铺铜通过设置禁止区域去除</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/e59d11def6804634a4ad3bdf0b7bce43.png" width="368" height="251"></p> <p style="line-height: 1.8;">最终,得到最终电路板及相关器件如下</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/b61a951388e94a4a91a7b491fcf3a364.jpg" width="535" height="247"></p> <h3 style="line-height: 1.8;"><span style="font-size: 18pt;">3. 软件设计</span></h3> <hr> <p style="line-height: 1.8;"> 芯片引脚定义如下</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/efd259e18f06403f913cacbc2ab66161.png" width="496" height="463"></p> <p style="line-height: 1.8;">其中,为了保证RTC的正常运行,需要首先配置RCC,设置LSE为外部晶振</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/d41aeca680d64bb691ce3e4218840b9f.png" width="638" height="429"></p> <p style="line-height: 1.8;">接着配置RTC,在这里配置时间表示方法(二进制/BCD)以及初始时间</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/abe8efde12bb449e8c27e76e9191915e.png" width="647" height="341"></p> <p style="line-height: 1.8;">其他如I2C、SPI、USART等可以参照各种教程实现</p> <p style="line-height: 1.8;"><strong>特别需要注意的是,LCD屏幕虽为SPI通信,但是其实际为电平控制,因此不需要将引脚定义为SPI模式</strong></p> <p style="line-height: 1.8;">代码编写部分,首先需要展示页面的实现,包括了日期、时间、当前温湿度、蓝牙状态以及供电电压</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/9ca1c8b53b0b47caba4a57523b2d4a05.png" width="590" height="550"></p> <p style="line-height: 1.8;">在日期、时间修改界面,实现了时间修改、光标闪烁等功能,其规则为:可更改年份(后两位),月份,日期,小时,分钟,不做任何操作按动UP/DOWN键将与页面0进行切换,第一次按动CONFIRM键,锁定YEAR,此时按动UP/DOWN键将改变YEAR值,再次按动CONFIRM键,光标将移至下一个值, 按动CANCEL键,结束日期时间调整</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/550798b15e3d4e11a10856941c0128e4.png" width="506" height="537"></p> <p style="line-height: 1.8;">为了进一步降低MCU功耗(睡眠模式下MCU的电流为mA级,而在停止模式下MCU的电流仅为uA级),当检测仪无操作10秒之后,MCU将进入停止模式,为了退出停止模式,可以通过唤醒按键对MCU进行唤醒。<strong>需要注意的是,当MCU进入停止模式时,芯片的HSI时钟将会停止,转而变为LSE时钟,因此在唤醒MCU的基础上,还需要对RCC进行重新配置,以防止滴答定时器的定时错误</strong></p> <p style="line-height: 1.8;"><strong><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/dc4222c0c9494e398b010ef15bde8c62.png" width="540" height="548"></strong></p> <p style="line-height: 1.8;">由于蓝牙为串口蓝牙,因此只需对printf函数进行重定义即可</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/e2f3e82689834829ace893fb8ee475c5.png" width="379" height="198"></p> <p style="line-height: 1.8;">此外,需要特别注意的是,在使用printf时,请在魔术棒中勾选"Use MicroLIB",否则printf将无法使用</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/70c9e2103af64601a12ceca8da423e63.png" width="471" height="354"></p> <p style="line-height: 1.8;">蓝牙APP设计,使用的时MIT App Inventor,这是一个APP设计网页,网址为http://app.gzjkw.net/</p> <p style="line-height: 1.8;">绘制APP界面</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/5b9c9fbc9715482db1a08648030b3f36.png" width="364" height="573"></p> <p style="line-height: 1.8;">编写APP后台代码</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/0aa0e1bdf1c040cf8c3c6157cb630a39.png" width="824" height="374"></p> <h3 style="line-height: 1.8;"><span style="font-size: 18pt;">4. 实物演示</span></h3> <hr> <p style="line-height: 1.8;"> 为温湿度检测仪上电,得到如下界面</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/6e75e855355e40619dd5fd808dab409c.jpg" width="458" height="285"></p> <p style="line-height: 1.8;">此时按动左侧上下键,可以进入日期时间设置界面,按动右上角的确定/取消键和左侧的上下键,可以实现时间的增减</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/1b58bd65ee254f749c1e44ca7aa4466f.jpg" width="461" height="269"></p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/9c8dc867e35242e68ffe92b9d83afaa6.jpg" width="460" height="268"></p> <p style="line-height: 1.8;">设置完成后,按左侧上下键切换至温湿度检测界面,可以看到此时时间已经设置成功</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/779566c0524b410db15d16b7a3e95b2a.jpg" width="459" height="247"></p> <p style="line-height: 1.8;">打开手机蓝牙APP</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/aa82d158cca840c79e72a18c06965cfc.jpg" width="323" height="699"></p> <p style="line-height: 1.8;">选择蓝牙设备</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/ef83b1b04004438eb28ed3e130263667.jpg" width="327" height="709"></p> <p style="line-height: 1.8;">当蓝牙完成连接时,蓝牙模块的连接指示灯亮,数据显示界面也显示蓝牙已连接</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/0280d3a4b82247b580d9826fb00b7dfb.jpg" width="461" height="239"></p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/f688bd5cfe3a48819916c4f9589fd6ae.jpg" width="460" height="248"></p> <p style="line-height: 1.8;">点击查询按键,即可实现当前温湿度的查询</p> <p style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/eae8cd19efd3429a956e259c023d13c6.jpg" width="330" height="715"></p> <h3 style="line-height: 1.8;"><span style="font-size: 18pt;">5. 附件说明</span></h3> <hr> <p style="line-height: 1.8;"><strong>MyProject.rar</strong>:本项目工程源码文件</p> <p style="line-height: 1.8;"><strong>SPI LCD源码和HAL库工程.rar</strong>:1.8寸LCD屏幕驱动程序(包括51单片机和STM32F1系列单片机,其他系列可以参照移植)</p> <p style="line-height: 1.8;"><strong>base.apk</strong>:本项目蓝牙APP</p> <p style="line-height: 1.8;"><strong>83991-1.8寸IPS+LCD模块资料.rar</strong>:1.8寸LCD屏幕驱动程序及汉字取模软件</p> <h3 style="line-height: 1.8;"><span style="font-size: 18pt;">6. 演示视频</span></h3> <hr> <p style="line-height: 1.8;">https://www.bilibili.com/video/BV1AsezefEFf/?share_source=copy_web&vd_source=1cc6752786a7dd940c6c809a85212bba</p> <p style="line-height: 1.8;"> </p> <p style="line-height: 1.8;"> </p> <p style="line-height: 1.8;"> </p>

文档

BOM

暂无

附件

附件名 下载
MyProject.rar
SPI LCD源码和HAL库工程.rar
base.apk
83991-1.8寸IPS+LCD模块资料.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