“监视器透传实验”的版本间的差异
853387039@qq.com(讨论 | 贡献) (Created page with "{| style="width: 800px;" |- | ==目的== 本教程展示了Microduino-Zigbee模块的数据透传,本实验将采用Core、Core+进行实验。 ==设备== *Microduino模块 ...") |
853387039@qq.com(讨论 | 贡献) (→配置) |
||
(未显示同一用户的16个中间版本) | |||
第23行: | 第23行: | ||
你需要通过AT命令配置一个模块为协调器,另一个模块为路由器。AT命令使用参考: | 你需要通过AT命令配置一个模块为协调器,另一个模块为路由器。AT命令使用参考: | ||
[[多种AT命令调试方式]] | [[多种AT命令调试方式]] | ||
− | * | + | *配置路由器 |
**先通过+++进入AT命令模式 | **先通过+++进入AT命令模式 | ||
− | **通过AT+DETP= | + | **通过AT+DETP=01命令设置成路由器模式,返回值为:OK。可通过AT+DETP?来查看,返回值为:+DETP 01 |
*配置协调器 | *配置协调器 | ||
**模块出厂默认为协调器,你可以通过AT+DETP?来查看设备类型: | **模块出厂默认为协调器,你可以通过AT+DETP?来查看设备类型: | ||
***00-协调器 | ***00-协调器 | ||
− | *** | + | ***01-路由器 |
***02-节点 | ***02-节点 | ||
+ | |||
+ | 路由器必须reset才能给协调器发送消息,告诉协调器准备好了,同时发送数据给协调器。 | ||
+ | |||
+ | *'''非协调器设备加入网络之后自动发送包含自己IEEE地址和短地址的报告数据包到协调器,不需人工干预,格式为+ZBC=<logicalType>,<localshortddr>,<localieeeaddr><\r\n>''' | ||
+ | ** logicalType:设备类型 | ||
+ | ** localshortddr:短地址,这个很重要,协调器和路由、节点是通过短地址来进行身份验证的 | ||
+ | **协调器返回了该数据,就说明组网了,可以进行数据传输。一般先重启协调器,再重启路由,再重启节点就能组网了。 | ||
==硬件搭建== | ==硬件搭建== | ||
第36行: | 第43行: | ||
将Microduino-USBTTL、Microduino-Zigbee与Microduino-Core(或Microduino-Core+)三个模块直接叠加 | 将Microduino-USBTTL、Microduino-Zigbee与Microduino-Core(或Microduino-Core+)三个模块直接叠加 | ||
− | [[File: | + | [[File:Zigbee_Bridge_all.jpg|600px|center|thumb]] |
==调试== | ==调试== | ||
第119行: | 第126行: | ||
我们可以看到程序和AT命令调试的程序是一样的,但是AT模式要通过+++命令来实现。 | 我们可以看到程序和AT命令调试的程序是一样的,但是AT模式要通过+++命令来实现。 | ||
*分别打开两个IDE开发环境,将程序复制到编辑框,选择好板卡和COM端口,将程序分别下载到核心。 | *分别打开两个IDE开发环境,将程序复制到编辑框,选择好板卡和COM端口,将程序分别下载到核心。 | ||
− | * | + | *打开两个开发环境的串口监视器,选择好波特率,这里是9600,你得知道哪个监视器对应的是协调器的,哪个对应的是路由器的。也可通过+++进入AT模式,再通过AT+SRST复位来查看类型,如果复位的是路由器,并且看到协调器上返回了数据,就可以直接通讯了。 |
− | [[File:Zigbee_style.jpg| | + | [[File:Zigbee_style.jpg|800px|center|thumb]] |
*路由器给协调器发送数据: | *路由器给协调器发送数据: | ||
**数据输入框中写入你想发送的数据,如Hello Microduino!,然后发送,可以看到协调器接收到: +ZBD=XXXX, Hello Microduino!,XXXX为你的路由器的为短地址。 | **数据输入框中写入你想发送的数据,如Hello Microduino!,然后发送,可以看到协调器接收到: +ZBD=XXXX, Hello Microduino!,XXXX为你的路由器的为短地址。 | ||
− | [[File:Zigbee_01_00.jpg| | + | [[File:Zigbee_01_00.jpg|800px|center|thumb]] |
*协调器给路由器发送数据: | *协调器给路由器发送数据: | ||
− | **数据输入框中输入数据,注意格式为:+ZBD=XXXX, | + | **数据输入框中输入数据,注意格式为:+ZBD=XXXX,YYYY,XXXX为你的路由器的短地址,YYYY为你想发送的数据,这样路由器才能接收。如+ZBD=XXXX,Welcome!,然后发送,可以看到路由器接收到: +ZBD=XXXX,Welcome! |
− | [[File:Zigbee_00_01.jpg| | + | [[File:Zigbee_00_01.jpg|800px|center|thumb]] |
+ | |||
+ | *如果无法正常发送,请先重启下协调器,再重启下路由器。有两种方法: | ||
+ | **按下Core核心的复位按键 | ||
+ | **通过+++进入AT模式,再通过AT+SRST复位 | ||
===注意=== | ===注意=== | ||
*如果不能实现数据传输,请检查Microduino-Zigbee模块是否已通过AT指令配置合理(节点类型,波特率等)。或者复位模块。AT命令使用参考:[[多种AT命令调试方式]] | *如果不能实现数据传输,请检查Microduino-Zigbee模块是否已通过AT指令配置合理(节点类型,波特率等)。或者复位模块。AT命令使用参考:[[多种AT命令调试方式]] | ||
*协调器给路由器发送数据必须加上+ZBD=XXXX,格式才行,因为要识别身份。 | *协调器给路由器发送数据必须加上+ZBD=XXXX,格式才行,因为要识别身份。 | ||
+ | |||
|} | |} |
2014年11月27日 (四) 13:44的最新版本
目的本教程展示了Microduino-Zigbee模块的数据透传,本实验将采用Core、Core+进行实验。 设备
配置你需要通过AT命令配置一个模块为协调器,另一个模块为路由器。AT命令使用参考: 多种AT命令调试方式
路由器必须reset才能给协调器发送消息,告诉协调器准备好了,同时发送数据给协调器。
硬件搭建
将Microduino-USBTTL、Microduino-Zigbee与Microduino-Core(或Microduino-Core+)三个模块直接叠加 调试串口工具调试
协调器程序和路由节点是一样的,都是接收到串口监视器(Serial)的数据,再通过另一个串口转发出去,对于Core+来说就是串口1(Serial1),对于Core就是软串口(mySerial(2, 3))。
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);
}
/*
core hardware(RX0,TX1) =9600
core software(D2,D3)=9600 must match with cc2530 setup.when change cc2530 baud rate
*/
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
String myStringSoftCom="";
String myStringHardCom="";
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
}
void loop() // run over and over
{
while (Serial.available() > 0)
{
myStringHardCom += char(Serial.read());
delay(2);
}
if(myStringHardCom!="")
mySerial.println(myStringHardCom);
myStringHardCom="";
while (mySerial.available() > 0)
{
myStringSoftCom += char(mySerial.read());
delay (2);
}
if (myStringSoftCom.length() > 0)
{
Serial.print(myStringSoftCom);
myStringSoftCom="";
}
delay(100);
}
我们可以看到程序和AT命令调试的程序是一样的,但是AT模式要通过+++命令来实现。
注意
|