ZigBee和3G的远程无线测光系统设计

发布者:梦中的额吉最新更新时间:2014-10-30 来源: ednchina关键字:ZigBee  3G  Linux  测光系统 手机看文章 扫描二维码
随时随地手机看文章
设计了基于ZigBee短距离无线通信技术与3G远距离无线通信技术相结合的远程无线测光系统;该系统处理器选用的是三星S5PV210处理器,短距离无线通信模块采用TI公司的CC2530芯片,3G上网卡设备用的是中兴MF190无线上网模块。文中给出了系统具体的软硬件设计方案。结果表明,该系统可以达到稳定高效的监测效果,具有良好的实用性和应用价值。

1 系统总体设计

ZigBee 技术是一种低速率、近距离、低功耗、低复杂度、低成本、通信可靠和网络容量大的无线通信技术。根据IEEE 802.15.4协议标准,ZigBee 的工作频段分为868 MHz、915 MHz和2.4 GHz 3个频段,其中2.4 GHz频段上分为16个信道,该频段为全球通用的工业、科学、医学频段,该频段为免付费、免申请的无线电频段,在该频段上,数据传输速率为 250 Kb/s,功耗发射输出仅为0~3.6 dBm,综合考虑选择使用2.4 GHz频段。

系统主要由三部分组成:光照度终端采集节点、协调器主节点和上位机服务器监控中心。系统的整体结构图如图1所示。

图1 系统整体结构图
图1 系统整体结构图

2 系统硬件设计

本系统的ZigBee 无线传输网络由4个带有光照强度传感器的终端采集节点和1个协调器主节点构成。终端采集节点BH1750数字光照度传感器采集到的光照强度数据通过CC2530射频收发模块以无线方式发送到协调器主节点CC2530射频收发模块,主节点CC2530射频收发模块再与主控制器S5PV210进行通信,通过3G网络将数据传输至远程上位机服务器监测中心。

2.1 协调器主节点设计

协调器主节点在整个ZigBee 无线网络中的主要作用是建立、维护、控制终端节点的加入以及数据的汇总、缓存和转发,它是ZigBee 网络的控制中心,其结构框图如图2所示。无线射频收发芯片CC2530 完成组网和数据无线收发;3G上网完成数据的远距离无线传输;主控芯片S5PV210负责整个主节点模块的协调与控制。

图2 局域网控制主节点结构框图
图2 局域网控制主节点结构框图

CC2530 是用于IEEE802.15.4、ZigBee 和RF4CE 应用的一个真正的片上系统(SoC)解决方案,它能够以非常低的总材料成本建立强大的网络节点,CC2530 结合了RF收发器的优良性能,具有业界标准的增强型8051 CPU、系统内可编程闪存,8 KB RAM 和其他强大的功能。CC2530 有4种不同的闪存版本:CC2530F32/64/128/256,分别具有32/64/128/256 KB 的闪存。运行模式之间的转换时间较短,可进一步确保低能源消耗。

2.2 终端采集分节点设计

终端采集节点负责将采集到的光照强度数据传送到协调器主节点,其硬件电路原理图如图3所示。数字光照度传感器BH1750负责光照强度数据的采集;无线射频收发芯片CC2530 负责与局域网控制中心无线通信,采集数据并发送数据到局域网控制中心。

图3 局域网采集节点电路原理图
图3 局域网采集节点电路原理图

BH1750是一种用于两线式串行总线接口的数字型光强度传感器集成电路,这种集成电路可以根据收集的光线强度数据来调整液晶或者键盘背景灯的亮度,利用它的高分辨率可以探测较大范围的光强度变化,探测范围可以从1~65 535 lx,支持 I2C总线接口(f/s Mode Support),具有接近视觉灵敏度的光谱灵敏度特性(峰值灵敏度波长典型值为560 nm)[6];输出对应亮度的数字值;通过降低功率功能,实现低电流;通过50 Hz/60 Hz 除光噪音功能实现稳定的测定;支持 1.8 V 逻辑输入接口;无需其他外部件;光源依赖性弱(白炽灯、荧光灯、卤素灯、白光 LED、日光灯);有两种可选的 I2C总线slave 地址;可调的测量结果影响较大的因素为光入口大小;最小误差变动在±20%;受红外线影响很小。

3 软件设计

系统软件设计包括终端节点采集程序、ZigBee 网络无线传输程序、3G网络无线传送程序和上位机服务器监测程序的软件设计。

3.1 终端节点采集程序设计

BH1750与主控器之间的通信使用标准的I2C总线通信协议。I2C 总线是一种由NXP公司开发的两线式串行总线,用于连接微控制器及其外围设备[7]。主控器通过I2C总线接口向BH1750 发送各种控制命令以及读取测量数据。主要控制命令如下:上电指令为0x01;断电指令为0x00;连续H分辨率模式为0x10;连续L分辨率模式为0x13;一次H分辨率模式为0x20;一次L分辨率模式为0x23。

以“连续高分辨率模式”为例,测量步骤如下:

① 发送“上电”指令。

② 发送“连续高分辨率模式”指令。

③ 等待完成第一次高分辨率模式的测量(最大时间为180 ms)。

④ 发送读指令。

⑤ 读测量结果。

3.2 ZigBee 网络无线传送程序设计

ZigBee 协调器节点上电后,ZDO层首次进行一系列的初始化工作,然后调用ZDO层的初始化设备函数,最终触发网络初始化函数,开始构建一个新的网络。建立网络时,协调器节点首先逐个对各个信道进行扫描,根据各个信道的能量值进行排序,选择能量值达到一定大小的信道为可用信道。其次,由网络层在可用信道中选定信道,并随机选择一个在所选信道中唯一的16位网络标识符(PANID)分配给这个新建的网络[8]。协调器的软件设计流程图如图4所示。 [page]

终端采集节点上电以后进行设备初始化,然后检测周围是否有网络存在,当发现有网络存在时,网络层将给予ZDA层发现网络反馈信息,然后由网络层向能量强度相对较大的网络发出加入网络请求;加入网络成功,则网络层将给予ZDA层加入网络反馈。成功加入网络之后开始向协调器发出绑定请求,绑定成功后开始对光照数据进行采集,将采集到的数据进行预处理并无线发送至协调器节点。传感器终端采集节点软件流程图如图5所示。

协调器的软件流程图;传感器采集节点软件流程图

3.3 3G网络无线传送部分设计

3.3.1 usb_modeswitch的移植

usb_modeswitch是一种在Linux系统下对USB设备的工作模式进行转换的工具,用于控制含有多个USB子设备的USB设备。在Linux环境下,厂家一般不会提供USB设备在Linux系统上的驱动,所以需要用usb_modeswitch工具来进行模式转换。设备模式依赖usbstorage和usbserial,所以在开发板上需要有这两种模块的支持,设备小能够正常工作于这两种模式下。

usb_modeswitch依赖于libusb提供的一系列库文件,首先需要安装libusb。解压并进入libusb1.0.6目录,使用如下命令建立子目录install,用于存放最后生存的库文件与头文件。usb_modeswitch移植过程略——编者注。

3.3.2 PPPD的移植

Linux在内核中已经支持3G模块驱动和PPP网络协议栈,需要做的工作是在内核中配置3G模块驱动和PPP网络协议栈的相关选项。PPPD的移植过程略——编者注。

在开发板文件系统/etc/ppp/peers目录下边创建三个文件,代码略——编者注。

3.3.3 主节点与上位机通信程序设计

通过PPPD的拨号,可以建立数据链路层的连接,数据链路层采用PPP协议,它是一种面向字符的协议,是为在两个对等实体间传输数据包连接而设计的,使用可扩展的链路控制协议LCP来建立、配置和测试数据链路。网络程序还需要TCP/IP协议的支持,Linux内核已经保留了对TCP/IP以及其他的网络协议的支持。最后编写嵌入式Linux上的网络客户端应用程序和Windows网络服务器端应用程序,传送想要传送的数据。主节点主控制器与上位机服务器通信的程序流程图如图6所示。

图6 主节点与上位机通信程序流程图
图6 主节点与上位机通信程序流程图

3.4 服务器上位机监测部分

服务器上位机软件的开发采用Microsoft Visual C++6.0开发环境,采用的是面向对象的程序设计方法,对于每一个窗口都建立了相应的类,在类的基础上创建对象,对对象的操作就是对其对应的窗口的操作。监控中心软件主要实现以下功能:建立服务器端并接收客户端的连接;接收客户端发送过来的数据并显示;实时曲线显示;历史数据查询。

4 调试测试

4.1 系统调试

在系统调试过程中,传输数据时上位机接收到的数据有个别是错误的,通过查看二进制代码发现0x11、0x13字符没有接收到。缩小范围查看问题出在哪个环节,检验发现主节点控制器S5PV210没有接收到0x11、0x13字符,而主节点CC2530单片机已经接收到了0x11、0x13字符,那么问题一定出现在串口上。

在Linux串口编程中都没对c_iflag(termios成员变量)这个变量进行有效的设置,这样传送ASCII码时没有问题,但传送二进制数据时遇到0x0d、0x11和0x13却会被丢掉。这几个字符是特殊字符,被用作特殊控制了,只需要关掉ICRNL和IXON选项即可。

具体做法是在主控制器Linux串口初始化函数中添加以下语句:

options.c_iflag &= ~(ICRNL | IXON | IXOFF);

options是之前定义的termios类型的结构体。通过以上设置就可以屏蔽掉0x11、0x13字符的特殊功能,从而能正常传送以上字符。

4.2 系统功能测试

连接好硬件设备后,配置编译内核,将编译好的内核通过USB下载到开发板上,然后重启。再将编译好的应用程序通过串口终端下载到开发板上。将3G上网卡插到USB接口上,使用如下命令建立3个TTY设备文件节点,代码略——编者注。

我们可以看到PING新浪的WEB服务器可以PING通,说明已经成功接入因特网了。然后将4个终端分节点放在不同的光照环境下,启动上位机软件,建立服务器端,开始等待接收主节点客户端的连接请求和发送过来的数据并且显示。启动主节点客户端程序来连接服务器,最后启动分节点的采集传送程序。上位机接收到并显示的监测数据图略——编者注。

结语

本文阐述了一种将低成本、低功耗的短距离无线ZigBee 技术与远距离3G移动通信技术相结合的远程无线测光系统,并完成了对采集终端节点、协调器主节点的软硬件设计,通过编写Windows平台上位机软件对采集到的数据进行实时显示与分析。

关键字:ZigBee  3G  Linux  测光系统 引用地址:ZigBee和3G的远程无线测光系统设计

上一篇:MSP430单片机中的看门狗定时器研究
下一篇:利用闪存MCU实现农网表应用方案

推荐阅读最新更新时间:2024-03-16 13:44

ZigBee的12大应用
1. 监控照明、HVAC和写字楼安全。 2. 配合传感器和激励器对制造、过程控制、农田耕作、环境及其它区域进行工业监控。 3. 带负载管理功能的自动抄表(AMR),这可使得地产管理公司削减成本和节省电气能源。 4. 对油气生产、运输和勘测进行管理、控制、数据采集及其它遥感勘测。 5. 家庭监控照明、HVAC、安全和其它系统。 6. 对病患、设备及设施进行医疗和健康监控。 7. 军事应用,包括战场监视和机器人控制。 8. 汽车应用,配合传感器网络报告汽车所有系统的状态。 9. 消费电子应用,对玩具、游戏机、电视、立体音响、DVD播放机和其它家电设备进行遥控。 10. 应用于计算机外设,如鼠标、键盘、游戏控制器及打印机。 11. 有源R
[医疗电子]
中低端3G手机补贴力度加大 供应商负担加剧
  市场研究机构Ovum指出,三家中国的移动通信运营商在3G市场的竞争正如火如荼展开;最近这三家业者纷纷调整手机策略、提升补贴水平,特别是针对中端和低端3G手机的补贴。此举预期将会带动市场的成长,但是将会增加电信运营商的经济负担。手机的竞争也会持续压缩供应商的利润,消费者将是主要的赢家。   2010年5月,中国移动总裁王建宙宣布,中国移动今年将提高手机补贴以扩大其3G用户群。 补贴总额将高达人民币150亿元,其中大部分将用于3G手机。 这种补贴水平明显高于往年。在此同时,中国电信已经开始在某些省分实施一项新的CDMA手机补贴政策;而一直避免实施3G手机补贴的中国联通最近也宣布跟进。虽然他们的技术和市场战略不同,三大电信运营商都
[手机便携]
如何建立Linux下的ARM交叉编译环境
在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。文章通过一个具体的例子说明了这些嵌入式交叉编译开发工具的制作过程。 随着消费类电子产品的大量开发和应用和Linux操作系统的不断健壮和强大,嵌入式系统越来越多的进入人们的生活之中,应用范围越来越广。 在裁减和定制Linux,运用于你的嵌入式系统之前,由于一般嵌入式开发系统存储大小有限,通常你都要在你的强大的pc机上建立一个用于目标机的交叉编译环境。这是一个由编译器、连接器和解释器组成的综合开发环境。交叉编译工具主要由 binutils、gcc 和 glibc 几个部分组成。有时出于减小 libc 库大小的考虑,你也可以用别
[单片机]
OK6410A 开发板 (八) 5 linux-5.11 OK6410A usb 移植
s3c6410 有两个USB实例(板子也都引出来了), 分别是 USB host 和 USB OTG , 这里说的是 usb host 代码 : https://github.com/lisider/linux/tree/ok6410a-linux-5.11 提交id : dc485e937e8bccc1fc01b5e6d9025bf83b2b6f83 defconfig : arch/arm/configs/ok6410A_sdboot_mini_net_lcd_x11_usb_defconfig CONFIG_USB_NET_DRIVERS=y CONFIG_USB_HID=y CONFIG_USB_OHCI_LI
[单片机]
OK6410A 开发板 (八) 5 <font color='red'>linux</font>-5.11 OK6410A usb 移植
回顾Linux、Git 之父Linus Torvalds的传奇技术人生
  提起 Linus Torvalds 大家的第一反应是怎样的?是严苛刻薄,还是神级伟大,亦或是孤傲清高?二十五年来,Linus Torvalds 一直坚持在技术第一线,开发了  Linux  和  Git  两个项目,并深刻影响了软件行业。如果没有  Linux ,就不会有基于  Linux  的安卓系统,那世界是怎样的?如果没有  Git  的诞生,就不会基于  Git  的 GitHub,那么开源的兴旺之势将会迟来多久?下面就随嵌入式小编一起来了解一下相关内容吧。   有人问 Linus,你是如何成长为今天的你自己的?Linus Torvalds 说,我本人并不适合回答这个问题,因为这是个渐进不自知的过程;应该请一个不会天
[嵌入式]
NI推出基于Linux的嵌入式设计模块SOM
  NI新推出了一个嵌入式系统开发板,基于Linux平台下的实时操作系统(RTOS),该系统模块SOM基于Xilinx内置双核ARM处理器的Xilinx Zynq全可编程SoC系列。   软件集成度是这类小型硬件开发模块必须关注的,因为它采用LabVIEW软件可重构的I/O(RIO)架构的软件设计标准。   嵌入式系统市场总监Jamie Smith表示,“今天的嵌入式监控和控制应用程序比以往任何时候都更为复杂,严格的上市期限、不断上升的成本为系统给设计者增加了难度。研究表明,与传统设计方法相比,利用LabVIEW RIO架构用仅仅一半的时间来解决复杂的嵌入式设计难题。”   SOM系统开发主板还附带一整套嵌入式操作
[测试测量]
分析Linux中Spinlock在ARM及X86平台上的实现
  本文主要以2.6.22.6内核分析Linux中spinlock在ARM及X86平台上的实现(不同版本的内核实现形式会有一些差异,但原理大致相同)。此处默认大家已经熟悉了spinlock的使用,重点解释容易引起迷惑的体系结构相关的实现部分。   一、spin_lock(lock)的实现   /***include/linux/spinlock.h中***/   #if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK)   //如果配置了SMP或配置自旋锁调试功能   # include linux/spinlock_api_smp.h   #els
[单片机]
tiny6410开发板的Linux系统修改IP地址
Linux系统启动时执行了etcinit.difconfig-eth0脚本,这个ifconfig-eth0脚步会查找/etc下是否存在eth0-setting文件,如果有则执行 source eth0-setting ,使用其中配置的IP,如果没有找到这个文件则使用默认的192.168.1.230。 所以只要修改/etc/eth0-setting中的IP地址即可。
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved