2011年8月4日 星期四

XBee Light Sensor

在這篇裏,我們將用 XBee 製作一個 Zigbee 無線 Light Sensor。

image

你需要這些材料:

  • 光敏電阻 (photocell) x 1
  • 10k 歐姆電阻 x 1
  • Arduino x 2
  • XBee Shield and XBee module x 2

我們將採集光敏電阻的讀值,讓 End Device 透過 Zigbee 無線通訊把資料傳給 coordinator,然後透過 USB 把 coordinator 跟電腦接在一起,這樣電腦便可以收集光敏電阻的讀值。coordinator 與電腦的連接方法有兩個,一個是使用 sparkfun XBee Explorer USB 轉板:

image
XBee Explorer USB

XBee Explorer USB 的功能主要是 USB 轉 UART 並且做 3.3V 與 5V 之間的 Level Shift。另一個方法是用 XBee shield,但是用這個方法最好把 ATmega 晶片從 Arduino 板子上取下,而且要把 XBee Shield 上的兩個 jumper 都切到 USB 的位置。

設定 XBee modules

參考「Arduino and XBee Series 2」這篇,把 function set 為 "ZIGBEE COORDINATOR AT" 的韌體寫入到要當 coordinator 的 XBee module,把 function set 為 "ZIGBEE END DEVICE AT" 的韌體寫入到要當 End device 的 XBee module。參數全部使用預設值即可,不用修改。

完成設定後,把 coordinator 透過 USB 接到電腦,並且打開 X-CTU,等候 End device 來與之連線。

測試通訊

首先,將底下的程式上傳到 End Device 的 Arduino 板子上:

完成上傳後,可以利用 serial monitor 確認程式動作是否正確,正常的話,應該會看到 H 和 L 每秒鐘會出現一個。

接著把要當 End Device 的 XBee module 接到 Arduino 板子上。當 End device 連上 coordinator 的時候,就會看到 X-CTU 的 Terminal 視窗上會收到 H 和 L 的訊息,一秒鐘來一個,這些是 End device 透過 Zigbee 無線通訊傳過來的資料:

image

XBee Light Sensor

接著把光敏電阻接到 End Device 端的 Arduino 板子上,接線方法為:光敏電阻一支腳接到 5V,另一支腳串接一顆 10k 電阻接到 analog pin 2。然後把底下的程式上傳到 Arduino 板子上:

當 End device 重新與 coordinator 建立連線後,打開 X-CTU 的 terminal 視窗,應該會看到類似底下視窗的結果,如果有的話,恭禧你,你已經完成了一個 XBee Light Sensor:

image
▲ End device 透過 Zigbee 無線通訊送過來的光敏電阻讀值 (其中,0D 0A 是換行符號)

延伸閱讀

0 意見: