
分类
技术干货
【新手向】STM32触摸屏+温湿度+加湿器+日历+时钟+闹钟
简介
STM32 HAL库开发,用触摸屏交互实现: 1. 查看温湿度 2. 调整日期与时间 3. 设置闹钟 4. 设置不同频率加湿器 5. 调节亮度 6. 自动休眠(60s)与手动休眠 7. 自定义页面
简介:STM32 HAL库开发,用触摸屏交互实现: 1. 查看温湿度 2. 调整日期与时间 3. 设置闹钟 4. 设置不同频率加湿器 5. 调节亮度 6. 自动休眠(60s)与手动休眠 7. 自定义页面实物演示视频链接
【新手向】STM32触摸屏+温湿度+加湿器+日历+时钟+闹钟(哔哩哔哩):
https://b23.tv/kW8YIMl
项目简介
开始做这个项目的初衷是为了给家里和朋友做一个加湿器,但是立创开源平台上没找到比较好的STM32主控的加湿器,所以就自己做了一个来弥补一下这个空缺。但是只有加湿的功能太单调了,于是做了一个时钟,但是没有联网,初始需要手动调节时间。本项目开发时间很短,都是很简单很基础的东西,所以我自己也正在更新,不过我觉得这是一个还算完整的小项目,于是我发出来和大家分享一下,对于单片机新手来说是一个很适合起手并且比较有成就感的项目(UI界面挺耗时间的,可以做点简单的意思一下),整个部分就是串口屏幕有点贵,不知道我是不是没比价,花了我62米,其余部分每个模块不超过10块钱。
本项目通过STM32F103C8T6C6T6(后来发现我从实验室拆错了,不过代码一样能用,对我的影响就是TIM少了一个),并利用串口屏作为交互,实现了:
- 查看温湿度
- 调整日期与时间
- 设置闹钟
- 设置不同频率加湿器
- 调节亮度
- 自动休眠(60s)与手动休眠
- 自定义页面
功能还是比较完善的,目前测试没有很大的BUG,可以按照理解正常使用。
本项目还是有很大改进空间的(本人目前是个学生,水平有限)
1.优化OLED界面,例如增加光标移动动画。
2.优化触摸UI(有的界面我自己都看不下去,但没什么设计经验不知道怎么修改,目前就是意思一下)
2.增加外壳(正在制作)
3.优化外观,例如增加RGB灯,照亮容器等(正在制作)
4.利用wifi模块增加联网功能,可以自校准时间,或者用小程序、APP等远程查看和控制(还没开始、但是我留了串口出来)
5.RTC没用LSE,因为我手上这块晶振没起振,我还没买新的,所以有掉电不走时的致命缺陷,如果有需要掉电走时的话可以在VBAT引脚接一块CR2032。
项目功能
1.初始界面
该界面有六个按钮,分别对应不同的功能:

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

3.时钟/闹钟界面
旁边添加了使用说明,在此详细描述使用方法:
3.1.时钟界面
3.1.1 进入控制界面:

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

3.1.3 通过“增加”、“减少”按钮修改所选参数。
3.1.4 进入修改模式时,时间不会变化,当按下确认键,或者光标移动至消失时时间恢复走时。
3.2闹钟界面
3.2.1 通过切换按钮切换到闹钟界面,初始日期始终为时钟当前日期,时间为0时0分0秒。

3.2.2 与时钟类似,首先左右移,选择需要调整的参数。
3.2.3 选择好参数后,通过“增加”、“减少”按钮修改所选参数。
3.2.4 按下确定后、闹钟预备中....等待时间到闹钟所设置时间,OLED切换到闹钟界面,串口屏跳出弹窗提示,蜂鸣器响。
4.加湿器功能
加湿器分为高速(开2秒、关2秒)、中速(开10秒、关10秒)、低速(一直打开),每次选择后,需要重新打开加湿器开关生效。

5.亮度调节功能
亮度阈值范围设置为20%——100%,上电默认100%,通过滑块调节,数字会根据滑块实时变化。同时可以通过选择日间(100%)夜间模式(20%)直接调整亮度。
日间:

夜间:(拍下来好像没什么区别,但是实际上还是挺明显的)

6.自定义页面
登录按钮作为自定义界面,可以显示自己想显示的东西,例如我设置了两个密码,一个是给朋友的,一个是给家人的,根据密码的不同会显示不一样的界面,给家人的会写一些暖心的话,给朋友的是放了一个自己制作的小程序的二维码,这个界面就不给大家分享了,大家可以自定义。
7.睡眠功能
打开开关后进入睡眠,串口屏熄灭,再次触摸亮屏初始界面。同时我设置了自动休眠,60秒没有操作自动休眠,再次触摸唤醒。(所以这个手动休眠好像没什么用(挠头),大家也可以自己修改功能,还是很简单的)

项目参数
- 本设计包含电源稳压设计,输入电压5V,使用TYPE-C供电,也可以使用电池替换。
- 本设计采用OLED,串口屏液晶显示,刷新率高,驱动简单,交互效果好
- 选用全数字型温湿度传感器DHT11,具有较宽的温度测量范围,可以满足一般需求;
原理解析(硬件说明)
本项目由以下部分组成,电源部分、OLED部分、主控部分、加湿器驱动部分,触摸屏部分,本项目主要是通过触摸屏按键进行交互。
本设计简单到就是堆堆模块,所以没有什么设计难点,留好排母就行,适合我这种硬件小白。

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

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

留下了很多测量距离,为了留下安装铜柱的孔,其他的就是要合理安排位置,为了在10X10的范围内,只能硬塞了。以下是我考虑的几点,大家修改的时候可以参考:
- DHT11如果放在屏幕下面,可能会受到屏幕热的影响
- 加湿器模块放在右上角是因为我计划把棉棒放在右边
- 因为我的手上只有18mm铜柱,所以STM32只能焊在板子上了,请勿模仿,可以换高一点的铜柱安装屏幕,用排母安装STM32
- OLED同上,焊在上面是因为我没有M2铜柱... 只有排母倾斜的很难看,所以我直接焊在上面了
补充:
为了美观,设计了LED拓展板,直接焊上主控板的电源即可,我打算放在加湿器容器的下面。

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

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

注意事项
- 输入电压5V
- 屏幕与驱动的接线型号不一样,屏幕是4P的2.54,加湿器控制部分是3P的PH2.0。
- 铜柱最好高一点,不然32的最小系统板放不下。
这个项目对新手还是比较友好的,初学者可以试一试,体验成品的成就感!如果有需要我考虑写一下代码的详细介绍。






评论