组网实验

来自Microduino Wikipedia
跳转至: 导航搜索

目的

本教程展示了Microduino-Zigbee模块的组网透传,本实验将采用Core+进行实验。

简介

  • Zigbee网络的设备类型

在Zigbee网络中,有三种不同类型的设备,分别叫做:协调器(Coordinator)、路由器(Router)和终端节点(End Device),如图所示:

  • 协调器的功能特点
    • 选择一个频道和PAN ID,组建网络
    • 允许路由和终端节点加入这个网络
    • 对网络中的数据进行路由
  • 路由器的功能特点
    • 在进行数据收发之前,必须首先加入一个zigbee网络
    • 本身加入网络后,允许路由和终端节点加入
    • 加入网络后,可以对网络中的数据进行路由
  • 终端节点的功能特点
    • 在进行数据收发之前,必须首先加入一个zigbee网络
    • 不能允许其他设备加入
    • 必须通过其父节点收发数据,不能对网络中的数据进行路由

设备

  • Microduino模块
模块 数量 功能
Microduino-Zigbee/zh 3 无线通讯
Microduino-Core+/zh 3 核心
Microduino-USBTTL/zh 3 下载程序

配置

你需要通过AT命令配置一个模块为协调器,一个模块为路由器,另一个为节点。AT命令使用参考: 多种AT命令调试方式

  • 配置协调器
    • 模块出厂默认为协调器,你可以通过AT+DETP?来查看设备类型:
      • 00-协调器
      • 01-路由器
      • 02-节点
  • 配置路由器
    • 先通过+++进入AT命令模式
    • 通过AT+DETP=01命令设置成路由器模式,返回值为:OK。可通AT+DETP?来查看,返回值为:+DETP 01
  • 配置节点
    • 先通过+++进入AT命令模式
    • 通过AT+DETP=02命令设置成路由器模式,返回值为:OK。可通过AT+DETP?来查看,返回值为:+DETP 02
  • 非协调器设备加入网络之后自动发送包含自己IEEE地址和短地址的报告数据包到协调器,不需人工干预,格式为+ZBC=<logicalType>,<localshortddr>,<localieeeaddr><\r\n>
    • logicalType:设备类型
    • localshortddr:短地址,这个很重要,协调器和路由、节点是通过短地址来进行身份验证的
    • 协调器返回了该数据,就说明组网了,可以进行数据传输。一般先复位协调器,再复位路由,再复位节点就能组网了。

硬件搭建

  • 协调器、路由器、节点搭建完全一样:

将Microduino-USBTTL、Microduino-Zigbee与Microduino-Core+三个模块直接叠加

调试

串口工具调试

这里使用Core+调试

  • 程序
String myStringSerial1="";
String myStringSerial="";
void setup()  
{
  Serial.begin(9600);
  Serial1.begin(9600);
}

void loop() // run over and over
{
  while (Serial.available() > 0)  
  {
    myStringSerial += char(Serial.read());
    delay(2);
  }
  if(myStringSerial!="")
    Serial1.println(myStringSerial); 
  myStringSerial="";
  while (Serial1.available() > 0)  
  {
    myStringSerial1 += char(Serial1.read());
    delay(2);
  }
  if (myStringSerial1.length() > 0)
  {   
    Serial.print(myStringSerial1);
    myStringSerial1="";
  }
  delay(100);
}
  • 分别打开三个IDE开发环境,将程序复制到编辑框,选择好板卡和COM端口,将程序分别下载到核心。
  • 打开三个开发环境的串口监视器,选择好波特率,这里是9600,你得知道哪个监视器对应的是协调器的,哪个个对应的是路由器,哪个对应的是节点。也可通过+++进入AT模式,再通过AT+SRST复位来查看类型。如果复位的是路由器和节点,并且看到协调器上返回了数据,就可以直接通讯了。
  • 节点、路由器给协调器发送数据:
    • 节点和路由器发送给协调器的格式是一样的
    • 数据输入框中写入你想发送的数据,如Hello Microduino!,然后发送,可以看到协调器接收到: +ZBD=XXXX, Hello Microduino!,XXXX为你的路由器或节点的短地址。
      • 路由器给协调器发送数据
      • 节点给协调器发送数据
  • 协调器给路由器、节点发送数据:
    • 数据输入框中输入数据,注意格式为:+ZBD=XXXX,YYYY,XXXX为你的路由器或节点的短地址,YYYY为你想发送的数据,这样路由器和节点才能接收。
      • 协调器给路由器发送数据
      • 协调器给节点发送数据
  • 当你断开路由器,节点也可以给协调器通讯,是因为近距离,可以组成星形网络,节点和协调器之间通信不通过路由,距离远,节点要通过路由给协调器通信(mesh网络)。

注意

  • 如果不能实现数据传输,请检查Microduino-Zigbee模块是否已通过AT指令配置合理(节点类型,波特率等)。或者复位模块。AT命令使用参考:多种AT命令调试方式
  • 一般先复位协调器,再复位路由,再复位节点就能组网了。
  • 协调器给路由器、节点发送数据必须加上+ZBD=XXXX,格式才行,因为要识别身份。