HoneyBee教程入门系列-第二课-无线串口通信 教程,通信

swim 于 2013-5-27 16:36 编辑



由于HoneyBee兼容普通Arduino,本教程将暂时先不介绍普通Arduino的内容,后面慢慢补。。Arduino的一些基本操作可参考Arduino入门教程系列。



本课中将带大家体验最简单的Zigbee通信案例,无线串口通信。

本课中的代码为example中的ZigduinoRadio-ZigduinoRadioExample

本课中使用的无线模式为广播模式



代码如下:

/*
翻译:swim
时间:2013年5月27日
发表地址:www.geek-workshop.com
程序说明:无线串口通信
*/
#include <ZigduinoRadio.h>
 
void setup()
{
//初始化Zigbee,定义通道
  ZigduinoRadio.begin(11);
  Serial.begin(9600);
//这两个函数是检测数据是否成功发送
  ZigduinoRadio.attachError(errHandle);
  ZigduinoRadio.attachTxDone(onXmitDone);
}
 
void loop()
{
//串口接收到数据,通过Zigbee发送;Zigbee接收到数据,通过串口打出
  if (Serial.available())
  {
    ZigduinoRadio.beginTransmission();
 
    Serial.println();
    Serial.print("Tx: ");
 
    while(Serial.available())
    {
      char c = Serial.read();
      Serial.write(c);
      ZigduinoRadio.write(c);
    }
 
    Serial.println(); 
 
    ZigduinoRadio.endTransmission();
  }
 
  if (ZigduinoRadio.available())
  {
    Serial.println();
    Serial.print("Rx: ");
 
    while(ZigduinoRadio.available())
      Serial.write(ZigduinoRadio.read());
//打印出无线通信的信号强度、质量等参数      
    Serial.println();
    Serial.print("LQI: ");
    Serial.print(ZigduinoRadio.getLqi(), 10);
    Serial.print(", RSSI: ");
    Serial.print(ZigduinoRadio.getLastRssi(), 10);
    Serial.print(" dBm, ED: ");
    Serial.print(ZigduinoRadio.getLastEd(), 10);
    Serial.println("dBm");
  }
 
  delay(100);
}
 
void errHandle(radio_error_t err)
{
  Serial.println();
  Serial.print("Error: ");
  Serial.print((uint8_t)err, 10);
  Serial.println();
}
 
void onXmitDone(radio_tx_done_t x)
{
  Serial.println();
  Serial.print("TxDone: ");
  Serial.print((uint8_t)x, 10);
  Serial.println();
}



可以看到,HoneyBee的无线通信非常简单,几乎和串口的使用无差别,其中程序中有两个函数可以检测发送内容是否成功发送,在以后的课程中,我们将会使用这两个函数来介绍可靠发送的实现,即接收端收到数据后将返回一个值给发射端。



将该代码分别下载到每一块HoneyBee板子上(本次实验我们使用了2块HoneyBee板子,你可以使用更多)

1.jpg

2013-5-27 12:23 上传
(113.33 KB)



分别打开串口监视器

2.jpg

2013-5-27 12:25 上传
(35.95 KB)



然后我们可以尝试在任意一个串口监视器中输入内容并发送

3.jpg

2013-5-27 12:26 上传
(41.1 KB)



可以看到,我们在其中一块的串口上发送了HelloWorld!,另外一块板子立刻接收到了HelloWorld!这个内容,并且在下方还有信号强度和质量等信息,然后我们试着在另外一块的串口上发送数据

4.jpg

2013-5-27 12:29 上传
(42.59 KB)



同样的,再另一个串口上也接受到了我们发射的数据,是不是很简单呢?



我们同时可以发现,在发送和接收数据的时候,HoneyBee控制板上的RXRX和RXTX灯将会亮起,方便我们观察。



经过我们的实地测试,两块HoneyBee之间的通信在使用2dbm天线的空旷场地下情况下可达到200m,看到这里大家是否对HoneyBee产生兴趣了呢,下节课我们将介绍无线点亮LED,更多精彩内容敬请期待
via - 极客工坊

标签: Arduino教程