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供電就有點小牛拉大車的感覺,所以建議使用外部供電,保證模塊能正常工作。