基于多模传输协议的智能网关开发

2018-09-29 03:08王明伟张春梅
实验室研究与探索 2018年8期
关键词:树莓线程智能网

杨 荣, 王明伟, 张春梅

(西安交通大学 实践教学中心,西安 710049)

0 引 言

智能家居网络[1]中,网关是其核心,系统通过智能网关实现信息的采集、智能终端的集中控制、局域网与因特网的连接、远程控制、协同工作等功能。总体上,网关在智能家居网络中的两大功能为控制枢纽和无线路由:一方面负责无线智能终端信息的采集和控制;另一方面具备无线路由的功能,实现了高速率数据接入。

目前智能家居普遍使用的无线网络标准是无线宽带[2](Wireless Fidelity,Wi-Fi)、紫蜂协议[3](ZigBee)、蓝牙[4]和1 GHz频段以下的433 MHz[5]无线透传,但上述各方式都存在一定的问题。WiFi传输速率高但能耗较大,同时也并不适合自组织网络组网;ZigBee适用于自组织网络,但其传输速率又不如WiFi;在穿透能力方面,蓝牙和ZigBee的传输穿透能力则弱于433 MHz的传输。传统的智能家居网关采用其中一种网络协议作为其组网协议,如目前的家庭无线局域网是使用WiFi无线路由器作为网关。而智能家居网关所要控制的无线智能终端多种多样,并遵循多种通信协议类型。如果仍使用单一的协议来组建智能家居网络则很难发挥网络的最大效益,也不利于智能家居网络的拓展。有鉴于此,本文开发了一种具有多模式传输协议的智能家居网关,支持多种传输协议,并实现了局域网和因特网的无缝连接,具有很好的适应性和拓展性。

1 系统总体设计

该智能网关的设计以树莓派板卡为核心,通过其丰富的通用输入/输出(General Purpose Input Output,GPIO)接口和通用串行总线(Universal Serial Bus,USB)接口,搭载WiFi网卡、ZigBee传输模块、433 MHz传输模块,并通过RJ45接口与因特网进行连接,从而实现智能家居网络的组建和与因特网的连接。网络结构和智能网关硬件设计如图1、2所示。

图1 智能家居网络结构图

图2 多模传输的智能网关硬件设计图

该智能网关功能如下:

(1)利用ZigBee协议与支持ZigBee协议的智能终端形成自组织网络,进行数据采集和反馈控制。

(2)利用433 MHz低频传输模块实现较远距离或不同房间内智能终端的组网。

(3)利用Wi-Fi协议实现无线访问接入点(Access Point,AP)功能,与手机、无线机顶盒、无线IP摄像头等设备进行通讯,实现高速率数据传输。

(4)实现室内自组织网络与因特网的连接,便于远程监控。

2 硬件设计

(1) 处理器。采用基于ARM11内核的树莓派板卡[6]。该板卡是一款基于Linux操作系统[7]的卡片电脑,具有体积小巧(信用卡大小)、集成度高、低功耗、开源、接口丰富等特点,为多功能智能设备和一般类型应用开发提供了低价格、低功耗、高性能小型微控制器的解决方案。

(2) WiFi通信模块。采用RTL8188CUS芯片的无线网卡,该网卡通过USB与树莓派进行连接,并通过系统配置,实现无线热点功能。

(3) ZigBee通信模块。ZigBee技术作为一种结构简单、低功耗、低数据速率、低成本和高可靠性的双向无线网络通信技术,使用的频段为2.4 GHz、868 MHz(欧洲)及915 MHz(美国), 均为免执照频段,便于实现低功耗的自组织网络[8]。它可以嵌入各种设备中,同时支持地理定位功能。本方案采用基于CC2520芯片的ZigBee模块[9-10],利用树莓派的串口进行连接,实现数据传输。

(4) 433 MHz通信模块。采用HC11无线传输模块。它主要由一个单片机和一个射频收发芯片构成,其中射频收发芯片为TI公司的CC1101。该模块利用51单片机实现协议栈的控制程序,并通过GPIO接口与树莓派进行通信。

(5) DHMI接口显示模块。为了便于人机交互,以对智能网关进行个性化设置,该智能网关搭载DHMI接口,并连接76.2 mm(3 in)触摸显示屏,方便对智能网关进行设置。

3 多模传输网关的软件设计

采用嵌入式Linux操作系统进行开发 ,主要包括以下3个部分。

3.1 系统搭建

设计利用树莓派搭载的Raspbian系统进行开发,该系统基于Linux内核并开源,便于进行系统开发。由于Raspbian系统针对树莓派编译了相应的bootloader,因此开发人员无需对bootloader进行配置。具体配置时,从官网下载最新的镜像文件,将内存卡选择TF32格式格式化,并用Win32DiskImager将镜像文件烧录到SD卡或TF卡中。将内存卡插入树莓派内存卡槽中,即可以运行操作系统。

3.2 驱动程序开发

(1)基于传输控制协议(Transmission Control Protocol,TCP)的WiFi传输线程设计。流程如图3所示,智能网关端线程开始时首先设置服务器的地址信息,尤其是设置提供TCP[11]连接的端口号,随后创建TCP连接要用到的套接字(Socket),再将Socket与端口绑定。绑定端口号后调用listen()函数监听端口,此时线程阻塞直到有TCP客户端发出建立连接请求。当收到建立连接请求时线程继续执行,调用accept()函数接收连接请求建立连接,同时创建一个新的Socket和一个新的线程用以当前连接,原Socket和原线程回到listen()函数等待下一个连接请求。TCP连接的3次握手就在listen()函数和accept()函数之间完成。TCP连接建立后,网关端的线程负责接收保存并处理数据,同时当用户通过指令触发网关端向终端发送停止命令后,网关端线程退出[12]。

图3 基于TCP协议的WiFi传输线程设计

(2)ZigBee协议传输线程设计。Zigbee传输模式的实现基于CC2520射频收发器,但为了能更好地根据需求使用CC2520,通过直接在树莓派编程驱动CC2520,实现数据收发功能,并在此基础上实现载波侦听多路访问(Carrier Sense Multiple Access,CSMA)。网关端初始时与终端一样,需要设置CC2520的一系列参数,随后进入接收模式,等待接收终端发来的数据,同时等待用户请求发送命令。当收到终端发来的数据帧,并通过循环冗余校验(Cyclic Redundancy Check,CRC)后,网关端给终端回复确认字符(Acknowledgement,ACK)。同时回到接收数据等待发送命令模式。若用户请求停止,网关端发送停止命令,并等待终端回复ACK,没有收到ACK则重新发送,在多次发送都没有收到ACK的情况下网关端提示用户发送停止命令没有响应,同时退出线程。具体如图4所示。

图4 基于ZigBee协议传输线程设计

(3)基于HC11模块传输线程设计。如图5所示,网关端线程运行后首先需要打开并设置UART口的波特率,默认值为9 600。随后通过树莓派的GPIO[13]将HC11的设置引脚拉低,进入设置模式。进入设置模式后可通过AT指令来设置HC11的信道、工作模式、波特率等。工作流程如图5所示。

图5 基于HC11模块传输线程设计

(4)基于Linux下多线程编程。本文中多传输模式智能网关的软件底层开发为一个多传输模式进程。该进程中主要包含3个线程:TPC、ZigBee、433 MHz。这3个线程可以共享资源,例如它们可以发送同一个缓存区中的数据,或者通过一个命令同时触发多种传输模式发送同一数据,或者通过一个命令触发多种传输模式发送多个数据等。因为线程的共享特性,使得同一个进程中的多个线程可共享各种资源,这些线程通过竞争方式获得这些资源。为了防止多个线程访问资源的不一致性,多线程编程的一个重要任务就是控制好线程的同步。例如多种传输模式正在使用同一接收缓存区接收数据,有数据同时到来时多个线程会同时将数据写入同一内存,最终将导致数据错误和丢失。这时就需要对线程进行同步,以确保它们在访问该变量时,可以唯一地修改该变量并使它生效。线程同步有3种常用机制:互斥锁[14](mutex)、读写锁[15](rwlock)和条件变量(cond)。在多模智能网关的软件实现中,主要用到互斥锁进行线程同步,具体如图6所示。

图6 基于Linux下多线程编程

4 系统实现效果

图7所示为多模智能网关的原理模型机,图中主板为树莓派板卡。红色线圈标注的为WiFi通信模块,蓝色线圈标注的为ZigBee模块,采用CC2520射频芯片。图中,绿色线圈标注的为433 MHz通信模块。各个模块利用GPIO或串口与树莓派板卡进行连接和通信。

如图8所示,程序启动运行后智能网关(Sink端节点)的各个线程启动并挂起等待接收数据,同时等待用户请求发送停止命令。智能终端(Sensor端节点)各个线程启动并挂起等待数据产生,同时等待接收从Sink端发送来的命令。其中CC2520代表ZigBee模块。

图7 多模智能网关的原理模型机

图8 智能网关程序执行后等待数据产生

图9(a)~(c)分别为ZigBee传输模式、433M传输模式和WiFi传输模式的运行效果图。每张图的中间为Sink节点的终端界面,两边分别为Sensor节点的终端界面。在程序启动后,Sensor节点程序检测到数据产生则发送数据包,Sink节点接收到数据后立即在终端界面上将所接收到的数据包打印出来。

(a) ZigBee传输模式效果图

(b) 433M传输模式效果图

(c) WiFi传输模式效果图

5 结 语

本文通过比较当前智能家居网络中常用的传输协议的优缺点,提出一种以树莓派板卡为核心,开发多模传输协议的智能家居网关来组建智能家居网络的方案,并开发出了样机。该网关功能完备,连接简单,遵循多种无线传输协议,适用性强,具有广泛的应用价值。

猜你喜欢
树莓线程智能网
基于C#线程实验探究
5G赋能智能网联汽车
基于国产化环境的线程池模型研究与实现
基于树莓派的骑行智能头盔设计
智能网联硬实力趋强
迎战智能网联大爆发
基于树莓派的远程家居控制系统的设计
浅谈linux多线程协作
响应面法优化红树莓酒发酵工艺
基于SJA1000的CAN总线智能网桥设计