实验一
//短距离,低功耗,无线通信,zigbee取名来源于蜜蜂八字舞
//zigbee=一种无线通信协议,cc2530TI芯片集成51内核
//soc=system on a chip
//协议栈是协议的实现形式,是协议与用户之间的借口
//协议栈是什么,巴拉巴拉一大堆有各种层,就相当于函数中底层驱动文件
//coordinator协调器,router路由器,end终端
//协议栈规范是由联盟规定也是设备加入网络之前首先要确认
//唯一的64位地址IEEE和网络地址16位
//协议栈就相当于参加给你好了的驱动, 比如oled的底层驱动,开发人员直接调用
//实现无线通信步骤:组网,发送,接收
//安装协议栈,也即安装底层驱动库函数,因为所有模板中都有协议栈驱动所以不必安装
//components翻译就是,组成部分,就是库代码
//documents就是开发文档
//projects就是子程序
//tools是上位机,就是工具
//App应用层目录
//HAl=handware abstraction layer
//MAC=MAC层
//MT=串口层
//巴拉巴拉一大堆配置层我不写了
//Warning[w69]: 警告不用管,无影响
//工程名右键rebuild后,烧录下载程序即可
//路由器的功能 是允许其它设备加入网络
//一个结点就是一个设备=一快单片机=cc2530
//.cfg后缀都是配置文件
//协调器利用协议栈建立网络和节点加入>终端调用协议栈无线发送函数>协调器调用接收函数
//本实验实现 终端连上协调器建立的网络后 发送D1给协调器 协调器LED闪烁
实验二
//串口通讯 串口分为单工,半双工,全双工
//我们打开这整个程序文件的后缀就是.eww 也即是工程
//串口初始化函数在HAL文件下 hal_uart.c文件
//而串口函数操作函数在MT文件下 这里面的串口初始化与HAL下的串口我不清楚区别
//HAL层 MT嗯都是构成了zigbee官方规定的协议栈的组成
//用户添加应用任务程序main-osalinitsystem-osaltask-sampleApp
//除基础配置外 我们一般只关心App文件夹和ZMain文件夹
//配置中 xMT_TASK 代表是不定义这个宏
//端点 簇 属性 描述符 都是结构体
//ZTOOL_P1就是串口0 ZTOOL_P2就是串口1
//店家视频里说至少要学完十个视频才可以自己动手写自己的程序 任重道远啊
实验三
//点播=两个设备通讯 比如两个组 一组中结点只能与下面一个通讯
//组播=比如两个组 一组中结点可以与下面多个通讯 一组二组不能互相通讯
//广播=比如两个组 一组中结点发数据 下面所有点都可以接收都可以通讯
//unitar翻译就是单一的unique也是独一无二的 multiple就是倍数
//本实验主要做这些事情 从空中抓取数据 然后读取数据 再将数据通过串口助手发送给电脑
//本实验是:协调器发送数据给终端 终端接收数据并将数据发送给串口助手显示我确实接收
//注第二个实验是 串口助手发数据给zigbee zigbee接收并发回给出口助手这个数据
//第二个实验我有一个疑问点就是 这个zigbee是协调器还是终端或者路由器我不知道再说吧
//协调器创建网络与各节点 组播模式就是将网络结点分组
//在进行数据包传送时 必须要有地址模式用以不同模式传送数据包
/* //下面枚举体在 AF.h 头文件中
//afAddrNotPresent是枚举常量注意是常量 enum是枚举关键字
//afAddrMode_t就是枚举类型名 此时还没有定义枚举变量名
typedef enum (标识符=枚举集合总名字可省略无影响) 此时enum=enum 某某标识符
{
afAddrNotPresent = AddrNotPresent,
afAddr16Bit = Addr16Bit,
afAddr64Bit = Addr64Bit,
afAddrGroup = AddrGroup,
afAddrBroadcast = AddrBroadcast
} afAddrMode_t;
//定义变量就是 enum i=af i=enum 标识符 i;
//枚举用以代替define更有效率
//具体参考这篇博客https://blog.csdn.net/weixin_33951761/article/details/85751763?utm_source=app
// https://blog.csdn.net/weixin_33951761/article/details/85751763?utm_source=app
enum leixingming //注意与上面区别 此时enum==enum leixingming
{
。。。
。。。
}bianliangming;
定义变量就是 enum i == enum leixingming i;
*/
//我现在将思绪整理一下
//首先是广播模式也即也发给睡眠设备数据包
//其次协调器建立网络与各节点加入 然后一旦检测到下一级结点连接网络 说明结点发生变化
//也即网络发生变化 此时触发ZDO_STATE_CHANGE事件 此时判断定时重复发送数据包给下一级结点设备
//这个判断是判断协调器终端路由都判断 是 if ( (SampleApp_NwkState = DEV_ZB_COORD) )这句话
//此实验是判断协调器也即是(SampleApp_NwkState = DEV_ZB_COORD) 就是协调器发给终端
//如何判断下一级终端是否接收? 如果接收此时触发AF_INCOMING_MSG_CMD事件 此时在这个switch
//里面加上了下一级也即终端将数据包rx发送给串口助手即电脑显示
//SampleApp_MessageMSGCB应该就是接收并进行相应处理函数里面有write函数发送数据
//SampleApp_SendFlashMessage是单纯的的发送数据函数里面有buffer字节缓冲区
实验四
//本实验实现:三节点组播通讯,协调器建网,两终端连网,按终端上按键终端LED状态改变
//同时协调器LED状态也改变
//记得第三个实验是广播,那么这个就是组播
/* //¥¥¥¥都是修改组播号的 也可以修改为其他数值
SampleApp_Flash_DstAddr.addrMode = (afAddrMode_t)afAddrGroup; //¥¥¥¥
SampleApp_Flash_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_Flash_DstAddr.addr.shortAddr = SAMPLEAPP_FLASH_GROUP; //组号1 ¥¥¥¥
//SampleApp_Flash_DstAddr.addr.shortAddr = 0x0002; //组号2
// By default, all devices start out in Group 1
SampleApp_Group.ID = 0x0001; //组播通讯号 可以修改为其他值 ¥¥¥¥
//SampleApp_Group.ID = 0x0002;
*/
//LED驱动在HalDriverInit初始化里面
实验五
//本实验实现功能:点对点通讯,路由器与终端与地址固定为0的协调器通讯
/* //仍然在AF.h中
typedef enum
{
afAddrNotPresent = AddrNotPresent,
afAddr16Bit = Addr16Bit,//点播方式 16位短地址通讯
afAddr64Bit = Addr64Bit,//64位IEEE地址出场厂家定好的
afAddrGroup = AddrGroup,//组播方式
afAddrBroadcast = AddrBroadcast//广播模式
} afAddrMode_t;
/
/ //也在AF.h中
typedef struct
{
union
{
uint16 shortAddr;//短地址
ZLongAddr_t extAddr;//IEEE
} addr;
afAddrMode_t addrMode;//传送模式
uint8 endPoint;//端点号
uint16 panId; // used for the INTER_PAN feature
} afAddrType_t;
*/
/*
void osalInitTasks( void )中 taskID
{
uint8 taskID = 0; //任务优先级由高向低排列 高优先级对应 taskID 值反而小
macTaskInit( taskID++ );
nwk_init( taskID++ );
Hal_Init( taskID++ );
*/
实验六
/*
本实验实现功能:终端设备获得DS18B20数据然后将获得数据无线传输给协调器
,协调器再通过串口发给电脑上串口助手表示我接收到终端发来的数据了,同时,
终端设备也要将设备通过rxtx串口输出 也就是两个方向一个无线发给协调器一个发给串口
*/
//此实验是在其它两个实验基础之上进行拓展 包括接收数据然后进行相应操作函数
//和直接发送数据SampleApp_Send_P2P_Message函数
//现在再来整理一下思路 就是协调器建立网络建立结点 当终端设备连接结点连接网络时
//此时会触发一个条件 此时触发这个条件一般会进入协调终端路由的判断是否定时发送数据
//那么此时 协调器接收到数据时此时又会触发一个条件 这个条件进入一个 接收数据并
//进行相应操作的函数 而第一个触发条件时只是进入一个仅仅无线发送数据的一个自写函数
//这个自写函数也就是定时发送的哪个函数 哈哈现在岂不是一切明了了呢
实验七
//安联德通讯协议适用于安联德所有产品=帧格式=每一串指令串
//报文协议这块不是很明白 明天看吧算了现在看加油吴方方最棒
//当在电脑上使用串口助手向协调器发送3A 00 ff 01 C4 23 这是发送指令默认字符串十六进制
//此时协调器通过rx串口返回 3A 00 FF 01 1E 48 01 01 00 00 01 01 八个00 92 23
//3A报文头 00 FF地址 01功能码是查询(01意思是查询所有终端传感器数据)
//1E 48 01 01是结点一数据 后面00 00 01 01是终端结点二数据 再后面八个00说明是空
//结点一中 1E=温度 48=湿度 01=气味 01=继电器 后面节点二一样 当然报文格式不知道能不能修改再说
//92是异或校验码 23是报文结束
//这个指令码的作用是 可以使用串口助手手动 查询数据信息
//**** ¥¥¥¥
//吴方方对zigbee模块再理解深入…
//实验固件就是.hex文件
//这套协议就是一套操作系统
//zigbee网络是一个整体是由一个协调器多个路由器多个终端设备构成
//协调器选择一个信道和一个网络ID,随后启动整个网络
//f8wConfig.cfg中可以自由选择信道 默认是11
//信道下面就是ID也可以修改 只要协调器终端信道和ID相同则可以加入网络
//路由器是允许终端加入网络
//终端设备可以接传感器