2011-11-12

Mindsensors NXShield for Arduino裝置介面摘要

2011.11.11收到了NXShield,有了實際的產品,就可以先就硬體的外觀與介面進行觀察,後續再對於控制功能進行測試。
外觀與介面
NXT RJ12 Ports

NXShield正面的配置方式,左右各有一組四個PortsNXT RJ12接口,右邊為BANK-A(I2C
address
0x06),左邊為BANK-B(I2C address0x08)
 
Arduino pins中間左右的兩排接腳,即是用來連結Arduino UNO作為擴充板,但是因為NXShield在背面沒有配置堆疊用的接腳,所以,若需要堆疊其它Shield時,NXShield會是在最上層




不過,Mindsensors已經有考慮到這方面的需求,因此,預先在NXShield配置了一些實用的界面:
RC Servo and PWM在左上角有63 pinsRC Servo接腳,所標示對應於Arduino腳位分別為:D3D5D6D9D10D11,剛好也是PWM的腳位,所以,除了接RCServo外還可以用來作PWM的應用
Buttons and RGB LED

在正上方側邊有四個Buttons及一個RGB LED,由左至右為:LeftRightRGBGoReset,除了Reset鍵以外,所用到的腳位分別是:
Left / REDD8
Right / BLUED12
Go / GREENA3以上三個介面,在程式庫 NXShield_AVR中的NXShield Class有實作的methods可以運用。
I2C介面
在正下方有兩組4 pinsI2C接腳,其實是同一組,只是比較貼心的的同時提供公/母兩種接腳,腳位都有清楚的標示,用途當然是作為連結I2C裝置。
在收到NXShield一發現這個介面是I2C時,當下第一個念頭就是:NXT可不可以連接使用NXShield,若可行的話,那不就多了兩個NXTMMX可以用嗎?
NXT測試
因為NXShield的兩個Banks  ports各有其I2C Address(0x060x08),因此,應該是以daisy
chain
方式串接在同一個I2C bus

所以就用NXT作了一個簡單的NXC程式分別去讀取0x060x08兩個I2C address0x10 register address(內容為Device ID)結果確實可行


不過當下還是有點疑問,為何Mindsensors的文件沒有提到可以這樣使用的功能?隨即寫mail去問Mr. Deepak,今天一早就收到回覆,內容為:
Yes, it works, but we do not recommend connecting NXT to NXShield,    as there will be backflow of current from NXShield to NXT, which could damage NXT.

原來是怕由NXShield外接電源的電流會逆流回NXT,也許需要加一個保護電路,這就超出我的知識領域。


  • 留言者: robotman
  • Email: tslinb@hotmail.com
  • 網址:
  • 日期: 2011-11-14 11:36:01
電流逆流..看來要拿幾台nxt拿測試看看 (反正燒壞了有人可以保固)..不過不能小"小黑"(黑色nxt來測)..呵!

[版主回覆11/14/2011 15:33:35]我覺得NXT本身就有保護電路, 再加上對於外接電源, 控制好不要選擇太高電壓值, 應該是還好, 我打算用 PF 7.4V的充電鋰電池 試看看





  • 留言者: robotman
  • Email: tslinb@hotmail.com
  • 網址:
  • 日期: 2011-11-14 10:19:24
看起來比我們現在做的樂高arduino更方便,不過basic post 四個..motor 四個..比arduino可以支援的還少..這版子可以擴充更多的port嗎??

[版主回覆11/14/2011 15:51:54]利用Arduino的DC Motor Controller, 是可以控制NXT 馬達的方向與速度,
但不能讀取或設定光學編碼器的值,
我想NXShield對於NXT馬達的控制功能就比較完整.

至於價格確實貴一點,
至於串接, 是可以, 但稍微麻煩, 需要去更改預設的I2C位址

沒有留言:

張貼留言