“如何与其它Microduino模块连接”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
方法二
 
(未显示同一用户的4个中间版本)
第1行: 第1行:
 
==目的==
 
==目的==
*用AT指令调试Microduino-Zigbee模块时,串行通讯口为D2、D3脚。如何连接Microduino-Zigbee与其它Microduino模块实现AT指令的调试?本教程给出了三种连接方式,方便读者灵活使用Microduino系列产品。
+
*用AT指令调试Microduino-Zigbee模块时,默认串行通讯口为D2、D3脚。本教程给出了三种调试方法,方便读者灵活使用Microduino系列产品。
  
==设备==
+
==方法一==
*'''[[Microduino-Zigbee/zh]]'''
+
*只用[[Microduino-USBTTL/zh]]调试Microduino-Zigbee模块,注意:Microduino-USBTTL与Microduino-Zigbee不能直接叠加。连接方式为:
*'''[[Microduino-Core/zh]]'''
 
*'''[[Microduino-Core+/zh]]'''
 
*'''[[Microduino-USBTTL/zh]]'''
 
 
 
==实验方式==
 
 
 
===Microduino-USBTTL与Microduino-Zigbee===
 
Microduino-USBTTL与Microduino-Zigbee不能直接叠加。
 
连接方式应为
 
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
第27行: 第18行:
 
|}
 
|}
  
实物连接见下图
+
如图:
 +
 
 
[[File: usbttl-zigbee.jpg|600px|center|thumb]]
 
[[File: usbttl-zigbee.jpg|600px|center|thumb]]
  
确认导线连接无误后插入USB数据线,然后打开串口调试助手。串口调试助手下载:[[File: com assist.rar]]
+
*确认导线连接无误后插入USB数据线,然后打开串口调试助手,将波特率选择“9600”(默认),并且要选择回车换行(\r\n)模式:
串口调试助手软件界面见下图:
+
[[File: com assist UI.jpg|600px|center|thumb]]
[[File: com assist UI.jpg|600px|center|thumb]]
+
*在串口输入框中输入+++进入(返回CCATMODE LOGIN)或退出(返回CCATMODE LOGOUT )AT命令模式。
串口如果没有打开,可以点击串口号的列表框按钮查询。发送新行的复选框应该选上对勾。在字符串输入框输入“+++”,点击发送,可以看到Zigbee模块回馈的信息了。
+
[[File: com assist UI-1.jpg|600px|center|thumb]]
笔者用的波特率是9600。可以输入AT+BAUD=0X设定Zigbee模块的波特率,输入AT+SRST点击发送后重启Zigbee模块可以保存设置值,下次上电无需再设置了。
+
*可以输入AT+BAUD=0X(00-04)设定Zigbee模块的波特率
更多输入指令(AT指令)的含义会在后续文档中介绍。
+
**00=9600;
 +
**01=19200;
 +
**02=38400;
 +
**03=57600;
 +
**04=115200
 +
*输入AT+SRST命令,则重启Zigbee模块,AT+FRST命令,则模块恢复出厂设置。更多命令请参考文档:
  
===Microduino-USBTTL与Microduino-Core与Microduino-Zigbee===
+
==方法二==
Microduino-USBTTL与Microduino-Core与Microduino-Zigbee三个模块可以直接叠加。叠加后需要在Microduino-Core的程序中写入程序,用到SoftwareSerial库。
+
*使用Microduino-Core作为核心,这时你要用到[[Microduino-USBTTL/zh]]与[[Microduino-Core/zh]]与[[Microduino-Zigbee/zh]]。
程序如下:
+
原理是Microduino-USBTTL将电脑的数据先发送给Microduino-Core,Microduino-Core再通过软串口发送给Microduino-Zigbee,这样的优点在于不用接杜邦线。
 +
*将三个模块可以直接叠加。叠加后将程序下载到Microduino-Core,同时用到SoftwareSerial库。程序如下:
 
<source lang="cpp">
 
<source lang="cpp">
 
/*
 
/*
 
  core hardware(RX0,TX1) =9600
 
  core hardware(RX0,TX1) =9600
  core software(D2,D3)=38400 must match with cc2530 setup.when change cc2530 baud  rate
+
  core software(D2,D3)=9600 must match with cc2530 setup.when change cc2530 baud  rate
*/
+
*/
 
#include <SoftwareSerial.h>
 
#include <SoftwareSerial.h>
 
SoftwareSerial mySerial(2, 3); // RX, TX
 
SoftwareSerial mySerial(2, 3); // RX, TX
第54行: 第52行:
 
   Serial.begin(9600);
 
   Serial.begin(9600);
 
   // set the data rate for the SoftwareSerial port
 
   // set the data rate for the SoftwareSerial port
   mySerial.begin(38400);
+
   mySerial.begin(9600);
 
}
 
}
  
 
void loop() // run over and over
 
void loop() // run over and over
 
{
 
{
    while (Serial.available() > 0)   
+
  while (Serial.available() > 0)   
    {
+
  {
      myStringHardCom += char(Serial.read());
+
    myStringHardCom += char(Serial.read());
      delay(2);
+
    delay(2);
    }
+
  }
    if(myStringHardCom!="")
+
  if(myStringHardCom!="")
    mySerial.println(myStringHardCom);  
+
    mySerial.println(myStringHardCom);  
    myStringHardCom="";
+
  myStringHardCom="";
    while (mySerial.available() > 0)   
+
  while (mySerial.available() > 0)   
    {
+
  {
    myStringSoftCom += char(mySerial.read());
+
    myStringSoftCom += char(mySerial.read());
    delay (2);
+
    delay (2);
    }
+
  }
    if (myStringSoftCom.length() > 0)
+
  if (myStringSoftCom.length() > 0)
    {   
+
  {   
        Serial.println(myStringSoftCom);
+
    Serial.println(myStringSoftCom);
        myStringSoftCom="";
+
    myStringSoftCom="";
    }
+
  }
    delay(100);
+
  delay(100);
}
+
}</source>
</source>
+
下载成功后,然后打开串口调试助手,将波特率选择“9600”(默认),并且要选择回车换行(\r\n)模式,就可以开始AT命令了。
 
 
因为Microduino-core自带重启按钮,通过AT指令设定完参数后,可以点击重启按钮,设置好的参数会自动保存。
 
 
 
  
===Microduino-USBTTL与Microduino-Core+与Microduino-Zigbee===
+
==方法三==
三个模块可以直接叠加。程序如下
+
使用Core+作为核心,原理和Core是一样的,只是用到了Core+的Serial1(串口1),因此程序有所改变:
  
 
<source lang="cpp">
 
<source lang="cpp">
第98行: 第93行:
 
void loop() // run over and over
 
void loop() // run over and over
 
{
 
{
    while (Serial.available() > 0)   
+
  while (Serial.available() > 0)   
    {
+
  {
      myStringSerial += char(Serial.read());
+
    myStringSerial += char(Serial.read());
      delay(2);
+
    delay(2);
    }
+
  }
    if(myStringSerial!="")
+
  if(myStringSerial!="")
    Serial1.println(myStringSerial);  
+
    Serial1.println(myStringSerial);  
    myStringSerial="";
+
  myStringSerial="";
    while (Serial1.available() > 0)   
+
  while (Serial1.available() > 0)   
    {
+
  {
    myStringSerial1 += char(Serial1.read());
+
    myStringSerial1 += char(Serial1.read());
    delay(2);
+
    delay(2);
    }
+
  }
    if (myStringSerial1.length() > 0)
+
  if (myStringSerial1.length() > 0)
    {   
+
  {   
        Serial.println(myStringSerial1);
+
    Serial.println(myStringSerial1);
        myStringSerial1="";
+
    myStringSerial1="";
    }
+
  }
    delay(100);
+
  delay(100);
 
+
}</source>
}
+
三个模块直接叠加,打开IDE,将程序复制到IDE中,编译通过后选择好板卡下载到Core+核心,然后打开串口调试助手,将波特率选择“9600”(默认),并且要选择回车换行(\r\n)模式,就可以开始AT命令了。
</source>
 
  
==结果==
+
==注意问题==
*输入AT指令,在串口调试助手或是Arduino IDE自带的串口中观察数据。调用SoftwareSerial库时,在115200波特率下会有乱码。
+
*出厂默认的波特率是9600,如果无法通讯,请更换波特率试试;
 +
*数据通讯格式一定还要设置成“\r\n”,回车换行模式。
 +
*如果某些指令更改完毕断电重启后无效,请重新设置完毕后AT+SRST复位设备,这样新的网络参数才能生效。

2014年11月17日 (一) 09:10的最新版本

目的

  • 用AT指令调试Microduino-Zigbee模块时,默认串行通讯口为D2、D3脚。本教程给出了三种调试方法,方便读者灵活使用Microduino系列产品。

方法一

  • 只用Microduino-USBTTL/zh调试Microduino-Zigbee模块,注意:Microduino-USBTTL与Microduino-Zigbee不能直接叠加。连接方式为:
Microduino-USBTTL Microduino-Zigbee
GND GND
3V3 3V3
RX0 D3
TX1 D2

如图:

  • 确认导线连接无误后插入USB数据线,然后打开串口调试助手,将波特率选择“9600”(默认),并且要选择回车换行(\r\n)模式:
  • 在串口输入框中输入+++进入(返回CCATMODE LOGIN)或退出(返回CCATMODE LOGOUT )AT命令模式。
  • 可以输入AT+BAUD=0X(00-04)设定Zigbee模块的波特率
    • 00=9600;
    • 01=19200;
    • 02=38400;
    • 03=57600;
    • 04=115200
  • 输入AT+SRST命令,则重启Zigbee模块,AT+FRST命令,则模块恢复出厂设置。更多命令请参考文档:

方法二

原理是Microduino-USBTTL将电脑的数据先发送给Microduino-Core,Microduino-Core再通过软串口发送给Microduino-Zigbee,这样的优点在于不用接杜邦线。

  • 将三个模块可以直接叠加。叠加后将程序下载到Microduino-Core,同时用到SoftwareSerial库。程序如下:
/*
 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.println(myStringSoftCom);
    myStringSoftCom="";
  }
  delay(100);
}

下载成功后,然后打开串口调试助手,将波特率选择“9600”(默认),并且要选择回车换行(\r\n)模式,就可以开始AT命令了。

方法三

使用Core+作为核心,原理和Core是一样的,只是用到了Core+的Serial1(串口1),因此程序有所改变:

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.println(myStringSerial1);
    myStringSerial1="";
  }
  delay(100);
}

三个模块直接叠加,打开IDE,将程序复制到IDE中,编译通过后选择好板卡下载到Core+核心,然后打开串口调试助手,将波特率选择“9600”(默认),并且要选择回车换行(\r\n)模式,就可以开始AT命令了。

注意问题

  • 出厂默认的波特率是9600,如果无法通讯,请更换波特率试试;
  • 数据通讯格式一定还要设置成“\r\n”,回车换行模式。
  • 如果某些指令更改完毕断电重启后无效,请重新设置完毕后AT+SRST复位设备,这样新的网络参数才能生效。