EV3にSPIKEカラセンを接続してみた

SPIKEのカラーセンサーはEV3のものと比べて、性能がいいことで知られています。
それと同時にSPIKE自体の能力がEV3と比べて劣っている事実もあります。

そこで誰しも思うわけです。SPIKEのセンサーをEV3に接続して使いたいと。

:::note
この記事はSPIKEカラーセンサーとして書きましただ、おそらく他のセンサーでも機能するはずです。
EV3のセンサーをSPIKEにつなぎたい場合は、GitHubなど他の文献を参考にすることを強くお勧めします。
:::

## 製品

https://github.com/a10036gt/EV3-SPIKE_Sensor_Adapter-Staff

こちらのGitHubにある変換アダプタを使うことで簡単に使用できてしまうそうですが、モノを使うのは手間がかかる（すぐにできない）ので使うことはあきらめました。
また、購入先としてAliExpressが指定されていたり、ちょっと購入は怖いなと感じたのも理由です。

## 回路

どうしようもないのでGitHubで紹介されていた通りに無理矢理はんだ付けしようと思います。
情報によると、特別な抵抗や変換の操作は必要なく、配線を変えるだけで変換できるようです。

![簡易回路図](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883745/56958111-2e36-4701-94a6-a8bfccdf9370.jpeg)

簡単に配線を図示するとこのようになります。
ピン2～6まではそのまま接続し、ピン1は別の処理をします。
EV3ケーブルのピン1はピン3同士の線に接続し、SPIKEカラーセンサーの


実際に接続するときには、ケーブルを切断してはんだ付けする必要があるので、慎重に作業してください。

といってもピン番号がわからないと思うので、下に示します。

### EV3ケーブルのピン番号
| ![EV3のピン番号1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883745/86269c57-22ba-4b91-80de-77ca40a0dbf0.jpeg) | ![EV3のピン番号2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883745/840f9178-52e4-4cc2-af97-a18ed62fe4d9.jpeg) |
| - | - |

ピン番号は色に対応しているので、色を見ながら作業するといいです。
1番から順に、白・黒・赤・緑・黄・青です。

### SPIKEカラーセンサーのピン番号
| ![SPIKEのピン番号1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883745/f6429d67-d277-4f7b-93ed-57dc79fa308f.jpeg) | ![SPIKEのピン番号2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883745/417ae2e6-aea1-4d0a-b2ae-0cceea333190.jpeg) |
| - | - |

:::note warn
SPIKE側は特に色が付いていないので、気を付けてください。切断してしまうと向きがわからなくなります。
万が一、切断してしまった場合は、以下の画像を参考にピン番号を確認してみてください。
![SPIKEのピン番号3](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883745/d3ee66ee-35cc-40ab-a108-5b3f134a4d00.jpeg)
センサーの向きを見ながら確認してください。
:::

## はんだ付け

ここまで書いたようにピン番号に気を付けながらはんだ付けをしてください。
基盤にはんだ付けしても良かったのですが、今回は手っ取り早くコンパクトに接続したかったので直付けしました。

![完成品1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883745/7b8d7d77-ea3e-4cc3-905c-c56227906ba5.jpeg)
![完成品2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883745/21e36b4b-36d0-4ba8-9a63-b307a06c508d.jpeg)

一か所収縮チューブを忘れてビニールテープを巻いていますが、気にしないでください。
収縮チューブはちゃんとつけましょう。

SPIKE側のケーブルがきれいに線ごとに分けるのが難しいので、カッター等で裂くといいです。カッターでも丁寧にやらないと銅線がむき出しになりやすいので気を付けてくださいね。

## 接続テスト

![接続済み](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883745/9e56e27a-ec90-48d9-be33-eb72bd432b12.jpeg)

とりあえずEV3に接続してみて、カラーセンサーのライトが光ったら半分ぐらい成功したと思っていいです。
一本繋がってないだけでライトが光らないだけでなく認識すらされません。

では実際に動作確認をします。今回はテスト用のカスタムブロックが配布されている教育版EV3ソフトウェア(EV3 Lab)を使用します。

https://github.com/a10036gt/EV3-SPIKE_Sensor_Adapter-Staff/releases/tag/1.0

こちらのReleaseにアクセスして`SPIKE_Sensors_OFDL_V1.0.ev3b`をダウンロードしてください。メニューバーの「ツール」から「ブロックインポート」を選択するとインポートできます。

![デモプログラム](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883745/94c10d6f-a2ec-4e06-8d74-c043a099d864.png)

センサータブから「SPIKEb Color Sensor」を使用してこのようにプログラムを組みました。
ちなみに他のブロックとして「SPIKE UltraSonic Sensor」と「SPIKE Force Sensor」

| Image | Value |
| ----- | ----- |
| ![センサーのテスト1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883745/72539698-ce30-49a4-885c-155263ea8abe.jpeg) | 7% |
| ![センサーのテスト2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883745/be750b41-a3de-4840-8aea-6706be1dd268.jpeg) | 71% |

このように、反射光を認識することができました！

## おまけ
実はEV3用のカラーセンサーブロックでも動作が確認できました。

![EV3用プログラム](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883745/505be4cf-795a-4a77-bfee-60782f0684f4.png)

しかし、動作させてみると「反射光の強さ」要するに反射光の取得が正しくできませんでした。上のプログラムでは周辺光を取得しています。

:::note
おそらくev3devでも動作するはずですが、まだ未検証です。通信としてはUARTなので、Pybricksのクラスが使えるのではないかと思ってます。

https://docs.pybricks.com/en/v2.0/iodevices.html#uart-device

:::