站内搜索
发作品签到
【新手向】STM32触摸屏+温湿度+加湿器+日历+时钟+闹钟

分类

技术干货

【新手向】STM32触摸屏+温湿度+加湿器+日历+时钟+闹钟

原创
959
2
6
0

简介

STM32 HAL库开发,用触摸屏交互实现: 1. 查看温湿度 2. 调整日期与时间 3. 设置闹钟 4. 设置不同频率加湿器 5. 调节亮度 6. 自动休眠(60s)与手动休眠 7. 自定义页面

简介:STM32 HAL库开发,用触摸屏交互实现: 1. 查看温湿度 2. 调整日期与时间 3. 设置闹钟 4. 设置不同频率加湿器 5. 调节亮度 6. 自动休眠(60s)与手动休眠 7. 自定义页面
更新时间:2025-08-11 09:56:00

实物演示视频链接

【新手向】STM32触摸屏+温湿度+加湿器+日历+时钟+闹钟(哔哩哔哩):
https://b23.tv/kW8YIMl

项目简介

开始做这个项目的初衷是为了给家里和朋友做一个加湿器,但是立创开源平台上没找到比较好的STM32主控的加湿器,所以就自己做了一个来弥补一下这个空缺。但是只有加湿的功能太单调了,于是做了一个时钟,但是没有联网,初始需要手动调节时间。本项目开发时间很短,都是很简单很基础的东西,所以我自己也正在更新,不过我觉得这是一个还算完整的小项目,于是我发出来和大家分享一下,对于单片机新手来说是一个很适合起手并且比较有成就感的项目(UI界面挺耗时间的,可以做点简单的意思一下),整个部分就是串口屏幕有点贵,不知道我是不是没比价,花了我62米,其余部分每个模块不超过10块钱。

本项目通过STM32F103C8T6C6T6(后来发现我从实验室拆错了,不过代码一样能用,对我的影响就是TIM少了一个),并利用串口屏作为交互,实现了:

  1. 查看温湿度
  2. 调整日期与时间
  3. 设置闹钟
  4. 设置不同频率加湿器
  5. 调节亮度
  6. 自动休眠(60s)与手动休眠
  7. 自定义页面

功能还是比较完善的,目前测试没有很大的BUG,可以按照理解正常使用。

本项目还是有很大改进空间的(本人目前是个学生,水平有限)
1.优化OLED界面,例如增加光标移动动画。
2.优化触摸UI(有的界面我自己都看不下去,但没什么设计经验不知道怎么修改,目前就是意思一下)
2.增加外壳(正在制作)
3.优化外观,例如增加RGB灯,照亮容器等(正在制作)
4.利用wifi模块增加联网功能,可以自校准时间,或者用小程序、APP等远程查看和控制(还没开始、但是我留了串口出来)
5.RTC没用LSE,因为我手上这块晶振没起振,我还没买新的,所以有掉电不走时的致命缺陷,如果有需要掉电走时的话可以在VBAT引脚接一块CR2032。

项目功能

1.初始界面

该界面有六个按钮,分别对应不同的功能:

05634b4960af67ea0a3310e8e08e296f.jpg

2.查看温湿度界面

点击温湿度按钮,可以查看当前的温度与湿度。

11f24077c6ab6ebded8140af8a9735c9.jpg

3.时钟/闹钟界面

旁边添加了使用说明,在此详细描述使用方法:

3.1.时钟界面

3.1.1 进入控制界面:

befa8b74aa8da868c6a6b21f3386ff2b.jpg
3.1.2 先“左移”或“右移”,选择参数,就是你要调节的年月日时分秒,有光标跟着显示。

b831029f3720304fb7ce12b1a035409a.jpg
3.1.3 通过“增加”、“减少”按钮修改所选参数。
3.1.4 进入修改模式时,时间不会变化,当按下确认键,或者光标移动至消失时时间恢复走时。

3.2闹钟界面

3.2.1 通过切换按钮切换到闹钟界面,初始日期始终为时钟当前日期,时间为0时0分0秒。

6510e8aafbf3d5c716d9e3dcf7f6c153.jpg
3.2.2 与时钟类似,首先左右移,选择需要调整的参数。
3.2.3 选择好参数后,通过“增加”、“减少”按钮修改所选参数。
3.2.4 按下确定后、闹钟预备中....等待时间到闹钟所设置时间,OLED切换到闹钟界面,串口屏跳出弹窗提示,蜂鸣器响。

4.加湿器功能

加湿器分为高速(开2秒、关2秒)、中速(开10秒、关10秒)、低速(一直打开),每次选择后,需要重新打开加湿器开关生效。

3540f0fae4327f580bd65f21284ba69f.jpg

5.亮度调节功能

亮度阈值范围设置为20%——100%,上电默认100%,通过滑块调节,数字会根据滑块实时变化。同时可以通过选择日间(100%)夜间模式(20%)直接调整亮度。
日间:
0e3a0f97a2ccd7f56d67437e2227c8e2.jpg
夜间:(拍下来好像没什么区别,但是实际上还是挺明显的)
2806fc26470bd58470f5bc608df921d7.jpg

6.自定义页面

登录按钮作为自定义界面,可以显示自己想显示的东西,例如我设置了两个密码,一个是给朋友的,一个是给家人的,根据密码的不同会显示不一样的界面,给家人的会写一些暖心的话,给朋友的是放了一个自己制作的小程序的二维码,这个界面就不给大家分享了,大家可以自定义。

7.睡眠功能

打开开关后进入睡眠,串口屏熄灭,再次触摸亮屏初始界面。同时我设置了自动休眠,60秒没有操作自动休眠,再次触摸唤醒。(所以这个手动休眠好像没什么用(挠头),大家也可以自己修改功能,还是很简单的)

0313aa5445af2bd63fd38530e0ce9644.jpg

项目参数

  • 本设计包含电源稳压设计,输入电压5V,使用TYPE-C供电,也可以使用电池替换。
  • 本设计采用OLED,串口屏液晶显示,刷新率高,驱动简单,交互效果好
  • 选用全数字型温湿度传感器DHT11,具有较宽的温度测量范围,可以满足一般需求;

原理解析(硬件说明)

本项目由以下部分组成,电源部分、OLED部分、主控部分、加湿器驱动部分,触摸屏部分,本项目主要是通过触摸屏按键进行交互。
本设计简单到就是堆堆模块,所以没有什么设计难点,留好排母就行,适合我这种硬件小白。

image.png

电源电路:
包含高频低频滤波,采用TYPE-C-4P接口作为供电接口,只有供电功能,没有数据功能,可以修改,因为再用STLINK烧录时STM32被盖住了,还挺麻烦。

image.png

其他倒没什么了,只要合理留排母就行,我留排针是为了后期加功能就在背后飞线了。
PCB设计如下:

image.png
留下了很多测量距离,为了留下安装铜柱的孔,其他的就是要合理安排位置,为了在10X10的范围内,只能硬塞了。以下是我考虑的几点,大家修改的时候可以参考:

  • DHT11如果放在屏幕下面,可能会受到屏幕热的影响
  • 加湿器模块放在右上角是因为我计划把棉棒放在右边
  • 因为我的手上只有18mm铜柱,所以STM32只能焊在板子上了,请勿模仿,可以换高一点的铜柱安装屏幕,用排母安装STM32
  • OLED同上,焊在上面是因为我没有M2铜柱... 只有排母倾斜的很难看,所以我直接焊在上面了

补充:
为了美观,设计了LED拓展板,直接焊上主控板的电源即可,我打算放在加湿器容器的下面。
image.png

3D模型制作中.....
草图贴上给大家看一下
image.png

软件代码

移步附件....
代码其实很简单,最复杂的就是日历那里,我用的是我以前做的课程设计的代码,是一种很呆的写法,如果有需要的话我再详解吧,这里就先不说了。引脚配置如下图所示:

image.png

注意事项

  • 输入电压5V
  • 屏幕与驱动的接线型号不一样,屏幕是4P的2.54,加湿器控制部分是3P的PH2.0。
  • 铜柱最好高一点,不然32的最小系统板放不下。

这个项目对新手还是比较友好的,初学者可以试一试,体验成品的成就感!如果有需要我考虑写一下代码的详细介绍。

添加到专辑
0
0
分享
侵权投诉

附件

序号文件名称下载次数
1
串口屏.HMI
21
2
加湿器配置与代码.zip
11

评论

全部评论(1
按时间排序|按热度排序

底部导航