這是一個可以提供Arduino UNO連接NXT週邊的硬體實作裝置,規格上就是具備NXT RJ12 IO 界面的Arduino擴充板,雖然還沒有實際的產品可以測試,不過由已經公佈的使用手冊、API程式庫以及範例程式,先就它的功能與特性做初步的探討,同時也預先規劃一下收到產品時需要測試的重點。
NXShield硬體外觀
由使用手冊來看,NXShield規劃了兩組各4個RJ12的Ports,這兩組各有其I2C位址:Bank-A: 0x06與Bank-B: 0x08,而每一組分別具有兩個Motor Ports與兩個Sensor Ports,也就是說一個NXShield最多可以接4個NXT馬達以及4個感應器。
對於Sensor Port,無論類比或數位感應器都可以使用,也可以透過Mindsensors的Port Splitter連接更多的I2C數位感應器(I2C位址需不一樣)。同時,若再串接另一個NXShield,就可以多增加幾乎一倍的Ports可以使用,不過需要變更NXShield Bank的預設I2C位址,以維持惟一性。
至於Motor Port,參考NXShield Advanced Development Guide的說明,會發現其實它的功能就是移植自NXTMMX,無論Register Layout或I2C Command都是一模一樣,用法可以參考之前所整理的文章:〝 Mindsensors NXTMMX的功能特性〞。
此外,NXShield側邊還有4個按鍵開關,分別為Reset/Go/Left/Right,依據User Guide說明,後三個鍵是可以程式化控制的,不過似乎目前只有Mega版有列出對應的Digital IO pins,UNO版還是TBD,有待確認。
而在產品頁面有提到可以連接6個RC Servo,同樣在說明文件中也沒有,所以應該就是直接使用Servo.h的功能。
NXShield所使用的Arduino腳位(IO Pins)
為了讓4個Sensor Ports都可以連接I2C數位裝置,Mindsensors在NXShield的程式庫實作了SoftI2cMaster的功能,以突破Arduino只能有一個Hardware I2C界面的限制,因此UNO版共使用了A0,A1,A2,A4,A5,D2,D4,D7這些Pin以及Hardware Timer 2 (D3,D11),詳細在NXShield Advanced Development Guide中有說明或直接參考API中的常數定義檔(SHDefines.h)。
NXShield的程式開發
Mindsensors替NXShield發展了功能相當齊全的程式庫:NXShield_AVR,以及整理完善的說明文件與範例程式,這些也都包含在下載的程式庫檔案中,事實上這個版本的API也就是以原來的NXTI2CDevice Library為基礎所發展出來,以下為Class的架構圖:
以後如果想要自行擴充標準API的功能或製作新的Device Class,都可以運用以這個程式庫的功能為基礎來開發,比較能事半功倍,因為到底NXShield還算是一個有相當複雜程度的裝置。
結論摘要
Arduino的系統資源比起NXT可以說是差了一大截,不過NXShield卻幾乎移植了NXT主要的 IO裝置功能到Arduino來,而且尚有餘裕的空間可以再擴充NXT所缺的功能,例如TCP/IP的網路通訊。
我想最主要的原因有兩個,首先,NXShield本身無論在Motor Control或類比式感應器等這些處理功能的齊全,分擔了Arduino相當多的工作,事實上,一個NXShield相當於結合兩個NXTMMX再加上許多額外的功能。
其次,API程式庫的功能規劃的相當完善且很容易上手使用,這是個人覺得最值得讚賞的部份。
等到收到產品之後,接下來要測試的重點會是:
(1)有沒有可能成為NXT的有力助手。
(2)附加其他擴充版的應用。
- 留言者: robotman
- Email: tslinb@hotmail.com
- 網址:
- 日期: 2011-11-14 10:30:22
- 留言者: Yean
- Email: drlego.tw@yahoo.com.tw
- 網址:
- 日期: 2011-11-08 00:17:44
[版主回覆11/08/2011 07:49:44]
沒有問題, 也歡迎一起研究與分享心得
我自己也訂了兩片, 所以已經有了, 感謝您的好意 : )
沒有留言:
張貼留言