最近のブラウザはなんか音声認識とかもできて色々すごいです。自作の電子工作もとりあえずブラウザにさえ繋げてしまえばUIの面では一気に道が広がります。というわけで、Arduinoをwifiに繋ごうと思ってスマートな方法を探していたらFlashairに行き当たりました。
Flashair-developersというサイトに開発者用の情報がまとまってます。
また、Arduinoによる使い方のチュートリアルがあります。
今回はこれを使ってスマホのブラウザからArduinoを操作しようというわけです。
[必要な物]
Arduino Uno R3
SD Card shield V4.0
Flashair
サーボモーターTowerPro SG90
[構成]
スマホ <----> Flashair <----> Arduino <----> サーボモーター
[FlashairとArduinoで通信する]
Flashairの端子は3つのGPIOとして使えるそうでそこがマニアックということで話題になることが多いのですがサーボの回転角の値を受け渡ししたいので3ピンでは足りません。
そこで今回は共有メモリ領域を使います。
共有メモリは、SDカードの拡張レジスタ領域の0x1000から512バイトに割り当てられていて、ArduinoからはiSDIOでread/writeでき、スマホからはFlashairのweb APIを叩くことでread/writeできます。
・iSDIOライブラリの準備
SDカードとArduinoはiSDIOというプロトコルを使えば通信できるそうです。iSDIOを使う方法はこのページで解説されてます。下の方にはiSDIOを使うためのArduinoのライブラリがあるので、それを使います。
[コード]
https://gist.github.com/kaitoh/06d5e50089d9d50cb780
- flashair_servo_ctrl.ino: Arduinoに書き込むコードです。
- index.html: Flashairに保存しておくファイルです。スマホからこのファイルにアクセスするとサーボを操作できます。