作者:邓楷煊,张金尧,许彩望,孙朝鹏
引 言
随着科学技术的发展,人们的生活水平日益提高,对居住环境的要求是更加智能、舒适。《IDC 中国智能家居设备市场季度跟踪报告》显示 [1],2021 年上半年中国智能家居设备市场出货量约 1 亿台,预计未来五年中国智能家居设备市场出货量将以 21.4% 的复合增长率持续增长,2025 年市场出货量将接近 5.4 亿台,全屋智能解决方案在消费市场的推广将成为市场增长的重要动力之一。但是,目前国内不同公司采取的技术标准不尽相同,不同品牌的产品无法兼容、成本较高、控制方式单一,无法满足普通人的需求 [2-3]。
为满足普通大众的智能化需求,本文设计了一款智能家居系统,使用了嵌入式技术、物联网技术、自动控制技术等技术,实现对家居环境的检测和控制。弥补传统的家居控制系统成本高、交互方式单一、用户和设备交互手段单一等缺点。该系统采用 STM32 作为硬件控制平台,通过 MQTT 协议 [4] 并使用 ESP8266 以 JSON 数据格式来实现云平台和客户端之间的信息交互,并且对内使用 ZigBee 通信来提高系统的灵活性 [5-7],成本低廉、简单实用,并且便于再次扩展,很适合低端市场。采用微信小程序控制极大地便利了不同用户对家庭环境进行远程监控,保证家庭成员的安全和生活的舒适。
1、 系统的整体设计
如图1所示,智慧家居系统主要包括信息采集节点模块、控制器模块、应用模块。信息采集节点模块负责各个传感器的信息采集和一些家用电器的控制,使用 STM32 单片机作为节点的芯片。控制器模块同样采用 STM32 管理各个节点,并且通过 ESP8266 来连接家庭 WiFi 上传数据到云平台。应用模块是方便用户使用通过微信开发者工具设计的微信小程序,使用者可以采用任意方式监控平台和发送指令。指令通过 WiFi 信号传到控制器,ZigBee 协调器收到控制器发送的数据再处理后发送至各个节点,以控制电器。
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 协议栈便于构建无线网络 [8-9]。
2.3 控制器模块
主控制器负责与各个节点进行通信,所以控制器选用正点原子基推出的基于 ARM CortexM3 内核的 ATK- 精英STM32 开发板。
使用安信可的 ESP8266 作为系统的 WiFi 模块,通过串口和主控制器 STM32 通信,支持标准的 IEEE802.11 b/g/n 协议、完整的 TCP/IP 协议栈 [10],可以实现 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 所示。
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 所列。
通过测试数据可知,环境系统和标准仪器在相同时间的测试结果基本准确,证明硬件系统的数据采集功能有效,硬件功能成功实现。
4.2 上位机程序测试
在测试上位机系统运行的过程中,要测试移动端上位机的正常运行、上位机和硬件的通信功能以及系统的数据检测、照明和报警控制功能,用户可以直接在列表中切换系统,选择传感器数据的观测和控制功能,系统界面测试情况如下。
(1)环境系统界面测试
环境系统界面测试主要测试内容包括 :温湿度、光照、可燃气体参数的观测,照明控制,可燃气体超出预设值时自动报警功能,报警装置的手动控制功能。如图 3 所示,通过对上位机环境系统的测试发现,微信小程序能够正常获取到硬件环境系统收集到的数据。
(2)健康系统界面测试
健康系统主要检测人体心率、血氧、体温等信息。利用 MAX30102 测得血氧值,测量公式为 :和 DCred 分别为红光交流和直流,ACired 和 DCired 分别为红外的交流和直流分量。MAX30205 通过模数转换器将采集到的模拟量转换为数字量,以同学 A 为测试对象进行实时测试。如图 4 所示,通过上位机健康系统的测试发现,上位机微信小程序能正常获取到硬件健康系统收集到的参数。
(3)安全系统界面测试
安全系统主要监测人体和人距的信息。人体检测是通过红外感应模块进行的,当人进入红外感应模块的测量范围时传感器会输出高电平,当人离开后会输出低电平。人距的测量是通过超声波测距模块进行的,当 HC-SR504 发出超声波时,通过计算超声波发送和接收的时间差来测量距离(L=TV,L 为测试距离,T 为超声波发送和接收的时间差,V 为声速,取 340 m/s)。安全系统界面测试如图 5 所示。通过上位机安全系统的测试发现,上位机的微信小程序能正常获取到硬件安全系统收集到的数据。
4.3 微信天气查询功能测试
微信天气查询界面功能测试主要测试系统能否准确调用网站提供的天气参数,以方便用户正常查询地区的天气参数。如图 6 所示,以安徽淮南田家庵区为例进行测试发现,天气系统能够正常运行,获取到的天气数据准确,系统功能得到实现。
5 、结 语
本文设计了基于 STM32 单片机、ZigBee 通信模块、ESP8266 无线模块的智慧家居系统,能够通过微信小程序控制并监测。经过测试发现,系统操作方式简单、通信稳定,可以很好地进行监测和控制,满足用户的需求,并且系统在灵活性和可拓展性方面均有良好的表现。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !