摘要:本系统采用STC15F2K60S2单片机作为控制中心,温度传感器部分采用DS18B20数字型温度传感器,同时结合物联网技术通过机智云物联网云平台创建手机APP,实现承压式太阳能热水器的远程控制。根据承压式太阳能热水器的要求设计该控制系统,实现温度与设置加热温度的显示、控制加热装置开关、通过手机APP实现远程监控和操作等功能。
0引言
我国太阳能资源丰富,多地都在大面积利用太阳能,利用太阳能可以减少对不可再生能源的浪费,降低对环境的污染。在我国对太阳能的利用形式中,承压式太阳能热水器占据重要地位,为居民提供了充足的热水资源。虽然太阳能热水器产业发展迅速,但仍面临着诸多问题,比如智能化、人性化和节能方面的不足。随着科学技术的不断创新以及物联网技术的快速发展,物联网已经成为全球研究的热点[1-2]。
本文设计了一种以STC15单片机作为控制中心,结合物联网技术的太阳能热水器控制系统。一个完整的承压式太阳能热水器控制器主要由单片机、电源、按键、温度传感器、显示模块、远程监控模块等组成。远程监控模块是结合物联网技术通过机智云物联网云平台创建手机APP来实现的。
机智云平台为开发者提供了自助式智能硬件开发工具与开放的云端服务[3]。通过“傻瓜化”的自助工具、SDK与API服务能力最大限度降低了物联网硬件开发的技术门槛,帮助开发者进行硬件智能化升级,降低了研发成本,加快了开发者的产品投产速度。该系统中STC15F2K60S2单片机通过WiFi无线通信模块将太阳能热水器相关参数和状态传输至手机APP,通过对手机APP的使用实现远程监控和操作。用户无须亲临设备现场就可以监视并控制家用太阳能热水器的运行状态及各种参数,方便用户使用,智能化、人性化程度得到提高。
1总体方案设计
承压式太阳能热水器系统结构框图如图1所示,系统主要由温度传感器、驱动电路、单片机、按键、数码管、WiFi模块、报警装置和手机APP等组成。温度传感器通过温度探头测量水箱温度,并将数据传送至单片机进行处理。驱动电路通过单片机控制继电器吸合与断开,从而控制加热装置工作[4]。根据需要设计按键,实现设置加热温度、控制加热装置开关、复位和配网等功能。数码管用来显示传感器测得的温度和用户设置的温度。报警装置在热水器工作异常时,通过LED灯闪烁和蜂鸣器发声提醒用户。
通过WiFi模块借助机智云物联网平台创建手机APP,使用户能够通过手机界面远程监控家用热水器。用户可以通过手机APP设定加热温度,如果符合加热条件,手机APP传输数据至单片机,单片机会传输信息给驱动电路,从而控制加热装置进行工作。如果不符合加热条件,单片机会发出信号控制继电器断开,使加热装置停止工作。
系统中还设计了掉电保存功能,当单片机断电后再打开电源,用户之前设置的温度值仍保存不变。本系统结合了物联网技术,并通过机智云平台创建了手机APP,具备智能家居的特点,有针对性地解决了传统控制系统的不足,提升了用户对热水器的使用体验,同时提高了热水器的智能化程度。
图1承压式太阳能热水器系统结构框图
2系统的硬件设计
2.1温度传感器模块
本系统温度检测电路中采用DS18B20数字型温度传感器。它采用单线接口方式,仅需一个端口引脚来发送和接收信息,在单片机和DS18B20之间仅需一条数据线和一条地线进行接口。DS18B20内部有3个主要数字部件:64位激光ROM、温度传感器、非易失性温度报警触发器TH和TL[5]。
本设计中DS18B20采用3~5.5V电源供电,其原理如图2所示。该温度传感器测量的结果以数字量方式串行传送,由于其数模转换已经在DS18B20内部完成,因此不需要连接A/D转换器的输入通道。将DS18B20置于水箱合适位置处,确保测得温度的精度较高。
图2DS18B20数字型温度传感器原理
2.2驱动电路与报警装置设计
承压式太阳能热水器是采用承压式水箱的太阳能热水器,水箱可以提供强劲的水压,直接利用给水管网压力作为热水出水压力,使热水压力等同于冷水压力[6]。因此,在驱动电路中只需要通过继电器实现加热操作,其驱动电路和报警装置原理如图3所示。
图3驱动电路和报警装置原理
继电器是具有隔离功能的自动开关元件,广泛应用于自动控制和电力电子等其他设备中[7]。经过分析,本系统选择了OZ-SH-112LM1型继电器。在驱动回路中,IO端口连接STC15单片机的P0.4引脚,用于控制继电器通断;继电器的1端和2端并联一个二极管,用于吸收和释放继电器线圈断电时产生的反向电动势,防止反向电动势击穿三极管并干扰其他电路;报警装置由LED灯和蜂鸣器组成。
由图3可知,当单片机控制IO端口为高电平时,三极管导通,继电器K1端通电吸合,CN1-L端口接入220V电源,CN2端口与电加热棒相连,电加热棒工作;当单片机控制IO端口为低电平时,三极管不导通,继电器K1端断电释放,电加热棒停止工作。在满足设置温度大于测得实时温度,并需要打开加热开关时,单片机使P0.4引脚输出高电平,此时继电器K1通电吸合,使得继电器输出侧A和B导通,输出回路中的加热棒通电工作,系统开始对水箱中的水进行加热,同时伴随LED2灯亮。
当加热温度达到设置温度值,单片机使P0.4引脚输出低电平,此时继电器K1断电释放,使得继电器输出侧A和B断开,输出回路中的加热棒停止工作,同时LED2灯熄灭。如果系统出现以下异常,报警装置会给用户发出异常提醒。
第一种异常情况,当设置温度小于或者等于测得实时温度时,用户按下加热按钮,控制单片机使P0.4引脚输出高电平,则系统会控制单片机的P1.4引脚输出高电平,控制P3.4引脚输出低电平,此时蜂鸣器发声以及LED3灯亮,系统控制单片机使P0.4引脚输出低电平,禁止加热棒工作。第二种异常情况,当加热温度达到设置温度时,加热棒仍然继续加热,此时系统会控制单片机的P1.4引脚输出高电平,控制P3.4引脚输出低电平,此时蜂鸣器发声以及LED3灯亮。不断检测P0.4引脚输出电平状态,直至P0.4引脚输出低电平,蜂鸣器停止发声,LED3灯熄灭。待用户操作正确后,系统恢复正常。
2.3按键与显示模块设计
本方案通过数码管显示传感器测得的温度和设置的加热温度,根据数码管的特点,选择利用两级74HC595芯片驱动数码管,其原理如图4所示。74HC595是一款漏极开路输出的CMOS一位寄存器,具有可控的三态输出端口、标准SPI串行接口[8]。
图474HC595驱动两位八段数码管原理
74HC595在正常使用时10端复位端接高电平,13端输出允许端接低电平。在14端串行数据输入端输入数据,每输入一位,11端移位寄存器输入时钟上升沿有效一次,直到8位数据输入完毕;然后,12端存储器输入时钟上升沿有效一次,输入的数据就被送到了输出端。上一级74HC595芯片的9端级联输出端,与下一级74HC595芯片的14端串行数据输入端相连,实现了两个芯片的级联。
上一级74HC595芯片的9端级联输出端,与下一级74HC595芯片的14端串行数据输入端相连,实现了两个芯片的级联。通过移位寄存器的时钟输入时钟上升沿并将数据移入和通过存储寄存器的时钟输入时钟上升沿并将数据输出,这是两个独立的过程,实际应用时互不干扰,在输出数据的同时可以移入数据。
在硬件电路中设计了多个按键,按键主要是用来设置温度,控制温度加法计数和减法计数,以及用来控制加热装置、配网和复位。按键设计原理如图5所示。
图5按键设计原理
由图5可知,按键SW1是对当前设置加热温度进行减法计数,按键SW2是对当前设置加热温度进行加法计数。在按键短按时,程序跳转至温度设置子程序,此时数码管显示设置的加热温度,并伴随LED灯的LED1或LED2闪烁,经过5s后,跳出温度设置子程序,数码管继续显示传感器测得的实时温度。按键SW3用来控制加热装置,在按键SW3短按时,程序跳转至温度加热子程序,系统控制单片机使P0.4引脚输出高电平,此时继电器K1通电吸合,输出回路中的加热棒通电工作,系统开始对水箱中的水进行加热,同时伴随LED2灯亮。
当加热温度达到设置温度值时,单片机使P0.4引脚输出低电平,此时继电器K1断电释放,输出回路中的加热棒停止工作,同时LED2灯熄灭,跳出温度加热子程序。按键SW4控制WiFi模块进行配置入网,实现单片机与手机APP的远程通信。按键SW5按键短按,进入模组复位。
2.4WiFi模块设计
远程通信部分选用ATK-esp8266-V1.3WiFi模块,采用串口与MCU通信,内置TCP/IP协议栈,能够实现串口与WiFi之间的数据传输[9]。如果要实现单片机与手机APP的通信,必须在WiFi模块中下载GAgent固件库。GAgent主要作用是数据转发,是设备数据、机智云、应用端的数据交互桥梁。GAgent固件库下载完成后,该系统中主控制芯片STC15通过WiFi无线通信模块将承压式太阳能热水器相关参数和状态发送给基于机智云平台开发的手机APP,从而实现远程通信监控。同时,在机智云平台上可以查看历史和实时的设备交互数据。
3系统软件设计
3.1主程序与网络通信控制流程
对系统上电后,控制器开始工作。在主程序中,控制器首先进行初始化,完成后进行温度采集,并对采集的数据进行处理;随后,进行配网,实现主控制器与手机APP之间的网络通信;之后,进行信息的收发以及响应。当主控制器接收到控制命令时,控制单片机执行命令;当主控制器未接收到控制命令时,控制器继续保持信息收发状态。当主控制器接收到异常状态提醒时,控制单片机触发报警装置;当主控制器未接收到异常状态提醒时,控制器继续保持信息收发状态。主程序控制流程如图6所示。
图6主程序控制流程
完成配网后,进行上报协议和控制协议处理。协议处理完成后进行用户数据采集。获取用户区的上报型数据,用户调用相关接口可以完成设备数据的变化上报以及用户区数据到上报型数据的转换,并将上报数据发送给模组。完成后进入控制反馈,进行相应数据类型的转换,根据已生成的“控制型事件”进行相应事件处理。其中,网络通信控制流程如图7所示。
3.2控制加热子程序
在热水器加热功能开启过程中,当系统上电后,温度传感器会检测水箱温度,并将数据送至控制加热子程序。首先,对加热指令进行监听。当检测到的水箱温度小于用户设置的加热温度,同时检测加热按键按下,控制器发出加热信号,执行加热指令;当不符合加热条件时,一直处于监听加热指令状态。
然后,在执行加热指令时对停止加热指令进行监听。当检测到的水箱温度大于或等于用户设置的加热温度,执行停止加热指令;当检测到的水箱温度未达到用户设置的加热温度,继续执行加热指令。热水器的加热程序流程如图8所示。
图7网络通信控制流程
图8热水器加热程序流程
4远程通信的实现
4.1云平台配置
对于实现远程通信,机智云平台是数据交互的桥梁。因此,需要对机智云平台进行配置,创建出符合用户需求的手机APP。登录机智云官网,选择对应项创建新产品,填写设备产品基本信息。技术方案选择WiFi/移动网络方案;选择通信方式为WiFi;数据传输方式为定长。
产品创建成功后,机智云为该产品分配ProductKey和ProductSecret参数。ProductKey参数由开发者写入设备MCU,并告知WiFi模块,WiFi模块登录机智云后,机智云将会识别该ProductKey的产品。产品创建完成后,需要创建数据点。结合设备的功能需求,共配置了5个对应的数据点。
4.2程序设计
数据点创建完成后,自动生成MCUSDK代码包,对需要的程序进行移植。需要移植的程序主要有机智云协议层和工具层[10]。代码移植完成后,调用相应的API接口和添加相应的逻辑处理。移植好的程序还不能实现通信,需要根据实现的功能进行相关配置,包括串口配置、定时器配置、下行处理、上行处理和配置入网。
配置串口1实现日志打印,配置串口2实现数据的接收与发送,配置定时器1为毫秒级中断。上行处理:首先要完成传感器驱动开发,然后在Gizwits目录下的gizwits_product.c文件userHandle()函数中实现传感器数据采集,只需要将采集到的数值赋给对应用户区的设备状态结构体数据位。
下行处理:首先要完成传感器驱动开发,然后在Gizwits目录下的gizwits_product.c文件中找到相应函数进行修改。在该控制系统中,只选用了两种模式即WIFI_AIRLINK_MODE和WIFI_RESET_MODE,配置按键,通过按键进入AirLink模式和实现模组复位功能。
5结语
本文基于STC15单片机设计了一款承压式太阳能热水器智能控制系统,以STC15作为核心板块,通过WiFi模块借助机智云物联网平台与手机APP建立连接,实现远程通信。采用DS18B20测量水温,使用继电器控制加热棒实现加热。利用数码管、LED灯、手机APP等作为人机交互界面,整体模块化设计优化了功能,简化了安装。