基于物联网的多功能智能开关系统设计与实现

2022-03-16 12:53杨晓凡
关键词:数据包串口温湿度

刘 音,杨晓凡

(淮南师范学院 电子工程学院,安徽 淮南 232038)

随着智能控制、无线通信等技术在近年来取得的长足进步与广泛应用,智能家居作为这些前沿科技与日常生活的一个有效的结合点,得到了极大地发展。近年来对人工智能、深度学习的研究日益深入,为智能家居的进一步发展提供了新的方向和难得的机遇[1]。智能开关也逐渐进入多元化发展,实现了互联、远程操控、语音智能等功能。但一个房屋要使用智能开关,在建造前就要对整个房屋进行布线设计,否则在后期改造接线时会带消耗大量人力物力。目前国内外市场上的智能开关除了有安装复杂的弊端,还有受到网关限制、无法和其他智能产品兼容等问题。本文提出一种免安装式的多功能智能开关,让传统的电灯开关物联网化,并配有其他功能[2]。通过手机上的微信小程序远程控制开关并监测室内环境信息,并配有语音识别模块,可以语音控制开关。同时开关配备1.3寸OLED显示屏,实时显示室内的温湿度及功能模式。其中功能模式包含夜灯模式和防盗模式,夜灯模式晚上监测到人时,自动打开LED小夜灯5秒,没有人活动时自动关闭。防盗模式开启后,监测到人时会通过蜂鸣器发出警报,并向手机端发送信息提醒。

1 系统总体设计

系统主要由4个部分组成:上位机手机APP、下位机STM32主控系统、传感器模块部分、外设驱动部分[3]。如图1所示,STM32主控系统通过WIFI模块连接到互联网,和手机APP进行通信。用C语言编程驱动各个模块,对应不同的场景实现不同的功能。

图1 系统总体框图

2 系统硬件设计

硬件电路主要由9个部分组成,如图2所示,主要有主控模块、OLED显示屏、温湿度传感器、人体红外传感器、WIFI模块、语音模块、防盗报警模块、LED小夜灯和电机模块。

图2 硬件电路设计框图

2.1 MCU选择

微处理器采用ST公司的基于Cortex M3内核的STM32F130C8T6芯片。工作频率为72MHz,具有128K字节的Flash(闪存)和20K字节的SRAM(静态随机存取存储器)。内部还有两条APB(Advanced Peripheral Bus)总线,上面挂载丰富的片上外设及I/O端口。同时支持多种通信方式,如IIC、SPI、USB、USART、CAN等。支持两线的SWD(串行单线调试)和5线的JTAG接口的下载调试。

2.2 WIFI模块设计

无线网络通信解决方案选用乐鑫科技的ESP8266-12F,内部集成了32位处理器,工作频率可设置为80MHz或160MHz,支持超低功耗的工作模式。完美支持IEEE802.11b/g/n协议和TCP/IP协议栈[4]。既可以直接使用此模块给自己的系统添加网络通信功能,也可以将它作为独立主控芯片,自带联网功能,以最低成本提供最大实用性,为Wi-Fi功能嵌入其他系统提供无限可能[5]。

ESP8266-12F是一个完整体系的无线网络通信的解决方案。不仅能够作为主控芯片独立运行程序,还可以作为从机,搭配其他处理器运行。这里是通过UART串口与MCU连接,只作联网功能使用,网络通信模块原理图如图3所示。

图3 网络通信模块原理图

2.3 温湿度模块/人体红外检测模块设计

系统采用DHT11温湿度传感器,不仅成本低,功耗低,还可靠稳定。内部含有已经精准校验过的传感器,由电阻式感湿元件和NTC测温元件两部分组成。单总线通信,所以连线方便,使用起来简易快捷。

人体红外检测模块采用型号为HC-SR505的红外传感器,具有体积小,操作简单,灵敏度高,低电压,低功耗的特点。

2.4 语音识别模块设计

语音识别模块使用的是海凌科的HLK-V20,它是RSIC架构内核,包含专门针对信号处理和语音识别所需要的DSP指令集,支持浮点运算及FFT加速器。可以通过神经网络对音频信号进行学习,以此提高语音信息的识别能力。芯片支持150条本地指令的离线识别,可以通过后台自由配置唤醒词、命令词与播报答复词,支持RTOS轻量级系统,具有丰富的外围接口,以及简单友好的客制化工具[6]。

首先通过USB转TTL芯片配合串口助手,读取语音模块的数据包协议。然后找到有效的数据段,由于每段语音的有效数据段长度不一样,使用一般的串口中断是不能够完整接受的,因为一般的串口中断已经知道数据段的长度,或者像正点原子官方例程里通过识别回车符来判断接受完毕,所以这里串口应该采用读取USART_FLAG_IDLE(空闲总线标志位),这样就可以每次接受不同长度的数据包并且产生中断,然后在程序里截取有效数据段进行解析对比。原理图如图4所示。

图4 语音识别模块原理图

3 系统软件设计

3.1 软件开发环境概述

系统在开发过程中,运用Keil uVision5软件环境编写下位机代码,包含主程序、系统初始化、语音检测识别、串口通信、定时器中断及其他外设初始化等。系统子程序以模块功能分开,主函数中需要时直接调用预先写好的功能子程序。手机端APP设计是在eclipse软件开发环境下完成的,使用Java语言编写APP程序。

3.2 系统主程序设计

当系统上电时,程序会按照程序流程执行,先初始化好片上外设和系统外设,然后进入主循环,在主循环中不断检测语音,当语音检测到后,会通过语音识别芯片识别,然后通过串口与STM32通信,将语音数据包发给STM32。STM32在对语音数据包进行解析和数据匹配,识别是要执行哪一个功能。如果没有检测到语音,则每间断3秒读取下温湿度数据,最后将收据发送到服务器。系统流程设计如图5所示。

图5 系统软件程序流程图

主函数的循环部分先是检测语音串口的中断标志位,一旦检测到语音识别模块的额数据便开始协议匹配,然后是自动模式和警报模式的检测,在OLED屏幕上显示模式工作的图标。条件循环主要就是定时的读取数据,发送数据到云服务器。

3.3 语音识别程序设计

语音解析匹配函数是先获取有效数据段的长度,将前面的包头跳过,在for循环里对接收到的数据与库里的数据对比,每次匹配相等,right变量便增加。匹配结束后,如果right等于有效数据段的长度,便视为识别成功,开始执行相应任务,并把right变量清零。

语音数据包的协议库(此处删除“是先前”)用TTL转USB芯片配合串口助手,解析语音识别模块数据包的有效数据段,然后保存在程序里,当识别语音时,将STM32串口接收到的数据与库中的数据对比,这样就可以完成相应的指令。语音数据包协议库如图6所示。

图6 语音数据包协议库

4 微信小程序的设计

服务器主要采用Linux服务器上部署EMQ X消息服务器。EMQ X是一种开源的物联网MQTT消息服务器,不仅可靠性高,还可以连接大量的客户端[7]。单个服务器节点最高支持100万个连接,同时还可以提供设备间低延时的消息路由。支持的协议有:MQTT、MQTT-SN、CoAP、LwM2M、WebSocket等。

上位机微信小程序的设计是基于mpvue的框架开发的,这样可以节省开发周期并且苹果和安卓用户都可使用。mpvue是使用Vue.js的前端框架。在此之上修改了Vue.js的runtime和compiler,使其能够直接运行在小程序的环境中,从而为小程序的开发引入了整套Vue.js开发体验[8]。

小程序的设计如图7所示,最顶端是天气模块,调用了免费开源的天气API,小程序会先请求获取用户的位置,然后显示所在位置的空气质量、空气指数、天气,并给出今天的穿衣建议。在天气模块的下方有6个模块,包含2个显示模块和4个控制模块。显示模块实时显示温湿度,控制模块可以控制下位机实现功能。

图7 微信小程序上位机

5 系统测试分析

5.1 串口测试

串口测试选用的软件是XCOM V2。将电路的串口用Type-C线与电脑相连,选择好串口COM号,然后把波特率设置为115200。打开串口,观察数据变化。每次向服务器发送json格式的消息。消息内容中,第一个是温度,第二个是湿度,然后是Led小夜灯、防盗模式、睡眠模式和舵机的状态值,0表示关闭,1表示开启。

5.2 语音识别测试

语音识别测试使用SSCOM串口助手,连接到语音模块的串口,然后测试通信状况并采集数据,解析数据包格式。如图8所示,经测试工作正常,语音识别快速准确。

图8 语音模块串口测试结果图

5.3 上位机测试

上位机是手机端的微信小程序。先在微信开发者工具中运行代码测试,看是否能正常运行并连接到服务器。然后再测试手机端,在手机连接网络的情况下,打开多功能智能开关小程序,观察数据显示结果。手机在连接4G网络的状态下,正常连接到服务器,并正确显示下位机的温湿度数据,如图9所示,并成功对下位机的LED小夜灯进行了控制。

5.4 数据分析

本方案温湿度的测试使用温湿度仪在相同环境下测出第三方数据,计算得到相对误差,将所得数据进行整理后,得到表1和表2。

图9 手机端上位机测试结果图

表1 温度测量数据

表2 湿度测量数据

本系统达到了预期的效果,数据的相对误差控制在5%以内,且对数据传输的实时性和稳定性进行验证,发现运行状况符合预期。

6 结论

文章从物联网的内涵入手,指出传统智能家居的缺点,提供了一个不需要网关,直接通过WIFI与服务器直连,手机端也可以监控数据的多功能智能开关面板设计方案。本系统提供温湿度检测、防盗报警、人体检测开启小夜灯、电机开灯等功能。考虑到配网要求,在硬件上留有AT24C02芯片,通过IIC与STM32通信。系统调试结果表明:温湿度测量结果准确可靠,防盗功能运行稳定,能满足用户对智能开关的基本需求。手机APP中人性化的交互页面设计、独立的语音助手增加了用户体验。当然,该系统尚存在不足之处,对于和其他智能家电设备的互联功能还有待进一步完善。

猜你喜欢
数据包串口温湿度
一种智能化电热处理炉用温湿度传感器的变送器
二维隐蔽时间信道构建的研究*
文物展柜内环境温湿度的调控与监测
蛋鸡育雏育成舍环境控制技术
基于EM9000工控板高性能双串口通信模型设计与实现
C#串口高效可靠的接收方案设计
MCS—51单片机中的多串口通讯技术的应用
网络数据包的抓取与识别
档案库房温湿度调控思考
微机串口的测试诊断