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板子,你可以使用更多)
2013-5-27 12:23 上传
(113.33 KB)
分别打开串口监视器
2013-5-27 12:25 上传
(35.95 KB)
然后我们可以尝试在任意一个串口监视器中输入内容并发送
2013-5-27 12:26 上传
(41.1 KB)
可以看到,我们在其中一块的串口上发送了HelloWorld!,另外一块板子立刻接收到了HelloWorld!这个内容,并且在下方还有信号强度和质量等信息,然后我们试着在另外一块的串口上发送数据
2013-5-27 12:29 上传
(42.59 KB)
同样的,再另一个串口上也接受到了我们发射的数据,是不是很简单呢?
我们同时可以发现,在发送和接收数据的时候,HoneyBee控制板上的RXRX和RXTX灯将会亮起,方便我们观察。
经过我们的实地测试,两块HoneyBee之间的通信在使用2dbm天线的空旷场地下情况下可达到200m,看到这里大家是否对HoneyBee产生兴趣了呢,下节课我们将介绍无线点亮LED,更多精彩内容敬请期待
via - 极客工坊