最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

基于嵌入式的传感器网络设计(打印)

来源:动视网 责编:小OO 时间:2025-09-26 23:52:37
文档

基于嵌入式的传感器网络设计(打印)

基于嵌入式的传感器网络设计摘要传感器网络是当前的一个研究热点。它是由许多在空间上分布的自动装置组成的一种网络,这些装置使用传感器协作地监控不同位置的环境状况。本课题所设计的基于嵌入式的传感器网络系统,主要是应用于机器人的传感器信息的采集和处理。该系统采用了USB总线对大量传感器进行信息采集,交由嵌入式ARM9进行处理,最终将结果统一上传工控机,实现整个传感器网络的统一规划和信息融合。本网络系统由于引入了USB接口,较以前的传统接口提高了数据传输的速率,且支持热插拔,使用更方便。本论文侧重于系统
推荐度:
导读基于嵌入式的传感器网络设计摘要传感器网络是当前的一个研究热点。它是由许多在空间上分布的自动装置组成的一种网络,这些装置使用传感器协作地监控不同位置的环境状况。本课题所设计的基于嵌入式的传感器网络系统,主要是应用于机器人的传感器信息的采集和处理。该系统采用了USB总线对大量传感器进行信息采集,交由嵌入式ARM9进行处理,最终将结果统一上传工控机,实现整个传感器网络的统一规划和信息融合。本网络系统由于引入了USB接口,较以前的传统接口提高了数据传输的速率,且支持热插拔,使用更方便。本论文侧重于系统
基于嵌入式的传感器网络设计

摘要  传感器网络是当前的一个研究热点。它是由许多在空间上分布的自动装置组成的一种网络,这些装置使用传感器协作地监控不同位置的环境状况。本课题所设计的基于嵌入式的传感器网络系统,主要是应用于机器人的传感器信息的采集和处理。该系统采用了USB总线对大量传感器进行信息采集,交由嵌入式ARM9进行处理,最终将结果统一上传工控机,实现整个传感器网络的统一规划和信息融合。

本网络系统由于引入了USB接口,较以前的传统接口提高了数据传输的速率,且支持热插拔,使用更方便。本论文侧重于系统的终端设备部分的研究,阐述了由Philips公司的PDIUSBD12与ATMEL的STCC52等组成的传感器网络终端的设计方案、开发方法和开发过程,并给出了具体实现方案。该终端的设计包括硬件设计,固件程序开发,驱动程序设计和主机应用软件设计,其中的固件程序开发是设计中的重点。本论文实现了传感器信息的采集和存储,并能响应主机的各种请求和通过USB接口采用批量传输方式上传送采集到的数据给主机。

关键词  传感器;USB设备;USB接口;传感器网络;单片机 

1. 前 言

1.1课题的提出及意义

本课题来源于广州大学实验中心的机器人项目。机器人身上有大量的传感器,必须对其进行信息采集和处理。传统的信息采集方式都是孤立的,基本都是使用串口或I2C总线等低速率总线进行采集,这些接口或者规范不一,或者可扩展性差,或者稳定性差,或者功耗大等,无法实现大规模传感器阵列的采集,且不具备即插即用功能,使用非常不方便。

本系统是设计一套基于嵌入式的传感器网络系统,通过采用USB总线对传感器信息进行传送,交由嵌入式处理器ARM9进行综合处理,最终将结果上传至工控机,实现整个传感器网络的统一规划和信息融合。由于引入了USB这种新型的通信接口,使得整个系统不再那么庞大,且连接方便,支持即插即用,其数据传输速度远远高于普通的串口和并口。本设计侧重于实现硬件系统的设计和实现。

1.2国内外研究现状    

传感器网络的研究起步于20世纪90年代末期。从21世纪开始,传感器网络引起了学术界、军事界和工业界的极大关注,美国和欧洲相继启动了许多关于传感器网络的研究计划。特别是美国通过国家自然基金委、国防部等多种渠道投入巨资支持传感器网络技术的研究。

1 军事领域

美国国防部和各军事部门较早开始启动传感器网络的研究,在C4ISR的基础上提出了C4KISR计划,强调战场情报的获取能力、信息的综合能力和信息的利用能力,把传感器网络作为一个重要研究领域,设立了一系列军事传感器网络研究项目。[1]

美国陆军2001年就提出了“灵巧传感器网络通信”计划,在2001-2005财政年度期间实施。美国陆军近期又确立了“无人值守地面传感器群”项目,其主要目标是使基层指挥员根据需要能够将传感器灵活部署到任何区域。美国陆军还确立了“战场环境侦察与监视系统”项目。该系统是一个智能化传感器网络,可以更为详尽、准确地探测到精确信息。

2002年5月,美国Snadia国家实验室与美国能源部合作,共同研究能够尽早发现以地铁、车站等场所为目标的生化武器袭击,并及时采取防范对策的系统。它属于美国能源部恐怖对策项目的重要一环。该系统集检测有毒气体的化学传感器和网络技术于一体。安装在车站的传感器一旦检测到某种有害物质,就会自动向管理中心、通报,自动进行引导旅客避难的广播,并封锁有关入口等。该系统除了能够在专用管理中心进行监视之外,还可以通过Internet进行远程监视[1]。

2民用领域

美国交通部1995年提出了“国家智能交通系统项目规划”,预计到2025年全面投入使用。该计划试图有效集成先进的信息技术、数据通信技术、传感器技术、控制技术及计算机处理技术并运用于整个地面交通管理,建立一个大范围全方位的实时高效的综合交通运输管理系统。这种新型系统将有效地使用传感器网络进行交通管理,不仅可以使汽车按照一定的速度行驶,前后车辆自动保持一定的距离,而且还可以提供有关道路堵塞的最新消息,推荐最佳行车路线以及提醒驾驶员避免交通事故等 [1]。

英特尔公司在2002年10月发布了“基于微型传感器网络的新型计算发展规划”,计划宣称,英特尔将致力于微型传感器网络在预防医学、环境监测、森林灭火乃至海底板块调查、行星探查等领域的应用。实现该计划需要三个阶段,包括物理阶段、实现阶段和应用阶段。物理阶段主要开发集成感知、计算和通信功能的超微型传感器。实现阶段将在实际商务中使用来自传感器网络的感知数据。应用阶段将传感器网络应用于预防医学、环境监测及灾害对策等领域[1]。

3学术界

美国自然科学基金委员会2003年制定了无线传感器网络研究计划,在加州大学洛杉矶分校成立了传感器网络研究中心,联合周边的加州大学伯克力分校、南加州大学等,展开“嵌入式智能传感器”的研究项目,以求利用传感器网络对我们生活的物理世界实现全方位的测试与控制,支持相关基础理论的研究,这也是美国国情咨文中有关Internet2最主要的远景规划之一。

传感器网络涉及传感器技术、网络通信技术、无线传输技术、嵌入式计算技术、分布式信息处理技术、软件编程技术等多学科交叉的研究领域,具有鲜明的跨学科研究特点。美国所有著名院校几乎都有研究小组在从事传感器网络相关技术的研究,加拿大、英国、德国、芬兰、日本和意大利等国家的研究机构也加入了传感器网络的研究。

我国在传感器网络方面的研究起步较晚,一些大学最先注意到这个方向的研究前景并开始了研究工作。我国的中科院上海微系统研究所、沈阳自动化所、软件研究所、计算所、电子所、自动化所和合肥智能技术研究所等科研机构,哈尔滨工业大学、清华大学、北京邮电大学、西北工业大学、天津大学和国防科技大学等院校在国内较早开展了传感器网络的研究,2004年起有更多的院校和科研机构加入到该领域的研究工作中来。

1.3 主要研究内容

由于时间和知识水平等方面的,本论文在对整个网络系统提出了整体的设计方案的基础上,只侧重于系统的终端设备的开发,在本课题研究结果的基础上,可以形成任何形式的USB网络终端,为以后该终端应用于嵌入式网络系统,提高数据传输速率,降低开发成本,节省电源等方面打开了新的局面。

主要研究内容如下:

(l)熟悉相关的机器人传感器的原理和应用。

(2)掌握USB总线的协议及USB总线系统的组成结构。

(3)研究网络终端硬件实现的方法、需要的芯片及硬件电路,设计符合要

求的终端电路。

(4)研究网络终端的软件开发,掌握和编写适合本系统的USB固件程序和传

感器采集程序,使之能完成USB的枚举、配置和通讯功能。

(5)掌握计算机USB设备驱动程序开发工具及编程方法,通过计算机能识

别出终端设备。

(6)上位机软件能读写终端设备,以验证该终端可用。

2 系统整体方案设计

2.1 方案选择

嵌入式网络系统中常用的网络接口有I2C、RS232,RS485,SPI等,但这些传统接口传输速度低,且存在很多的缺陷,或者规范不一,或者体积庞大,或者扩展性差,且不支持热插拔,使用不便。随着信息技术的迅猛发展,这些传统的接口己经不能满足需要。

现在市场上己有很多新的接口总线标准,发展迅速而且在业界比较流行的有:蓝牙、IEEE 1394和USB。

IEEE 1394通常被称为Fire Wire(火线),是由苹果公司于80年代中期开始开发的一种允许连接多种高性能设备的高速串行总线。它的主要特点包括:使用方便;支持高速应用;可升级的性能;支持异步和等时传输等。它的最高数据传输速率达到3.2Gb/S,比UBS2.0的速度快了6倍,但受其规范复杂性的影响,采用芯片组架构的硬件方案使其价格偏高,不适合实现低性能、低成本的外设。

蓝牙技术是一种无线数据与语音通信的开放性全球规范,它以低成本的近距离无线连接为基础,为固定与移动设备通信环境建立一个特别连接。蓝牙的数据传输速率为1Mbit/s。蓝牙技术也有它的局限性,如,技术太过复杂,设备价格过高。

USB(Universal Serial Bus)通用串行总线是一种快速的、双向的、同步传输的、廉价的并支持热拔插的串行接口。USB总线自诞生之初就以方便易用、稳定可靠、廉价高速为目标,制定了相对复杂而全面的通信协议,以适应种类不断增多、功能不断加强的外设的发展。同以上两种接口总线相比,USB具有不可比拟的优点:

1.速度快:USB1.1的传输速率低速(1.5Mbps)和全速(12Mbps)两种,

USB2.0更发展到了480Mbps,而更新的USB3.0的速度据说可达5GB/S左右,适用于不同的设备类型。

2.良好的扩展性:可以连接多达127个外围设备。

3 即插即用:USB实现了真正的即插即用和热插拔,设备连接上后由软件自动配置,完成后立刻就能使用,不需用户干预。

4 可选的供电模式:USB设备可以从主机接口或集线器上获得电源(能够满足多数设备的需求),也可以选择自供电。

5 错误检测和恢复:USB事务处理包括错误检测机制,它们用以确保数据无错误发送。在发生错误时,事务可以重新启动。

6 支持4种类型的传输方式:USB定义了4种不同的传输类型来满足不同设备的需求。它们分别是同步传输、批量传输、中断传输和控制传输。

7 价格低廉。与其他接口相比,USB接口在线缆和机械方面简单易行,因而有较大的价格优势。

基于如上的优势,USB接口得到了广泛的应用。同时,USB总线在嵌入式系统中的应用也已成为当前USB技术应用领域的热点。在嵌入式系统中加入USB接口可以方便地与主机进行通信和大量数据交互,并可通过PC进行USB接口设备间的数据交换,这非常适合于本设计的要求,通过USB总线能将大量的传感器信息快速地上传到上位机。

现将各种接口通过列表进行比较如下:

表2-1 常用外部总线比较

接口数据格式传输速率架构延伸距离是否支持热插拔
USB异步串行1.5Mbit/s 12Mbit/s

480Mbit/s

主/从 星形

127个设备

5m,通过5个集线器达30m

RS232异步串行20Kb/s(有达115KB/s)

10—30m

RS485异步串行10Mb/s1200m
I2C

同步串行1000kb/s标准

400kb/s快速

3.4Mb/s高速

主/从

多个主机

5m左右

SPI串行1Mb/s主/从

5m
IEEE 1394串行400Mbit/s 3.2Gbit/s多主机4—5m

CAN控制域网络设备网络1Mb/s  10kb/s主/从

多个主机

40m

5000m

以太网接口串行10Mbit/s 100Mbit/s 1Gbit/s多主机,CSMA/CD

500
综合上论述,兼顾成本及性能,在本设计的传感器网络中采用USB总线接口。

2.2 系统方案概述

本系统的功能主要是将各种传感器的信息通过ARM9统一用USB总线进行采集和处理,并保存最终的结果于ARM缓冲区,以供上位机随时读取,实现整个传感器网络的统一规划和信息融合。整个设计包括以下几个部分:

1传感器网络终端的开发

将各种传输方式不同的传感器设计成均带有USB接口的终端设备,它可以像U盘一样随意地接入到传感器网络或PC中而被主机识别并能读取其数据,此终端设备通过响应主机的标准请求来完成设备的配置,从而能与主机进行数据通信。主要包括以下两部分的工作:硬件电路设计和终端单片机软件开发;

2嵌入式ARM部分的信息采集和融合等处理

这部分的功能主要是由ARM通过USB总线接口近乎实时地采集传感器终端的信息并对其进行融合、滤波等处理,通过图形界面实时地显示所插入的终端设备的种类、数据类型、传输的数据信息等。当主机有读取数据的命令来时就将网络中的传感器信息通过USB总线发送给主机。这部分主要的有以下工作:

1)USB接口驱动程序开发

2)图形界面软件的开发

3)应用程序开发

3上位机部分的软件开发

上位机通过发送读取数据命令给ARM来获取有关传感器的信息,上位机可以一次性读取网络中所有传感器的信息,也可以读取指定的传感器的信息,从而让机器人获知外界的情况,实现机器人的智能控制。这部分主要工作如下:

4)读取传感器信息的应用程序设计

5)上位机USB驱动程序设计

由于时间和知识水平的,本论文主要是基本完成了传感器网络的终端设备的开发,即将各种传感器都统一设计成通过USB接口传输的设备。此终端由传感器、单片机、USB芯片、A/D转换器等组成。信号通过A/D转换单元转换成数据流,在单片机的控制下,通过USB接口向嵌入式ARM或PC机传送。ARM或PC机可以识别这些终端设备并能读取数据。

2.2.1系统硬件方案

整个系统硬件组成主要包括以下两部分:S3C2410系统板、LCD显示、USB集线器(Hub)、网络终端(Func)等,其结构框图如下图2-1所示。其中的网络终端是由传感器、USB控制芯片、单片机等组成的设备,一个终端可连接多个传感器,这就大大增加了此网络系统的容量,其结构框图如下图2-2所示:

图2-1基于嵌入式的传感器网络系统功能模块图

图2-2 传感器网络的终端设备(Func)功能模块

2.2.2系统软件方案

终端的软件部分是本课题设计的重点,采用Keil_c51编写。这部分的程序主要是完成传感器数据的采集和与主机之间的USB总线通信两个任务。

终端在主程序中定时采集各传感器的数据并按一定的结构存储起来,以供主机读取。终端与主机通过枚举建立起通信关系,使主机为终端设备加载正确的驱动,从而实现数据的传输。

程序设计中采用中断的方式,当单片机在前台处理传感器信息等任务时,USB的传输可在后台被处理。这就可确保最佳的传输速率和更好的软件结构,简化了编程和调试。后台中断服务程序和前台主程序循环之间的数据交换通过事件标志和数据缓冲区来实现,其原理如下图2-3所示。在本系统中,单片机循环读取各传感器的数据并按一定的规律保存在缓存里。当USB芯片收到主机发送过来的数据包(命令)时便对单片机产生一个中断请求,单片机立即响应中断,在相应的中断服务子程序中固件程序将数据包从USB芯片内部缓冲区移到循环数据缓冲区,同时置位相应的事件标志。单片机可以继续它当前的前台任务直到完成。然后返回主循环检查缓冲区是否有新的数据(通过检查事件标志来获知),若有就对其进行相关的处理,判断该数据包是什么命令,若是读取传感器信息命令就可以通过USB接口返回缓存中指定的传感器数据给主机,或者或是配置命令就对终端进行配置,否则就继续开始它的前台任务,循环采集各传感器的数据。

图2-3 前后台工作原理示意图

本程序的结构为积木式的结构,如图2-4所示:

(l)硬件提取层:对单片机的PO口、数据总线等硬件接口进行操作,这是固件程序中的最低层代码;

(2)PDIUSBD12接口驱动程序:对PDIUSBD12器件进行操作的模块子程序集;

(3)中断服务程序:当PDIUSBD12向单片机发出中断请求时,读取PDIUSBD12传输来的数据,并设定事件标志“EPPFLAGS”;

(4)标准请求处理程序:对USB的标准设备请求进行处理,完成设备的枚举;

(5)主循环程序:发送USB请求、处理USB总线事件和传感器采集与处理等。

图2-4 固件程序结构图

3.系统硬件设计

3.1芯片的选择    

要开发一个传感器的USB网络终端,有以下几个方案可供选择:

(1)采用ASIC或是FPGA器件

利用VHDL或是其他集成电路设计方法,实现在一个芯片内完成USB接口的所有功能。这种方案具有较大的灵活性,既可以最大限度的发挥USB总线的性能,又可以随意的对其功能进行裁减,达到器件的最高使用效率。如果批量较大,使用ASIC可以使成本降到最低;而使用FPGA则可以使产品具有最大的灵活性[3]。

但这个方案的缺点也是很明显的,开发周期长,开发费用高,开发难度大,需要开发人员对集成电路设计与USB通讯具有真正深入的掌握。

(2)使用专用USB接口芯片

USB接口控制器只处理USB通信,由一个外部的微控器来管理USB控制器的寄存器、设备描述符的获取和数据包的交换等,组成结构如图:

图3-1 USB设备结构图

能实现这种功能的USB控制器现在己经比较多,像Philips的PDIUSBDll(I2C接口)、PDIUSBD12(并行接口)等,NS公司的USBN9603/9604(并行接口),NetChip公司的NET2888等。不过总的来说,在这个方面Phi1ips和National Semiconductors的要大众一些,资料相对也多一些。

使用这种方案成本比较低,具有很高的灵活性,只是编程难度相对比较大一些,且目前多数USB控制器只支持USB1.1协议。

(3)使用嵌入MCU的USB控制器

使用这种方案,CPU只需要访问一系列的寄存器和存储器,便可以实现USB接口的数据传输,从而简化了程序的设计,并且许多供应商还提供了许多范例电路和测试代码,使设计者从复杂的协议中简化出来。目前采用这种结构的USB控制器也比较多,例如Intel公司的8X931、8X930(基于8051),Cypress公司的EZ-USB(基于增强型8051)。这个方案可以大大降低设计难度,提高了设计效率,但本方案需要相应的开发器的支持,器件不易获得且价钱较高。

综合以上分析,根据时间和开发成本等具体情况,我们选项用了第二种方案,USB控制器采用Philips的PDIUSBD12,MCU采用STCC52。采用这个方案的原因是:这两种器件技术比较成熟,相应的资料比较容易获得,开发难度适中,设计比较灵活且成本较低。

3.2终端电路设计与分析

3.2.1 PDIUSBD12芯片简介

PDIUSBD12芯片是Philips公司的一颗通用USB接口芯片。它支持USB2.0的全速模式,具有软连接功能和数据流指示灯;它使用8位并行数据口和MCU连接,数字引脚兼容5V逻辑电平;内置PLL(锁相环),外部使用6MHz的晶振。除了端点0,它还有两个额外的端点,每个端点都具有输入和输出端点。其中,端点0和1支持最大包长16字节;端点2普通模式下支持最大包长字节[2]。其结构框图如下图3-2所示。

图3-2 PIDUSBD12功能框图[2]

1 模拟收发器

集成的收发器接口可通过终端电阻直接与USB电缆相连。

2 电压调整器

片内集成了一个3.3V 的调整器用于模拟收发器的供电。该电压还作为输出连接到外部1.5kΩ的上拉电阻。可选择PDIUSBD12 提供的带1.5kΩ内部上拉电阻的软件连接技术。

3 PLL

片内集成了6M到48M时钟乘法PLL。这样就可使用低成本的6M晶振。EMI也随之降低。PLL的工作不需要外部元件。

4 位时钟恢复

位时钟恢复电路使用4X过采样规则,从进入的USB数据流中恢复时钟。它能跟踪USB 规定范围内的抖动和频漂。

5 Philips 串行接口引擎(PSIE)

Philips SIE 实现了全部的USB协议层。完全由硬件实现而不需要固件的参与。该模块的功能包括同步模式的识别、并行/串行转换、位填充/解除填充、CRC 校验/产生、PID 校验/产生、地址识别和握手评估/产生。

6 SoftConnectTM

与USB的连接是通过1.5kΩ上拉电阻将差分数据线D+(用于高速USB 器件)置为高实现的。1.5kΩ上拉电阻集成在PDIUSBD12 片内,默认状态下不与VCC相连。连接的建立通过外部/系统微控制器发送命令来实现。这就允许系统微控制器在决定与USB建立连接之前完成初始化时序。USB 总线连接可以重新初始化而不需要拔出电缆。

PDIUSBD12在连接可以建立之前会检测USB VBUS 是否可用。VBUS可通过EOT_N管脚进行检测。

3.2.2 硬件设计与分析

1 MCU与D12的连接

MCU与D12的连接原理图如图3-3所示。

图3-3 MCU与D12的连接电路图

DIUSBD12的8位并行数据线接入STCC52的PO口,P1.6与CS_N相连,作为PDIUSBD12的片选输入。PDIUSBD12与MCU的接口有2种方式:地址/数据总线复用方式和地址/数据总线非复用方式。在本系统中采用了前一种方式,D12的ALE接单片机的ALE脚,这时忽略A0的输入,将A0接地,D12在ALE的下降沿锁存地址信息。若单片机的输出地址为奇数(0xff03),则表示对PDIUSBD12发送命令;若输出地址为偶数(0xff02),则表示对PDIUSBD12进行数据传输。

PDIUSBD12与STCC52的数据交换采用中断方式(外部中断0)。D12的中断引脚INT_N与单片机外部中断O引脚INT0相连,当D12的中断寄存器有一位为1时,即表示D12收到了主机的数据包,此时INT_N引脚将输出低电平,触发单片机的外部中断。

GL_N接LED对DPUIBSD12的状态进行监控,在枚举中,Led指示根据通信的状况间歇闪烁,当成功枚举和配置后,LED指示灯将一直点亮,随后与PDIUSBD12之间成功的传输将关闭LED。

2 D12与主机的连接电路

本系统采用总线供电,USB PORT接口的4脚即为5V电源。D12的VCC引脚直接接到5V电源,C5 和C9为滤波电容。由于D12内部集成了6MHz--48MHz时钟乘法PLL,这样就可以使用低成本的6M晶振。

设备通过4线电缆接入主机。这四线分别是:VBUS(总线电源),GND(地线),D+和D-(数据线)。 D+和D-是USB差分数据线,分别串联一个18Ω的阻抗匹配电阻后接到USB插头上。主机通过D+和D-上的电压变化来检测到设备的状态。在设备端,全速或高速设备的上拉电阻在D+上,低速度设备的上拉电阻在D-上。在本设计中用的是全速,因此上拉电阻接在D+上。

在主机端,当没有设备连接到USB主机端口时,D+和D-线上的15kΩ下拉电阻就将2条差分数据线拉到近地,当检测到任一条数据线电压接近VBUS,而其他保持近地电压,那么主机就知道该设备已经准备好了。设备端电路图如图3-4所示。

图3-4 D12与主机连接电路图

3 数据采集部分电路

(1)红外测距传感器GP2D12采集电路

GP2D12的输出为0.4V—2.4V模拟信号,对应80—10cm距离。要通过A/D转换来获得其数字量输出。这里我们选用了TLC0831芯片来进行A/D转换,TLC0832是一个8位逐次逼近电压型A/D转换器。也可以选用多路输入的A/D转换芯片,这样一个单片机就可连接多个GP2D12传感器。

图3-5 GP2D12采集电路

(2)超声波传感器SRF02

通过SRF02,机器人可以获得在声纳范围内的确切的障碍物的距离。这样机器人将可以像蝙蝠一样通过声纳来感知周围的环境,SRF02的探测距离为15cm—6m。SRF02不但提供了I2C接口,也提供了串口。

当SRF02要通过串口方式通信时,它的“MODE”引脚必须接地,如下图3-6所示。

图3-6 SRF02的串口通信电路图

当SRF02工作在I2C方式时,须将“MODE”引脚闲空,数据线和时钟线均要加个1.8K的上拉电阻。其电路图如图3-7 所示 。

图3-7 SRF02的I2C通信电路图

(3)防跌落传感器和倾角传感器

防跌落传感器采用夏普公司的距离传感器,有效测距10cm,开关量输出。合理的安装传感器可以准确的检测出台阶,从而让机器人考虑是否该绕道而行,防跌落传感器还能当作近距离避障传感器使用。

倾角传感器的输出也是一个开关量,“0”或者“1”。这样我们可以在一个终端中连接多个这样的传感器,单片机直接读取I/O口就可以得到多个传感器的数据。其电路图如下图3-8所示,在图中接了8个传感器,构成一个字节的数据。

图3-8 开关量输出传感器信息采集电路图

4串口程序下载电路与分析

STCC52单片机的程序可通过串口来下载,其电路图如图3-9所示,在系统中,由于单片机采用的是TTL电平,而PC机的是RS232电平,为了实现单片机UART接口与PC机的RS232接口的连接,需使用一个MAX232芯片作为RS232接口芯片进行电平转换。

图3-9 串口电平转换电路

4 系统软件设计

4.1 固件程序设计

4.1.1 传感器数据采集部分

我们都知道,机器人是通过传感器来感知外界环境状况的,目前在机器人中应用的传感器种类繁多,例如视觉传感器、电子罗盘、加速度计和超声波传感器等,很多的传感器都有自己的传输方式,有的用I2C总线,有的用串口等等。

在这部分程序中,就是要通过单片机按传感器自身的传输方式循环地采集其数据,并保存于缓存中,待主机有读命令来时就能通过USB接口将最新读到的数据发送给主机,而不会因传感器自身传输方式速度慢而影响了整体的传输速率。

各传感器可能有不同的数据格式或数据长度,我们将终端设计为一个可以带多个同种类型的传感器的设备,即用一个单片机同时读取几个传感器的数据,总的数据长度即为各个传感器的数据长度之和。

我们用到的传感器有红外测距传感器GP2D12、超声波传感器SRF02、跌落传感器和倾角传感器,其中GP2D12的输出为模拟量,还要经过A/D转换,SRF02可以通过串口或I2C来读取数据,跌落传感器和倾角传感器可直接读取IO口来获得其信息。

4.1.2主循环程序

主循环程序主要的工作是处理USB事件,响应主机的数据传输、控制请求和定时采集传感器信息。它通过检查事件标志并进入对应的子程序进行进一步的处理。

当终端设备上电后,主机就能过设备的上拉电阻产生的信号变化来检测新设备的连接。同时MCU一旦上电就初始化其所有端口、存储区、定时器和中断服务程序。为了确保在MCU准备服务PDIUSBD12之前PDIUSBD12不会进行操作,接着MCU将重新连接USB,包括将SoftConnect连接上。PDIUSBDI2片内的l.5K的SoftConnect上拉电阻,默认状态下不与Vcc相连,允许MCU决定与USB建立连接的时间。

接着,在PDIUSBD12收到主机的数据包,对单片机产生中断时,主循环就会查询此次中断的类型,以调用相应的处理函数。当从主机收到控制传输的SETUP事务时,主循环调用请求处理子程序,以完成主机对此终端的配置。同时主循环定时地采集传感器信息,当端点2收到主机的读传感器命令时,就上传指定的数据给主机。主循环的程序流程图如图4-1所示。

图4-1 主循环程序流程图

4.1.3 中断服务子程

中断服务程序是固件程序的后台,是非常重要的部分。主程序负责对数据进行处理,中断服务程序则负责从PDIUSBD12中收集数据。

根据USB协议,任何传输都是由主机发起的。主机首先要发令牌包给设备(PDIUSBD12),PDIUSBD12接收到令牌包后就对单片机产生中断请求。单片机立即进入中断服务程序,首先读PDIUSBD12的中断寄存器,判断该令牌包的类型,然后执行相应的操作。在单片机程序中,要完成对各种令牌包的响应,其中最重要的是对SETUP包的处理,它主要是对控制端点(端点0)的编程来实现的。

中断寄存器第一字节的8个位分别指示了中断的来源,分别是挂起改变,总线复位,主端点(端点2)输入,主端点输出,端点1输入,端点1输出,控制端点(端点0)输入,控制端点输出。然后根据中断源的不同,转入到不同的子程序里去,中断服务程序的流程图如下图4-2所示。

图4-2中断服务程序流程图

在程序中只用到端点0和端点2,控制端点(端点0)主要完成设备的枚举,让主机可以检测和识别设备;主端点(端点2)主要完成传感器数据的传输。

(1)控制端点的处理

主机要识别一个USB设备必须经过枚举的过程,对主机发出的标准设备请求进行了相应的处理,这样主机才能确认设备的功能和配置设备,才能为设备加载合适的驱动程序,并与设备进行通信。对总线的枚举过程如下:

1) USB所连接的HUB端口的状态发生改变,HUB将通过状态变化管道来通知主机。

2)主机确定有USB设备接入及接入端口,然后等待100ms的时间来使接入过程顺利完成并使设备上电稳定。主机然后发送一个端口使能信号以激活该端口,并发送复位信号。

3)HUB向该设备发送设备复位信号,并保持该信号100ms,以使设备充分复位。设备复位后,就可以使用默认地址0来和主机通信了。

4)主机发出GET DESCRIPTER命令给USB设备以获得设备描述符等信息。

5)主机通过默认管道发出SET ADDRESS命令给设备,为设分配一个总线上唯一的地址。

6)主机用新的设备地址发送GET CONFIGURATION命令给设备来获取设备所能提供的配置信息。

7)主机获取了设备的配置信息后,选择其中一个配置,并用SET CONFIGURATION命令将所选择的配置种类通知设备[4]。

完成以上得几个步骤后,设备就可用了,总线枚举过程结束。

USB的设备请求由8个字节(分5个域)组成,分别是,bmRequestType(1字节),bRequest(1字节),wValue(2字节),Windex(2字节),wLength(2字节)。UBS标准设备请求如表4-1所示:

表4-1 USB标准设备请求[3]

设备请求描述设备请求描述
GET STATUS(00H)

获取状态GET ONFIGURATION(08H)

获取配置信息
CLEAR FEATURE(01H)

清除特性SET CONFIGURATION(09H)

设置配置
SET FEATURE(03H)

设置特性GET INTERFACE(0AH)

获取接口信息
SET ADDRESS(05H)

设置地址SET INTERFACE(0BH)

设置接口
GET DESCRIPTER(06H)

获取描述符SYNCH FRAME(0CH)

同步帧
SET DESCRIPTER(07H)

设置描述符
控制输出和控制输入的程序流程图如图4-3和图4-4所示。

图4-3控制输出程序流程图

图4-4控制输入程序流程图

(2)主端点的处理

在程序中,本设计将端点2设置为批量传输,用于接收主机的命令和将读到的传感器信息上传给主机。批量传输是一种非周期性的大数据包的可靠传输方式,有出错重发机制,可以有效的保证传输数据的正确性。端点2最大传输数据包的大小配置为B。

当端点2接收到主机发送过来的数据包时,单片机响应中断并进入到相应的子程序中,首先读取端点2的最后处理状态寄存器来清除中断寄存器的相应位,接下来确认接收数据的长度并读出数据,然后清缓冲区,允许下一个数据包的接收。

图4-5端点2输出中断流程图

4.2 驱动程序设计

本系统中的终端需要USB驱动程序的支持。此驱动程序的开发可以用DriverStudio和NI-VISA等来灵活地进行设计,然而很多USB芯片的厂商都为其USB芯片提供了通用的驱动程序,用户可以在此基础上直接进行固件程序的开发,这样便大大加速了USB设备的开发进度。由于时间和知识水平的,本课题采用PIDUSBD12芯片通用的USB驱动程序,只要对其稍做修改即可。

4.2.1 驱动程序INF文件简介

驱动程序的安装需要由INF文件来引导。Philips公司的通用USB驱动提供了驱动程序INF文件可供用户修改,从而可以创建自己的USB设备驱动程序。

4.2.2 INF文件处理过程

当USB设备连接到计算机上时,操作系统将检测到USB设备的连接。然后将系统中所有的INF文件中的数据信息与该USB设备进行比较,逐个找到与之相符合的INF文件。整个过程可分为三步:

(1)系统从连接的USB设备中获取设备描述符的供应商字段和产品字段,从中得到设备的硬件ID。

(2)系统查找与该硬件ID相符合的INF文件。如果找不到,系统将读取接口描述符,从中提取该USB设备的兼容ID,并查找与兼容ID相符合INF。

(3)如果仍然没有找到,则系统提示用户自己安装该USB设备的驱动程序。

4.2.3 INF文件的结构

INF文件的组成有节(Sections)、键和值3部分。其节按层次结构排列,以方括号的形式开始,后面紧跟该节中的各个项(即键)和值。其节中各项的基本定义格式如下:

Key=value[,value…]

其中的Key是项目名称,value表示该项目的值。INF文件中的节主要有以下一些:

表4-2 INF文件中的主要节[4]

节名称说明
[Version]INF文件的开始,版本描述信息,主要用于版本控制

[Strings]字符串信息,用于常量定义
[DestionationDirs]定义系统路径信息
[SourceDisksNames]指明源盘信息
[SourceDisksNames]指明源盘文件名
[DefaultInstall]开始执行安装
[Manufacturer]指明供应商及其对应的Models节的名称

[Models]指明Install/DDInstall节的名称,设备的硬件ID等作息

4.2.4 INF文件的修改

(1)修改设备的VID/PID

通常一个成熟的USB设备必须具有惟一的设备VID和PID,因此需要替换原来的设备ID,在本设计中作修改如下:

[Philips]

%USB\\VID_0471&PID_0222.DeviceDesc%=D12TEST.Dev, USB\\VID_0471&PID_0222

%USB\\VID_0471&PID_0666.DeviceDesc%=D12TEST.Dev, USB\\VID_0471&PID_0666

%USB\\VID_0471&PID_0888.DeviceDesc%=D12TEST.Dev, USB\\VID_0471&PID_0888

这三个不同的ID分别对应三个不同的终端。

(2)修改字符串

 在[strings]节下,列出了该设备的名称,制造商的信息,对其进行修改,就可以在设备上电列举时显示自己的设备名称。修改如下:

USB\\VID_0471&PID_0222.DeviceDesc="防跌落传感器终端集合"

USB\\VID_0471&PID_0444.DeviceDesc="倾角传感器终端"

USB\\VID_0471&PID_0666.DeviceDesc="红外测距传感器GP2D12网络终端"

USB\\VID_0471&PID_0888.DeviceDesc="超声波传感器SRF02终端"

D12TEST.SvcDesc="D12TEST.Sys PDIUSBD12 Bulk IO test driver"

(3)修改驱动程序名称

修改其名称可以在驱动程序安装的时候显示自己公司的名称和设备名称。

4.3 上位机应用软件

4.3.1 上位机测试软件

由于本设计侧重于设备终端的开发,由于时间和知识水平的,在上位机程序的设计方面涉及的不多,为了对所设计的终端设备行进行调试,本人选用了一款USB总线调试软件USBDEBUG来读写终端设备。

USBDEBUG是一款操作及其简单的USB调试工具软件。它能够快速准确的对USB设备进行数据的读写操作,可以实时监测从USB设备发来的数据。

4.3.2 命令格式

上位机要读取终端设备的数据,必须要遵守设定的规则。由于一个终端可能是很多个传感器的集合,上位机按照预先约定的命令格式可以读取指定的几个或一个传感器的数据,当然也可以一次性读取所有传感器的数据。我们约定的格式如下:

读/写命令(1字节)

偏移地址(2字节)

数据长度(1字节)

5.系统测试与结论

5.1 系统测试

(1)驱动加载

终端设备第一次接入到主机时,主机必须能正确加载驱动,该终端才能被使用。本课题所设计的终端加载驱动的情况如下图所示。

图5-1 红外测距传感器驱动加载(1)

图5-2 红外测距传感器驱动加载(2)

图5-3 防跌落传感器驱动加载

图5-4 超声波传感器SRF02驱动加载

从以上结果可知,终端设备的驱动程序均已成功安装,该终端能被主机识别。

(2)终端设备数据的读取测试

终端的单片机循环采集其传感器数据,保存于缓存里,等待主机的命令来读取。主机对终端传感器信息的读取测试通过USB调试助手USBDEBUG软件来进行。

主机通过发送以下格式的命令来获取终端传感器的数据:

读/写命令(1字节)

偏移地址(2字节)

数据长度(1字节)

测试结果如下图所示:

a.红外测距传感器GP2D12

图5-5 红外测距传感器接收与发送数据

测试结果分析:从上图发送数据窗口中可以看到,主机发送命令“0x02 0x00 0x00 0x01”给终端,其中0x02表示读命令,“0x00 0x00”是要读取的数据在缓冲区中的首地址,第一个字节为高字节,第二个为低字节;“0x01”表示读取的数据的长度。

在数据接收窗口中,所显示的数据是从终端传感器发送过来的。设备每收到主机的命令一次,就返回一次传感器数据给主机.。接收窗口中的三行数据是传感器在检测不同的阻碍物距离时返回的数据。

b.防跌落传感器或倾斜传感器

图5-6 防跌落传感器接收与发送数据

测试结果分析:防跌落传感器或倾斜传感器返回的数据均为“0”或者“1”,在程序中可以用普通IO口来读取8个或更多这样的传感器信息,由于在测试中中只连接一个传感器,并且用了P0.0引脚来读取,其它的引脚置为高电平。故在接收窗口中只会返回FF或FE。

通过测试可知,对于防跌落传感器,当其检测到地面状态时(小于10厘米范围内)时,返“0”,当其检测到系统离开地面(大于10厘米)时,返回“1”。系统在接近地面与离开地面状态之间切换,所返回的数据也在“FF” 和“FE”之间变化。

5.2 测试结论

本设计基本实现了传感器网络的终端设备的设计,该终端能被主机识别并能正确的加载驱动程序,主机按约定的命令通过USB接口能成功地实现终端传感器信息的采集。

6.结论

6.1 总结

由于时间仓促,加上知识水平的,整个的基于嵌入式的传感器网络系统并没有全部完成,本论文从总线接口的选择,芯片的选型,硬件电路的设计到单片机软件的设计,基本实现了传感器网络系统的终端部分的开发,在本研究成果的基础上,可以将各种传感器都设计成具有USB接口的设备终端,只需改变设备固件程序中的外设功能模块即可。该终端能通过USB总线与其主机进行通信,并接受主机的控制。这为以后整个系统的开发与改善奠定了基础。通过USB总线传输传感器信息,大大提高了数据传输速度,简化和统一了接口,克服了传统的串口、I2C等的不足。同时,在测试中发现终端系统还不是很稳定,有时会出现检测不到设备的情况,这一方面与硬件的接触不良也有一定的关系,同时程序部分还有待优化。

6.2 展望

(1)由于STCC52的工作速度有限,可能成为系统的瓶颈,在要求数据传输速度比较高的系统中,可以考虑用速度更高的AVR单片机等作为USB接口的MCU。

(2)本课题的USB接口芯片采用的是符合USB1.1协议的PDIUSBD12,其传输速度只有12Mbps,如今市场上符合USB2.0协议的USB接口芯片越来越多,如ISP1581(Philips高速USB设备控制器)等,其传输速度可以达到480Mbps,是USB1.1的40倍,以后的设计中可以考虑选用符合USB2.0协议的USB接口芯片,以便提高数据传输的速度。

(3)由于研究时间的约束和开发条件的,还未能把设计的基于嵌入式的传感器网络系统方案完整地实现,实验中所设计的网络终端可以作为该项目的基础研发工作。要开发一个完整的嵌入式传感器网络系统,需要具备多方面的知识和时间的投入。希望这个课题能够作为一个良好的起点,通过不断完善,最终成为一款可靠的、具有实用价值的网络系统,并最终能成功地应用在机器人上。

参考文献

[1] 梁威.智能传感器与信息系统[M].北京:北京航空航天大学出版社,2004.

[2] PDIUSBD12 datasheet.

[3] 薛园园.USB应用开发技术大全[M].北京:人民邮电出版社,2007.

[4] 商斌.Linux设备驱动开发入门与编程实践[M].北京:电子工业出版社,2009.

[5] 赵建领.51系列单片机开发宝典[M].北京:电子工业出版社,2007.

[6] 张惠娟,周利华等.Windows环境下的设备驱动程序的开发[M].西安:西安电子科技大学出版社,2002.

[7] 李建忠.单片机原理及应用[M].西安:西安电子科技大学出版社,2008.

[8] 刘华东.电子CAD技术—Protel电路设计[M].北京:清华大学出版社,2007.

[9] 胡晓军,张爱成.USB接口开发技术[M].西安:西安电子科技大学出版社,2005.

[10] 周立功.PDIUSBD12USB固件编程与驱动开发[M].北京:北京航空航天大学出版社,2003.

[11] 宋宝华.Linux设备驱动开发详解[M].北京:人民邮电出版社,2008.

[12] 吴仲城、卞亦文、汪增福.网络化智能传感器及其即插即用接口设计[J].武汉大学学报,2003(4).

[13] 杨万海.多传感器数据融合及其应用[M].西安:西安电子科技大学出版社,2004.

[14] 李建中,李金宝,石胜飞.传感器网络及其数据管理的概念、问题与进展[J].软件学报,2003(10).1717-1727.

[15] 张念淮,江浩.USB总线接口开发指南[M].北京:国防工业出版社,2001.

[16] 谭浩强.C语言程序设计[M].北京:清华大学出版社,2005.

文档

基于嵌入式的传感器网络设计(打印)

基于嵌入式的传感器网络设计摘要传感器网络是当前的一个研究热点。它是由许多在空间上分布的自动装置组成的一种网络,这些装置使用传感器协作地监控不同位置的环境状况。本课题所设计的基于嵌入式的传感器网络系统,主要是应用于机器人的传感器信息的采集和处理。该系统采用了USB总线对大量传感器进行信息采集,交由嵌入式ARM9进行处理,最终将结果统一上传工控机,实现整个传感器网络的统一规划和信息融合。本网络系统由于引入了USB接口,较以前的传统接口提高了数据传输的速率,且支持热插拔,使用更方便。本论文侧重于系统
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top