ZigBee
文章平均质量分 60
王者小金
热爱程序,热爱生活。
展开
-
关于Zstack_2.5.1中的重传机制
问题起源于丢包率:丢包率的定义由自己去定义,重传收到数据算不算丢包由你自己去定义。问题起源于丢包率,发100个数据包,结果收到超过100个数据包。Zstack中mac层中默认有CSMA/CA机制,但是最后还是没有搞清楚这个重传机制。1.mac层的ACK只管点对点的,而且mac层的ack是无法关闭的;多跳的ACK需要应用层的ack,应用层的ack可以关闭。2.可以尝试自己抓包看看是否重传了什...原创 2018-11-29 18:59:52 · 1002 阅读 · 0 评论 -
zigbee抓包
2、任何一个zigbee模块要加入到某个网络,一定要有一个处于该网络里的节点作为介绍人,并且这个介绍人不能是终端节点。介绍人节点为被介绍人节点的父节点,被介绍加入的节点称为子节点。二者是父子节点关系。3、有三个模块:A模块下载了协调器功能代码;B模块下载了路由器功能代码;C模块下载了终端功能代码;当A没上电,而B、C上电的时候,会一直去寻找网络请求加入网络;直到A模块上电以后,先去创建一个网络确定...转载 2018-03-29 11:03:28 · 2013 阅读 · 0 评论 -
Zstack开发过程中的字符串打印问题
Question:之前也一直陆陆续续出现了类似的问题,就是一个HalUARTWrite函数能够打印字符串,但是后面的那个死活打印不了字符串。也即是如下图所示的情况: 究其原因,竟然是HalUARTWrite函数后面的字符参数设置错误,无论是大了还是小了均会使得字符串打印出现错误。有时错误隐藏的比较深就不好发现,如下图所示,将上述图片中的代码从9改为10之后,就把上述错误消去了:...原创 2018-04-02 22:29:19 · 533 阅读 · 0 评论 -
Z-stack 应用程序编程接口(API)-网络层
NWK 层为更高层提供了如下功能:·· 网络管理· 地址管理· 网络参数与功能函数除了管理功能,NWK 还提供了应用程序没有的数据服务。应用程序可以通过 AF数据接口[AF_DataRequest()]来发送数据。3.4.1.1 网络管理(Network Management)3.4.1.1.1 NLME_NetworkDiscoveryRequest()此函数请求网络层寻找相邻路由器。这...转载 2018-04-09 22:15:59 · 661 阅读 · 0 评论 -
zigbee抓包时发现发送和接受IEEE地址均为0
代码链接:https://download.csdn.net/my 不知道为啥出现这种情况,换一个其他的工程这个问题就不见了,求助中。望知道的兄弟在下面能够给点指点,谢谢。...原创 2018-04-02 10:29:04 · 340 阅读 · 0 评论 -
zigbee抓包时为何时常出现这个not able to setup connection to device smartRF04EB
因为仿真器下载完代码后,忘记释放仿真器了。仿真器被占用了,此时借助flash programmer 去读它的IEEE地址,也是读不到的。因为被占用了,之前一直纠结这个问题,老是经常会抓不了包。还说为什么有时候可以抓包有时候又抓不了包呢。...原创 2018-04-01 10:39:19 · 1702 阅读 · 2 评论 -
Zstack API 解读
这个文档是一个关键了,Z-Stack的应用程序接口。我们在程序中基本上应该调用的是这些API吧。ZDO层API实现了所有ZDP(ZigBee Device Profile)定义的命令和回应所需要的函数。ZDP描述了ZDO如何实现普通ZigBee设备的特性,它定义了设备描述和簇,ZDP为ZDO和应用提供一下功能:设备网络建立设备和服务发现节点设备邦定和解邦定服务网络管理服务设备发现是ZigBee设备...转载 2018-03-22 08:42:48 · 670 阅读 · 0 评论 -
ZigBee重要结构及表解释
各表中的元素结构: 1、组表的元素结构 aps_Group_t; typedef struct { uint16 ID; // 组ID uint8 name[APS_GROUP_NAME_LEN]; // 组名称 } aps_Group_t; 2、组列表的元素结构 typedef struct apsG转载 2018-03-20 16:16:10 · 911 阅读 · 0 评论 -
Zigbee协议网络相关的东西(2)
Zigbee的术语重点弄懂它们的从属关系,主要包括:节点,设备,端点,簇(群集),属性。属性Attribute是一个反映物理数量或状态的数据值,比如开关值(On/Off),温度值、百分比等。群集Cluster是包含一个或多个属性(attribute)的群组。简单的说,群集就是属性的集合。每个群集都被分配一个唯一的群集ID且每个群集最多有65536个属性。设备描述转载 2018-03-24 10:59:35 · 650 阅读 · 0 评论 -
Zigbee协议网络相关的东西(1)
协议栈的使用1. 为了让ZigBee的开发更加简单高效,TI公司推出了基于CC2530芯片的协议栈-Z-Stack。协议栈实质上就是能实现各个功能的示例框架代码,我们要实现自己想要的功能,只需要在协议栈的基础上修改或添加即可。2. Z-Stack的发展 由0.0.1 -2.5.1a Mesh:之前版本的升级 HA:智能家居 SE:智能能源他们的区别是应用部分不同转载 2018-03-24 10:56:23 · 4412 阅读 · 0 评论 -
TI zigbee sensor monitor无法显示拓扑图
纠正一下: 协调器需要增加编译选项“MT_SAPI_CB_FUNC”,我试过可是不可行。 接下来找到一个TI的实例工程链接:http://download.csdn.net/download/wearlee/10238798 结果按照他的操作就可以实现拓扑图的显示,原因就是发送数据必须要和sensor monitor 的帧格式一致才行。中间出现了些小问题:链接直接给的工程编原创 2018-02-03 21:54:28 · 2271 阅读 · 0 评论 -
CC2530中adc的使用记录
本文主要是记录使用CC2530中adc过程中遇到的问题。同时分析ZigBee协议栈中实现的代码。ADC的基本知识CC2530中ADC相关特性CC2530中和ADC相关的寄存器ZigBee协议栈中的实现代码参考电压的问题实验过程中遇到的问题1. ADC的基本知识ADC是模数转换的简称,通常是指一个将模拟信号转变为数字信号的电子元件。一般的模数转换器是将一个输入电压信号转换为一转载 2017-12-28 21:18:21 · 2578 阅读 · 0 评论 -
IAR中Error[Pe007]: unrecognized token
考虑到这种情况一般都是:符号输入格式有误,稍微检查一下就好.原创 2017-12-27 16:45:28 · 10859 阅读 · 2 评论 -
ZigBee,ZStack
ZigBee应用导读1.设备类型Zigbee组网设备分为三类:1.Coordinator(图中黑色的节点)。发起网络,并确定PAN ID的设备。一个网里有且只有一个。组网完成之后退化为Router。2.Router(图中红色的节点)。管理若干子节点,须一直在线。3.End-device(图中白色的节点)。可以休眠。从图中可以看出,zigbee网络是一个网状结构,从图论的角度讲,End-device...转载 2018-04-17 18:00:12 · 1264 阅读 · 0 评论 -
OMNeT安装教程
目前从官网下载的最新版本omnet 5.2.1。 前提及注意事项:1) 安装之前首先要确定已经安装好GCC编译环境(例如:MinGW、Cygwin,选择一种安装);(否则OMNeT++会安装不成功),具体安装教程详见另一篇文章 MinGW安装教程2) OMNet++安装路径要是英文路径,以及路径名不能有空格3) 还有就是这个也是个类Eclipse的软件,所以像JDK这样的Java环境就首先要配置...转载 2018-04-04 18:00:48 · 2942 阅读 · 2 评论 -
电池电压与电量的关系
目前(2012-6)人们主要使用两种监测方法:(1)电流积分(current integration)为基础;前者依据一种稳健的思想,即如果对所有电池的充、放电流进行积分,就可以得出剩余电量的大小。当电池刚充好电并且已知是完全充电时,使用电流积分方法效果非常好。这种方法被成功地运用于当今众多的电池电量监测过程中。 ...转载 2018-11-23 14:29:02 · 16210 阅读 · 0 评论 -
zigbee单播丢包测试(CC2530,ZSTACK)
之前写过一个zigbee数据测试,由于当时对zigbee理解的很浅,所以写的代码丢包严重。最近为了提高数据传输的可靠性,改进了一下通信的方式,结果还不错。 之前:协调器+普通终端节点,协调器广播,节点接收广播消息。 现在:协调器+路由节点,协调器记录路由的网络短地址进行点播(单播)。 这样改进的原因是: 1.如果普通终端节点接收数据,那么由于节点默认会定期进入休眠,所以会在休眠唤醒...转载 2018-06-13 21:53:41 · 1140 阅读 · 0 评论 -
数据融合___2(路由结点缓存数据包)
本博文旨在实现2个(或者多个)终端结点发送数据包至路由节点,路由节点将其缓存后发送至协调器(Sink结点)。路由节点原来是收到一个数据包转发一个数据包,而现在可以待收到了(例如光照传感器以及温湿度传感器发送来的2个数据包),将其缓存后2个数据包一齐发送,这样就可以减少数据包的发送量。从而实现了数据融合的一个基本工作。为接下来的数据融合算法可行性提供了坚实的基础。理论现拟提供如下2种技...原创 2018-05-16 18:42:20 · 528 阅读 · 0 评论 -
ZigBee路由节点实现休眠
对于zigbeen的路由节点,TI是不支持休眠功能的。然而可以自己手动修改代码,也可以实现路由节点休眠,达到PM3模式。1.右键工程名称,选择Options->C/C++Compiler/Preprocessor选项,在Defined Symbols框里添加POWER_SAVING。2.修改f8wConfig.cfg文件。找到-DRFD_RCVC_ALWAYS_ON将值改为-DRFD_RCV...转载 2018-05-16 09:22:48 · 2834 阅读 · 0 评论 -
数据融合__1(采集温湿度sht10和光照强度BH1750为例)
采用一个Enddevice采集到多种不同的传感器数据类型,从而对其进行处理,可以减少数据的发送量或者减少Enddevice的个数。以下贴出传感器的代码以及协调器的处理代码。 SHT10.c文件#include "SHT10.h"#include "OnBoard.h"/* xus延迟 */void delay_nus(uint16 xus) { fo...原创 2018-05-14 19:02:22 · 2278 阅读 · 3 评论 -
ZigBee 中 z-Stack协议中的任务、事件、消息处理流程
1,系统上电以后在main函数的最后会调用osal_start_system()方法来启动系统,这个方法是个死循环,只循环里面只做一件事:不断的检测任务,看任务里面有没有事件需要处理; 检测方法:如果tasksEvents[idx]不为0,则表示要事件需要处理。2,事件是怎么的? [html] view plain copy/*******************************...转载 2018-05-04 22:36:14 · 1965 阅读 · 0 评论 -
在Zstack中实现休眠
要实现休眠机制修改如下几点即可(实际测试可用):1.默认情况下,Z-Stack软件包中的终端设备项目被配置为没有电源管理。 启用此功能功能,在构建项目时必须指定POWER_SAVING编译选项。 如下图所示:选项放置在C / C ++编译器选项的“预处理器”选项卡下的定义符号框中。(其中特别需要注意的是:需要在Workspace下面的勾选框选中EndDevice,我之前以为上图的对话框没有区别,其...原创 2018-04-26 19:44:37 · 1521 阅读 · 1 评论 -
上位机发命令修改休眠时间
可以参考上一篇博文:https://blog.csdn.net/wearlee/article/details/80174822中的UART的串口收发,这样就可以为上位机发命令奠定基础。 采用的大致思路就是,让协调器给终端结点发送数据,然后终端节点收到数据后改变发送数据的周期,也就是改变了休眠时长。代码如下:static void rxCB( uint8 port, uint8 eve...原创 2018-05-03 20:47:10 · 997 阅读 · 0 评论 -
CC2530低功耗终端不停重连网络耗电问题
这几天在玩TI的CC2530,测试其ZIGBEE协议栈的低功耗模式,TI确实花了不少功夫在这套协议栈上以及支撑的操作的系统OSAL,非常好用。做了几个简单的配置即可进入低功耗模式,并且数据采集、通信均正常。担当我认为OK的时候,我把协调器关闭了,过了一段时间,重新打开,发现终端连不上了,测量了终端的电池电压(CR1220,40mA/H),已经没电了;问题的根源就是终端发现协调器不在线了,不停的去重...转载 2018-05-03 21:47:21 · 804 阅读 · 1 评论 -
UART通信收发
参考链接:https://wenku.baidu.com/view/bd7b2da36294dd88d0d26bf4.html 按照这个链接指导,修改了底层的串口配置代码,但是出问题了。后来也没解决。后来找到了下面的帖子,按照下面的提示一步一步可以实现串口的收发:链接如下https://www.cnblogs.com/liushao/p/6351635.html?utm_source=itdada...原创 2018-05-03 09:03:08 · 2304 阅读 · 2 评论 -
IEEE802.15.4、ZigBee、ZigBee协议、Zstack的关系
IEEE 802.15.4 , zigbee ,zigbee协议栈,zstack。首先个人的观点是:IEEE 802.15.4是IEEE的一种无线通信基本标准,它定义了MAC层和物理层的通信标准。而zigbee是一种短距离的通信基本标准(貌似还不能成为标准,准确的说它是zigbee联盟提出的一种短距离通信协议基准),又可以说成是zigbee协议。而zigbee协议栈是zigbee协议的...转载 2018-05-02 13:39:36 · 6865 阅读 · 0 评论 -
关于Zstack源路由的心得
为了后人不再陷入前人走下的坑,尽量少走一些弯路。在这里还是叙述一些关于Zstack有关源路由的事。源路由就是从源地址到目的地址一整条路径都已经规划好了的路径,详情可以百度。以前关于源路由挺火的,现在不知怎么的就慢慢冷下来。 本人本打算做一个算法设计动态生成路由表。然后将源路由表在应用层将路由表导入到节点中,从而改变其原来的多跳路径。其中不太清楚的地方就是源路由是否在网络层里面已经...原创 2018-04-18 22:03:16 · 987 阅读 · 1 评论 -
关于Zstack中配置文件讲一讲自己肤浅的认识
打开协议栈中Tools文件夹(这个文件夹包含不同的配置文件和应用于Z-Stack项目的可执行工具).可以看到共有5个链接控制文件(linker control files)。在这个Tools文件夹:f8w2530.xcl;f8wConfig.cfg;f8wCoord.cfg;f8wEndev.cfg;f8wRouter.cfg;f8wZCL.cfg 。 F8w2530.xc1 包含了cc原创 2018-01-02 14:59:54 · 1761 阅读 · 0 评论 -
Zstack协议栈之HalDriverInit()函数解析
看名字是初始化一些硬件驱动,里面全都是调用一些子函数来实现,包括TIMER、ADC、DMA、FLASH等等,如下[cpp] view plain copyvoid HalDriverInit (void) { /* TIMER */ #if (defined HAL_TIMER) && (HAL_TIMER == TRUE) HalTimerInit(); #endif转载 2018-01-02 13:54:15 · 1025 阅读 · 0 评论 -
Zstack之InitBoard()函数分析
void InitBoard( uint8 level ){ if ( level == OB_COLD ) { // IAR does not zero-out this byte below the XSTACK. *(uint8 *)0x0 = 0; //这一句什么意思,参见我的其他博客 // Interrupts off osal_i原创 2018-01-02 11:10:23 · 1417 阅读 · 0 评论 -
ZigBee的组网原理
组建一个完整的Z I GBEE网状网络需要包含两个步骤:第一,进行网络初始化;第二,把节点加入网络。那么对于节点加入网络 设计的时候又包括两个步骤:通过与协调 器连接入网和通过已有的父节点入网。一、网络初始化ZIGBEE 网络的建立是由协调器发起的,任何一个ZIGBEE节点要组建一个网络必须要满足以下两点要求:(1)节点是FFD(Full Function Device )节点,拥转载 2017-12-05 10:17:24 · 4813 阅读 · 0 评论 -
ZigBee如何抓包
简单粗暴的记录下如何抓包吧,理论知识在此不重述,重点讲操作。 1.安装软件packet sniffer。 2.点击start按钮(前提是仿真器已经正确连接并且PC机上可以识别或者直接使用zigbeeUSB dongle进行抓包也可以。) 3.设置信道(与下载到板子中的信道号一致即可)4.现在可以开始抓包PS:理论知识自己去别处恶补吧。https://wenku.b...原创 2017-12-21 22:15:22 · 5304 阅读 · 0 评论 -
为什么无线信号(RSSI)是负值
为什么无线信号(RSSI)是负值答:其实归根到底为什么接收的无线信号是负值,这样子是不是容易理解多了。因为无线信号多为mW级别,所以对它进行了极化,转化为dBm而已,不表示信号是负的。1mW就是0dBm,小于1mW就是负数的dBm数。弄清信号强度的定义就行了:RSSI(接收信号强度)Received Signal Strength IndicatorRss=10logP转载 2017-11-10 19:02:29 · 6211 阅读 · 0 评论 -
ZigBee2节干电池工作半年分析估算
在设计系统实际运用中,设定采集周期为15分钟,意味着每隔15分钟向终端节点发送一次指令,采集完成后发送数据,最后进入睡眠模式。一个采集周期损耗可以表示为为:DHT11传感器工作损耗+MH-Z14A传感器工作损耗+光照传感器工作损耗+CC2530发送数据的损耗+CC2530、传感器在休眠状态的损耗。通过査阅资料得知,在工作模式下,CC2530消耗电流25mA,MH-Z14A传感器消耗电流4转载 2017-12-21 11:07:24 · 2959 阅读 · 0 评论 -
ZigBee功耗计算
如何从理论上计算电池使用时间: 休眠时间一天的功耗:1.5微安*24=0.036mah; 发送数据一天的功耗:10ma*24*1/20=12mah(以20分钟发送一次数据为例,暂且定每次发送数据为1s,其实应 该远远小于1s级别) 那么一天的总功耗为:12.036mah; 只需用电池总电量比如2000mah除以12.036即是电池理论使用总时长; ...原创 2017-10-24 09:12:46 · 10097 阅读 · 0 评论 -
关于zigbee的一些不易注意的地方
1.为什么说是IAR而不是Keil?是因为TI的官方协议栈是在IAR编译环境下开发的,因此我们写程序就必须用IAR。2.如果协议栈用的IAR版本比你的安装的版本高,这时打开程序后左边的WorkSpace窗口就是空白的,程序也无法编译。如何安装正确的IAR版本?可以查看TI的官方说明文档:Z-Stack Core Release Notes文件,该文件在协议栈的安装文件夹转载 2017-10-24 08:00:48 · 803 阅读 · 0 评论 -
ZigBee各层简要概述
APP:应用层目录,用户创建应用工程的地方。项目的主要内容。由应用框架层(AF)、Zigbee设备对象层(ZDO)、应用支持子层(APS)组成。应用框架层(AF):提供了一个如何在Zigbee协议栈上及案例一个规范的描述。它规定了规范的一系列的标准数据类型,协助服务发现的描述符,传输数据的帧格式等等。Zigbee设备对象层(ZDO):定义了一个设备在网络中的角色(协调器、路由器或者终端原创 2017-10-23 09:53:11 · 16299 阅读 · 0 评论 -
ZigBee新手入门填坑
1.为什么一个工程的时候,build出错,非得rebuild all才可以解决呢? 因为你改过一些东西之后,有时导致别的模块也需要重新编译。但Rebuild All就不同了,它把所有的东西都重新编译,不管改过的,没改过的;还是它认为有依赖的,没依赖的,统统重来,于是问题就消除了,但如果对于特别大的项目,经常Rebuild All是很花时间的,比如说当项目大到Rebuild All一次需要1...原创 2017-07-10 19:27:10 · 1541 阅读 · 0 评论 -
字符串显示问题(方便初学者串口调试代码)
void GenericApp_Send_wendu_Message(void) { byte str[10];//char strTemp[10]; byte temp;temp = ReadDs18B20(); //读取温度数据str[0] = ‘1’; //这里是,节点模块编号,想必这里也就是徐老师跟我讲的数据包的格式了吧。这里就是Ascii码值了吧s原创 2017-07-10 16:47:39 · 1890 阅读 · 0 评论 -
IAR里面老是提示找不到.h文件的处理方法
最笨的方法,没有之一,不过也是最有效的方法。 如上图所示咯。 这样便可以编译通过。原创 2017-06-18 15:36:07 · 6800 阅读 · 4 评论