ZigBee技术下的智能家居系统设计
2022-09-19邓楷煊张金尧许彩望孙朝鹏
邓楷煊,张金尧,许彩望,孙朝鹏
(安徽理工大学 电气与信息工程学院,安徽 淮南 232001)
0 引 言
随着科学技术的发展,人们的生活水平日益提高,对居住环境的要求是更加智能、舒适。《IDC中国智能家居设备市场季度跟踪报告》显示,2021年上半年中国智能家居设备市场出货量约1亿台,预计未来五年中国智能家居设备市场出货量将以21.4%的复合增长率持续增长,2025年市场出货量将接近5.4亿台,全屋智能解决方案在消费市场的推广将成为市场增长的重要动力之一。但是,目前国内不同公司采取的技术标准不尽相同,不同品牌的产品无法兼容、成本较高、控制方式单一,无法满足普通人的需求。
为满足普通大众的智能化需求,本文设计了一款智能家居系统,使用了嵌入式技术、物联网技术、自动控制技术等技术,实现对家居环境的检测和控制。弥补传统的家居控制系统成本高、交互方式单一、用户和设备交互手段单一等缺点。该系统采用STM32作为硬件控制平台,通过MQTT协议并使用ESP8266以JSON数据格式来实现云平台和客户端之间的信息交互,并且对内使用ZigBee通信来提高系统的灵活性,成本低廉、简单实用,并且便于再次扩展,很适合低端市场。采用微信小程序控制极大地便利了不同用户对家庭环境进行远程监控,保证家庭成员的安全和生活的舒适。
1 系统的整体设计
如图1所示,智慧家居系统主要包括信息采集节点模块、控制器模块、应用模块。信息采集节点模块负责各个传感器的信息采集和一些家用电器的控制,使用STM32单片机作为节点的芯片。控制器模块同样采用STM32管理各个节点,并且通过ESP8266来连接家庭WiFi上传数据到云平台。应用模块是方便用户使用通过微信开发者工具设计的微信小程序,使用者可以采用任意方式监控平台和发送指令。指令通过WiFi信号传到控制器,ZigBee协调器收到控制器发送的数据再处理后发送至各个节点,以控制电器。
图1 系统原理
2 系统硬件设计
2.1 传感器选择
根据传感器功能的不同,分成以下三个系统:
(1)健康系统:配置了体温传感器MAX30205MTA和心率血氧传感器MAX30102。
(2)环境系统:配置了温湿度传感器DHT11、烟雾传感器MQ-2、光照度传感器GY-30,用LED灯模拟家庭灯光,报警装置使用蜂鸣器来设计,蜂鸣器使用低电平触发,操作简单。
(3)安全系统:配置了超声波测距传感器HC-SR04和人体红外感应传感器HC-SR501。
2.2 终端节点和协调器设计
根据实际需求,节点使用STM32单片机结合ZigBee传输模块组成,选择使用意法半导体公司ARM Cortex-M3微处理器系列的STM32F103RCT6,性能强大、功耗低、使用方便。ZigBee传输模块则使用市面上常见的CC2530芯片,性能优越且便于开发,并且它还内置了ZigBee协议栈便于构建无线网络。
2.3 控制器模块
主控制器负责与各个节点进行通信,所以控制器选用正点原子基推出的基于ARM CortexM3内核的ATK-精英STM32开发板。
使用安信可的ESP8266作为系统的WiFi模块,通过串口和主控制器STM32通信,支持标准的IEEE802.11 b/g/n 协议、完整的TCP/IP协议栈,可以实现WiFi和串口之间的转换。该模块可以兼容3.3 V和5 V的单片机系统,这样可以很方便地与主控芯片进行连接;此外,它还支持WiFi-STA、串口转AP和WiFi-STA+WiFi-AP三种模式,这有利于系统的开发。将安信可的AT固件烧至8266里,以便用AT指令配置8266模块。
3 系统软件设计
3.1 下位机软件设计
下位机软件设计包括终端节点和控制器节点的软件设计,用Keil UI Vision5作为STM32单片机的开发平台,使用C语言编写方便维护和拓展。节点上的STM32单片机将收集到的数据汇总后传至ZigBee模块,ZigBee使用Z-Stack协议栈进行封装,通过搭建的ZigBee网络传递至网络的协调器节点。协调器将收集到的各个节点的数据通过USART传至主控制器,主控制器收到数据后通过ID确定节点;然后判断数据是否超出设定的阈值,确定蜂鸣器是否报警;最后将数据打包并且用MQTT协议封装后,再通过ESP8266模块经连WiFi发送至云平台,用户的移动端可通过网络收到数据。程序流程如图2所示。
图2 程序流程
3.2 ESP8266接入云平台通信设计
STM32主控制器通过串口发送AT指令,以控制8266模块初始化以及收发数据操作。首先发送AT测试指令再进行复位,之后将8266设置为透传模式,开启DHCP,获取IP地址;最后连接到服务器的IP地址和端口号,8266初始化成功。
3.3 上位机软件设计
本系统的云平台是通过MQTT协议来交互信息的,并且主要交互形式为JSON。控制器将所有的数据通过JSON打包,再通过设定的主题发送到云平台,手机端和电脑端均可通过订阅Topic主题获取。为降低成本,本系统使用的云平台为EMQ X Cloud提供的免费公共MQTT服务器。
微信小程序采用框架型编程结构,开发门槛低,兼容性高,能够兼容多种操作系统,并且无须下载和安装。针对以上优点,移动端的上位机使用微信开发者平台来开发。微信小程序开发MQTT协议需要先安装MQTT的客户端库。MQTT.js是一个开源MQTT协议的客户端库,可以使用npm进行“npm install mqtt–save”安装;使用connect函数连接到MQTT服务器的地址后,再通过subscribe订阅设备上行数据主题。微信小程序请求Web API平台来调取所订阅主题的JSON数据。需注意,小程序EMQ的WebSocket端口号为8084,WebSocket连接成功后再通过client监听事件,对数据进行JSON数据解析;通过publish函数来实现用户使用微信小程序控制LED灯和报警器的操作,将控制指令进行JSON封装后传送至云平台。
为了方便用户使用,系统还增加了天气查询功能,使用和风天气提供的免费API,用户只须去和风天气官网注册便能获得,并且同样使用JSON对订阅的数据进行解析便可显示到小程序中,一天可请求1 000次,足够使用。
4 系统测试
4.1 硬件数据采集测试
在上述硬件系统中,环境系统包含整套家居系统的主要功能,所以选取环境系统来测试系统数据采集的可靠性。为了方便测试,选取宿舍作为测试对象,选用温湿度计、亮度计、家用可燃气体报警器的测量结果作为对照。结合微信小程序来测试数据的发送和接收情况,根据测试数据显示,环境系统传感器均能正常运行。测试结果见表1所列。
表1 硬件系统测试结果
通过测试数据可知,环境系统和标准仪器在相同时间的测试结果基本准确,证明硬件系统的数据采集功能有效,硬件功能成功实现。
4.2 上位机程序测试
在测试上位机系统运行的过程中,要测试移动端上位机的正常运行、上位机和硬件的通信功能以及系统的数据检测、照明和报警控制功能,用户可以直接在列表中切换系统,选择传感器数据的观测和控制功能,系统界面测试情况如下。
(1)环境系统界面测试
环境系统界面测试主要测试内容包括:温湿度、光照、可燃气体参数的观测,照明控制,可燃气体超出预设值时自动报警功能,报警装置的手动控制功能。如图3所示,通过对上位机环境系统的测试发现,微信小程序能够正常获取到硬件环境系统收集到的数据。(2)健康系统界面测试
图3 环境系统测试
图4 健康系统测试
(3)安全系统界面测试
安全系统主要监测人体和人距的信息。人体检测是通过红外感应模块进行的,当人进入红外感应模块的测量范围时传感器会输出高电平,当人离开后会输出低电平。人距的测量是通过超声波测距模块进行的,当HC-SR504发出超声波时,通过计算超声波发送和接收的时间差来测量距离(=,为测试距离,为超声波发送和接收的时间差,为声速,取340 m/s)。安全系统界面测试如图5所示。通过上位机安全系统的测试发现,上位机的微信小程序能正常获取到硬件安全系统收集到的数据。
图5 安全系统测试
4.3 微信天气查询功能测试
微信天气查询界面功能测试主要测试系统能否准确调用网站提供的天气参数,以方便用户正常查询地区的天气参数。如图6所示,以安徽淮南田家庵区为例进行测试发现,天气系统能够正常运行,获取到的天气数据准确,系统功能得到实现。
图6 天气查询功能测试
5 结 语
本文设计了基于STM32单片机、ZigBee通信模块、ESP8266无线模块的智慧家居系统,能够通过微信小程序控制并监测。经过测试发现,系统操作方式简单、通信稳定,可以很好地进行监测和控制,满足用户的需求,并且系统在灵活性和可拓展性方面均有良好的表现。