ArduinoライクなAndroid3.1用FTDIドライバAPI公開

AndroidとUSBシリアル通信させるためのドライバAPIです。
前回のコードからドライバ部分だけ切り離して
Arduinoライクなすっきりとしたインタフェースにしてみました。


2011/11/19 githubにプロジェクト移しました。
https://github.com/ksksue/FTDriver


Source Code - http://dl.dropbox.com/u/3858050/hatena/FTDriver.zip


※現在Android神戸支部さんのSVNリポジトリをつかってメンテさせていただいています。
最新のソースはこちらで手に入れてください。
チェックアウト方法
http://code.google.com/p/android-jp-kobe/source/checkout
ソースツリー
http://code.google.com/p/android-jp-kobe/source/browse/#svn%2Ftrunk%2FFTDriver
更新履歴
http://code.google.com/p/android-jp-kobe/source/list


動作確認環境

  • Android : ICONIA A500 (Android 3.1以上、USB Host Portを有すること)
  • FTDI Chip : FT232RL (秋月、sparkfunのモジュールなどで動作確認)
  • Baudrate : only 9600 9600〜230400bps


サンプルコード

  • FTSampleTerminal : シンプルなターミナル
  • FTSerialCSV : CSVでシリアル通信させたサンプルコード。奈良高専の教育事業Genet(www.genet-nara.jp)で使用されている教育ボードと繋いだ際に使用。


Genetブース@ET2011


その他

  • root権限は必要ありません。


APIハイライト

new

mSerial = new FTDriver((UsbManager)getSystemService(Context.USB_SERVICE));


initialize

mSerial.begin(9600);


n byte read

byte[] rbuf = new byte[60];
len = mSerial.read(rbuf);


1 byte write

byte[] wbuf = new byte[1];
len = mSerial.write(wbuf);


n byte write

byte[] wbuf2 = new byte[64];
len = mSerial.write(wbuf2,64);


Close

mSerial.end();


とりあえずこれだけ揃ってれば大抵のことはできると思う。
簡単なテストしかしていないので暫定版として公開しますが、
なにか様子がおかしいようであれば
ここにコメントもしくはTwitter @ksksue にメンションください。


またAndroid x 組込み 興味ある方は気軽にフォローしてください。

Android 3.1 の USB Host API を使ってFTDIシリアル通信してみた

現在↓でメンテしています。

https://github.com/ksksue/FTDriver
http://d.hatena.ne.jp/ksksue/20111106/1320589821

↑↑↑↑↑↑↑↑↑↑↑↑↑↑

以下は過去の記事です。

        • -


Android USBを用いてシリアル通信を行う方法(日本Androidの会 メーリングリスト)」
のスレッドがもりもり盛り上がってるようで
わりとAndroidでFTDI使うのって需要あるんじゃないかということで
ごにょごにょとやっていたところ、ようやく通信できたので記事うp


ただ、動作確認できたという程度なので、
ボーレートは9600固定だったり
受信と送信が同一スレッドだったりしています。
なのでちゃんと使えるようにするには真面目に書きなおす必要があります。


元にしているのはMLで本多さんが教えてくれた以下のページのソースコード
Creating a Serial to USB driver using the Android USB-Host API
http://android.serverbox.ch/?p=370
ただ、このサンプルコードにはAndroid→FTDIの通信はできるけど
FTDI→Androidの通信がないのでちょっと書き換えました。


以下

続きを読む

Kinect x Android3.1 で LED+モータ+3軸加速度 (カメラ・マイクは動かないよ)

第1回 関西Kinect勉強会でLTネタにした内容。
最初に言っておきますがRGBカメラとIRカメラは今のところ使えません。(Android3.1ではAPIで一部サポートされていない。後述します。)
また、Kinectに搭載されているAudio(マイク)の情報も取得してません。
なので非常に残念なシロモノです。
ですがKinectプロトコルと、Android3.1のUSB APIを知るには丁度いいネタだと思います。


ちなみに、このネタはネイティブAndroid(root化なし、カスタムROMなしってことで、NDKのことじゃないよ)でやってます。
Android 3.1 のUSBホストモードを使っていて、Accessoryモードは使ってません。

        • -

ということで、LTネタの話。
フラワーロックならぬキネクトロックを作りました。
タブレットから音量を拾って、Kinectが上下に首を振ってRockするというものです。


以下簡単なアプリ解説と、Kinectを制御する際のポイントをば。

続きを読む

書籍「Eagleによるプリント基板製作の素」 x Fusion PCB

BeagleboardやらADK絡みの基板設計を個人的にやってみたいということでお勉強。
書籍「Eagleによるプリント基板製作の素」にある「音声録音再生ユニット」を手本に
EagleとFusion PCBへの発注まで進めたまとめ。
(※基板仕上がり次第、追記していく予定)


参考書「Eagleによるプリント基板製作の素」
http://www.amazon.co.jp/dp/4774140635
基板製作:Fusion PCB
http://www.seeedstudio.com/depot/fusion-pcb-service-p-835.html?cPath=185



回路図



アートワーク図

続きを読む

Android x OpenCV2.3.1 on Beagleboard-xM Rev.B な教材

�USBCameraつなげたBeagleboard-xMにAndroidOpenCVな記事です。


今日、教育機関主催のAndroidフォーラムに参加してきたんですが、その帰りに教育テーマでぼんやりと
USBカメラ x OpenCV x Beagleboard-xMをAndroid教材にするとわりと短時間でKernelの深いところからアプリまでカバーして体験できるんじゃないかなーと
考えていたりなんだり。ポーティング教材的な。


バイナリ用意されてるから、スムーズに行けば1時間もかからないうちにAndroid環境構築を一通り体験できちゃうし、
USBCamera使うためにUVC有効にしてKernelリビルド体験もできるし。
視覚に訴える題材でもあるよね。
座学6時間+実習2時間の1日コースくらいでできるんじゃなかろうか。
体験だけなら2時間か。


以下、妄想教材の流れ。

1.AndroidBeagleboard-xMにのせる(10分)
2.Androidが起動するかチェック(5分)
3.USBカメラを使うためKernelのコンフィグを変更しリビルド(30分)
4.KernelをSDへコピーして起動(5分)
5.OpenCVデモ実行(10分)


以下ざっと作業手順。

続きを読む

OpenCV 2.3.1 for Android がいい感じ

OpenCV 2.3.1 for Androidで大幅に更新があってかなり使いやすくなったので、だれとなく知ってもらいたくて記事うp
2.3.1になってJava APIが整い、サンプルコードも更新されて、だいぶすっきりしています。
(2.2のサンプルコードは死ぬほどめんどくさいことになってて、正直ひどかった)


これまではNDKで画処理できる程度で
Java-C間をやりとりするのがめんどくさかったり
処理結果をCからJavaへ渡したはいいけど、UIに渡すのにどうすりゃいいの
てな感じでしたがそこらへんがOpenCV2.3.1 for Androidですっきりと解決されています。


OpenCV for Android公式ページ
http://opencv.willowgarage.com/wiki/Android
http://opencv.willowgarage.com/wiki/AndroidPrebuiltOpenCV231


OpenCV 2.3.1 for Androidでできること

  1. NDK で OpenCV
  2. OpenCV Java APINew!
  3. MatをJNI経由でJavaからC、CからJavaへ引き渡しNew!


図にすると下のようなイメージ


簡単な画像処理であればサクッとJava APIで済ませ(図 左側ルートでOpenCVライブラリへアクセス)
まとまった処理はCでガリガリと書いてやることができます(図 右側ルートでOpenCVライブラリへアクセス)


表示系に引き渡すときはMatからBitmapへ変換(MatToBitmap)してSurfaceViewで表示させます。


OpenCV 2.3.1 からprebuildパッケージで配布されるようになったので
サンプルコードの実行まで簡単に試せるようになっています。
以下はLinux環境でサンプルコードを実行するまでの流れです。
(確認環境はUbuntu 10.10 64bit)

続きを読む