carcon999のブログ

12年間Y!ブログの記載を移行しました。電子工作関連の記事が多いです。

PocketDuinoを使ってみた

クラウドファンディングのPocketDuinoが届いた
少し前に届いたPocketDuinoに火を入れてみました。

イメージ 3

ちょっとハマった点などをまとめておきます。ご利用されるかたの参考になれば幸いです。

■PocketDuinoって何?

そもそも、あまり考えずにポチッとしていたので、届いてから調べてみました。
というか、こちらですね。

以下は私なりの解釈です。

イメージ 4

アンドロイドのUSB-HOST機能を利用して、Androidアプリから、Arduino互換機にプログラムを転送したり通信したりすることが簡単にできるデバイスです。ArudinoProMiniとシリアル変換IC(FTDI)とマイクロUSBの端子が一つのボードに纏まったものです。
小型化にこだわらなければ、市販品を組み合わせることで同等の機能が実現できると思います。

なので、特別なファームウェアが書き込まれているとかありません。Arduino ProMini互換のマイコンボードのイメージです。

Arduinoへの書き込み方法

マイコンのプログラムを書き換える方法として2種類提供されています。
1.いままでと同じように、Arudino IDEで書き換える方法。
2.HEXファイルを準備し、Androidから転送して書き換える方法。

後者は、自動ファームウェアアップデートみたいなことが簡単にできるってことになりますね。

Arduinoから書き換える場合には、変換ソケットが同封しているのでパソコンとUSB接続で簡単に書きこ込めました。
これはぜんぜん問題ありませんでした。いままでのPro Miniと同じ感覚で使えます。

イメージ 5

■Hexファイルの準備に少しはまる

他方のAndroidから転送する方法は、Hexファイルを転送用のアプリでアップロードします。(APIも用意されてます。)

HexファイルはArduino IDEで作れます。(今回初めてしりました。)
が!作り方の説明が間違っていてちょっとはまりました。

Arduino IDEの環境設定画面のここ(赤枠)に書いてあるファイルを編集することでHEXファイルが出力されるようになるそうです。
イメージ 1

そこのファイルに以下を追加することでHEXファイルが出力されるようになります。
build_path=[.hex保存先ディレクトリ名]
とあったのですが、アンダーバーではなく.(ピリオド)なんですね。
ちょっとはまりました。

イメージ 2

でも、おかげでこんな設定ができることを知りました。
中間ファイルがいろいろ出力されるようになります。

そしてアップロード用のアプリでHexを転送すると・・・OK
注意点は、設定から機種をちゃんと選択しないとダメです。(デフォルトがArduino UNOでした)

イメージ 6

Androidから制御する

次に、APIを利用してArduino側と通信してみます。

が!

ここからが長かった。

久しぶりのAndroidアプリということもあり、いろいろハマってしまいました。

制御には、GitHubに公開されているPhysicaloidLibraryを使います。

このライブラリは、シリアル(UART)の通信がラップされているようなI/Fが定義されているので、AndroidArduinoで通信して情報を伝達するようなものになっています。
なので、インスタンスを生成して、Open -> Read or Write -> Close という非常にシンプルで分かり易い形式です。

■なぜかOpenで例外が・・・

PhysicaloidLibraryにはサンプルが付属しておりそのままビルドしますが、私の環境ではビルドエラーが発生しました。
それは、対応するAPIバージョン(Level12)をダウンロードしてないからなのでAPIのVersionを変更(Level19)しました。
するとコンパイルは通るのですが、動かそうとするとなぜかOpenでVerify Errorが発生します。

イメージ 7

なんだろう?とネットを頼るもなにも情報が見つからないので、私個人のやり方がまずいのだろうということでいろいろ設定を見直してみました。

ここの赤枠のライブラリ指定のパスがちゃんと設定されてないのが問題だったようです。
ここを一度削除して、ライブラリのパスを指定することでOpen成功し上手く動き始めました。(良かった)

イメージ 8

Androidアプリもしばらく作ってなかったので感を取り戻すのにも時間がかかりました。



これで、基本的な動作検証は行えたので、なにかコンパクトなものを作りたいです。(まだネタはありませんが・・・)
あと、このPhysicaloidLibraryは他への利用もできそうな感じです。