Core2530-B-User-Manual
Zigbee组网实验
Zigbee组网最少需要一个协调器和一个路由器,模块出厂后内置Bootloader,可以直接通过串口将固件下载到模块。
注:组网通信实验需要Core2530 (B)两块,XBee USB Adapter底板两块。
Zigbee角色介绍
1. 协调器(Coodinator)
- 选择一个频道和PAN ID,组建网络
- 允许路由和终端结点加入这个网络
- 对网络中的数据进行路由
- 必须保持供电,不能进入睡眠状态
- 可以为睡眠的终端结点保留数据,至其唤醒后取回
2. 路由器(Router)
- 在进行数据收发之前,必须首先加入一个Zigbee网络
- 本身加入网络后,允许路由和终端结点加入
- 加入网络后,可以对网络中的数据进行路由
- 必须保持供电,不能进入睡眠状态
- 可以为睡眠的终端结点保留数据,至其唤醒后取回
3. 终端(End Device)
- 在进行数据收发之前,必须首先加入一个Zigbee网络
- 不允许其他设备加入
- 必须通过其父节点收发数据,不能对网络中的数据进行路由
- 可由电池供电,必要时可以进入睡眠状态
Bootloader
1. Bootloader简介
利用模块内置的Bootloader,用户可以通过串口直接下载应用程序而不需要CC Debugger;但Bootloader的烧录必须通过CC Debugger。
本模块配套的bootloader.hex,具体工作情况如下:
模块上电后,如果Flash内部应用程序有效,则立刻开始执行;否则LED1闪烁,表示没有应用程序,可以通过串口进行下载。
因为模块出厂前还另外烧写了Router.bin的应用程序,所以模块接上usb线后,则会直接执行router应用程序,如果要重新进入到“可串口下载程序”状态,可长按Boot按键,同时按下Reset按键,此时可看到LED1灯开始闪动,则可重新烧写程序。
2. CC debugger驱动安装
- 解压例程提供的软件包CC-Debugger_Drivers.7z到安装目录中。
- 双击 Setup_SmartRF_Drivers-1.2.0.exe 打开安装程序
- 点击Next,选择安装路径
- 点击 Install,等待安装完成
- 安装结束后,连接CC Debugger到电脑,打开windows 设备管理器,如有下图显示的硬件,说明驱动安装成功。
3. 烧录Bootloader
- 将模块安装到底板上,通过USB线连接电脑,同时连接CC Debugger
- 打开底板电源,按下CC Debugger上的RESET按键,如果指示灯变为绿色说明通信正常,可以下载。
- 打开SmartRF Studio7,选择软件右上角Flash Programmer并打开。
- 选择Program CCxxxx Soc or MSP430,Flash image处选择需要下载的烧录文件,这里选择bootloader_wait.hex,单击Perform actions开始下载。
- 如果底部出现信息: program and verify OK,同时底板LED1开始闪烁,说明下载成功。
固件下载
这里以两套Core2530 (B) + XBee USB Adapter为例,分别烧录协调器和路由器固件,完成组网。为方便描述,将这两套系统称为A和B。
- 将A、B通过USB线接入电脑,上电后分别记录对应的串口号
- 如果之前已有bootloader固件,且Flash内部应用程序应用程序有效,重新复位A或B后,模块会直接执行应用程序。需要长按Boot按键,同时按下Reset按键,此时可看到LED1灯开始闪动,则可重新烧写程序。如果没有固件,上电后LED1闪烁,说明直接进入Bootloader模式,不需要按Boot按键。
- 打开串口烧录软件 SBDemo.exe
- 填入A对应的串口号,点击…,Image File选择 Coordinator.bin 固件,,烧写波特率选择115200,点击 Load Image开始下载,等待下载结束。
- B选择Router.bin固件,下载方式同上。
- 打开两个串口调试助手,串口号分别对应A和B,波特率38400、数据位8、停止位1。
- 重新复位A,等待串口输出 “Coordinator ok”,说明网络建立成功。
- 重新复位B,等待串口输出“Router ok”,说明路由器已经加入网络,组网成功。
模块组网通信
以下操作均直接使用UART串口发送和接收数据。
广播模式通信
描述:广播方式是由一个设备发送信息至整个Zigbee网络上的所有设备
格式:要发送的数据
示例:
如果任意一个模块需要以广播的方式发送信息“Hello Waveshare”,操作现象如下: 字符串输入框输入以下字符,点击发送:
所有路由和协调器的字符串接收框都可以接收以下信息:
|
点对点通信
描述:实现网络中任意两个节点之间的通信
格式:P2P 目的地址 要发送的数据
示例:
如果A模块要向B模块发送数据“Hello World”,操作和现象如下: 通过AT+GETADDR读取A和B模块的短地址 字符串输入框:
便能够读取到A模块和B模块的地址:
在A模块使用P2P指令就可以给B模块发送数据了。如下:
此时就只有B模块能收到以下数据,其他的节点和路由都无法收到数据。
|
点对多通信
描述:一个节点向指定的多个节点发送数据
格式:O2M 目的地址个数 目的地址1 目的地址2 … 发送的数据
示例:
如果A模块要向B,C模块发送数据“Hello World”,操作和现象如下: 通过AT+GETADDR读取A,B,C模块的短地址 字符串输入框:
字符串接收框:
在A模块使用O2M指令就可以给B、C模块发送数据了。如下:
此时就只有B,C模块能收到以下数据,其他的节点和路由都无法收到数据。
|
使用上位机
上位机介绍
ZBSCOMM是微雪电子根据本模块专门开发的一款上位机软件,通过它可以对模块进行设置并且能够读取当前模块的配置信息;如果你不想采用上位机配置模块,同样也可以通过模块内置的AT指令集完成操作。
指令详解
表 1: 重启模块
命令 | AT+RESTART |
输入参数 | 无 |
返回值 | RESTART OK |
备注 | 当串口返回 RESTART OK 之后,模块重新启动 |
表 2: 恢复出厂设置
命令 | AT+RESET |
返回值 | SETUART OK SETCHN OK SETPANID OK |
备注 | 重启模块之后生效
出厂参数: PANID :0xFFFF(随机分配) CHANNEL:11/2405MHz (随机分配) UART选择:0(选择串口0) 波特率:38400 流控制:0(无流控制) |
表 3: 串口信息配置
命令 | AT+SETUART 串口通道 波特率 流控制(命令参数之间用空格隔开) |
功能介绍 | 设置串口号,波特率,流控制, |
输入参数 | 串口通道:这里必须写0,选择串口0进行配置。
波特率:9600-115200 流控制:这里必须写0,关闭流控制 |
返回值 | 成功:SETUART OK
失败:SETUART ERR |
备注 | 出厂参数:UART选择:0(选择串口0)
波特率:38400 流控制:0(无流控制) |
示例:
如果需要设置串口的波特率,只需在字符串输入框中输入“AT+SETUART 0 38400 0” 点击发送即可,需重启设备才生效,操作和现象如下: 字符串输入框:
字符串接收框:
|
表 4: 信道设置
命令 | AT+SETCHN 信道 |
功能介绍 | 设置Zigbee的信道。 |
输入参数 | 信道: 取值范围 11-26。 |
返回值 | 成功返回: SETCHN OK
失败返回: SETCHN ERR |
备注 | 所有的模块必须设置为同一的信道才可以进行组网,默认自动分配。
出厂参数: 默认随机分配 。 |
表 5: 设置PAN ID
命令 | AT+SETPANID 局域网标志符 |
功能介绍 | Zigbee协议使用一个16位的局域网标志符(PANID)来标识一个网络 |
输入参数 | 局域网标志符 :0x0000-0x3FFE |
返回值 | 成功返回:SETPANID OK
失败返回:SETPANID ERR |
备注 | 如果PANID=0xFFFF:设备将建立或加入一个“最优”的网络。
如果PANID≠0xFFFF:设备建立或加入指定PANID网络。 PANID的出现一般是伴随在确定信道以后的。 |
表 6: 读取所有配置信息
命令 | AT+GETCFG |
功能介绍 | 读取所有的配置信息 |
输入参数 | 无 |
返回值 | UART:串口的参数(波特率,流控制)。
PANID:局域网标志符 ADDR:自己的短地址 FADDR:父辈的短地址 CHANNEL:模块的通信信道 |
表 7: 读取串口配置信息
命令 | AT+GETUART |
功能介绍 | 读取串口的配置信息 |
输入参数 | 无 |
返回值 | 串口编号:0/1(串口0/串口1)
串口波特率:9600-115200 流控制:0/1(没有流控制/有流控制) |
表 8: 读取当前通信信道
命令 | AT+GETCHN |
功能介绍 | 读取模块的通信信道 |
输入参数 | 无 |
返回值 | 返回 CHANNEL的信道值 |
表 9: 读取自身PAN ID
命令 | AT+GETPANID |
功能介绍 | 读取当前网络的标示符 |
输入参数 | 无 |
返回值 | 成功将返回:PANID=0xxxx;
不成功返回:PANID=0xFFFE |
表 10: 读取自身短地址
命令 | AT+GETADDR |
功能介绍 | 读取自身短地址 |
输入参数 | 无 |
返回值 | 返回ADDR=0xXXXX; |
备注 | 短地址长度:16位
用于点对点,点对多的数据传输 |
表 11: 读取父节点短地址
命令 | AT+GETFADDR |
功能介绍 | 读取父节点的短地址 |
输入参数 | 无 |
返回值 | FADDR=0xXXXX; |
备注 | 短地址长度:16位 |
表 12: 读取自身IEEE地址
命令 | AT+GETIEEE |
功能介绍 | 读取自身IEEE地址 |
输入参数 | 无 |
返回值 | IEEE=xx xx xx xx xx xx xx xx |
备注 | 设备的IEEE是一个64位的地址 |
表 13: 读取父节点IEEE地址
命令 | AT+GETFIEEE |
功能介绍 | 读取父节点的IEEE地址 |
输入参数 | 无 |
返回值 | MY_FIEEE=xx xx xx xx xx xx xx xx |
备注 | 父设备的IEEE是一个64位的地址 |