1. 引言
智能家居物联网使用各种科技手段将家庭设备、设施和家庭成员连接起来,实现远程控制、自动化控制、场景控制等功能,智能家居可以提高家庭安全性、舒适度和便利性 [1] 。尽管物联网技术发展迅速,但传统智能家居物联网系统仍存在一定的不足之处。传统家居物联网设备通常由不同的制造商生产,语音控制技术发展不够成熟,使用不同的通信标准这导致了设备之间的互操作性较难,难以实现设备之间的无缝连接和控制,难以实现统一的模块化设计。同时智能家居在无线组网方式上种类上往往较为单一,常见的组网方式通常为WiFi组网,WiFi技术存在能耗高、成本高、空间覆盖面小等缺陷,而ZigBee技术恰好可以解决WiFi在这些方面的不足 [2] [3] [4] [5] 。为了让智能家居系统具备低成本、低能耗及语音控制功能和更好的模块兼容性,本文基于ZigBee和WiFi技术设计设计并开发了一套语音控制智能家居系统。
系统以STM32系列芯片作为主控,结合ZigBee和WiFi模组设计了一个物联网智能网关,智能网关通过识别用户的语音指令进行分析从而控制用电器。底层感知设备由ZigBee组网方式进行连接,终端节点通过传感器采集环境数据后上传数据至网关。智能网关对各节点数据进行分析和处理,将数据上传至MQTT服务器,再通过微信小程序和使用SpringBoot、Vue框架等设计的Web页面实现数据展示及用电器控制。
2. 系统功能设计
2.1. 功能分析
智能家居是指采用各种智能技术对住宅进行智能化改造,使居民能够通过语音、手机等操作方式控制家居设备,实现更加便捷、舒适、安全、节能的居家体验 [6] [7] 。智能家居首要目的在于实现家居设备的远程操控与自动化,应根据具体用户需求和预算来选择符合其需求的设备和系统,智能家居可以通过控制室内温度、照明和声音等方面来提高居住体验,但也要兼顾实际应用的问题。本文设计的智能家居控制系统,以STM32主控单元为核心,通过室内环境监测和家电设备控制来实现对智能家居的管理和控制,系统功能结构图如图1所示。

Figure 1. Function diagram of smart home control system
图1. 智能家居控制系统功能图
该系统能够实时监测室内环境的温度、湿度等参数信息,通过数据分析和处理,提供了智能家居设备的可靠保障和智能控制的优化方案,还提供了语音识别控制功能来更方便地使用智能家居控制系统。
2.2. 技术架构设计
本系统针对不同环境条件,配置不同的传感器组合,以满足精准的环境监测需求。例如,在厨房或卫生间这类密闭空间中,会选用能够检测可燃气体浓度和二氧化碳浓度的传感器以确保安全环境,在客厅或卧室等区域,会选用能够采集温湿度、光照度等参数的传感器。为了满足智能家居系统的通信需求,系统需要选择开放、通用、可靠的通信协议。综合考虑通信距离、传输速率、功耗和网络拓扑结构等因素,本文选用了ZigBee无线通信技术,该技术具有低功耗、广域网络覆盖和自组网等优点。智能家居控制系统的架构如图2所示。
为了整合WiFi与ZigBee技术,确保底层硬件与服务器之间的通信,本系统设计了一个物联网智能网关负责收发感知层的传感器及控制元件数据,通过智能网关,可以轻松地完成设备与服务器之间的数据传输,并且能够实现精准的设备控制和状态监测。在网络层中考虑到数据转发场景,系统采用了更适合物联网通信的MQTT协议作为数据传输的通信协议,MQTT采用发布/订阅模式,主要设计用于低带宽和不稳定网络环境,非常适合在资源受限的设备上运行。应用层使用SpringBoot框架、Vue框架以及DataV可视化组件开发了一个Web页面用于图形化显示室内环境实时参数,使用的技术栈均为市面上较为流行的开源开发框架,具有成本低,普适性高,利于二次开发的优点。

Figure 2. Architecture diagram of smart home control system
图2. 智能家居控制系统架构图
2.3. 系统结构设计
传感器采集周围环境数据后由STM32单片机进行数据处理,再通过ZigBee上传至网关进行汇总。智能网关通过ESP8266完成与服务器的数据交互,部分数据存储到MySQL数据库中。通过微信小程序和Web实现进行数据监测及用电器控制。系统结构图如图3所示。
3. 系统硬件设计
3.1. 感知层硬件选型
系统的感知层硬件主要有传感器和执行器,所选择的型号和功能如表1所示。
3.2. 中间层硬件选型
3.2.1. 主控芯片
系统主控芯片是硬件系统的核心,主要用于数据分析、处理和执行控制任务。在本次设计中选用STM32F103系列微控制器作为智能家居网关的控制核心。通过外围电路设计,连接各类传感器及通信模块,将所采集的环境数据进行转换、处理以实现家居环境的监测和控制功能。STM32F103系列微控制器集成度高,可靠性好,拥有丰富的指令系统,低功耗,串口编程,而且价格便宜 [8] 。
其余终端节点选用STM32G030K6作为主控芯片,该芯片它采用了ARM Cortex-M0+内核,正常的运行频率可以达到64 MHz,同时拥有32 KB的Flash存储器 [9] 。此外,这款芯片还内置了18个通用I/O口、2个SPI通信接口、2个I2C通信接口、1个USART等外设。STM32G030K6具有低功耗、高性价比的优点,适用于物联网、家电、智能手表等多个领域。
3.2.2. ZigBee设计
E18-MS1-PCB是一款ZigBee无线模块,该模块使用串口通信方式与微控制器进行连接,适用于多种应用场景。该模块可以通过AT指令进行设置,在组建好一个ZigBee网络后可以上电自动组网,无需再次进行组网配置。
3.2.3. WiFi设计
ESP-WROOM-02D是基于ESP8266芯片设计开发的物联网无线模组,集成了TCP/IP网络协议栈,32位低功耗MCU,10bits精度ADC,带有HSPI、UART、PWM、I2C和I2S等接口。在本系统中使用MQTT固件配合AT指令进行开发,能够简单高效地与服务器进行连接。
4. 系统硬件设计
4.1. 原理图设计
4.1.1. 主控芯片资源分配
主控芯片连接OLED屏、LD3322语音识别模块、WiFi通信模块、ZigBee通信模块、BH750光照度传感器等外设。外设与主控芯片之间的通信方式及接线如表2所示。
4.1.2. 主控芯片供电带电路设计
使用DC插头输入12 V电压,经降压芯片AMS1117降压及滤波处理输出3.3 V电压给主控芯片及各外设供能,使用LED灯连接供电电源,反应模块是否正常供电。STM32供电电路设计如图4所示。

Figure 4. Schematic of STM32 power supply circuit
图4. STM32供电电路原理图
4.1.3. 主控芯片复位电路设计
STM32芯片在使用硬件复位时需要对RESET引脚输入一个低电平,通过按键来实现,芯片正常工作时接入3.3 V电压,按下开关SW1后RESET与GND连通变为低电平,从而实现硬件复位。STM32复位电路设计如图5所示。

Figure 5. Schematic of STM32 reset circuit
图5. STM32复位电路原理图
4.1.4. 主控芯片下载电路设计
在本次设计中使用SWD下载接口进行程序下载与调试,根据STM32开发指南中的说明,SWDIO需要外接上拉电阻,提高下载电路的可用性与稳定性,STM32下载电路设计如图6所示。

Figure 6. Schematic of STM32 download circuit
图6. STM32下载电路原理图
4.1.5. 主控芯片晶振电路设计
外接晶振能够为主控芯片提供稳定、准确的系统信号,供单片机及其外设使用。在本次设计中外接8 MHz外部高速晶振,经变频后使系统能够以72 MHz的时钟频率高速运行。STM32晶振电路设计如图7所示。

Figure 7. Schematic of STM32 crystal oscillator circuit
图7. STM32晶振电路原理图
4.2. 智能网关PCB设计
PCB设计过程包括原理图设计、布局设计和线路走向设计三个方面。在原理图设计中,设计师根据
电路图符号、元器件选择和参数规格等要求,将逻辑电路转换成可执行、可实现的物理电路;在布局设计中,各个元器件被摆放在PCB板面上,并根据功能、电气和机械的要求进行位置、尺寸、形态、路径等方面的布置;线路走向则是将各个元器件之间的逻辑链接点通过铜箔连通,并在信号和电源线路的走向上进行优化。PCB设计完成后,需要进行制板和组装工艺,以达到预期的电气和机械性质要求。
放置元器件遵循先大后小的原则进行放置。走线时先将电源及地线先隐藏起来,比较重要的信号线/晶振可以先布线,然后再布模块间比较短的线路。铺铜时需要进行顶层和底层同时铺铜,最后检查电器属性,调整至无报错后导出PCB打板文件。图8为顶层和底层的PCB设计图。
5. 系统软件设计
本系统的软件开发主要由服务端、web端、移动端组成,各终端均使用当前成熟的主流技术来实现,具有高效稳定的优点,具体情况如表3所示。

Table 3. System software design technology
表3. 系统软件设计技术
服务端使用开源的EMQX进行MQTT服务器的搭建,这是本系统中数据传输的主要方式,SpringBoot框架用于开发数据存储接口,MQTT服务器接收到数据后转发至SpringBoot设计的接口,进行简单数据处理后转存至MySQL数据库中。
Web端使用Vue完成基础网页的搭建,使用MQTT.js连接MQTT服务器,接收网关上发的数据,经过解析后得到家居环境相关数据,并由Data V库进行数据可视化。
移动端使用微信开发者工具进行开发,涉及到及技术有JavaScript、HTML等,也是使用MQTT.js包进行MQTT数据传输,接收网关数据并进行显示,也可向网关发送用电器控制指令,完成远程用电器控制。
6. 系统功能测试
6.1. 硬件测试
6.1.1. ZigBee组网测试
本系统ZigBee网络由路由器和多个设备终端节点构成,网关部分为路由器,终端节点为厨房节点、卧室节点、门窗节点等。测试时监测数据包发送、接收情况,以判断网络连接性。测试结束后,根据测试数据和实际情况分析测试结果,比较预设指标和实际测试结果间的差距,进一步优化组网方案,提高ZigBee组网质量。
终端节点上电后自动加入网关节点的ZigBee网络,气体采集设备及温湿度采集设备会定时自动上报数据到网关中,经测试ZigBee网络数据收发正常,如图9所示。

Figure 9. Gateway receiving terminal node device data
图9. 网关接收终端节点设备数据
6.1.2. WiFi连接服务器测试
WiFi模块置于家庭网关中,主要用于数据中转,即将终端接节点上传的数据汇总后通过MQTT协议上传至服务器中,完成底层硬件与云服务器的数据交互,需要在电脑或者手机终端显示家居系统的环境情况进行测试。在连接服务器时使用MQTT的协议进行数据传输,此处在连接服务器后能够接收到来自微信小程序的控制命令,收发功能正常。收发结果如图10所示。
6.1.3. 语音控制测试
在语音控制测试中,重点测试智能网关语音助手“小月”对用电器控制的可行性及稳定性。唤醒语音助手后使用“打开客厅灯”“关闭客厅灯”两条指令来测试系统的语音控制效果,经过测试,网关模块能够较为准确的识别相关词条,并对相应的设备进行控制。在实验室环境下,设备控制命令词条识别准确率较高,测试效果符合预期目标。如图11、图12所示。

Figure 11. Voice control device to turn on lights
图11. 语音控制设备开灯

Figure 12. Voice control device to turn off lights
图12. 语音控制设备关灯
6.1.4. 智能控制测试
智能控制主要是指在设定的温湿度、光照度范围内设备自动控制加湿器模块和照明开关,并在温湿度异常时进行报警。在该模式下将光照传感器进行遮挡,系统会自动打开照明,符合预期目标。如图13所示。

Figure 13. Automatic control of lighting functions
图13. 自动控制照明功能
6.2. 软件测试
6.2.1. 系统功能测试
在搭建了整体的智能家居系统后进行联调测试,保证每一个设备正常工作,同时验证控制系统功能是否正常。需要测试所有的用电器是否能够正常控制,传感器是否能够正常采集环境数据。

Table 4. System function test results
表4. 系统功能测试结果
经过测试,本系统已完成各设备应有的功能,与预期效果相符合。各传感器数据能够采集数据并上传至网关中,网关已实现从节点的数据汇总上发及云端指令接收控制功能,符合系统设计要求。测试结果如表4所示。
6.2.2. web端测试
WEB端已完成在服务器的部署,可以通过公网进行访问,经测试web端的数据可视化展示及事件消息推送无异常,整个系统正常运行,效果如图14所示。
6.2.3. 移动端测试
移动端的主要功能为数据监控及设备控制,经测试能够准确的接收网关上传至服务器的数据并进行显示,同时能够完成控制命令的下发,各功能符合测试预期效果,测试结果如图15所示。
7. 结束语
本文以物联网智能家居为背景,结合Zigbee、WiFi、智能语音以及SpringBoot框架等技术设计并开发了一个智能家居语音控制系统。各类从节点通过ZigBee连接传感器及用电器,以STM32为主控,结合各类通信模组设计了一个物联网智能网关进行数据收发,同时完成了语音控制及多端的数据监控,成功实现了一个高效、低能耗、低成本的智能家居控制系统。本次系统设计在硬件选型上选用的都是市面上价格较低廉的硬件模块,充分考虑到经济效益成本,在通信协议选择上兼备了WiFi技术、ZigBee技术的通信优势,既保障了传统设备的优势也充分确保了低成本、低功耗、空间覆盖面更广的场景需求;同时在应用层设计上系统不仅包含了WEB应用开发,同时也开发了相应的微信小程序,实现了物联网的多端控制。整体设计遵从“高内聚,低耦合”原则,使用的硬件模块、通信协议、开发框架都是较为流行的技术,模块化、通用化的设计理念也为将来系统的二次开发和技术交流提供了更大的参考可能性。