智能加湿器设计
2020-08-04葛亚齐刘建粉
葛亚齐 刘建粉
摘 要
基于智能家居理念,设计了一款基于STC89C52单片机的智能加湿器。智能加湿器有两种模式,自动模式下通过传感器采集周围温湿度数据并根据预先设置的湿度阈值自动调节工作状态;手动模式下通过手机APP查看温湿度信息并远程控制加湿器工作状态。该加湿器具备湿度阈值设置、自调节喷雾大小、防干烧、自启停及实时显示温湿度等功能,使用便利,能提高人们的生活舒适度。
关键词
智能加湿器;单片机;传感器;WiFi;Android
中图分类号: TM925.1;TP368.1;TP212 文献标识码: A
DOI:10.19694/j.cnki.issn2095-2457.2020.15.035
0 引言
随着人们生活水平的不断提高,人们对室内环境舒适度的要求也提出了更高要求,良好的室内环境不仅有助人体健康,同时也能给工作生活带来愉快的心情[1]。加湿器的使用可以有效改变空气湿度,给人们提供舒适的环境。
参考市面的加湿器,并对其进行升级改造。利用DHT11采集温湿度并通过LCD1602显示,设置按键来控制环境湿度阈值并实现智能加湿,手机APP通过ESP8266WiFi可以查看温湿度信息并控制加湿器的运行和停止,防干烧功能使系统更安全可靠。
1 工作原理
根据用户需求分析,设计的智能加湿器应满足以下要求:采集周围環境的温湿度并实时显示;按键设置湿度阈值,在阈值范围内实现自动加湿或停止;通过开发的手机APP可以查看温湿度,并可控制加湿器的工作或停止;当加湿器即将发生干烧时,加湿器停止工作。为实现上述要求。本次选用搭载了STC89C52芯片的BST-M51开发板,DHT11作为温湿度采集模块,LCD1602液晶屏为显示模块,按键为设置模块,选用1路5v继电器作为驱动模块,ESP8266-01s作用手机与单片机之间的通信模块。具体结构如图1所示。
在系统流程中可以看出,Android APP终端和STC主控芯片作为客户端,依靠WiFi模块服务端进行互相通信。STC主控芯片检测温湿度发送给APP显示;APP发送数据控制继电器开关;STC单片机控制LCD显示温湿度并通过按键扫描控制继电器工作。
2 硬件设计
2.1 STC89C52主控芯片
STC89C52芯片包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM),定时/计数器、UART串口、I/O接口、EEPROM 、看门狗等模块,是一款功能强大的系统芯片[2]。STC 89C52芯片采用5v供电,在XTAL1和XTAL2引脚两端跨接频率为11.0592MHz的晶振作为时钟电路。
为了使本次设计占用空间小且集成程度高,故本系统选择了搭载STC89C52芯片的BST-M51主板,该主板集成了按键、灯光、通信接口、LCD显示屏接口以及多种电压的接口,模块定义IO口即可使用。P3.0和P3.1作为通信接口连接ESP8266WiFi。P1作为LED灯的IO口,P2.2连接DHT11传感器,P2.1连接继电器模块。
2.2 温湿度采集模块
环境温湿度采集使用DHT11温湿度传感器。这是一款含有已校准数字信号输出的温湿度复合传感器,自带模数转换芯片,可以同时采集温度和湿度。读出温湿度数据在进行校验后可以进行使用,具有精度高、可靠性高的特点。使用时将DATA口接入单片机,5v供电即可。
2.3 显示模块
温湿度信息显示采用液晶屏LCD1602实现。LCD1602是一款蓝屏、带背光白字体的显示屏,是专门用来显示字母、数字元、符号等的点阵型液晶显示模块。采用标准的16位引脚,通过RS、R/W和E端的电平控制实现数据的读操作和写操作。
2.4 继电器控制模块
本次采用1路5v继电器控制电路通断,继电器最大的特点是可以通过很小的电流来控制大电流的通断,一般由铁芯、线圈、衔铁、触点簧片等组成。输入端有DC+、DC-和IN三个接口,输出端有NO、COM、NC三个接口。由于单片机IO口电流很小,所以选择低电平触发方式,输入端用单片机来控制,输出端用来控制加湿器。
2.5 WiFi通信模块
本系统通信模块为ESP8266-01sWiFi模块。该模块共有8个引脚,3种工作模式,分别是AP模式、station模式以及混合模式。WiFi模块包含基础网(Infra)和自组网(Adhoc)两种类型的拓扑[3]。本次设计主要使用AP模式。AP 是一个无线网络的创建者,是网络的中心节点。将WiFi模块作为服务器,单片机和手机作为客户端,连接WiFi模块进行相互通信。WiFi通信属于串口通信,所以直接将ESP8266与单片机直连,VCC连接3.3V电源接口,GND与单片机共地,TX-RX,RX-TX,CH-PO置高,连接3.3V电源。通过单片机向芯片写入AT命令进行WiFi配置,然后开启系统中断,接收WiFi模块发来的数据进行分析处理,判断数据命令执行相应的操作。
3 软件实现
3.1 温湿度采集实现
温湿度的采集分为3个步骤。第一步:主机先发送开始信号,等待1S的延时后,从机会返回一个相应信号进行应答。第二步:主机信号线拉高准备接收数据。第三部:开始接收数据(一次接收40位)。最后,主机信号拉低读取结束,开始校验数据。在接收的40位数据中,前16位与湿度相关,中间16位与温度相关,最后8位是校验位,只有校验成功后才能得到准确的数值。校验成功把接收到的温湿度数据按位拆分,方便显示和发送。
3.2 温湿度及阈值显示
当温湿度读取成功后,将数据显示在LCD1602上。经过测试,LCD1602每一行最多可显示16个字符,最多显示两行。于是我们将LCD的显示操作专门写为函数,按照数组的方式按位写入显示屏上。例如显示湿度值在第一行直接调用lcd1602_ char(1,7,dat_r[0]);lcd1602_char(1,8,dat_r[1]);dat_r[0]和dat_r[1]分别为湿度的十位与个位,方便使用和查看。
3.3 智能加湿实现
智能加湿功能是通过DHT11采集的湿度与按键设置的湿度阈值来对比。初始化阈值为68,按下按键K2阈值加1,按下按键K3阈值减1。当室内湿度低于阈值时继电器控制加湿器工作,湿度高于湿度阈值加湿器停止工作。将功能函数放入主函数循环中可以实现智能加湿。
3.4 WiFi通信实现
本次WiFi使用的AP模式,在使用之前要进行一系列AT指令配置以符合单片机使用要求。WiFi通信属于串口通信,通信中數据的收发都是通过中断的方式来实现的。在串口初始化后,单片机通过系统中断一位一位接收和发送数据,将接受的消息全部存入数组Recive_table[]中,经过对WiFi模块的调试发现,WiFi发送信息的格式为+IPD,x,y:+所发数据,即数组第10位也就是Recive_table[9]为客户端发送数据,当Recive_ table[9]数据为0时继电器低电平被触发,Recive_table[9]数据为1时继电器高电平关闭。
3.5 Android终端实现
Android终端主要任务是与单片机进行通信。当两个网络程序需要通信时,它们可以通过使用Socket类建立套接字连接。在客户端使用Socket类建立指定服务器IP和端口号连接的套接字,构造方法为Socket(host_IP,port)。由于Socket对象可能发生IOException异常,因此在建立Socket对象时要使用try-catch结构处理异常[4]。
Socket对象建立完成后发送数据控制加湿器,接收单片机发来的温湿度数据。其中按键监听和弹窗显示是在主线程中完成,建立socket连接和收发数据都是在子线程中完成。
Android的发送数据是使用Socket中的getOutputStream方法,通过WiFi分配的ip和端口建立socket连接,客户端的Socket对象上的getOutputStream方法得到的输出流,其实就是发送给服务器端的数据。新建一个打印输出流,使用print(数据)和flush()方法将数据发到服务端。
Android的接收温湿度是使用Socket中的getInputStream方法,和getOutputStream类似,使用getInputStream方法得到输入流其实就是从服务器端(ESP8266)发回的温湿度数据,将数据读出来使用控件TextView的setText()方法显示温湿度。具体流程如图2所示。
4 结论
智能加湿器以STC89C52单片机作为主控芯片,通过传感器和控制算法,显示环境温湿度并可以根据湿度自动调节实现智能加湿。Android开发的APP终端可以通过ESP8266WiFi模块和单片机双向通信,既可以控制加湿器开关也可以接收环境温湿度,满足人们生活方便舒适需要。
参考文献
[1]袁萌,王彦淞.室内空气温湿度对人体热舒适性影响的实验研究[J].建筑节能,2014(8):17-20.
[2]陈大新.单片机应用技术[J].C51,2014,20(1):30-35.
[3]红心物联科技.物联网WiFi模块工作的STA和AP模式详细介绍[EB/OL]. http://www.hx-wulian.com/archives/239, 2014-04-23.
[4]张思民.Android应用程序设计[M].北京:清华大学出版社,2018.