Pixy cmucam5(以下、Pixy)のマイコンとの接続方法を書いた記事です。
IMG_3357

接続方法

Pixyとマイコンの接続で使用できる接続方法は、以下の通りになります。
・SPI(CS使用/未使用)
・UART
・I2C
・USB
・デジタル/アナログ出力
SPIでの接続は、AVR ICSPピンを使用して接続するための、SS(CS=チップセレクト)を使用しないモードと通常のSPIデバイスとして使用するためのSSを使用するモードの2種類あります。
I2Cでの接続も、LEGO EV3に接続するためのI2CモードとArduinoなどに対して接続するためのI2Cモードの2種類あります。

これらの接続方法はPixy専用設定アプリケーション「pixymon」で選択することができます。
複数の接続方法を一度に使用することは、どうやらできないようです。

pixymonのパラメータ設定画面の「Interface」タブで、使用する接続方法を選択できます。
08

PixyのMILコネクタのピンアサインは、公式ページにあります。
http://cmucam.org/projects/cmucam5/wiki/Pixy_Serial_Protocol
コネクタのどのピンが何番ピンってのはMILコネクタの標準的なそれに準拠しています。
一応、備忘録も含めて下の画像に記しておきました。
IMG_6256

ライブラリのダウンロード

Pixy公式が出しているライブラリは、LEGO EV3向けのものとArduino向けのものがあります。
これらのライブラリは、公式ページ(wiki)の「ファイル」タブからダウンロード可能です。
http://cmucam.org/projects/cmucam5/files
また、 非公式ですがmbed向けライブラリも有志が書いたものがあります。
https://developer.mbed.org/users/swilkins8/notebook/cmucam5-pixy/
2017.06.05追記
mbedライブラリがあるにはあるのですが、このライブラリはバグがあり、正直言って使用できる状態ではないです。
バグが「TPixy.h」「TPixyInterface.cpp」「TPixyInterface.h」あたりにあることは把握していますが、自分でもまだ直していません。
誰かが直すか自分が直すかしたら、またここに情報を貼ろうと思います。

読み出し方法

Arduinoで読むには、Arduinoのライブラリを使ってください。
使い方は、ここにあります。 
http://cmucam.org/projects/cmucam5/wiki/Hooking_up_Pixy_to_a_Microcontroller_like_an_Arduino) 
簡単にAPIの部分だけ和訳すると、
・PixyのライブラリとSPIのライブラリをインクルードしてね。
・グローバルインスタンスをsetup()とloop()の外に作ってね。
・pixy.blocks[i].signatureでオブジェクトのシグネチャー番号が読めるよ。
・pixy.blocks[i].xでオブジェクトの重心のx座標が読めるよ。
・pixy.blocks[i].yでオブジェクトの重心のy座標が読めるよ。
・pixy.blocks[i].widthでオブジェクトの幅が読めるよ。
・pixy.blocks[i].heightでオブジェクトの高さが読めるよ。
・pixy.blocks[i].print()でオブジェクトのオブジェクトの情報をシリアルポートに吐くよ。
です。
mbedマイコンでSPIを使って読むためのライブラリ(有志作)も、APIの使い方は同じです。
https://developer.mbed.org/users/swilkins8/notebook/cmucam5-pixy/

自分がライプツィヒの世界大会でパッシブボールに対応したときは、Pixyをロボット前方に取り付けていました。
PixyをArduino(ATmega328p)に接続し、pixy.blocks[i].xでボールの位置を割り出して、その方向に追いかけるってだけの、超単純なプログラムを一晩で組みましたが、結構うまくいきました。

レビュー追加

「この動画、本当はレビューの記事に入れるべきなんだろうなー」と思いながら、さっき撮りました。
↓ PixyをArduinoで読んで、その結果をシリアルモニタでモニタリング


↓ Pixyをpixymonで読んで、画角や応答速度などを確認

2つ目のテスト映像、60 fpsで撮影できなかったため、Pixyが50 fpsで処理しているところが確認できないかと思います、申し訳ありません・・・


ここまで、3回に分けてPixyの使い方をざっと説明してきました。 
「ここがよくわからなかった」とか「この情報も欲しい」とかのリクエストがあれば、コメントでもTwitterのリプライでも気軽にご連絡ください。
日本語の情報がネット上にまだ少ない製品ですので、参考になればなー、と思います。

追記ログ

2017.06.04 mbed用ライブラリのバグについて追記