单片机智能加湿器设计与实现详解
前言
本文将从实现功能、整体设计方案、硬件电路设计、云平台使用、代码修改、元件清单以及致谢这七部分详细讲述制作过程中的细节。
一、实现功能
(1)加湿器设置了两种工作模式,自动模式和手动模式。在加湿器水量充足情况下,若设置为自动模式,则在加湿器加湿前判断当前环境湿度是否低于设置的湿度阈值,若低于则开启加湿,反之则关闭;若设置为手动模式,则不进行判断,按下就开启加湿,再次按下就关闭加湿。
(2)增加了加湿器的交互性,将加湿器的数据通过MQTT协议上传到OneNET云平台,手机APP订阅云平台将加湿器相关信息进行显示。同时可在APP上设置加湿器湿度阈值、工作模式以及加湿开关,通过云平台传回到单片机,实现远程控制。加湿器的相关信息也可通过OLED显示屏直接显示,便于用户查看。
(3)增加报警提示功能,当加湿器中水位过低时,不响应加湿请求并通过蜂鸣器鸣叫和APP端跳出提示框来提醒用户。
(4)增加按键控制功能,设有3个按键,实现界面切换、湿度阈值设置、模式选择以及加湿开关控制功能,设置的湿度阈值数据存储在FLASH内存中,实现掉电不丢失。
二、整体设计方案
基于单片机的智能加湿器设计采用STM32系列单片机作为主控芯片,系统所需模块包括温湿度检测模块、Wi-Fi通信模块、OLED显示模块、水位检测模块、雾化模块。STM32主控制器通过Wi-Fi通信模块完成单片机、云平台和手机APP之间的数据交互。
单片机将采集到的温湿度数据、水量数据、设置的湿度阈值数据、选择的加湿器模式、加湿开关状态上传到云平台。云平台作为中介,将信息转发给手机APP进行显示。从手机APP上下发湿度阈值调整、模式选择以及加湿开关指令也需借助云平台转发给单片机执行。通过云平台实现了手机APP控制单片机的效果。
三、硬件电路设计
3.1 电压转换电路
因为水位传感器模块和雾化模块需要5V供电,其他设备需要3.3V供电,因此本设计采用输入5V电压,并用AMS1117-3.3芯片将5V电压转换为3.3V电压,满足供电要求。采用Type-C实现外部供电,CC1、CC2接5.1K电阻接地,充电器关闭快充变为普通供电。按键按下时,充电器的5V电压进入转换芯片进行电压转换。
3.2 蜂鸣器报警电路
报警电路采用有源蜂鸣器,内部含有振荡源,上电即可鸣叫。但由于单片机I/O口输出电流较小,几乎驱动不了蜂鸣器,因此添加一个NPN型三极管构成电流放大电路驱动蜂鸣器。当水位过低时,单片机输出高电平,三极管导通,蜂鸣器鸣叫;正常情况下,单片机输出低电平,三极管处于截止状态。
此处使用的是5V有源蜂鸣器,但电路图中给它接的是3.3V,实测蜂鸣器可以鸣叫无影响。
3.3 按键电路
本设计使用到3个按键,实现界面切换、湿度阈值设置、加湿器模式切换、手动模式下控制加湿开关功能。在不同情况下,按键按下的作用不同。上电后默认是主界面,显示环境温湿度、水量、加湿器模式信息。按下按键K1则进入到湿度阈值设置界面,显示设置的湿度阈值,此时再按下K2或者K3可以实现湿度阈值加减操作。再按下K1则回到主界面,在主界面按下K2则加湿器切换到手动模式,加湿模块打开,再按下K2加湿模块关闭。通过程序编写,在不同界面赋予按键不同的含义,提高了按键的利用率。
3.4 继电器控制电路
本设计采用继电器来控制加湿模块,当单片机接收到加湿请求时,单片机引脚输出高电平,继电器闭合,加湿模块上电工作。未接收到加湿请求时,单片机输出低电平,继电器断开,加湿模块不通电。线圈两端(1、4两端)的电压不宜过大,根据数据手册可以得知最大电压需小于等于3.75V,此处选用3.3V。
继电器详细接线图如下
3.5 其他成品模块电路连接
3.5.1 OLED显示模块
使用的是IIC通信的0.96英寸的OLED模块
3.5.2 Wi-Fi模块
==使用的是ESP8266-01SWi-Fi模块进行通信
3.5.3 温湿度传感器模块
使用的是DHT11温湿度传感器进行温度和湿度测量,输出为数字量
3.5.4 水位传感器模块
使用的是WaterSensor水位传感器模块进行水位测量,输出为模拟量。此处使用此模块只是作为大致的水位测量,并不显示精确的水位数值。见3.按键电路效果图可知
3.6 完整电路
原理图和嘉立创打板文件在文章后面以网盘链接给出
四、云平台使用
本设计使用的是OneNet云平台
4.1 云平台注册和登录
4.2 创建产品
点击开发者中心
此处随便选取都可
可以看到此处已有创建的产品
4.3 添加设备
点击设备管理添加设备
设置设备名称,注意此处设备名称要与代码中对应
可以看到此处已有创建的设备
4.4 设置物模型
点击左侧产品开发
点击右侧产品开发
点击设置物模型
点击添加自定义功能点
按上图填写需要的功能点,注意:标识符要与代码中对应
可以看到此处已有添加的功能点
本设计所需功能点如上
查看产品的相关信息,记住产品ID
可以看到设备名称/ID为Humidifier,点击设备管理->详情
可以看到设备密钥,将其复制下来
致此,云平台创建结束
4.5 云平台测试
由上图可以看到当前创建的设备还未激活,若当前还未把板子制作完成,我们可以利用软件将其激活。
点击设置按钮
红色框内前两行不变,第三行填入创建的设备名称。
token生成软件如上
将产品ID、设备名称和设备密钥替换为自己的,其余无需改变
点击Generate生成token,复制生成的token到MQTT软件中的password
点击connect发现右侧绿灯点亮说明连接成功
在云平台界面也可以看到设备被激活,处于在线状态
上述激活过程参考的是B站up主壹知半解的教程,后续APP设计也是参考此up主
致此软件激活设备到此结束
五、代码修改
代码最后放在一个网盘链接中给出,此处只介绍将代码移植到自己的工程中需要修改的地方
5.1 单片机代码修改
使用的是Keil uVision5软件进行单片机代码编写
在esp8266.c文件中修改wifi名称和密码,注意手机开的热点要为2.4GHZ
在onenet.c文件中修改产品ID、设备密钥、设备名称
在onenet.c文件中增加或删除要上传的变量
在onenet.c文件中,处理从云平台下发的数据,如继电器开关、湿度阈值和工作模式,可根据自己的项目进行修改。
5.2 小程序代码修改
使用的是HBuilder X软件进行小程序代码编写
在此处查看用户ID和用户Accesskey,记录下来
修改小程序代码中的author_key、user_id以及产品ID
点击发行可以看到,程序既可以打包成APP也可以制作成小程序和快应用。这里选择原生APP云打包,之后如可对打包进行自定义配置也可直接打包。这里选择直接打包,等待几分钟即可得到APK文件,将其发送到手机上进行安装即可。
最终效果如上图所示,此界面为本设计APP的UI,能将加湿器相关的参数信息进行显示。显示信息包括环境温湿度数据、加湿器水量、湿度阈值、工作模式、加湿开关以及设备是否在线。
当从手机上下发控制指令时,如在手机上设置湿度阈值时,可能会回弹到原先值,过四、五秒钟后回弹到设置值,这属于正常现象,也可在小程序代码中进行修改,当从手机APP上设置相关参数时,显示一个转圈的图标,等从云平台重新接收到修改的数据再在手机APP上进行显示。
代码修改部分致此结束,也可参考B站up主壹知半解的项目视频
六、元件清单
本部分介绍该设计所用的元器件及型号
使用的主控是stm32f103c8t6的最小系统板,如果使用的是stmf103c6t6就没有串口3,需要修改一下代码,选择串口2
温湿度检测模块使用的是DHT11模块
Wi-Fi通信模块使用的是esp8266-01s模块
显示屏使用的是0.96英寸的OLED屏幕(IIC通信)
水位传感器使用的是WaterSensor水位传感器模块
雾化模块通过高频振动将水雾化,最好搭配一个吸水棉棒
部分元件清单如上,有些模块是用母座连接,方便插拔
七、致谢
本设计参考了B站壹知半解、江协科技、彼岸有光我们有船、Libyee等up主的教程,在此感谢。
总结
由于本人水平有限,没有设计外壳,看起来十分简陋。在此给出一些修改意见:从板子中间挖个孔,让加湿器的棉棒可以穿过板子,外部再加装外壳,外壳可以镂个矩形框便于OLED屏显示,DHT11温湿度传感器应该是不能全部覆盖,如果覆盖的话湿度值就不易改变。欢迎各位复刻,如有疑问可到评论区发表。
通过百度网盘分享的文件:智能加湿器教程.rar
链接:https://pan.baidu.com/s/1fQPravoWX3w35gPp_3F_Dw?pwd=1234
提取码:1234
作者:m0_56059533