AndroidとArduino間で有線通信ができる接続環境の構築に苦労した

こんにちは。

以前、ハッカソンに出場した話を記事にしましたが、その際にAndroidArduino間でシリアル通信(有線)をしていました。
有線通信をした理由としては、マイコンへの電源供給ができることと、単純に自由に使えるESPが身近になかったためです。

ume-boshi.hatenablog.jp

f:id:ume-boshi:20200724104211j:plain:w400
こいつがスマホに繋がるわけですね。

この通信関連の構築が厄介で、特別給付金をオンラインで申請するときぐらいには複雑でした。
なので記事に残す価値があるのです。
ただ、躓いた点が沢山あるため、どれが真に悪さをしているか断言できない状況ではあります。

結論、どれに従えばできるか

この通信を実現するために転がっている情報は結構あるのですが、いくつかのサンプルを動作させてみて、{まともに動く + 内容を改変できそう} だったのは下記のサイトでした。
私の記事にはソースコード側を言及していない(↓ の記事と変えてない)ので、気になる方はそちらへ!

主に躓いた点

まず、最近のAndroid端末は充電ポートの規格がType-Cが主流なので、Android端末とArduinoの繋げるためにコネクタの変換が必要になります。

TypeCからTypeAのメスに変換するケーブルがそんなに売ってないので、メスメスの変換器を用いてマイコンと繋いでみたところ、動作しない...
⇒ たまたま、Joshin直接変換するコネクタがあったのでこれを使いました。 感謝。

www.amazon.co.jp



でも、Arduinoに直接接続してみたところ、通信ができない...
⇒ 参照先のサイト通りに、FT232RL書込み機を介すことで通信できました!
ちゃんと記事に従うのは大事ですね。
でもなぜ通信に失敗しているかは個人的に謎です。

f:id:ume-boshi:20200723045355p:plain:w500
通信できなかった接続例と、通信できた接続(1番下)


その他、躓いた点いろいろ

ここから挙げる内容は文章にするのが面倒くさかったので、列挙する感じです。
手抜きですみません。

  • USBを刺してもデバイスを認識し始めない…
    ⇒ USBを刺し直して、アプリを再起動すると動作した!
    (別のソースコードだと認識できるので、プログラム次第で解決できる可能性があります)

  • いろんなアプリが正常に動作しないOnePlus 5T(中華スマホ)…
    ⇒ xiaomi mi pad 4(中華タブレット)で実行したら動作した!

  • サーボを動作させるには電源が足りない…
    ⇒ 外部電源をArduinoに接続!
    スマホに繋げるのはこわいので自己責任でお願いします。)

  • 駆動電圧
    ⇒ 自分は困っていないですが、スマホから取得できる電源が5Vなので、マイコンが5V駆動であるかは注意してください。
    これを守らない場合、通信ができない可能性だけでなく、スマホが故障する可能性があります。

  • D2xxライブラリがAndroid studio上で認識されない問題…
    ⇒ どうやったか忘れたけど、Android側のライブラリを認識しないことに関するブログ記事があった気がします。

おわりに

実際に通信ができるようになるまで、フィードバックが得られなかったので、ずっと見えない状態を推測しながら手探り状態でした。。。
なので、動作まで辿り着けたのは個人的には奇跡です。
皆さんは有線でなく無線でやるようにしましょう。

なんで変換器が違っただけで通信できなかったんでしょうか。OTG系の問題は関係なさそうですけれど。

自分の脳みそが弱いことが残念でなりません。



本記事の机上の空論:最近Arduinoがオワコン感があるので、「Arduinoが触れます」って言う人をニワカだと判断できる時代に。