2015年2月22日日曜日

GrovePi お試し。

 本日のガラクタは、GrovePi です。一ヶ月以上も前に Dexter Industries社に直接発注してあったんですが、Dexter社は即日発送してくれたにもかかわらず、その後USPS(アメリカの郵便局?)に荷物が渡った後、トラッキング照会すると、3週間以上前にシカゴに着いたまま荷動きがありません。通関業務で止まってしまっているのか?このまま、どこかへ消滅してしまうのかはわかりませんが、そんなこんなしている間に、スイッチサイエンスさんから GrovePi+ が発売されていたので、まずは、そちらで手に入れました。GrovePi+ は GrovePi の改良版で、GrovePi を Raspberry Pi B+ にスタックするとLANコネクタやUSBコネクタで基盤裏側のパーツのハンダランドがショートしてしまうのですが、GrovePi+ では裏側に部品のランドが出ない(内層)形になっています。それに合わせて、Arduino部分のチップがDIPから表面実装に変わっています。あと、カメラのフラットケーブルを通せるスリットが開いています。それ以外の違いは、自分はわかりませんが、以前のGrovePi (+じゃない)でも、LAN、USBコネクタの位置にGrovePiの裏側にマスキングテープなどを貼れば、問題なく使えるはずです。
 で、GrovePi は、Arduino の Grove System シリーズのセンサーなどをRaspbery Piで利用できるようにするベースシールド的なものですが、通常のベースシールドはArduinoの各ピンと接続されているわけですが、GrovePi ではGrove コネクタがRaspberry Pi にすべて直に接続されているわけではなく(されているコネクタもある。UARTとかI2Cとか。)て、間にArduino相当のマイコンを挟んでいます。
 GrovePi のWikiにある画像を借りると、



 上記のような感じで、 Raspberry Pi から UARTとI2CがGroveコネクタにつながっているほか、Raspberry Pi と GrovePi(上のArduino)がSPIとI2Cで接続されいて、GrovePiのSerial, Digital IO(PWMも), Analog入力を利用できるようになっています。自分がよく使う Raspberry Pi と Arduino (Micro) をUSBかUARTで接続して組み合わせるパターンに似ていますが、GrovePIではI2CでArduinoを制御して、SPI接続でRasperyy PI側からAVRのファームの書き換えも行えるようになっているようです。
 もともと、Grove のセンサやLCD等をいくつか持っているので、このGrovePi も試してみようと思っていました。


 以下、開封したところ。


 裏側。


  Raspberry Pi B+ にスタックしたところ。



 以下、Grove RGB LCD をサンプルソースで動かしてみたところです。GrovePi を利用するためのライブラリは Python で提供されていますので、コードは Python で記述することになりますが、適用されているPythonのサンプルとライブラリのソースを見れば、各GroveモジュールやAVRとのI2Cでのやりとりは解析できそうなので、C/C++などでも利用することは可能ではないでしょうか。
 Grove はハンダ付け無しでブロック感覚で色々遊べるのが楽しいですが、ブレッドボードと併用して、ちょっとした試作にも便利だと思います。