|
信道是对无线通信中发送端和接收端之间的通路的一种形象比喻,对于无线电波而言,它从发送端传送到接收端,其间并没有一个有形的连接,它的传播路径也有可能不只一条,但是我们为了形象地描述发送端与接收端之间的工作,我们想象两者之间有一个看不见的道路衔接,把这条衔接通路称为信道。
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信道的信息。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|