闫施锦,陈 淼,刘静波
(南京工程学院 信息与通信工程学院,江苏 南京 211167)
当今时代,物联网技术应用有了很大的发展。网络通信的发展和智能手机、平板等终端设备的普及以及更广的WiFi信号覆盖范围,为智能设备的远程控制应用提供了良好基础。同时,物联网云平台的推广应用也极大地促进了各种远程控制的实现,远程控制开关系统在智能家居和其他工程控制中有较广阔的应用空间,在控制方式上一般为智能芯片控制(GSM模块)或WiFi模块远程控制。采用GSM短信控制方式时,系统接收手机发送的短信,匹配短信内容的关键字,对远程开关进行控制;采用WiFi远程控制得到了更广泛的应用,主要实现智能插座一路或多路开关的通断控制。本文设计一种以WiFi方式远程控制的开关系统,以多模式方式实现按键模式控制、定时模式控制、循环模式控制、温控模式控制。相比传统远程开关单一的开关控制方式,更加适用于不同的应用场合。选择中国移动OneNET云平台构建手机端可视化用户界面,可以方便地对开关装置实现远程控制。模式设定、参数设置均在手机端完成,并发送到开关装置,开关装置根据不同模式执行不同的功能,根据设置的参数控制开关的运行状态。
多模式远程开关控制系统包括开关装置部分和OneNET云平台构建的远程访问控制部分。开关装置部分包括STM32F103RCT6单片机、WiFi模块ESP8266、时钟芯片DS3231、继电器驱动、温度传感器DS18B20等。系统组成如图1所示。手机端采用OneNET云平台提供各种控件,例如旋钮、文本框、按键等,创建可视化用户界面,通过调节控件参数,设定模式选项以及各模式下的运行参数。
图1 系统组成框图
基本原理:系统接入OneNET后,单片机读取DS3231的时钟数据作为系统定时模式或循环模式下的时间信息。读取温度传感器的温度测量数据,当系统处于温控模式时,与设定的温度阈值进行比较,从而控制开关的运作状态。单片机通过ESP8266访问OneNET云平台,把开关装置的运行时间和温度测量值等数据发送到手机端。在云平台创建手机端可视化用户界面,实现开关控制的4种模式切换。手机端通过发送指令随时控制开关装置的运作模式,使开关装置能够按照预设功能对开关进行有效控制。
手机端模式选择设定,设置旋钮0~3对应表示4种模式:
(1)模式0为按键模式,用户在手机端操作按键控制开关通断;
(2)模式1为定时模式,手机设置一组定时开关时间,例如18:00开、18:30关,设置的参数发送到开关装置,当系统运行到相应时间后,实现开关的通断;
(3)模式2为循环模式,开关装置接收手机端设定的开、关分钟数值,循环实现当前开、关状态,例如开5 min,关3 min的循环模式状态;
(4)模式3为温控模式,手机端设定温度阈值并发送到开关装置,当开关装置的温度测量值大于阈值时,开关装置处于接通状态,反之断开。
开关装置配置有EPROM存储芯片AT24C02,用以保存手机端下发指令所包含的各项参数,包括定时时间、循环开/关时间、温度阈值等。开关装置接有320×240分辨率的TFT显示屏,用以显示各项参数和当前模式。
图2所示为开关装置的硬件电路。以STM32F103RCT6为核心,合理分配单片机的资源,把各模块应用于系统电路中。STM32F103RCT6是基于Cortex-M3架构的高性能处理器,内含串口、外中断、DMA控制器、定时器等,可满足系统的应用需求。
图2 硬件电路设计
ESP8266作为一款高集成度的WiFi模块,可以独立访问网络,也可以帮助其他主控芯片访问网络。ESP8266提供一组串口,接单片机串口引脚PA2和PA3,访问OneNET云平台。ESP8266配置为客户端模式(STA),连接到路由器访问网络,单片机的PA12连接ESP8266的复位管脚,初始化ESP8266时用以复位模块。
单片机的PC10和PC11为IC总线,PC10为SDA数据线、PC11为SCL时钟线。IC总线接入时钟芯片DS3231和EPROM存储芯片AT24C02,接10 kΩ上拉电阻保证电平信号。单片机通过访问不同的器件地址读取挂载于同一组总线上时钟芯片和存储芯片的数据。DS3231芯片器件地址为0xD0(写)、0xD1(读),图2中AT24C02芯片器件地址为0xA0(写)、0xA1(读)。
DS3231时钟芯片是一款内置温补晶振的时钟芯片,供电电压为3.3 V,DS3231的INT/SQW引脚接入单片机的PC6,该引脚是1 Hz信号输出端,需外接10 kΩ上拉电阻。初始化DS3231时,配置其控制寄存器0EH为00H,则INT/SQW输出1 Hz方波,该信号可作为外中断信号,接入单片机PC6,在中断服务程序中完成处理读取数据、读取温度、显示数据等任务,不占用主程序,提高了系统运行效率。
DS18B20是单总线数字温度传感器,连接于单片机的PA11。DS18B20具备体积小、精度高、测温范围广等特点,在-10~85 ℃测量范围内,测温精度为±0.5 ℃,采用T0-92封装,广泛应用于温度测量、温度调节控制等场合。图2中,DS18B20的3脚电源接入3.3 V电压,2脚是DQ数据输入/输出端,通过10 kΩ上拉电阻接3.3 V电压,与单片机之间以单总线方式进行数据读写。
单片机的PA8是继电器的驱动信号,PA8低电平时触发继电器动作。本系统选用型号为SRD-05VDC-SL-C的继电器,其触点最大切换电压为250 V AC,最大切换电流为15 A,线圈额定电压为5 V DC。图2中加入了三极管驱动电路,起到了电平匹配转换的作用,当PA8为低电平时,三极管9012、9013导通,5 V继电器吸合;当PA8为高电平时,三极管9012、9013截止,继电器断开。
开关装置与OneNET之间以MQTT协议方式传输数据,具备支持双向数据传输,实时性高,长时间稳定连接等优点。在OneNET用户登录后,选择多协议接入,在MQTT协议下创建“远程开关”产品,添加设备后,获取产品ID和设备ID,用户设定鉴权信息,为访问OneNET做准备。在多模式远程开关系统应用中,数据流的规划分为以下两大类:
(1)上行数据流,即开关装置发送到OneNET云平台的数据。主要是读取的时钟数据,测量的温度数据等。
(2)下行数据流,即云平台下发的指令,包括模式控制、定时时间设定、循环模式下的开关时间设定和温度阈值。
这两类数据流在开关装置建立起与OneNET云平台的连接后,数据流会在当前设备下的数据流界面中展现。表1所列为本系统规划的数据流信息,其中数组变量alarm用作存放不同数据流的变量数据,数组变量time用于读取DS3231时间数据。
表1 数据流信息
系统上电后,首先对模块进行初始化处理,包括串口2初始化、ESP8266初始化、DS18B20初始化、显示屏及外部中断配置初始化。经串口2发送指令给ESP8266,设置ESP8266为STA模式,等待确认连接OneNET服务器,按照MQTT协议TYPE3格式对数据进行打包封装,每隔5 s发送数据至云平台。同时,系统随时接收解析平台发送的指令信息,执行不同指令,包括模式选择、温度阈值设定、定时开关时间设定,以及循环模式下的开关时间设定。解析完成后赋给相关变量,保存到AT24C02中。主流程如图3所示,可以看到,主流程中表示了多模式的执行过程,系统根据不同模式执行相应的功能。开关装置读取温度数据和时间信息,显示时间、参数等未放置于主流程中,而是采用STM32F103RCT6外中断服务程序实现,每秒进入一次外中断,读取数据、显示信息,提高主程序的效率。
图3 系统主流程
软件设计时定义变量run_mode,开关装置接收到OneNET云平台手机端发送的模式参数,switch语句根据接收的变量数据run_mode执行不同的控制方式。按键模式(run_mode=0),开关装置通过判断是否接收到手机端的按键控制指令控制开关状态;定时模式(run_mode=1),系统读取实时时间,当时间与设定的开、关时间相等时,分别控制运行状态为开或关;温控模式(run_mode=3),测量温度大于设定的阈值温度,开关装置的继电器吸合,反之断开。
循环模式(run_mode=2)是循环执行设定的开、关时间数值,程序中alarm[4]、alarm[5]分别存放接收的循环开分钟和循环关分钟数值,循环开关执行依次运行。程序设计时,定义flag变量为循环控制的参数,循环开状态结束时flag=1,为转入循环关运行状态准备;反之,循环关状态结束时flag=0,为转入循环开运行状态准备。每个切换过程中,alarm[4]、alarm[5]的数值不能改变,分别转存给int_on_temp和int_off_temp。程序中minute_flag==1表示1 min计时达到,程序中递减开或关int_on_temp和int_off_temp的数值,直到开或关每个循环时间结束。minute_flag是指外中断服务程序计时,可以很方便地得到1 min的计时状态。实际测试时,系统按照给定的循环开关时间运行。循环模式运行的具体程序如下所示:
在完成软硬件测试后,对系统进行整体测试。当装置连接到OneNET平台后,查看并确认OneNET设备的在线状态。OneNET平台为用户提供数据可视化应用,用户通过OneNET提供的可视化工具设计用户操作界面。根据远程开关系统功能,在OneNET创建的产品中找到应用管理编辑功能,用户可将旋钮、开关、文本框等控件拖拽至页面。对每个控件的属性和样式进行编辑,特别是对控件属性中的数据流进行配置,把控件数据流与程序设定的变量建立关联,才能操作手机端界面发送指令,参数才能正确传输给开关装置,同时,将开关装置测量读取的数据上传到手机端。手机端可视化界面包括模式选择旋钮、一组定时开和关时间设定旋钮、一组循环开关设定旋钮、按键控制开关、温度阈值设置旋钮,以及文本框显示的时间和测量温度数值。开关装置,包括LCD显示时间、测量温度以及接收的模式与各项参数。图4和图5表示处于循环模式(run_mode=2)测试状态下,手机端应用界面和开关装置实际运行状态。实际测试表明,4种模式运行正常,手机端发送指令后开关装置响应及时,较好地实现了各项功能。
图4 手机端可视化界面
图5 开关装置实际运行
将开关装置与OneNET云平台的可视化应用界面相结合,设计了多模式远程开关系统,开关装置和可视化应用界面相互传递数据和接收指令,实现了4种模式下的远程开关控制。数据传输和接收控制指令稳定可靠,功能验证正常。系统实现了不同的时间控制方式,并且加入用传感器方式控制的运行模式,为进一步应用提供了拓展基础,可根据不同的应用场合,选择不同的传感器,实现不同的模式控制。控制芯片STM32拥有丰富的接口,软件部分规划相应的数据流,在OneNET同步更新应用界面,为进一步由单路多模式扩充多路多模式应用奠定了良好的基础。