APP下载

基于OneNet与ESP8266EX的智能家居远程控制器的设计与实现

2020-03-13和海莲

智能物联技术 2020年1期
关键词:模拟量远程预警

文 晖,和海莲

(1.兰州石化职业技术学院,甘肃 兰州 730060;2.昌吉职业技术学院,新疆 昌吉 831100)

0 引言

在智能家居的应用中,如家庭燃气泄漏监控、火灾预警、家电远程开开关控制等,既经济实惠又能实现预警功能的控制器相对较少。本文设计的控制器,不需要专门的物联网网关,减少设备开支与环节,通过WI-FI直接与家庭无线网络通讯,可以方便采集模拟量、开关量数据,并在OneNet云平台远程进行开关量设备的手动与自动策略控制以及实现手机报警功能。

1 控制器硬件设计

1.1 通信模块和系统主板

一般来讲,物联网设备要接入到云平台需要专门的网关进行协议转换与数据转发。除此之外,还可使用4G、5G、NB-IoT与Wi-fi等通信模块直接与云平台通信。但是除Wi-fi通信方式外,其他方式都需要向服务提供商付费,因此本系统选择ESP8266EX作为通信模块,该模块提供了套度集成的Wi-Fi SoC解决案,拥有完整且自成成体系的Wi-Fi络功能,能够独应。当ESP8266EX独应时,能够直接从外接flash中启动,只需通过SPI/SDIO接或UART接即可作为Wi-Fi适配器,应到基于任何微控制器的硬件设计中。从结构上讲,ESP8266EX集成了天线开关、射频balun、功率放器、低噪声放器、滤波器和电源管理模块,因此仅需少量的外部电路,并且能将PCB尺降到最。ESP8266EX还集成了增强版的32-bit内核处理器,带上SRAM,并可以通过IO外接传感器和其他执行设备。ESP8266EX的芯片原理如图1所示。

图1 ESP8266EX芯片原理图Fig.1 Chip principle of ESP8266EX

本控制器中选择由深圳某公司开发的ESP8266物联网开发板作为系统主板。主板搭载由安信可生产的基于ESP8266EX的ESP-12F模组,ESP-12F模组的特点是3.3V电源供电、26MHz晶振、32Mbit外部FLASH、PCB板载天线。主板不使用额外的单片机作为处理器,因此不需要使用AT指令,而是通过ESP8266EX提供的SDK编程,将编译好的程序存放在外部FLASH中,ESP8266EX读取程序并执行。ESP8266的I/O外设引脚原理图如图2所示。

图2 ESP8266的I/O外设引脚原理图Fig.2 Schematic diagram of I/O peripheral pins for ESP8266

1.2 主板与传感器供电

主板通过Mini USB口5V供电,再通过稳压转换电路提供5V与3.3V两种电压分别为外围电路与ESP8266模组供电。该主板提供了冗余的电源引脚,外接传感器可以直接通过主板的电源引脚供电。

1.3 模块功能分配

1.3.1模拟量采集

(1)ADC模拟量采集

ESP8266模块有一路ADC引脚,可以采集一个模拟量。但外部电压量程是0~1.0V,内部参考电压是3.3V,使用时需要在外围电路串联分压电阻,分辨率是1/1024V。连接可燃气体传感器后可以用来采集可燃气体浓度信号。

(2)DHT11温湿度采集

GPIO5引脚可以连接DHT11温湿度传感器,采用3.3V电压供电,使用单根总线与单片机进行双向的串行数据传输,信号传输距离可达20m以上。非常适用于对精度和实时性要求不高的温湿度测量场合。可以采集5%~95%RH范围内湿度、-20℃~60℃范围内的温度。

1.3.2 开光量采集与控制

ESP8266共有16个通IO,除4~6个用于Flash通讯、GPIO0、GPIO2、GPIO15用于复位与下载功能外,可选择如表1所示的引脚用于开关量采集与控制。

表1 开关量GPIO引脚选用Table 1 Switch GPIO pin selection

2 控制软件设计与开发

2.1 ESP8266 EX SDK

编程采用安信可开发环境。软件开发可以选择Non-OS SDK与RTOS两种方式。Non-OS SDK是不基于操作系统的SDK,提供IOT_Demo和AT的编译。Non-OS SDK主要使定时器和回调函数的方式实现各个功能事件的嵌套,达到特定条件下触发特定功能函数的目的。Non-OS SDK使espconn接实现网络操作,用户需要按照espconn接的使用规则进行软件开发。RTOS版本SDK使FreeRTOS系统,引入OS多任务处理的机制,用户可以使用FreeRTOS的标准接实现资源管理、循环操作、任务内延时、任务间信息传递和同步等面向任务流程的设计式。

在本方案中,外设较少,功能要求相对简单,因此选择Non-OS SDK开发方式,采用C语言编程。

2.2 控制软件设计

修改安信可案例工程,生成当前工程模板。ESP8266的SDK编程是基于内核回调的方式。用户只需要user_main.c文件中函数void user_init(void)中进行内核的初始化,主要包含IO、定时器、中断的初始化、网络参数设置等工作。Non-OS SDK使用四种类型的函数:

第一,应用函数:被调用。使用时加建议添加ICACHE_FLASH_ATTR宏。相应程序将存放在flash中,被调用时才加载到cache运。如果添加了IRAM_ATTR宏的函数,则会在上电启动时就加载到iRAM中,但这样会增加单片机内存开销。主要用到的应用函数有:

wifi_set_opmode (STATION_MODE);//设 置WiFi的station模式

spi_flash_read();//读出falsh中的SSID/PASS参数

system_init_done_cb(systemStartDone)//系统启动完成(参数为回调函数)

os_timer_setfn(&timer,SoftTimerCb,NULL);//设置软件定时器

第二,回调函数:系统某事件发生时会调用回调函数。本系统用到大量的回调函数,要编写回调函数,用户首先需要使用相应的register_cb API注册回调函数。主要用到的回调函数有:

systemStartDone()//系统启动完成后的回调函数

smartconfig_done()//配网完成后的回调函数

数据采集、发送数据、发送心跳报文等各类定时器的回调函数。

第三,用户任务:用户根据具体应用需求编写的自定义函数。本控制器中主要编写的用户函数有:

Init_GPIO();//IO配置

Init_ADC();//ADC配置

uart_init(115200,115200);//调试串口的初始化

smartconfig_start(smartconfig_done);//第 三 方配网函数(参数为回调函数)

第四,中断服务程序(Interrupt Service Routines,ISR):发硬件中断时会调这些函数。当使能中断时,必须注册相应的中断处理函数。ISR必须添加IRAM_ATTR。

本控制器可用于家庭厨房燃气泄漏、火灾预警与家电(空调、电饭煲)电源开关控制的情景。在预警模式下,可以通过OneNet平台发送预警信息到手机,也可以远程发送开关量控制指令到家电开关控制继电器。系统软件设计流程图如图3所示。

图3 设备层应用软件算法设计Fig.3 Application software algorithm design at the device layer

2.3 EDP协议编程实现及OneNet云平台应用建立

OneNet平台可以实现多种协议设备接入,如MQTT、Modbus、HTTP、EDP、TCP等协议[1]。EDP(Enhanced Device Protocol增强设备协议)是OneNet平台根据物联网特点专门定制的完全公开的基于TCP的协议,可以广泛应用到智能家居、交通、物流、能源以及其他行业应用中[2],使用简单、方便。

本控制器实际就是一个物联网设备,在OneNet平台创建好账户、产品与设备信息后,平台会生成APIkey,之后就可以在控制器中利用EDP的SDK编程实现对应功能。EDP SDK主要包含Edpkit.h与Edpkit.c,利用其中的接口进行EDP连接、报文发送等。EDP SDK主要实现的功能有:

①申请与释放内存

②两种登录包、心跳包的组装

③连接与下发命令、功能解包

④封装协议头与功能包

EDP SDK中实现了EDP协议,通过对相应API的调用就可以实现通过EDP协议的登录、组包、解包功能。EDP协议报文消息格式如表2所示。

表2 EDP协议报文消息格式Talbe 2 EDP protocol message information format

基于ESP8266的模块编码、编译完成后,生成eagle.flash.bin(0x00000)文件(括号内为flash固件烧写地址)、eagle.irom0text.bin(0x10000)文件。通过串口利用烧写工具ESP_DOWNLOAD_TOOL_V2.4下载到单片机后运行。

在OneNet平台还需要创建可视化界面,有基于PC与手机的界面,方便手机与PC操作。其中的可视化控件通过拖拉添加布局,控件与设备端变量关联,很容易实现显示与开关命令操作。OneNet云台与设备端的协议实现流程图如图4所示。

图4 OneNET平台及EDP协议实现流程图Fig.4 Flow chart of OneNet platform and EDP protocol implementation

3 系统测试

3.1 控制器与OneNET连接测试

控制器软件烧写完毕后加电启动,使用手机连接到当前Wi-Fi热点,打开安信可专用的配网软件配网。在OneNet云平台可查看设备在线状态。由图5所示可知,当前控制器设备已经在线,说明控制器与云平台处于连接并通信的状态。

图5 控制器连接OneNet云台状态Fig.5 Status of the controller connected to the OneNet gimbal

3.2 数据采集与控制测试

进入OneNet云台应用界面,加载控件、关联设备变量。由图6所示,可以采集到湿度实时数据,连接不同的模拟量传感器就可以采集其他数据。点击开关控件就能远程控制控制器上继电器的开合状态,进而达到控制家电电源开关的效果。

图6 模拟量数据与远程开关控制界面Fig.6 Analog data and remote switch control interface

3.3 远程预警测试

进入触发器管理,设置触发变量、触发规则、信息接受方式。OneNet平台提供免费邮件发送预警信息服务,短信息则需要服务费用。本控制器测试阶段使用邮箱接收,当达到指定可燃气体阈值、湿度阈值会自动发送邮件,手机就会有新信息提示,从而达到预警功能,同时也可远程开、关继电器,从而达到远程控制设备。

猜你喜欢

模拟量远程预警
远程求助
远程工作狂综合征
一种模拟量模块的应用
法国发布高温预警 严阵以待备战“史上最热周”
远程诈骗
关于600MW火电机组模拟量控制系统设计和研究
机载预警雷达对IFF 的干扰分析
日盲紫外探测技术在空间预警中的应用
预警个啥
基于S7-200PLC 模拟量扩展模块使用问题的研究