基于嵌入式的无线智能家居网关设计方案
2022-08-19

  0 引言

  随着人们生活水平的提高以及计算机技术、通信技术和网络技术的发展,智能家居逐渐成为未来家居生活的发展方向。智能家居不仅能给用户提供安全、健康和舒适的生活环境,而且用户能够远程监控自己的家居状态和控制家庭电器设备。在智能家居系统中,采用无线网络技术可以提供更大的灵活性、流动性,更符合家庭网络简洁性、灵活性、模块化、扩展性及独立性的通信特点,将无线网络技术应用于家庭网络已经成为主流趋势。

  Zigbee 作为一种新兴的无线通信技术,其低速率、低成本、低功耗、自配置和灵活的网络结构,非常适合于家庭内部组网。而Wi-Fi 作为一种无线联网技术,最主要的优势在于不需要布线,不受布线条件的限制,因此特别适合移动办公用户的需要,在智能家居中采用Wi-Fi 技术使得家庭内部网络与Internet 连接更加便捷,通过一台Wi-Fi 的手持终端设备就可以直接进入家庭网关,实现对家电设备的远程监控和智能控制。系统中家庭网关为Wi-Fi-ZigBee 的Web 服务器,它是ZigBee 协议、Wi-Fi 协议和以太网之间的转换接口,并负责建立和管理网络以及实现外网的通信连接。

  1 网关总体设计和工作流程

  系统主要包括ARM9 处理器S3C2440A ( 家庭网关) 、Zigbee 模块( 协调器) 、Wi-Fi 模块、Zigbee 终端设备( 如红外探测器、门磁开关和火灾探测器和烟感燃气探测器等) ,其结构如图1 所示。在ARM9 处理器中移植Web 服务器Boa 作为家庭网关,负责对整个智能家居设备的管理以及远程监控。

  由于智能家居中许多家电设备都是通过Zigbee 无线传感网络来工作的,因此必须在处理器中保存数据并对Zigbee 无线传感网络进行数据融合处理,协调器负责家庭内部Zigbee 网络的管理与控制。Wi-Fi 模块用来传输大容量信息,通过无线访问节点( Access Point,AP) 路由器与以太网连接,实现家庭内部网络与Internet 的通信。

 

图1 系统结构

  系统处理基本流程如下: 系统内部由Zigbee 星型网络组成,家中电器开关状态和传感器的控制信息在网络中自由传输,经由协调器( Zigbee 模块) 传送至Web 服务器的网关,再由网关通过Wi-Fi 经无线路由连接到外部以太网,用户可以通过远程用户界面端了解家中电器状态; 家庭网关可以通过无线网络对远程用户的控制命令作出判断和响应,从而开启或关闭家中的电器。

  2 网关硬件平台设计

  网关硬件电路主要由控制器模块( S3C2440A) 、存储单元( 64 MB SDRAM、64 MB Nand Flash 和2 MB Nor Flash) 、通信模块( Zigbee 模块和Wi-Fi 模块) 和显示模块( LCD) 等组成,其硬件电路结构框图如图2 所示。

 

图2 系统硬件电路

  2. 1 控制器模块

  控制器是整个嵌入式家庭网关的核心,用来对Zigbee 通信模块进行相应配置并接收Zigbee 终端节点的数据,利用Wi-Fi 协议将网关通过Wi-Fi 模块连接到Internet 网络。为了能达到高性能、低功耗的目的,设计的嵌入式网关采用以ARM920T 为核心的32 位的RISC S3C2440A 作为主控制器,该处理器集成了LCD 控制器、USBHost、NAND 控制器、BUS 控制器、中断控制、功率控制、存储控制、UART、SPI和GPIO 等丰富的外围资源,通过外扩存储器、串口、USB接口和JTAG 调试接口等构成硬件平台。

  2. 2 Zigbee 组网模块

  在智能家居系统中,采用Zigbee 无线通信技术将智能家电设备组成星形网络。星形网络是一个辐射状的结构,网络命令和数据都是通过协调器传输,终端设备之间通信也是通过协调器转发,终端设备不是通信的起点就是通信的终点。

 

  Zigbee 扩展模块在家庭网关中作为网络协调器,可以是通信的起点或终点,负责各子传感器节点的通信管理、动态组网与数据传输。Zigbee 终端节点包括家庭内部网络中的门磁开关、红外对射探测器、玻璃破碎探测器、火灾探测器以及烟感和燃气泄露探测器等。

  Zigbee 模块采用JENNIC 公司的JN5139,这是业界第一款与IEEE802. 15. 4 兼容的低功耗、低成本无线控制模块。

  该模块与S3C2440A 中的UART1 相连,S3C2440A 中有三个通用异步串行接口,UART0 是RS232 接口,用来连接PC 机,UART1 和UART2 是TTL 接口。这里使用UART0 来连接,设置相应波特率后实现数据传输。其通信接口电路如图3 所示,只需连接TXD0 和RXD0 两根信号线即可实现两者的数据传输通信。

 

图3 JN5139 的通信接口电路

  2. 3 Wi-Fi 通信模块

  该模块用来实现家庭网关与Internet 连接。Wi-Fi 模块采用威盛的VT6656 芯片实现数据的远程传输,VT6656 芯片内嵌TCP / IP 协议栈,降低了设计的难度,同时大大提高了主控制器处理其他数据的能力。VT6656 与S3C2440A 的连接非常简单,二者可以通过标准的USB 接口直接相连。VT6656芯片的主要特性: 54 Mbps 标准802. 11g 无线Internet 访问,比基于802. 11b 协议快5 倍; 采用USB 2. 0 最高比USB 1. 1 快40 倍; 新的天线技术支持更远距离的无线访问; 支持所有标准802. 11g 和802. 11b 无线路由器及接入点; 支持64 /128 /152 位WEP 加密; 支持WPA /WPA2、WPA-PSK /WPA2-PSK 等高级加密与安全机制。

  3 软件平台设计

  软件平台采用一种开放源码的Linux 操作系统,便于在其基础上完成各项相关应用程序的开发。软件主要涉及到操作系统的裁剪与编译、驱动程序编写和系统主程序编写。

  3. 1 家庭网关软件体系结构

  家庭网关采用模块化设计方案,如图4 所示由硬件驱动层、操作系统层、层和应用程序层组成。硬件驱动层描述网关节点中Zigbee 模块和Wi-Fi 模块的驱动; 操作系统层移植了ARM Linux 实时操作系统内核; 网络协议层移植了Zigbee 和Wi-Fi 协议栈,实现Zigbee 和Wi-Fi 协议双向转换;应用程序层在Linux 内核上移植嵌入式Web 服务器软件Boa.

 

图4 家庭网关结构

  网关中的网络协议层主要完成从Wi-Fi 和Zigbee 协议的相互转换工作。对于从Zigbee 设备发送到Wi-Fi 的数据,在网关需要经过以下处理步骤: Zigbee 设备接收到数据→去掉物理层Zigbee 分组→去掉MAC 层Zigbee 分组→添加MAC头的Wi-Fi 分组→添加物理层头的Wi-Fi 分组→Wi-Fi 处理或发送。Wi-Fi 接收数据到发送给Zigbee 设备的过程如下:

  Wi-Fi 接收到数据→去掉物理层Wi-Fi 分组→去掉MAC 层Wi-Fi 分组→添加MAC 头的Zigbee 分组→添加物理层头的Zigbee 分组→Zigbee 处理或发送。Wi-Fi-Zigbee 通信协议模型如图5 所示。

 

图5 Zigbee /Wi-Fi 网关的通信协议模型

 

  3. 2 Zigbee 组网软件设计

  家庭网关集成了Zigbee 网络协调器和嵌入式Web 服务器,有两个主要功能。1 ) 实现网络的建立,传感器节点管理和数据传输。将收集到的数据存储在数据库中,使用户可以随时查询监控Zigbee 终端设备的状态。2) 用户可以通过Web 浏览器直接访问网关,可以进行实时监测和远程管理。

  为了实现家庭网关的功能,在硬件平台上移植了Linux2. 6 实时操作系统、Zigbee 协议栈和VT6656 的驱动程序,并使用基于HTTP 协议的Boa 服务器作为Web 服务器,其中ZigBee 网络协调器的软件实现包括ZigBee 协议和监控管理程序的移植。该软件流程如图6 所示。

 

图6 Zigbee 软件流程

  在智能家居内部ZigBee 无线网络中,首先协调器进行初始化,然后协调器选择一个称为PAN ID 的标识号码,接着启动网络,所有的设备接入CSMA-CA 机制的协调器。当协调器收到数据时,首先判断是新节点加入网络的请求还是设备节点的控制请求: 如果是新节点加入网络的请求则分配网络地址并绑定节点; 如果是控制请求,则调用控制请求处理函数处理数据。数据处理完毕,协调器返回等待请求监听状态。

  3. 3 家庭网关主程序设计

  家庭网关是建立在传输层以上的协议转换器,通常它连接两个或多个相互独立的网络,每接收一种协议的数据包后,在转发之前将它转换为另一种协议的格式,Zigbee 协议栈由一系列分层结构组成,包括物理层、数据链路层、网络层、应用支持层和应用层,每一层为上一层提供服务。采集节点将要传输的节点地址信息和监测数据以Zigbee 帧的形式打包发送给网关节点。传送数据在通过物理介质进入网关后,先用Zigbee 协议栈解封装得到原始数据,网关可以用操作系统上的应用软件根据需要对原始数据处理。然后再以TCP / IP 协议打包后通过USB 口与Wi-Fi 通信模块VT6656 相连,Wi-FiVT6656 网卡通过AP 路由器,将数据传送到Wi-Fi 网络中,AP路由器接入Internet,从而实现网关与Internet 相连。为实现系统的监测和控制两大功能,数据帧结构的设计由前导码、数据模式、目标地址、数据长度、数据信息与校验和等部分构成[3],其中数据信息字段又划分为方向位、功能类型和数据。

  方向位分为上行和下行两种: 上行传输的是监测数据,下行传输的是控制命令。

  家庭网关主程序处理流程如图7 所示。硬件上电系统启动以后,应用程序初始化,网关开始监听网络,有数据到来网关进入中断状态。首先判断是否Zigbee 数据,如果是Zigbee数据,按照WSN 协议处理数据然后打包转发给Wi-Fi 模块,网关返回监听状态; 如果不是Zigbee 数据,网关判断是否Wi-Fi 数据,如果是则以Wi-Fi 协议处理数据然后打包转发给Zigbee 模块,并返回监听状态; 若是未知数据,网关进行丢弃处理直接返回监听网络状态。

  4 测试结果与分析

  将设计的Wi-Fi-Zigbee 网关与同样采用无线通信技术的Wi-Fi-蓝牙无线网关,以及采用综合布线的有线网关做如下比较,如表1.有线网关网络稳定性、抗干扰性方面高,但是耗时且灵活性较低,而无线网关耗费的工时少且在网络稳定、灵活和抗干扰方面均性能良好。

 

图7 家庭网关主程序流程

表1 三种网关的比较

 

 

  为验证Wi-Fi-Zigbee 网关在智能家居监控系统中的性能,测试了两组性能指标: 1) 无障碍物和干扰状态下,随着距离的增加,数据丢包率和响应时间的变化情况; 2) 数据传输距离分别为10 m、20 m、50 m 时,有障碍物情况下丢包率和响应时间性能变化; 如图8 所示,其中( a) 、( b)为在无障碍物和干扰状态下测得三种网关下丢包率与响应时间的曲线:(c) 、(d)为在有障碍物和干扰情况下所测得的数据。实验结果表明,在无障碍物传输距离为50 m 以内时,Wi-Fi-Zigbee 网关较Wi-Fi-蓝牙网关的优势明显,随着传输距离增加,丢包率低维持在3% 左右,相对于有线网关高出2% 左右,而响应时间波动在1 ms 以内,完全能够充分满足正常家居环境的通信需要,而且接收功率很低,非常适合家庭的使用。在有障碍物和干扰的情况下,Wi-Fi-Zigbee 网关丢包率与响应时间较有线网关稍高,却远优于Wi-Fi-蓝牙网关。

 

图8 三种网关在不同环境下丢包率与响应时间的比较

  5 结语

  本文提出了一种无线智能家居网关的设计和实现方案,该方案采用低功耗ARM 处理器S3C2440A 为核心,利用内嵌TCP / IP 协议栈的模块Wi-Fi 为网络的数据出口,以嵌入式Web 服务器为网关,克服了传统网关架构下Zigbee 传输速率较低的瓶颈,利用Wi-Fi 和Zigbee 全网无线无缝连接。实验表明,该系统可靠性高、协议转换效率高,抗干扰能力强,同时具有很好的通用性,非常适合在智能家居系统中应用。

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • CFS任务的负载均衡

    负载均衡的系列文章共分为三篇,第一篇为框架篇,描述负载均衡的相关原理、场景和框架。本篇作为该系列文章第二篇,主要通过对任务放置场景(task placement)的均衡分布进行分析,以便加深读者对内核调度器实现任务均衡分布的理解。 本文基于linux-5.4.24分

    昨天
  • Multi-queue 架构分析

    Linux上传统的块设备层(Block Layer)和IO调度器(如cfq)主要是针对HDD(hard disk drivers)设计的。我们知道,HDD设备的随机IO性能很差,吞吐量大约是几百IOPS(IOs per second),延迟在毫秒级,所以当时IO性能的瓶颈在硬件,而不是内核。但是,随着高速

    昨天
  • ARMv8 异常处理简介

    内核稳定性问题复杂多样,最常见的莫过于“kernel panic”,意为“内核恐慌,不知所措”。这种情况下系统自然无法正常运转,只能自我结束生命,留下死亡信息。诸如: “Unable to handle kernel XXX at virtual address XXX” “undefined instruction XXX”

    昨天
  • 新型 IO 调度器 BFQ 简介

    Linux io调度器有很多种,大多数调度器都经受住了各种市场环境的长时间验证,稳定性、性能得到各种用户的认可,但新的调度器依然展露头角,在4.12内核中出现了一个新的bfq调度器,这个调度器将取代曾经的辉煌的cfq调度器。社区对待大的改动都是很谨慎的,为什

    昨天
  • CFS任务的负载均衡(框架篇)

    我们描述负载均衡的系列文章一共三篇,第一篇是框架部分,即本文,主要描述了负载均衡相关的原理、场景和框架。后面的两篇是对均衡代码的情景分析,通过对load balance、task placement和active upmigration几个典型的负载均衡来呈现其实现细节,稍后发布,敬

    昨天
  • linux IO Block layer 解析

    早期的 Block 框架是单队列(single-queue)架构,适用于“硬件单队列”的存储设备(比如机械磁盘),随着存储器件技术的发展,支持“硬件多队列”的存储器件越来越常见(比如 NVMe SSD),传统的单队列架构也因此被改成了多队列(multi-queue)架构。早在 3.

    昨天
  • eMMC简介

    1 eMMC是什么 eMMC是embedded MultiMediaCard的简称,即嵌入式多媒体卡, 是一种闪存卡的标准,它定义了基于嵌入式多媒体卡的存储系统的物理架构和访问接口及协议,具体由电子设备工程联合委员会JEDEC订立和发布。 它是对 MMC的一个拓展,具有体积小,功耗低,

    昨天
  • 低纹波、高精度电流源设计

    低纹波、高精度电流源是一种重要的仪器设备;广泛应用于电光源、电化学、通信、测量技术、电子仪器等领域。目前,市场上的电流源不具备连续可调功能;并且输出电流范围小、

    昨天
  • Linux 电信基站系统解决方案

      自从1991年Linux第一次面世以来,任何人也不会想到这个不起眼的操作系统现在会应用得如此广泛。无论是从嵌入式领域的智能手机到大型计算服务器都可以找到它的

    前天
  • 单片机振荡电路中如何选择晶体?

    1.单片机晶振的原理晶振一般采用三端式(考毕兹) 交流等效振荡电路;实际的晶振交流等效电路中,其中Cv是用来调节振荡频率,一般用变容二极管加上不同的反偏电压来实

    前天
  • OpenMV image 模块对象(目标识别基础)

    背景介绍: Sugar 在一文中说过:“OpenMV 在图像里做目标识别的过程就是:不停地取出画面里的每一帧图像,在图像里的每一帧画面上找目标的过程。” 本篇就说一说 OpenMV 怎样在一帧画面上识别目标的。 image 模块 上一篇中说到 OpenMV 通过 sensor.snapshot(

    前天
  • 代码里开启喷洒装置, ardupilot 是怎么控制的

    背景介绍: 本文面向植保机飞控开发者,以代码解析的方式解读植保机喷洒装置的控制代码。 不仅说明了功能的开启方法,更重要的是表述了如何从代码里找方法的过程。对于进一步掌握 ardupilot 有帮助。 代码里开启喷洒装置 ardupilot 控制喷洒装置的代码在 AC_S

    前天
下载排行榜
更多
广告