swim 发表于 2013-5-27 13:29:43

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板子,你可以使用更多)

分别打开串口监视器

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

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

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

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

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

学长 发表于 2013-5-31 21:35:00

空旷200m 是很不错.. 但室内呢?一般150-200平米 三房的室内空间呢?死角的情况高不高?
谢谢

swim 发表于 2013-5-31 21:41:54

学长 发表于 2013-5-31 21:35 static/image/common/back.gif
空旷200m 是很不错.. 但室内呢?一般150-200平米 三房的室内空间呢?死角的情况高不高?
谢谢

在室内的话,大概可以覆盖100平方的样子,没有那么大的房子可供测试。。。

nust_奔跑 发表于 2013-7-4 10:37:35

swim 发表于 2013-5-31 21:41 static/image/common/back.gif
在室内的话,大概可以覆盖100平方的样子,没有那么大的房子可供测试。。。

工程师,还有什么例程,就赶紧放出来吧!

swim 发表于 2013-7-4 16:41:45

nust_奔跑 发表于 2013-7-4 10:37 static/image/common/back.gif
工程师,还有什么例程,就赶紧放出来吧!

最近会出无线RGB控制

zhangdeyue1 发表于 2013-8-6 18:55:19

这个板子哪里有卖的??????

迷你强 发表于 2015-1-27 14:51:00

zhangdeyue1 发表于 2013-8-6 18:55 static/image/common/back.gif
这个板子哪里有卖的??????

本论坛淘宝店

原野动力 发表于 2016-5-9 18:06:48

好资料,研究下,
页: [1]
查看完整版本: HoneyBee入门教程--第二课--无线串口通信