弘毅 发表于 2014-8-18 21:20:27

Honeybee Zigbee无线通信讲解02--信道

信道是对无线通信中发送端和接收端之间的通路的一种形象比喻,对于无线电波而言,它从发送端传送到接收端,其间并没有一个有形的连接,它的传播路径也有可能不只一条,但是我们为了形象地描述发送端与接收端之间的工作,我们想象两者之间有一个看不见的道路衔接,把这条衔接通路称为信道。

2.4G频段的Zigbee定义了16个信道,信道间隔为5MHz。

通道频率计算公式如下:
Fc=2405MHz+5(k-11)MHz,(k=11,12……26)

在2.4G频段下数据传输速率为250kb/s。

在Zigbee的通信中只有在同一个信道下收发双方才能正常通信,如果收发双方不在一个信道中就是喊破喉咙。。。对方也收不到。

这次我们使用三块Honeybee,分别是1,2,3号机,1,2号机分别工作在不同的信道不停往外发送数据。3号机进行接收,

1号机代码
#include <at128rfa1.h>

void setup()
{
Zigbee.begin(11);// 初始化Zigbee,定义信道为11
}

void loop()
{
Zigbee.beginTransmission(); // 启动传输
Zigbee.write("I'm one."); // 发送数据
Zigbee.endTransmission(); // 结束传输
delay(500); // 延时500毫秒
}

二号机代码
#include <at128rfa1.h>

void setup()
{
Zigbee.begin(26);// 初始化Zigbee,定义信道为26
}

void loop()
{
Zigbee.beginTransmission(); // 启动传输
Zigbee.write("I'm two."); // 发送数据
Zigbee.endTransmission(); // 结束传输
delay(500); // 延时500毫秒
}

接收端代码我们首先初始化到11信道,看看接收到的数据,然后定义到26信道,再看看接收到的数据,进行一下对比。
#include <at128rfa1.h>

void setup()
{
Zigbee.begin(11);// 初始化Zigbee,定义信道
Serial.begin(9600); // 启用串口,波特率9600
}

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


惯例SHOW图~



把接收端在11和26信道之间切换,我们可以发现,在11信道是收不到26信道的信息的,在26信道同里也收不到11信道的信息。

Dzz 发表于 2014-9-1 16:49:35

一楼占座!很不错的入门教程{:soso_e142:}{:soso_e142:}

wing 发表于 2014-9-3 12:31:42

thinkpad大特写呢,
这是什么型号呢?

wing 发表于 2014-9-3 12:32:37

哦W510,价格怎么样?

弘毅 发表于 2014-9-3 16:10:14

wing 发表于 2014-9-3 12:32 static/image/common/back.gif
哦W510,价格怎么样?

貌似3000块~

yuzby 发表于 2014-9-26 21:32:55

弘毅 发表于 2014-9-3 16:10 static/image/common/back.gif
貌似3000块~

是三万吧...........
页: [1]
查看完整版本: Honeybee Zigbee无线通信讲解02--信道