|
本帖最后由 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,更多精彩内容敬请期待 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|