2016年2月7日日曜日

IchigoJamで遊ぶ その9 IchigoStorms2 + Pixy Camera

 そろそろネタが尽きてきた感のある IchigoStorms2ですが・・・、今回はMindsensor社から海外通販でPixy Cameraというのを取り寄せたので、これを試してみたいと思います。



 このPixy Camera は一見パーツむき出しのWebカメラみたいな感じですが、NXPのプロセッサが載っていて、単体で色検出やパターン(形状)検出を行えるようになっています。ちなみに価格は69ドルくらいです。
 わりと可愛い感じのパッケージに入っています。


 今回は通販の送料もかかるので、LEGO用アダプタも一緒に注文しましたが、


 IchigoStorms ではLEGOアダプタは使いません。


 このPixy Camera は設定で色々なインタフェースに対応できます。SPI、I2C、UART、LEGO用I2C(っていうのがあるってことは、LEGOのI2Cはやっぱり独自仕様ってことか・・・)に対応する他、アナログ電圧出力まであります。今回はIchigoJamで一番扱いやすそうなアナログ電圧出力(検出した最大の対象のX軸をアナログ電圧でリニアに出力)をANA(0)端子で拾います。

 前回のタンクのEV3 Sensor Adaptor for NXT + EV3 超音波センサ を Pixy Camera に載せ替えて、 




 手近にあった名刺入れがはっきりとした赤色だったので、これを棒の先にくっつけてターゲットに。


 ソースは以下の通り。110円のマイコンに69ドルのセンサっていうのもどうかと思いますが、ロボット向けの画像処理が簡単にできてしまうPixy Cameraはなかなか面白いです。

2016年2月1日月曜日

IchigoJam で遊ぶ その8 IchigoStorms type2 + EV3 Sensor Adapter for NXT

 前回のその7では、Arduinoを使わないでLEGOの制御をやってみようということで、メカナムホイールを使ったこんなのとか、


 オムニホイールを使ったこんなのを、


動かしてみたのですが、センサに関しては、結局NXTのタッチセンサをアナログ入力で拾えた以外は、全然ダメでした。EV3のセンサ類はタッチセンサを除いてUART接続なのではじめから諦めていたのですが、NXTの超音波センサはI2Cという噂?を聞いていたので期待していたのですが、通信速度やプロトコルの仕様が特殊なのか動作させることができませんでした。

 そこで今回は、Mindsensor社の EV3 Sensor Adapter for NXT というのをためしてみることにしました。この EV3 Sensor Adapter for NXT はEV3のUART接続方式のセンサをNXTやArduinoで使えるようにするもので、内部的にはUARTとI2C通信の変換を行うアダプタと思われます。



 当初 Mindsensor社のドキュメントに記述されたI2CアドレスでIchigoJamからI2C通信を試みたのですが、反応がなかったため、一旦Raspberry Pi(BrickPi)に接続して、i2cdetectで調べたところ、I2Cアドレスがドキュメントの記述とは違い、0x19になっていました。改めてIchigoJamで0x19に対して通信を行ったところ、無事データの取得ができました。今回調べたのはEV3用ジャイロセンサとEV3用超音波センサで、ジャイロセンサでは2byteのデータで-32768~32767くらいの範囲の値が、超音波センサでは1byteで30~250くらいの範囲の値が取得できました。超音波センサは本当は2bytで0~2550の範囲で値が取れるという資料があるので、ちょっとその辺と合わないのですが、今回1byteで取得できた30~250の値がちょうどmm単位(10で割ってcm単位)と考えると実際のセンサと障害物の距離に近かったので、これで良しとします。



 今回はIchigoStorm type2 と EV3 Sensor Adapter for NXT と EV3超音波センサの組み合わせでタンクを動かしました。


 プログラムは以下の感じ。行番号が不揃いなのは他のプログラムを流用して作ったためです。

 EV3 Sensor Adaptor for NXT の中身はマイコンが入っていると思うのですが、同様なIchigoJamのI2Cに接続してUARTを拡張できるようなICや安価なマイコンがあれば、UARTの無い(コンソール用にはあるけど)IchigoJamに色々つなぐのに便利なんですが、そういうのは無いのかな?