文档库 最新最全的文档下载
当前位置:文档库 › ZigBee学习笔记一端口号、命令簇

ZigBee学习笔记一端口号、命令簇

ZigBee学习笔记一端口号、命令簇
ZigBee学习笔记一端口号、命令簇

主要解决的问题如何使用不同的命令号发送不同长度的的数据

第一部分一些概念

如图所示是一个节点设备上的

端口号(endpoint)

它是一个8位的字段,描述一个射频端所支持的不同应

用。

端口0x00:用于寻址设备配置文件,这是每个ZigBee

设备必须使用的端口;

端点0xff:用于寻址所有活动端口;

端口0xf1~0xfe:保留;

端口0x01~0xf0:共支持240个应用,即一个物理信

道最多支持240个虚拟链路。

图中还用另一个概念簇

簇(cluster)

多个属性的汇集形成了簇,簇是属性的集合,每个簇

也拥有一个唯一的ID。譬如,FS_ZStack\

SimpleSwitch.c

const cId_t zb_OutCmdList[NUM_OUT_CMD_SWITCH]

= //输出簇列表

{

TOGGLE_LIGHT_CMD_ID //簇ID, 1

};

FS_Zstack\SimpleController.c

const cId_t

zb_InCmdList[NUM_IN_CMD_CONTROLLER] = //输入

簇列表

{

TOGGLE_LIGHT_CMD_ID //簇ID, 1

};

cId_t=uint16,

端口的描述

第一步,定义一个结构体用来描述端口endPointDesc_t GenericApp_epDesc; //结构体类型变量

第二步初始化端口参数

要完整的描述一个端口,分为两部分(1)endPointDesc_t端口描述(2)简单端口描述SimpleDescriptionFormat_t

其实2是包含在1里面的只是由于2比较多就单独列出来了。

下面是2的具体内容

探明数据包内容

1发送出去的数据是什么样子的

第一步数据发送使用的是协议栈的发送函数

内容包括了,目的地址

目的节点上的那个端口

簇里面的命令号

要发送的数据长度

要发送的数据地址

发送的数据序列号

第二步数据被接收后被解析成什么样子

可以通过一个结构体看明白数据被接受过来以后到底是什么样子

事件头很重要,它用来判断消息类型

簇里面的命令号

存储端口号

链路质量

数据具体位置很重要

上面说到的两个很重要的成员在应用层程序里都有体现

本想用两个命令号来区分不同的消息,但是好像不行!未完待续!

第二部分消息队列

从上面的讲解中我们了解了发送的无线数据、接收到的无线数据的样子。但对于接收到的数据存储在什么地方,还是不太清楚,下面探索数据到底存储于何处该怎样调用数据的不同部分。

1.无线消息来了之后,协议栈是通过一个函数将这个消息

红色的下划线是一个和消息数据类型一样类型符,这样指针就指向了这个消息,通过判断事件头类型来

敲定所来消息是何种类型的消息,

通过判断消息簇里命令编号来识别是哪一个命令。

第三部分能解决的问题

如果我们想让终端节点向协调器发送不同长度的数据,并且协调器要根据所发送的不同数据做出不同的反应。第一步,协调器编程

第二步终端程序

第四部分结果

ZigBee重要结构及表解释

ZigBee重要结构及表解释 ZigBee 2010-06-13 10:31:26 阅读103 评论0 字号:大中小订阅各表中的元素结构: 1、组表的元素结构aps_Group_t; typedef struct { uint16 ID; // 组ID uint8 name[APS_GROUP_NAME_LEN]; // 组名称 } aps_Group_t; 2、组列表的元素结构 typedef struct apsGroupItem { struct apsGroupItem *next; //指向下一个组表条目 uint8 endpoint; //此终端接收发送给组的信息 aps_Group_t group; //组ID和组名 } apsGroupItem_t; 3、路由表的元素结构rtgEntry_t; typedef struct { uint16 dstAddress; //目标地址 uint16 nextHopAddress; //单跳地址 byte expiryTime; //有效时间 byte status; //状态 } rtgEntry_t; 4、绑定表的元素结构BindingEntry_t; typedef struct

{ uint8 srcEP; // 没有源地址自从源地址一直是本地设备uint8 dstGroupMode; // 目标地址类型; 0 –正常地址, 1 –组地址 uint16 dstIdx; //在两种模式中(组或非组) 保存到NV 和RAM // dstGroupMode = 0 - Address Manager index // dstGroupMode = 1 –组地址 uint8 dstEP; //目标地址 uint8 numClusterIds; //簇个数 uint16 clusterIdList[MAX_BINDING_CLUSTER_IDS]; // Don't use MAX_BINDING_CLUSTERS_ID when // using the clusterIdList field. Use // gMAX_BINDING_CLUSTER_IDS } BindingEntry_t; 5、相邻表的元素结构neighborEntry_t; typedef struct { uint16 neighborAddress; //相邻地址 uint16 panId; //所属的PAN网络ID linkInfo_t linkInfo; //连接信息(包括发送/接收和安全帧计数) } neighborEntry_t; 6、路由发现表的元素结构rtDiscEntry_t; typedef struct { byte rreqId; //接收请求ID

ZigBee学习笔记CC2530

已入门选手进一步学习的重点 我发现最近群里很多人已经可以算是大致入门了,能够在原有例子的基础上进行一些简单工作,实现数据传输。但是我也发现很多人开始把精力投入到钻研协议栈代码细节上面去了,实际上这种学习方式是有问题的。第一:如果从应用的角度看,协议栈的一些实现细节是没有必要钻研的,这就好比是现在的PC机,已经有了Windows系统了,我们在这个系统之上实现自己应用程序的时候其实并不需要对Windows内部实现细节过多地关注,只要能够自由地在Windows下开发应用程序(其实就是调用大量的API函数)就可以了;第二:如果想从协议栈本身入手去做一些深入的工作,Zstack是不适合的,因为它不是完全开源,真想在路由算法、加密算法等方面做工作的话,目前TinyOS这样的开源协议栈才是首选。所以,进一步学习的重点应该是:在什么时间什么地点调用什么函数的问题! 那么如何来提高这方面的技能呢? 1、浏览ZDP和ZDO相关代码,熟悉一下都有什么函数,这两个部分都做了什么,学习的过程中千万不要去钻研代码实现的细节,只要了解其流程以及都作了什么就可以了,否则你一定会迷失在那成千上万行的代码之中而不能自拔。ZDP和ZDO的实现文件里面 有大量的函数在以后具体应用中可以去调用。 2、典型例子中的ZDO消息使用其实只有那么几个例子,比如: ZDO_RegisterForZDOMsg(TaskID,End_Device_Bind_rsp)这样的,这是讲底层的一些事件消息引入到应用层的注册方法。在深入应用的时候那么几个典型的消息注册是不够 用的,比如我在一个应用中就注册了以下: ZDO_RegisterForZDOMsg( TaskID, End_Device_Bind_rsp ); // 我自己解析 End_Device_Bind_rsp ZDO_RegisterForZDOMsg( TaskID, Match_Desc_rsp ); //我自己解析 Match_Desc_rsp ZDO_RegisterForZDOMsg( TaskID, Device_annce); //我自己解析 Device_annce ZDO_RegisterForZDOMsg( TaskID, Active_EP_rsp); //我自己解析 Active_EP_rsp ZDO_RegisterForZDOMsg( TaskID, Simple_Desc_rsp); //我自己解析 Simple_Desc_rsp ZDO_RegisterForZDOMsg( TaskID, NWK_addr_rsp); //我自己解析 NWK_addr_rsp 在具体应用中,你会根据不同的网络需求去调用很多协议栈的设置好的req和处理rsp消息,那么协议栈都有那些req和rsp是你进一步学习所应该深入认识的。 3、在自己使用系统的req和rsp的时候,如果你不知道该如何处理,你最好去看看MT是如何实现的,在MT功能模块中,对协议栈的绝大多数req和rsp都有调用和实现的例子可以参考,虽然我们在自己的应用中很少回去使用MT,但是Mt 的实现代码却是最好

ZigBEE RF4CE规范基本概念及配对详细讲解

一.节点的安装初始化 1.1建立网络的过程 (1)目标节点: 首先,扫描信道,对各个信道进行能量检测,选择可允许能量水平的信道进行操作。 然后,发送执行活动的扫描操作,识别其他在工作在所选信道上的属于其他PAN网络的identifiers,允许一个统一的PAN identifier接入它的网络。 最后,目标节点运行常规功能。 (2)控制节点: 接入网络之后,运行常规功能。 二.网络帧结构 Frame control:控制信息 Frame counter:技术,防止重复和延时攻击 Profile identifier:应用帧的传输格式 Vendor identifier:供应商标识符,允许商家进行扩展 Frame payload:传输的应用层数据 Message integrity code:进行认证(安全) 三.传输选项 四.发现(Discovery) 发现服务必须是在非节能模式下才能进行。节点通过执行发现服务,来寻找能够进行配对的节点;发现服务会在一个固定的期间内在三个PAN网络中重复的进行,直到收到所有的应答。 在此期间,设备之间会交换如下信息: Node capabilities:节点的类型(目标节点或控制节点),节点的供电类型,是否支持

安全性。 Vendor information:ZigBee RF4CE提供一个Vendor identifier或者vender string 来制定一个特定的供应商标识。 Application information:用户自定义一个字符串用来描述节点的应用功能(例如Lounge TV),一个设备类型列表可以制定哪些类型的设备室被支持的(例如一个综合性设备可能同时支持TV和DVD的功能),profile identifier列表制定该节点支持哪些类型的profiles。 Requested device type:discovery期间可以被请求的设备类型(比如一个多功能遥控器可能寻找TV的功能)。 五、频率捷变 (1)目标节点可以根据3个信道的变化,更换信道。 (2)控制节点会记录目标节点的信道,当目标节点信道发生改变时,控制节点会尝试从其他信道发送给目标节点,直到目标节点发送确认信息;之后,控制节点会记录上新的信道。 六、配对 在发现期间,当节点确定在它的通信范围有其他能够提供稳定服务的节点时,可以通过建立配对从而进行通信。在RC网络中在存在配对的发送端和接收端之间只能直接通信。 配对连接可以建立在应用层的要求上,通过交换类似于discovery期间交换的消息。目标节点可以选择是否接受配对并发送请求配对信息给源节点。 配对成功后,源节点和目标节点会在它们各自的配对表中存储配对链接。这个使得源节点可以和目标节点通信,目标节点也可以和源节点通信。在配对表中的实体包含网络层传输信息给目标节点的所有信息。这消除了寻址的负担,要实现和相应设备的通信,应用层可以简单的提供一个链接配对表的index。 配对表中的每个实体包含的信息如下: Pairing reference Source network address Destination logical channel Destination IEEE address Destination PAN identifier Destination network address Recipient nod capabilities Recipient frame counter Secutity link key

ZigBee网络拓扑结构显示

实验二ZigBee网络拓扑结构显示 【实验目的】 1、熟悉Qt编写程序的方法; 2、了解Qt显示ZigBee网络拓扑结构的工作原理; 【实验设备】 1、装有RedHat AS5系统或装有RedHat AS5虚拟机的PC机一台; 2、物联网开发设计平台一套; 【实验要求】 使用Qt为ZigBee网络编写拓扑结构; 1、编程要求:使用提供的API函数编写应用程序; 2、实现功能:构建ZigBee网络拓扑结构; 3、实验现象:显示网络的拓扑结构; 【实验原理】 本实验箱针对Qt下,将服务程序的API做了一定的封装,并提供了非常方便使用的接口函数,可以让用户在Qt环境下绘制Zigbee网络的拓扑结构。这些函数都被封装在一个叫做TopologyWidget的类中,它们的详细介绍如下: 【函数原型】void TopologyWidget::SetTopologyArea(const QString &ip, QScrollArea *area); 【功能】设置用来显示拓扑图的滚动区域控件 【参数】ip: 运行服务程序的网关(计算机)的IP地址area: 用来显示拓扑图的滚动区域控件【返回值】无 【头文件】使用本函数需要包含"topologywidget.h" 【函数原型】void TopologyWidget::UpdateTopologyArea(QScrollArea *area); 【功能】立即刷新滚动区域控件中的拓扑图 【参数】area: 用来显示拓扑图的滚动区域控件 【返回值】无 【头文件】使用本函数需要包含"topologywidget.h" 在实际应用中,用户需要首先在界面中放置一个,假设其名称为“scrollArea”,只需要在窗体的构造函数中,完成了setupUi的操作之后,调用TopologyWidget::SetTopologyArea函数即可使拓扑图显示在这个滚动区域中,参考下面的代码。 Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); // 将界面中的scrollArea设置为用来显示拓扑图 TopologyWidget::SetTopologyArea("127.0.0.1", ui->scrollArea); } 【实验步骤】 1.双击打开桌面上的VMware Player。如图 2.1所示;

Zigbee技术主流芯片比较 2概况

Zigbee技术主流芯片调研 1、Zigbee芯片调研 当今市场已有大量集成Zigbee协议和射频电路的芯片。以下是市场上主流的生成Zigbee的公司及其生产的典型Zigbee芯片。 公司TI FREESCALE ATMEL Nordic 芯片CC2530 MC1321 AT86RF230 nRF24E1/nRF9E5 MCU内核8051 HCS08 无(通过SPI接口由外 接MCU连接) 8051 通过在淘宝上的调查,TI公司的CC2530和FREESCALE的MC1321用户量比较大,有大量的公司提供基于这两款芯片的Zigbee模块,使用这些模块可以减少大量的硬件调试工作,而较容易的实现我们所需的传输功能。以下就这两类主流芯片进行详细介绍。 1.1 CC2530调研 CC2530是市场最主流的Zigbee芯片,TI公司推出的ZIGBEE网络处理器,将复杂的ZIGBEE网络协议栈,处理成了简单的用户接口命令,用户只要使用任何简单的单片机(微控制器),就可以容易的实现对ZIGBEE网络的控制;TI推出这个芯片的目的,就是希望ZIGBEE容易被使用。CC2530是TI公司推出的最新一代ZigBee标准芯片,适用于2.4GHz、IEEE802.15.4、ZigBee和 RF4CE应用。 CC2530包括了极好性能的一流RF收发器,工业标准增强性8051MCU,系统中可编程的闪存,8KB RAM以及许多其它功能强大的特性,可广泛应用在2.4-GHzIEEE802.15.4系统,RF4CE遥控制系统,ZigBee系统,家庭/建筑物自动化,照明系统,工业控制和监视,低功耗无线传感器网络,消费类电子和卫生保健。主要参数如下:

zigbee技术分析——经典

与蜂共舞—ZigBee技术一瞥 本文从ZigBee的发展历史入手,探讨了这种基于无线传感器技术的网络应用的协议栈、性能分析和各种应用领域,全面构建了完整的ZigBee技术应用与发展蓝图。 “ZigBee”是什么?从字面上猜像是一种蜜蜂。因为“ZigBee”这个词由“Zig”和“Bee”两部分组成,“Zig”取自英文单词“zigzag”,意思是走“之”字形,“bee”英文是蜜蜂的意思,所以“ZigBee”就是跳着“之”字形舞的蜜蜂。不过,ZigBee 并非是一种蜜蜂,事实上,它与蓝牙类似是一种新兴的短距离无线通信技术,国内也有人翻译成“紫蜂”。下面就让我们一起进入这只蜜蜂的世界,与蜂共舞吧! 这只蜜蜂的来头还是要从它的历史开始说起,早在上世纪末,就已经有人在考虑发展一种新的通信技术,用于传感控制应用(sensor and control),这个想法后来在IEEE 802.15工作组当中提出来,于是就成立了TG4工作组,并且制定了规范IEEE 802.15.4。但是IEEE 802的规范只专注于底层,要达到产品的互操作和兼容,还需要定义高层的规范,于是2002年ZigBee Alliance成立,正式有了“ZigBee”这个名词。两年之后,ZigBee的第一个规范ZigBee V1.0诞生,但这个规范推出的比较仓促,存在一些错误,并不实用。此后ZigBee Alliance又经过两年的努力,推出了新的规范ZigBee 2006,这是一个比较完善的规范。据联盟最新的消息,今年年底将会发布更新版本的规范ZigBee 2007,这个版本增加了一些新的特性。 从ZigBee的发展历史可以看到,它和IEEE 802.15.4有着密切的关系,事实上ZigBee的底层技术就是基于IEEE 802.15.4的,因此有一种说法认为ZigBee和IEEE 802.15.4是同一个东西,或者说“ZigBee”只是IEEE 802.15.4的名字而已,其实这是一种误解。实际上ZigBee和IEEE 802.15.4的关系,有点类似于WiMAX和IEEE 802.16,Wi-Fi和IEEE 802.11,Bluetooth和IEEE 802.15.1。“ZigBee”可以看作是一个商标,也可以看作是一种技术,当把它看作一种技术的时候,它表示一种高层的技术,而物理层和MAC层直接引用IEEE 802.15.4。事物是不断的发展变化的,尤其是通信技术,可以想象将来的ZigBee可能不会使用IEEE 802.15.4定义的底层,就跟蓝牙(Bluetooth)宣布下一代底层采用UWB技术一样,但是“ZigBee”这个商标以及高层的技术还会继续保留。 ZigBee协议栈速读 我们无法预料将来ZigBee会基于怎样的底层技术,只好从它现在的底层——IEEE 802.15.4开始了解,IEEE 802.15.4包括物理层和MAC层两部分。ZigBee工作在三种频带上,分别是用于欧洲的868MHz频带,用于美国的915MHz频带,以及全球通用的2.4GHz频带,但这三个频带的物理层并不相同,它们各自的信道带宽分别是0.6MHz, 2MHz和5MHz,分别有1个,10个和16个信道。不同频带的扩频和调制方式也有所区别,虽然都使用了直接序列扩频(DSSS)的方式,但从比特到码片的变换方式有比较大的差别;调制方面都使用了调相技术,但868MHz和915MHz频段采用的是BPSK,而2.4GHz频段采用的是OQPSK。我们可以以2.4GHz频段为例看看发射机基带部分的框图(如图1),可以看到物理层部分非常简单,而IEEE 802.15.4芯片的低价格正是得益于底层的简单性。可能我们会担心它的性能,但我们可以再看看它和Bluetooth/IEEE 802.15.1以及WiFi/IEEE 802.11的性能比较(如图2),

ZigBee学习Z-stack外部中断

ZigBee学习Z-stack外部中断 硬件抽象层:就是对硬件层做好了各种初始化,用户不用考虑硬件的初始配置,直接使用即可。 hal_driver.c文件: HalDriverInit():用户可在此函数中添加硬件的初始化操作,如定时器、ADC、DMA、FLASH、AES、LCD、LED、UART、KEY、SPI、HID等(还有用于配置外部中断,类似按键的中断方式查询键值) Hal_ProcessEvent(): 处理HAL发生的事件、如:KEY、LED、电源管理等,用户可以在此添加处理自己的HAL事件,此事件ID必须是唯一的,定义在hal_driver.h中。如:HAL_KEY_EVENT(按键轮询与抖动)、HAL_LED_BLINK_EVENT(LED闪烁)、HAL_SLEEP_TIMER_EVENT(Power saving). Hal_ProcessPoll(): 被osal_start_system()调用,用于HAL_Timer和HAL_UART的事件轮询,关于系统编译连接,只要没有定义相关的宏定义,相应的驱动就不会编译进去,减少代码占用的空间。有以下的宏定义: 具体操作是: Options->C/C++ Options->Preprocessor->Defined Symbols->enter:HAL_XXX=TRUE; when XXX is ADC,UART,LED,LCD,KEY 不编译进代码,只要将其定义成FALSE 如何定做适合自己的HAL处理的程序 ①修改原文件的方式: 1、HAL\include下的头文件应该保留一样。 2、在HAL\Target\hal_xxx.c修改相应的驱动函数,hal_adc.c, hal_key.c, hal_lcd.c, hal_led.c, hal_timer.c, and hal_uart.c 3、硬件驱动配置可以被修改在hal_board_cfg.h ②增加用户自己的目标驱动 1、增加新的头文件,在hal\include 2、在hal\Target\hal_xxx.c添加自己运行函数,xxx为自己的目标 3、如果GPIO有冲突或者没用到,应该保证驱动不被编译,否则后果严重。 4、检查GPIO有没有正确设置或冲突,通过hal_board_cfg.h 5、不想被编译,或者是老的文件,没用到的文件,可以通过选择options->"Exclude form build" 外部中断程序中断处理函数的定义:可以查看 hal\Target\hal_XXX.c\hal_mcu.h HAL_ISR_FUNCTION(f,v) HAL_ISR_FUNCTION (prototype, vector) { /* Do something when this interrupt happens!!! */ }

DOS批处理命令大全

写批处理 扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件。 ==== willsort 编注======================================= .bat是dos下的批处理文件 .cmd是nt内核命令行环境的另一种批处理文件 从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。所以从某个程度分析,batch, unix shell, awk, basic, perl 等脚本语言都是一样的,只不过应用的范围和解释的平台各有不同而已。甚至有些应用程序仍然沿用批处理这一称呼,而其内容和扩展名与dos的批处理却又完全不同。 =================================== 首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS 提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。 ==== willsort 题注=================== 批处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普通数据性文件,这缘于wind ows系统这个新型解释平台的涉入,使得批处理的应用越来越"边缘化"。所以我们讨论的批处理应该限定在dos环境或者命令行环境中,否则很多观念和设定都需要做比较大的变动。 ======================== 其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。批处理的程序语句就是一条条的DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。 ==== willsort 编注================== 批处理文件(batch file)也可以称之为批处理程序(batch program),这一点与编译型语言有所不同,就c语言来说,扩展名为c或者cpp的文件可以称之为c语言文件或者c语言源代码,但只有编译连接后的exe 文件才可以称之为c语言程序。因为批处理文件本身既具有文本的可读性,又具有程序的可执行性,这些称谓的界限是比较模糊的。 =========================== 第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch目录(例如C:\BATCH),然后将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:\batch,你就可以在任意位置运行所有你编写的批处理程序。 ==== willsort 编注===== 纯以dos系统而言,可执行程序大约可以细分为五类,依照执行优先级由高到低排列分别是:DOSKEY宏命令(预先驻留内存),https://www.wendangku.net/doc/e44295201.html,中的内部命令(根据内存的环境随时进驻内存),以com为扩

zigbee,2.0,规范

竭诚为您提供优质文档/双击可除 zigbee,2.0,规范 篇一:F8913zigbee技术规范 F8913zigbee模块技术规范 产品特点 ---------------------------------------------------------------------------------------------------- 产品规格 ---------------------------------------------------------------------------------------------------- 接口类型 供电 功耗 物理特性 其它参数 篇二:浅谈zigbee技术 浅谈zigbee技术 姓名:李晓 班级:

学号:2152112113 摘要:介绍了zigbee技术的概况、发展历程及前景展望,还简要介绍了zigbee联盟,最后重点分析了该技术的特点以及该技术在生活中的应用。 abstract:thispaperintroducesthehistoryandprospectof zigbeetechnology,alsobrieflyintroducesthezigbeealli ance,andfinallyfocusesontheanalysisofthecharacteris ticsofthetechnologyanditsapplicationinlife. 关键词:zigbee技术ieee802.15.4无线通信技术应用 引文:zigbee是基于ieee802.15.4标准的低功耗个域网协议。主要适合用于自动控制和远程控制领域,可以嵌入各种设备。简而言之,zigbee就是一种便宜的,低功耗的近距离无线组网通讯技术。 一、zigbee技术概述 zigbee是基于ieee802.15.4标准的低功耗个域网协议。根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。这一名称来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息,也就是说蜜蜂依靠这样的方式构成了群体中的通信网络。其特点是近距离、低复杂度、自组织、低功耗、高数据速率。主要适合用于自动控制和远程控制领域,

zigbee学习笔记讲解

关于ZIGBEE技术 Zigbee的由来 在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在许多缺陷。对工业,家庭自动化控制和遥测遥控领域而言,蓝牙技术显得太复杂,功耗大,距离近,组网规模太小等,而工业自动化对无线通信的需求越来越强烈。正因此,经过人们长期努力,Zigbee协议在2003年中通过后,于2004正式问世了。 Zigbee是什么 Zigbee是一个由可多到65000个无线数传模块组成的一个无线数传网络平台,十分类似现有的移动通信的CDMA网或GSM网,每一个Zigbee网络数传模块类似移动网络的一个基站,在整个网络范围内,它们之间可以进行相互通信;每个网络节点间的距离可以从标准的75米,到扩展后的几百米,甚至几公里;另外整个Zigbee网络还可以与现有的其它的各种网络连接。例如,你可以通过互联网在北京监控云南某地的一个Zigbee控制网络。 不同的是,Zigbee网络主要是为自动化控制数据传输而建立,而移动通信网主要是为语音通信而建立;每个移动基站价值一般都在百万元人民币以上,而每个Zigbee―基站‖却不到1000元人民币;每个Zigbee 网络节点不仅本身可以与监控对对象,例如传感器连接直接进行数据采集和监控,它还可以自动中转别的网络节点传过来的数据资料; 除此之外,每一个Zigbee网络节点(FFD)还可在自己信号覆盖的范围内,和多个不承担网络信息中转任务的孤立的子节点(RFD)无线连接。 每个Zigbee网络节点(FFD和RFD)可以可支持多到31个的传感器和受控设备,每一个传感器和受控设备终可以有8种不同的接口方式。可以采集和传输数字量和模拟量。 Zigbee技术的应用领域 Zigbee技术的目标就是针对工业,家庭自动化,遥测遥控,汽车自动化、农业自动化和医疗护理等,例如灯光自动化控制,传感器的无线数据采集和监控,油田,电力,矿山和物流管理等应用领域。另外它还可以对局部区域内移动目标例如城市中的车辆进行定位. 通常,符合如下条件之一的应用,就可以考虑采用Zigbee技术做无线传输:1.需要数据采集或监控的网点多; 2.要求传输的数据量不大,而要求设备成本低; 3.要求数据传输可性高,安全性高; 4.设备体积很小,不便放置较大的充电电池或者电源模块; 5.电池供电; 6.地形复杂,监测点多,需要较大的网络覆盖; 7.现有移动网络的覆盖盲区; 8.使用现存移动网络进行低数据量传输的遥测遥控系统。 9.使用GPS效果差,或成本太高的局部区域移动目标的定位应用。 Zigbee 技术的特点 省电:两节五号电池支持长达6个月到2年左右的使用时间。 可靠:采用了碰撞避免机制,同时为需要固定带宽的通信业务预留了专用

实用批处理(bat)教程

目录 第一章批处理基础 第一节常用批处理内部命令简介 1、REM 和:: 2、ECHO 和@ 3、PAUSE 4、ERRORLEVEL 5、TITLE 6、COLOR 7、mode 配置系统设备 8、GOTO 和: 9、FIND 10、START 11、assoc 和ftype 12、pushd 和popd 13、CALL 14、shift 15、IF 16、setlocal 与变量延迟(ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION 启动或停用延缓环境变量扩展名。) 17、ATTRIB显示或更改文件属性 第二节常用特殊符号 1、@命令行回显屏蔽符 2、%批处理变量引导符 3、> 重定向符 4、>>重定向符 5、<、>、<& 重定向符 6、|命令管道符 7、^转义字符 8、组合命令 9、& 组合命令 10、||组合命令 11、\"\"字符串界定符 12、, 逗号 13、; 分号 14、() 括号 15、! 感叹号 第二章FOR命令详解 一、基本格式 二、参数/d仅为目录 三、参数/R递归(文件名) 四、参数/L迭代数值范围 五、参数/F迭代及文件解析 第三章FOR命令中的变量

一、~I- 删除任何引号(\"),扩展%I 二、%~fI- 将%I 扩展到一个完全合格的路径名 三、%~dI- 仅将%I 扩展到一个驱动器号 四、%~pI- 仅将%I 扩展到一个路径 五、%~nI- 仅将%I 扩展到一个文件名 六、%~xI- 仅将%I 扩展到一个文件扩展名 七、%~sI- 扩展的路径只含有短名 八、%~aI- 将%I 扩展到文件的文件属性 九、%~tI- 将%I 扩展到文件的日期/时间 十、%~zI- 将%I 扩展到文件的大小 十一、%~$PATH:I 第四章批处理中的变量 一、系统变量 二、自定义变量 第五章set命令详解 一、用set命令设置自定义变量 二、用set命令进行简单计算 三、用set命令进行字符串处理 1、字符串替换 2、字符串截取 第六章if命令讲解 第一种用法:IF [NOT] ERRORLEVEL number command 第二种用法:IF [NOT] string1==string2 command 第三种用法:IF [NOT] EXIST filename command 第四种用法:IF增强的用法 第七章DOS编程高级技巧 一、界面设计 二、if…else…条件语句 三、循环语句 四、子程序 五、用ftp命令实现自动下载 六、用7-ZIP实现命令行压缩和解压功能 七、调用VBScript程序 八、将批处理转化为可执行文件 九、时间延迟 1、利用ping命令延时 2、利用for命令延时 3、利用vbs延迟函数,精确度毫秒,误差1000毫秒内 4、仅用批处理命令实现任意时间延迟,精确度10毫秒,误差50毫秒内 十、模拟进度条 十一、特殊字符的输入及应用 十二、随机数(%random%)的应用技巧 十三、变量嵌套与命令嵌套 1、更正了所有的错别字,适当排版,增加条理性。

F8913 ZigBee 技术规范

F8913 ZigBee 模块技术规范 产品特点---------------------------------------------------------------------------------------------------- 简介 F8913 ZigBee 模块是一种物联网无线数据终端,利用ZigBee 网络为用户提供无线数据传输功能。 该产品采用高性能的工业级ZigBee 方案,以嵌入式实时操作系统为软件支撑平台,同时提供2.0的SMA 与DIP 接口,可直接连接TTL 串口设备,实现数据透明传输功能;低功耗设计,最低功耗小于1mA ;提供17路I/O ,可实现数字量输入输出、脉冲输出;提供5路ADC ,模拟量输入、脉冲计数等功能。 该产品已广泛应用于物联网产业链中的M2M 行业,如智能电网、智能交通、智能家居、金融、移动POS 终端、供应链自动化、工业自动化、智能建筑、消防、公共安全、环境保护、气象、数字化医疗、遥感勘测、军事、空间探索、农业、林业、水务、煤矿、石化等领域。 文档编号 文档版本 密 级 工业级应用设计 ◆ 采用高性能工业级ZigBee 处理芯片 ◆ 低功耗设计,支持多级休眠和唤醒模式,最大 限度降低功耗 ◆ 采用2.0的SMA 与DIP 双排接口,较适合客 户的需求。 ◆ 电源输入(DC 3.0~3.6V ) 稳定可靠 ◆ WDT 看门狗设计,保证系统稳定 ◆ 提供TTL 串行接口,SPI 接口。 ◆ 天线接口防雷保护(可选) 标准易用 ◆ 采用2.0的SMA 与DIP 接口,特别适合于不 同用户的应用需求。 ◆ 提供TTL 接口可直接连相同电压的TTL 串口 设备 ◆ 智能型数据模块,上电即可进入数据传输状态 ◆ 使用方便,灵活,多种工作模式选择 ◆ 方便的系统配置和维护接口 ◆ 支持串口软件升级和远程维护 功能强大 ◆ 支持ZigBee 无线短距离数据传输功能 ◆ 具备中继路由和终端设备功能 ◆ 支持点对点、点对多点、对等和Mesh 网络 ◆ 网络容量大:65000个节点 ◆ 节点类型灵活:中心节点、路由节点、终端节 点可任意设置; ◆ 发送模式灵活:广播发送或目标地址发送模式 可选 ◆ 通信距离大 ◆ 提供17路I/O ,可实现17路数字量输入输出; 兼容10路脉冲输出、5路模拟量输入、5路脉冲计数功能

ZigBee学习电子笔记

第一讲

第二讲 https://www.wendangku.net/doc/e44295201.html,2530通用I/O口有21个:P0/P1/口个8个;P2口5个,其中,P1_0、P_1 有20mA的驱动能力,其余只有4mA 2.IO口配置相关的寄存器(3个) PxSEL: P0SEL、P1SEL、P2SEL,每个寄存器是1byte,分别用来设定3个口的工作模式。

IO的两种工作模式: 1.普通IO口模式:点灯、监测按键输入 2.片上外设模式:作为串口或者其他非普通IO口 PxDIR:P0DIR/P1DIR/P2DIR,每个寄存器占一个字节,用来设定IO口作为输入还是输出

PxINP:P0INP/P1INP/P2INP: 输入情况下,注意P2INP寄存器后3位的用法(见下图):

输出示例(以P0_0为例): 1)设置P0_0为普通IO口工作模式,非片上外设:P0SEL=0xFE(&11111110) 2)让P0_0作为输出用,非输入监测用:P0DIR=0x01(+ 00000001) 3)输出(如P0_0=0或P0_0=1等)。 输入示例(让P1_2作为输入): 1)设置P1_2为普通IO口工作模式,非片上外设:P1SEL=0xfd(11111011) 2)让P1_2作为输入检测用,非输出用P1DIR=0xfd(11111011) 3)选择上拉、下拉或三态中的一种输入(因为上电的时候寄存器默认为0,所以IO口都默认工作在普通IO口输入、上下拉模式) 4)检测用: If (P1_2= =0 or 1) { } Else { } 总结:由此可见,当芯片上电初始化后,3组IO口默认工作在普通IO口下的输入监测、上拉输入模式。 自己编程示例:

zigbee各版本规范比较

ZigBee各版本规范比较 ZigBee是ZigBee联盟建立的技术标准,它是一种工作在900MHZ和2.4GHZ频段的新兴无线网络技术,具有中等通讯距离(10米到数百米),比较灵活经济的通讯速率(40Kbps到250Kbps),并且有星状,网状(MESH),树状等多种网络拓扑,低的功耗等特点,所以在当今无线通讯技术和无线网络技术领域中占有比较重要的地位。 第一个ZigBee协议栈规范于2004年12月正式生效,称为ZigBee 1.0或ZigBee 2004。 第二个ZigBee协议栈规范于2006年12月发布,称为ZigBee 2006规范,主要是用“群组库(cluster library)”替换了ZigBee 2004中的MSG/KVP结构。最为重要的新的ZigBee 2006协议栈将不兼容原来的ZigBee 2004技术规范,对于已经投入ZigBee 2004的厂商而言,这是一个大悲剧。例如Jennic 公司将ZigBee2004协议栈固化在ROM中(JN5121/JN5139)。将无法和ZigBee 2006以后的协议栈兼容。ZigBee 2006协议栈,将是ZigBee兼容的一个战略分水岭,从这里开始,ZigBee将实现完全向后兼容性。 2007年10月发布了ZigBee 2007规范,ZigBee 2007规范定于了两套高级的功能指令集(feature set):分别是ZigBee功能命令集和ZigBee Pro功能命令集。(ZigBee 2004和2006都不兼容这两套新的命令集)。ZigBee 2007包含两个协议栈模板(profile),一个是ZigBee协议栈模板(Stack Profile 1),它是2006年发布的,目标是消费电子产品和灯光商业应用环境,设计简单,使用在少于300个节点的网络中。另一个是ZigBee Pro协议栈模板 (Stack Profile 2),它是在2007年发布,目标是商业和工业环境,支持大型网络,1000个以上网络节点,相应更好的安全性。ZigBee Pro提供了更多的特性,比如:多播、多对一路由和SKKE(Symmetric-key key establishment)高安全,但ZigBee(协议栈模板1)在内存和flash中提供了一个比较小的区域。两者都提供了全网状网络与所有的ZigBee应用模板工作。 ZigBee 2007 是向后完全兼容ZigBee 2006设备。ZigBee 2007设备可以加入一个ZigBee 2006网络,并能再ZigBee 2006网络中运行,反之亦然。 由于路由选择不同,ZigBee Pro设备必须变成非路由ZigBee End-Devices(ZEDs)设备才可加入ZigBee 2006或ZigBee 2007网络。同样ZigBee 2006或ZigBee 2007设备必须变成ZEDs才可加入ZigBee Pro 网络。在这些设备上的应用程序工作是相同的,它们不管在这些设备上的协议栈模板。 下面的图表从高层次进行比较,列出2004、2006及2007/PRO ZigBee规范之间的异同。 比较图

zigbee学习笔记3-通信例程之GenericApp

zigbee学习笔记3-通信例程之GenericApp 2011-09-22 11:02 刚入手的朋友,对Z-Stack 非常迷糊的时期,如果能够跑通几个例子、看几个演示,那么可以大大提高学习兴趣;另外如果知道某个例子的大致功能及实现,那么在去看具体实现过程目的性就非常明确。 首先来看看TI 究竟有哪些例子:可以看出其例子是非常丰富的。 GenericApp(设备互相绑定传送信息-hellow world),Location(定位),SampleApp(设备发送和接收LED灯信息),SimpleApp(温度和灯开关,和智能家居结合使用的,have Profile),HomeAutomation(智能家居的应用,have Profile),SerialApp(串行传输的应用),Transmit(发送应用),ZLOAD(协议文件夹中只有Source)。这样看来还是不少的。其中SampleApp 例子已经在前面的学习中有所涉及,可以说前面的所有学习都是基于这个例子的,所以这里就不测试它了。Location 是定位的测试例子,这里我的硬件是不够的,所以也不做测试。其他我都做点测试,能成功的就成功,不能成功的就失败,这个我也没办法。 1、GenericApp 这个实验是两个模块相互绑定后可以对传数据,模块绑定之后,两个模块之间相互传输字符串"Hello World"。 实验说明:首先启动一个网络协调器,协调器如果建立网络成功后,会在LCD 上显示该节点为协调者同时显示网络ID号。然后打开一个终端节点或路由器的电源,此时节点会自动加入网络。加入网络成功后,节点会显示自己的节点类型、网络地址和父节点的网络地址。 节点加入网络成功后,首先把主机模块的摇杆往右拔一下,然后把要绑定模块的RIGHT按一下,如果两边的LED4 都熄灭或是点亮后马上熄灭,表示绑定成功。绑定成功后,两个节点就开始相互定时发送数据,并在对方的LCD屏上显示出来,发送的数据为"Hello World"。此时如果把相互绑定模块中的left 按一下,可以发送Match Description Request命令,对方则显示Match Description Request信息。(以上无线龙手册提供) 2 关键函数分析: 我开始没搞清楚,功能是个啥大约浏览了下,这个例子似乎还与设备的所以还决定看看程序来判断这个例子的功能。绑定有关系,在key control 描述中发现 //***************** Key control**************************// SW2: initiates end device binding //--初始化中断设备绑定 SW4: initiates a match description request //--初始化一个匹配描述请求 2.1 按建处理程序中发现: if ( keys & HAL_KEY_SW_2 ) { HalLedSet ( HAL_LED_4, HAL_LED_MODE_OFF ); // Initiate an End Device Bind Request for the mandatory endpoint dstAddr.addrMode = Addr16Bit; dstAddr.addr.shortAddr = 0x0000; // Coordinator ZDP_EndDeviceBindReq( &dstAddr, NLME_GetShortAddr(), GenericApp_epDesc.endPoint, GENERICAPP_PROFID, GENERICAPP_MAX_CLUSTERS, (cId_t *)GenericApp_ClusterList, GENERICAPP_MAX_CLUSTERS, (cId_t *)GenericApp_ClusterList, FALSE ); } 很明显这里按键2(右键)是发送绑定请求的命令。 if ( keys & HAL_KEY_SW_4 ) { HalLedSet ( HAL_LED_4, HAL_LED_MODE_OFF ); // Initiate a Match Deion Request (Service Discovery) dstAddr.addrMode = AddrBroadcast; dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR; ZDP_MatchDescReq( &dstAddr, NWK_BROADCAST_SHORTADDR, GENERICAPP_PROFID,

相关文档