2018-09-17に更新

androidでarduinoを操作

AndroidのUSBホスト機能でArduinoとシリアル通信する
という記事を見たのが全ての始まりで、
androidからarduinoが操作できるのなら
PCとandroidをbluetoothで接続することによって
お金をかけてarduinoにwifiシールド着けなくても
arduinoを遠隔操作できるのではないか、
というところから実際に試してみようと思った。

今回はarduinoにつけたサーボモータの角度を
色々いじれるように試してみた。

まあ、なんだかんだで色々とハマった。

まずはandroidアプリの作成。
ボタンにsetOnClickListenerを実行すると強制終了。
NullPointerExceptionが発生する。
最近のアプリの作り方はよくわからないのだが、
なんかfragmentだかというのを使うように変わっていた。
fragmentの上にボタンやテキスト等を貼っていたのだが、
どうもそのせいでリソースが上手く取得できておらず
エラーになっていたっぽい。

そういう仕様で動作するようになってるんじゃないのかと思いながら
わけわからないので結局メインフレームの方に全部記述を移して
fragmentの方は使用しないようにしたら上手く行った。
これで数時間ほど費やしたと思う…。

しかしいざ実行してみるとサーボモータは動かない。
まずひとつの原因。それは電力不足…。
arduino上のLEDも光が弱い。
仕方がないので電池を使ってみたが
このへんは自分の知識不足で上手く動かせなかったので
サーボモーターはやめて13のLEDを光らせることに変更した。

もう一つの原因が、最初のURLで紹介していたやり方で
マニフェストに追記したりxmlを追加したり
なんかよくわからないことをやっているな、と思っていたのだが
これをよく理解していないためだった。
これが全ての肝で、単にアプリを起動してもUSBには接続できない。
なんとUSB接続時にこのアプリを開くかどうかandroidが聞いてくるので、
そこでOKして起動することでUSBとアプリが関連付けられ、
接続ができるようになる、というものだった。
USBホストはそういう機能だもんな…。

ちなみに購入したケーブルはケーズデンキの下記。650円くらいで安い。
USBホスト変換アダプタケーブル サンワサプライ AD-USB18
マウスをandroidにつけるとマウスポインタが出てきてびびった。

最終的にA(65)で点灯、B(66)で消灯、を試したところ
上手く行った。

ちなみに記事を書いてから気づいたが
Android版ArduinoFirmataを作った
というのがあった。
arduino.digitalReadとかってそのままじゃないか。なんと便利そうな。

ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, React, Flutter, Vue.js, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々 PHPフレームワークちいたんの作者

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント