Androidのアプリ開発を始めてみました。開発環境だけは整えてたものの、きっかけが無くてン年放置してました。
今回I/O制御とかしたいのでArduinoと繋げました。こういうとき、やりたいことはあくまでAndroidの勉強なんで、一瞬でハード・ソフトともに組めるArduinoはものすごく便利です。
私の所有しているArduinoはシリアル-USB変換にFTDIのFT232RLのチップが使われてます。イマドキはADKとかあるみたいですが。
ここもArduinoの魅力であるユーザーの多さが功を奏し、これのドライバを作ってる方がいらっしゃいました。ksksueさんのFTDriver(https://github.com/ksksue/FTDriver)。すげえ。
こうなればこっちの方が便利です。FT232RLは300円程度で売ってますし、これさえブリッジさせればシリアル通信ができるマイコンなら何でもOKですし。
そちらのドライバ&サンプル「FTSampleTerminal」を流用させていただきつつ加工し作業してます。アプリ名がそのままです。
Android側がUSBホストになるので、Arduinoはバスパワーで動きます。
SH-09D (3.8mm, f/2.5, 1/31 sec, ISO64)
Arduino側はLEDとCdSセルとLCDを接続。
LCDはシリアル通信のデータ確認用。
Android側で「送信」ボタンを押すとArduinoにリクエストが行き、CdSでADにとりこんだ照度を返すという処理をさせてます。
ついでに10秒間隔の自動送信やラジオボタンでLEDの明るさ制御(PWM)とかを実装。
んで取り込んだデータはAsyncTaskによる非同期処理でサーバーにPOST送信し、cgiでテキストファイルを書き換えてます。
折角定期的に送信されるのでブラウザからもリアルタイムで更新されると面白いと思って、慣れないJavascriptで表示させてみました。
うっかり処理をミスって時間が変わってませんが、10秒おきに増えてます。
”68”とかの数字が明るさ。LEDライトくっつけて大体200、手で塞いで4,5くらいになります。
照度センサとしてならAndroid単体でもやりようがあるかもしれませんが、マイコンと繋げるのは色々先が考えられてワクワクします。
Androidのアプリ開発も、まだまだブラックボックスだらけで自分自身理解してないことが多すぎます。とりあえず動かせたよってレベル。
でもやっぱりLCDに出したりAD値を取り込んだりするとモチベーションが上がってやる気が沸きますね。
日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)