美国DIGI公司的XBee模块无线通讯实验 2012-08-26 10:34
DFRobot公司出品的XBee适配器驱动就是Arduino Duemilanove控制器的驱动,因为它们都是采用了FIDI USB驱动,如果您已经安装了Arduino Duemilanove控制器的驱动,就不用安装了,如果您使用的是Arduino UNO控制器,可以在Arduino官网下载一个Arduino 0018版编程软件,它里面的drivers目录里就可以找到这个驱动。如图:(所有图片双击,都可以放大看!)
PC机通过USB线直接与XBee适配器连接,方便对XBee模块进行配置,把XBee模块按照正确方向,插到XBee适配器上,然后,用USB电缆把XBee适配器与PC机连接好之后, 运行X-CTU软件。
首先我们在“PC Settings”中里选择XBee适配器映射出来的串口通信端口(我实验中映射出的串口号为COM4),并设置好波特率9600b/s等参数。XBee模块出厂里默认的设置为9600,8N1。
int button_open =4;//开灯按钮连在数字端口4
int button_close =5; //关灯按钮连在数字端口5
char flag;//定义“向从机发送LED灯亮灭标志”的变量
void setup()
{
pinMode(button_open, INPUT); //设置按钮为输入模式
pinMode(button_close, INPUT);
Serial.begin(115200);//启动串口通信,波特率为115200b/s
}
void loop()
{
//如果亮灯按钮按下同时关灯按钮松开
if( digitalRead(button_open)==LOW&&digitalRead(button_close)==HIGH)
{
flag='a';
Serial.print(flag);//向从机发送灯亮标志
}
//如果关灯按钮按下同时亮灯按钮松开
if(digitalRead(button_close)==LOW&&digitalRead(button_open)==HIGH)
{
flag='b';
Serial.print(flag);//向从机发送灯灭标志
}
delay(20);//延时,等待数据发送成功
}
从机程序:
int ledpin=9;//LED灯连在数字端口9
int val; //定义“接受主机发来的LED灯亮灭标志”的变量
void setup()
{
pinMode(ledpin,OUTPUT);//设置LED灯为输出模式
digitalWrite(ledpin,HIGH);//初始化使LED灯熄灭
Serial.begin(115200);//启动串口通信,波特率为115200b/s
}
void loop()
{
if(Serial.available()>0) //查询串口有无数据
{
val=Serial.read();//读取主机发送的数据
if(val=='a')//如果主机发送字符'a',则点亮LED
{
digitalWrite(ledpin,LOW);//LED灯点亮
}
if(val=='b')//如果主机发送字符'b',则熄灭LED
{
digitalWrite(ledpin,HIGH);//LED灯熄灭
}
}
}
这次无线通讯实验采用的是1mW的XBee模块,所以对电源要求不高,如果采用发射功率60mW,传输距离1600米的XBee PRO模块,耗电也相对大些,直接用USB供电就有点小牛拉大车的感觉,所以建议使用外部供电,保证模块能正常工作。
沒有留言:
張貼留言