弘毅 发表于 2014-9-2 18:03:59

Honeybee Zigbee无线通信讲解03--带地址通信

本帖最后由 弘毅 于 2014-9-5 20:18 编辑

前两篇介绍Honeybee的时候我们使用的其实是广播模式,在这种模式下只要你在一个信道中A发送的消息,BCDE等就都能收到。这样子在数据量小的时候是没有问题的,接收端遇到不想要的信息过滤一下就可以了。但是如果数据量大了,过滤量就会比较大,缓冲区也会常常会溢出。

这时我们该怎样处理这种问题呢?

我们使用带地址的通信方式就可以解决。

在Zigbee网络中,我们使用一个16位的数字来表示设备的网络地址,范围是0-65535。

使用地址以后,网络中接收端对所有数据接收后首先都会查看地址,是否是发送给自己的,如果不是发送给自己的就会进行丢弃。

语法
Zigbee.address(本机地址,目标地址)
参数
本机地址: 0-65535
目标地址: 0-65535
返回值


首先看一下接1号机代码
#include <at128rfa1.h>

void setup()
{
Zigbee.begin(11);// 初始化Zigbee,定义信道
Serial.begin(9600); // 启用串口,波特率9600
Zigbee.address(1,0); // 定义Zigbee地址本机地址1,发送地址0
}

void loop()
{
if (Zigbee.available()>0) // 判断Zigbee数据接收缓冲区是否有数据
{
    Serial.println();
    Serial.print("Rx: ");
    while(Zigbee.available())
    Serial.write(Zigbee.read());// 读取缓冲区数据,通过串口输出。
}
}

然后看一下接收2号机代码
#include <at128rfa1.h>

void setup()
{
Zigbee.begin(11);// 初始化Zigbee,定义信道
Serial.begin(9600); // 启用串口,波特率9600
Zigbee.address(2,0); // 定义Zigbee地址本机地址2,发送地址0
}

void loop()
{
if (Zigbee.available()>0) // 判断Zigbee数据接收缓冲区是否有数据
{
    Serial.println();
    Serial.print("Rx: ");
    while(Zigbee.available())
    Serial.write(Zigbee.read());// 读取缓冲区数据,通过串口输出。
}
}

最后是发送端的代码。

#include <at128rfa1.h>

void setup()
{
Zigbee.begin(11);// 初始化Zigbee,定义信道
Serial.begin(9600);
Zigbee.address(0,1); // 定义Zigbee地址本机地址0,发送地址1
}

void loop()
{
// 串口接收到数据,通过Zigbee发送
if (Serial.available())
{
    Zigbee.beginTransmission();
    Serial.println();
    Serial.print("Tx: ");
    while(Serial.available())
    {
      char c = Serial.read();
      Serial.write(c);
      Zigbee.write(c);
    }
    Serial.println();
    Zigbee.endTransmission();
}
}


为了能更好的查看数据,我们需要同时打开三个串口监视器。两个接收端我们使用一个第三方的串口助手。发送端使用IDE自带的串口监视器。

在发送端,我们首先使用Zigbee.address(0,1);来设定本机地址是0,目标是1。下载代码后打开串口监视器,发送1,2,3,4这几个数据,看看是接收端哪边收到。

然后使用Zigbee.address(0,2);来设定本机地址是0,目标地址是2。下载好代码后打开串口监视器,发送5,6,7,8,9这几个数据,看看是不是二号机接收到数据。

惯例上图~~要点击放大后才能看清哦

sanyouhi 发表于 2015-4-2 21:00:12

竟然没有人顶:o,感谢弘毅大师

公孙林 发表于 2015-4-28 10:20:51

at128rfa1.h库哪里来的?

songtxc 发表于 2015-5-19 15:18:59

強,學習了
页: [1]
查看完整版本: Honeybee Zigbee无线通信讲解03--带地址通信