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に色々つなぐのに便利なんですが、そういうのは無いのかな?