Saturday, November 16, 2013

Arduino Robot Review

Arduino Team 今年五月推出 Arduino Robot。這個Robot由 Control 板塊及 Motor 板塊所組成。 每個板塊由 ATmega32u4 所控制。 所用的主控制器和 Arduino Leonardo 一樣。 與 Arduino Leonardo 比較, Control 板塊另加有512 Kbit EEPROM,5 鍵 Keypad,轉動把手(Knob),  全彩 LCD,SD 讀卡器, 一個揚聲器, 一個數字指南針。 Motor 板塊就主要控制馬達,可使 Robot 四處走動。 另外有感光感應器用作 Line Following 應用。 電池用4粒1.2V NiMH 充電池共 4.8V。可以用附帶的充電器直接充電。 為何要用兩塊板? 我認為是模塊化設計,它有助將控制和運動分離。除此外就是增加 Control 板塊的連接針數目。如果只用一塊板又要連接馬達又要連接感應器( Senors),可用的連接針數目就會很少了。



有關Arduino Robot詳情資料,請訪問官方網站:
http://arduino.cc/en/Main/Robot
http://arduino.cc/en/Guide/Robot
http://arduino.cc/en/Reference/RobotLibrary

另外RS和Arduino的團隊製作了5部影片, 可使你更明白 Robot 可以做什麼.
http://uk.rs-online.com/web/generalDisplay.html?id=arduino

收到這個Robot第一時間當然是連接電腦。在 Arduino IDE下測試示例代碼 (Sample Code)。 過程非常容易及順利。 上戴了示例代碼後, LCD 就顯示出數值。 示例代碼差唔多包含所有控制的使用 (例如馬達控制, 指南針, 揚聲器, LCD, IR Remote Control 等 )。 我就非常有興趣測試 Line Follower 程式。 我預備了從前LEGO Mindstrom 留下的Line Follower 工作紙做測試。 Arduino 官方網站就建議劃一條大於 3cm 的黑色線在白紙上。但我已經有了,就快快的試一試。 LEGO 的 Line Follower 工作紙上的路軌比較簡單,遲些有時間就自己製作難度高的路軌,看看Robot 有什麼反應。上戴了Line Follower 示例代碼,然後將Robot放在路軌上。 它起動了, 但走了大約一圈就停了。 其實程式可以改變 PID 控制的參數KP, KD 及 RobotSpeed的數值. 但每次更改 PID 的數都要重新上戴程式。 過程十分不方便。於是我就寫了一個程式可以隨時更改PID參數的數值。可以實時見到效果。上下Keypad按鍵改變KP。左右 Keypad按鍵改變KD,轉動把手(Knob) 將會改變RobotSpeed。 中間Keypad按鍵是暫停及重新啓動, 這樣我就可以不斷改變PID的數而希望得到最快最好的效果。這個程式是公開的,有趣趣的朋友請到以下網站下戴。


https://drive.google.com/file/d/0Bzl3RqbE2zm3dVAwXzQxWVgzd2c/edit?usp=sharing






玩了Ardunio Robot 大約兩個星期時間,我覺得它的設計很適合教育用途。雖然市面上都有其他類似的產品。但係因為 Arduino Robot 係一個全開放的設計你可以更改 Control 及 Motor 板塊任何程式。這個給與你很大的自由度。另外 Arduino 有很大的用戶群,你可以很容易找到適合的 Libraries 或程式。

玩 Robot的朋友當然不會安於現有限制的局限。會不斷思考怎樣鄺充現有的硬件及軟件。硬件方面,Arduino Robot 本身機體大小適中,應該可以加入不同的傳感器。 另外有四個Prototype Area,可加上麵包版做測試。例如在麵包版上加入超聲感應器。



軟件方面,它本身帶有 I2C 及SPI通訊協定介面,不過UART serial由於要連接Control 及 Motor 板塊,不能有其他用途了。例如不能連接藍牙串行端口( Bluetooth Serial Port)。  如果可以連接藍牙串行端口就可以再連接 iphone 及 Android 手機 或者電腦。 雖然如此, 開放的設計特別之處係可以運用你的創新及想像去解決現有的限制。 我就計劃測試以下的功能。

- 通過SPI 連接 PS2 Game Controller (http://www.billporter.info/2010/06/05/playstation-2-controller-arduino-library-v1-0/ )。
- 通過 Software Serial  Port 去連接藍牙串行端口( Bluetooth Serial Port)。
- 通過I2C 連接 Raspberry Pi ( http://blog.oscarliang.net/raspberry-pi-arduino-connected-i2c/ )。
- 改變Control 板塊和Motor 板塊的通訊的方式由 UART serial 轉用 I2C 通訊協定 這樣就可以將UART serial用作其他用途了。

下回再與大家分享以上鄺充心得。

Mike