The jonki

呼ばれて飛び出てじょじょじょじょーんき

【Arduino】AndroidとArduinoの間でシリアル通信する

AndroidArduinoシリアル通信できると便利だなぁ、と思って調べたらFTDriverという素晴らしい物がありました。ただこちら既にサポートされておらず、Physicaloid LibraryなるAndroidからファームウェアのアップロードをArduinoに行えてしまうライブラリを開発中とのこと。かなりwktkですが、とりあえず今回はFTDriverを動かします。

Android側の準備

上記のGithubのリンクからFTDriverをダウンロードします。その中のFTDriver TutorialをAndroid側にインストールします。一応確認でプロジェクトファイルの右クリックから[Properties]->[Android]->[Library]でFTDriverが追加されているのを確認して下さい。

Arduino側の準備

Arduino側はSerial.println(1);とかのスケッチをアップロードしておく。なんでもよいです。

AndroidArduinoをつなぐ

AndroidArduinoはホストケーブルで繋ぐ必要があります。今回は前回の自作したホストケーブルとUSB Bタイプでつなぐだけです。ArduinoにはAndroidから給電が行きます。繋ぐとArduinoから数字の1がどんどん送られてくるのがわかります。今回はArduinoからAndroid側への片方向通信でしたが、Androidからシリアル送信すればArduinoで受け取って色々なことができますね。

【ケーブル】OTG(On the GO)ホストケーブルを自作する

Android機とArduinoシリアル通信するために必要なUSBのホストケーブルを作りました。AndroidのMicroタイプとArduinoのUSB Bタイプを無理やり配線つなげば良いと思っていましたが、違うようです。簡単に言うとUSBケーブルはPCなどのデバイスを親として、子として周辺機器を振る舞います。ただ今回はAndroidからの給電でArduinoなどの周辺機器を動かすために、ホストケーブルとして動作させる必要があります。


具体的な作成手順はこちらの動画を参考にしました。ちなみにこれは100均でも売ってるようなものですが、自分の場合近くの店に売ってなかったので書いました。Amazonでも500円で売っています。それなりに時間がかかるのと失敗するリスクもあるので手早く済ませたい人は買ったほうが良いと思います。

USBホストケーブルの自作 - YouTube

必要なもの

  • ハンダとハンダゴテ
  • Micro USBケーブル
  • USB延長ケーブル
  • ニッパ
  • グルーガン(あれば)

事前知識

Microケーブルは5ピンあります。普通USBケーブルが4線なので1ピン余るじゃん!と思うかもしれませんがこの4ピンをGNDと繋げることでホストケーブルとして動作する手はずになっています。
1: +5V (普通は赤)
2: D- (データ伝送)(普通は白?)
3: D+ (データ伝送)(普通は緑?)
4: ID (識別用)
5: GND (普通は黒)

Microケーブルの端子側の被覆を剥がしていくとこんな感じになっています。色はケーブルによって違うことが多いようですが、このケーブルは一般的な色と一致していたようなので混乱せずに済みました。左の黒い線がGND、真ん中の緑がD、右のが電源ですね。写真を撮り忘れていましたが、Dの白い線がつながっています。そして何も配線されていないところが4ピンのIDになっています。

作成手順

作成手順は既に参考に載せた動画を参考にして欲しいですが、簡単に書いておきます。

  1. Micro USBの端子側の被覆を剥がして、配線がむき出しになるようにする。あとで戻せればベストですが、無理やり剥がしてもOKです
  2. 延長側USBケーブルを適当な長さで切って、4本の配線をむき出しにする
  3. Micro USBケーブルと切ったメス側の延長USBケーブルを繋ぎ、配線の色の対応を見る。運が悪ければ色の対応が合っていない可能性があるのでしっかり配線をメモる
  4. Micro USBの端子からハンダを剥がして端子だけを取り出す(ハンダでハンダを溶かしながら配線を引けば簡単に取れます)
  5. 延長USBケーブルを取り除いたMicroの端子に取り付けます。色の対応が違っている場合は注意してください。またGNDの配線はIDピンにも繋いでください。この辺り動画が非常に参考になります。
  6. 最後にもう一度導通チェックを行ってください。残った延長USBケーブルの片割れなど使うと良いと思います。

うまく行けばこんなのができると思います。Androidから給電されてArduinoの基板のチップLEDのが光っていますね。