作者:王立波,陈慈发
引言
ZigBee技术作为一种新型的近距离、低功耗、低数据传输率的双向无线通信技术,在家电产品中得到越来越广泛的应用。在网络无处不在的今天,人们希望随时随地能访问和控制家庭中的各种家电设备。这就要求嵌入在家电产品中的智能控制系统(Agent)能够与Internet相结合,使家电设备顺利地接入Internet,并能提供相应的网络服务。实现这些服务要求Agent必须实现 TCP/IP协议栈,不管是以软件方式还是以硬件方式,都会增加产品开发的成本、周期和复杂度。本文介绍一种基于XPort和ZigBee模块的 Internet接入方案,将它集成到家电产品的设计中,即可使智能家电设备便捷地接入Internet,然后通过Internet来控制。
1 XPort
XPort设备服务器是美国Lantronix公司开发的一种紧凑且高度集成的、可让任何带有串口的智能设备接入Internet的嵌入式设备。通过在自己的产品设计中集成XPort,开发人员不必考虑复杂的网络协议,可以大大缩短产品开发周期。XPort模块集成有Lantronix公司的DSTni- EX增强版16位CPU。该模块为i86内核体系结构,具有24位寻址能力、256 KB的SRAM、16 KB的引导ROM、384 KB的Flash和10/100 Mbps自适应以太网口(RJ45)。图1直观地显示了XPort的接口方式和内部布局。XPort一端为3.3 V CMOS电平的8引脚高速串口(GND,3.3VDC,Reset,Data In,Data Out,CPl,CP2,CP3),另一端为RJ45标准以太网口。
XPort的主要功能是实现串口与10/100 Mbps网络间的数据转换,便于带有串口的设备接入Internet;另外还有Email告警功能,通过设定的条件触发。XPort高速串口支持 RS232、RS485协议,有300~921 600 bps的波特率可选。控制信号有DTR/DCD、CTS、RTS,流控制有XON/XOFF、RTS/CTS、3个PIO pin口(软件可选)。XPort网络接口的连接器为RJ45,支持协议有TCP/IP、UDP/IP、ARP、ICMP、SNMP、TFTP、 Telnet、DHCP、BOOTP、HTTP和AutoIP。XPort具有基于Windows平台的配置工具,内建Web服务器,Flash存储器可以存储用户自定义网页,固件可以通过TFTP和串口升级。XPort设备服务器还提供10/100 Mbps自适应以太网连接、存储在Flash中的可靠的操作系统、嵌入式Web服务器、完整的TCP/IP协议栈、标准的AES加密、状态指示灯和电磁屏蔽电路等。XPort的内部结构如图2所示,一端的串行接口与DsTni-EX连接,另一端的以太网连接器通过一个防电磁干扰电路与CPU连接。
XPort通过串口和边缘设备通信。XPort的工作电压为3.3 V,内部有一个电压监测电路,当提供的电压低于2.7 V时会触发重启。3.3 V电压通过内建的1.8 V电压转换器为微处理器供电,滤波电路产生3.3 V的数字电压和模拟电压,25 MHz晶振电路为CPU和以太网媒体访问控制芯片提供精确时钟信号。
2 系统结构
远程访问和控制家电需要处理的关键问题是不同数据类型的转换,即TCP/IP数据如何被转化为家电可以接收识别的数据,使用户通过局域网或。Internet终端就能访问家电。该系统主要由3层组成:用户层、控制中心层和终端设备层,其结构如图3所示。
其中,用户层负责收集、显示整个系统家电状态数据和发送控制命令,这些功能由用户层中的Web页面来实现,也可以使用上位机软件;控制中心层实际上成为用户层与终端设备层之间的一个连接,由TCP/IP到串口转换设备XPort和ZigBee模块LM2455-EM组成,相当于一个ZigBee网关,其主要作用是协议转换和数据传递;终端设备层是由传感器、无线发射模块和微控制器(MCU)等组成的智能家电产品。用户层通过用户程序发出的控制命令经 Socket连接传给XPort,设备MCU接到数据后控制执行器产生相应的动作,让家电进入相应的工作状态。家电作为该系统中的嵌入式终端设备,成为 ZigBee网络中的一个ZigBee节点。
图3中,虚线表示ZigBee无线通信,可分为单向和双向。单向通信时,家电设备控制中心只需对其发出命令,控制其工作状态;双向通信时,家电设备控制中心还需要从该设备获得相关的信息,并将该信息返回给用户。系统的关键部分是控制中心层,其中XPort负责与局域网或Internet连接,LM2455 -EM无线模块负责组建ZigBee网络并与家电通信。图4给出了XPort与LM2455-EM的连接方式。XPort的数据接收口连接LM2455- EM的数据发送口P1_1,XPort的数据发送口接LM2455-EM的数据接收口P1_0。
当用户通过Internet发送控制家电的信息或者想要获得家电状态时,XPort就将收到的网络数据转换为串口数据,通过其引脚4发送给LM2455- EM的串口(P1.0);LM2455-EM做出相应的响应,并通过无线收发器向终端设备发送相关命令。同样,终端设备对收到的命令做出响应,如果用户端需要读取家电状态,则发送状态信息给控制中心。当LM2455-EM收到ZigBee无线数据时,将其发送到XPort的引脚5,XPort就将原始数据打包成TCP/IP数据包,发送给用户。
3 ZigBee模块
ZigBee模块LM2455-EM的核心是韩国RadioPulse公司推出的一款片上系统芯片MG2455-F48。它完全兼容IEEE 802.15.4标准和ZigBee标准,为家电控制、无线传感器网络等ZigBee应用提供一种无线解决方案。由RF收发器、嵌入式8051核微控制器、内部Flash存储器一般I/O口和定时器、UART等外围设备组成;通信速率有250 kbps、500 kbps、1 Mbps,提供μ-law/a-law/ADPCM语音编码支持,具有96 KB的Flash程序存储空间和8 KB数据内存。
在空旷场合,通信距离可以达到200 m。其功耗很低,在睡眠模式下,电流消耗低于1μA;在接收状态下,电流消耗为33.2 mA;在发送状态下,0 dBm时电流消耗为30.6 mA,8 dBm时电流消耗为43 mA。MG2455-F48采用四侧无引脚扁平48引脚封装方式。
MG2455-F48芯片集成了符合ZigBee协议标准的射频收发器和微处理器,具有通信距离远、抗干扰能力强、组网灵活、性能稳定可靠等优点,能实现点对点、一点对多点、多点对多点间的数据透明传输,可组成星型、树型、蜂窝型等网络拓扑结构。数据通信方式包括广播方式和按照目标地址发送方式。 RadioPulse公司以库文件的形式为用户提供ZigBee协议栈软件,用户可使用Keil等工具软件编译自己的应用程序。
4 XPort的配置
XPort上电后需要进行配置,使其符合用户需要的工作状态。Lantronix公司提供了相应的工具软件Lantron-ix Devicelnstaller。运行该软件,如果XPort供电正常且已经接入网络,该软件会自动搜寻到该设备。可以通过3种方式配置XPort:浏览器方式(推荐使用,图形用户界面),Telnet:远程登陆方式和串口方式。
首先使用DeviceInstaller软件为其分配一个有效的IP地址,然后设置XPort的串口工作方式,最后设置其网络参数。使用协议选择TCP,工作模式为接收连接。需分配一个本地端口,如果选择主动连接,则需要选择远程主机的IP地址和端口号,其他默认设置即可。
使用浏览器配置XPort的参数需要人工手动设置,而使用基于命令行的串口方式可实现自动设置。用户编写的XPort参数设置程序,上电时自动启动进入监视模式,完成相关参数设置。由于XPort内置Web服务器,可以使用JAVA applet编写自己的网页程序,烧写到XPort的用户存储空间,然后在程序中使用Socket.receive()和Socket.send()处理用户自己的数据。
5 ZigBee网络构建
ZigBee网络有星型、树型、网状等多种组网方式。组建成什么网络应根据需要而定。对各家电问没有通信需求,也没有扩展通信距离需要的,可以构建成星型网络。在星型拓扑结构中,所有的终端设备都与唯一的中央控制设备——PAN协调器通信,终端设备之间的通信通过PAN协调器的转发来完成。终端设备要么是通信的起点,要么是通信的终点;PAN协调器则既可以是通信的起点,也可以是通信的终点。
在一个ZigBee网络中,设备类型分为ZigBee协调器、ZigBee路由器、ZigBee终端设备,PAN协调器就是ZigBee协调器。 ZigBee协调器是一个起网络控制中心作用的FFD,它不单为网络控制而存在,还可以有自己的应用。与XPort连接的ZigBee模块LM2455- EM就充当ZigBee协调器的角色,负责网络的创建。
创建一个新的网络需要用到以下几个网络层原语。
①NLME-RESET.request原语:实现对网络层复位,清除所有内部变量和路由发现表记录。
②NLME-NETWORK-FORMATION.reqctest原语:创建一个新的ZigBee网络。只有充当ZigBee协调器的全功能设备才能尝试建立一个新网络,在创建网络之前,它首先会请求MAC层执行能量检测扫描。
③NLME-PERMIT-JOINING.request原语:允许一个ZigBee终端设备加入网络。
构建网络代码由ZigBee协议库文件实现的main()函数来调用。它可以在ZUSER_INIT()中实现,也可以在ZUSER_MAIN()中实现。处理用户自己数据则在ZUS-ER_MAIN()中实现。运行在ZigBee协调器中的main()函数通过一个死循环调用ZUSER_MAIN() 来执行任务和工作,其伪代码如下:
结语
ZigBee作为智能家居的实现技术之一,有着很好的应用前景。本文给出了一个简单而高效的解决方案,使Zig-Bee终端设备能够便捷地接入 Internet,用户通过浏览器就可以操作和控制家电。用该方法实现嵌入式设备入网,不再需要在设备中增加以太网控制器并在MCU中实现TCP/IP协议,可大大降低系统设计复杂度,缩短开发周期。随着网络技术的不断发展,更多的产品会连接到网络上,通过更小的设备来完成细分的工作。嵌入式终端设备入网既是需求,又是趋势,该方法同样适合于其他通过串口交换数据的嵌入式设备联网。