More Related Content
Similar to プロペラブForth発表osc愛媛 (20)
プロペラブForth発表osc愛媛
- 10. ANDROID USB SERIAL
MONITOR LITE
• Github / Google Playにて公開(無料)
• カンタンなUSBシリアルモニタ
• Android 3.2以上対応
• FTDIチップに対応
• ボーレートの設定
• 文字、10進数、16進数表示に対応
• 結果をメールで送信
- 14. 基本ハード構成
たーとるくん1号 USB
PIC ADK Miniboad USB Host
PIC24F FTDI
cv
モータードライバ
Android 端末
左モーター 右モーター
- 15. PIC ADK Miniboardについて
日本Androidの会・神戸支部でADKや
Microbridgeを楽しむために2011年7
月に配布したオリジナル基板
Eagleで設計し、Fusion PCBで基板制
作実施しました。
- 16. PIC ADK Miniboardの特徴
・PIC24FJ64GB002搭載・USB Host機器が容易に作
成できる(ADKやMicrobridge等でAndroid連携機器容
易に制作に使用できます)
・2ch DCモータドライバTB6552搭載、ラジコンカー
等の制作に最適
・3ch RCサーボモータコネクタ搭載
・FTDI FT232RL搭載。FTDriverと連係可
・PICKit直結可能なコネクタ搭載
・安価(実費2000円で頒布中)
- 18. FTDriver
Androidとマイコンをつなげよう
✦ FTDriver
✦ USB-シリアル変換チップの
Android用ドライバ
✦ 言語:Java
✦ Githubで公開中
https://github.com/ksksue
秋月 FTDI USBシリアル変換モジュール
- 20. FTDriver設計にいたるまで
✦ Android 3.1からUSBプログラミングができる
ようになったよ!
✦ みんなが持ってるマイコンとAndroidが繋がると
面白いんじゃない?
✦ マイコンと言えばUSBシリアル!でもUSBシリ
アルドライバがないじゃないか・・・
✦ よしつくろう
- 21. 他の接続方法との違いは?
✦ でもちょっとまてよ。。。
USBシリアルじゃなくてもAndroidとマイコンと繋げる方
法はあるよね?
✦ ADK
✦ Microbridge
✦ Wi-Fi
✦ Bluetooth
✦ これらとどうちがうの?
- 22. Androidと外部デバイスとの接続方法一覧
USBシリアル
ADK MicroBridge Wi-Fi Bluetooth
(FTDriver)
すべてのバージョ
どんなマイコンと
ポイント Google公式! ンのAndroidと繋 高速無線! お手軽P2P無線!
も繋がる!
がる!
有線/無線 有線 有線 有線 無線 無線
給電
⃝ ☓ ⃝ ☓ ☓
スマホ→デバイス
115200bps
転送レート (bitbang mode ? ? 54Mbps 19200bps
200Mbps)
消費電力 小 中 中 大 大
マイコン+
マイコン+ Arduino+USBホ Arduino+USBホ マイコン+
デバイス Bluetooth
FTDIモジュール ストシールド ストシールド Wi-Fiモジュール
モジュール
デバイス一式価格 ¥3,500∼ ¥5,000∼ ¥5,000∼ ¥7,000∼ ¥6,000∼
設計難易度 低 低 高 高 中
Android
3.1以上 2.3.4以上 すべて すべて すべて
対応バージョン
USBシリアルがAndroid-マイコン接続の選択肢として十分アリ
- 23. FTDriverを使った
Android
Android-マイコン構成例
while(true) {
ユーザプログラム
...
len = mSerial.read(rbuf,0);
...
}
FTDriver シリアル通信をポーリング
USB Host API begin(int baudrate);
read(byte[] buf, int channel);
(Android Frameworks) write(byte[] buf, int length, int channel);
end();
Arduino ライクなシンプルなインタフェース
マイコンボード USB通信
FTDI チップ
シリアル通信
マイコン
マイコンボードとAndroidをUSBで接続
- 24. FTDriverを使った
シリアル通信プログラミング
(readするだけのカンタンな例)
1.インスタンス生成
mSerial = new
FTDriver((UsbManager)getSystemService(Context.USB_SE
RVICE));
2.デバイスオープンとボーレート設定
mSerial.begin(9600)
3.リードポーリング(スレッド)
byte[] rbuf = new byte[4096];
...
while(true) {
...
len = mSerial.read(rbuf);
...
}
4.デバイスクローズ
mSerial.end();
- 25. FTDriver内の処理概要
(アプリ開発者は手をつけなくておk)
1.初期化:USBホストのエンドポイントを
オープンする
mEndpointIN = intf.getEndpoint(0);
mEndpointOUT = intf.getEndpoint(1);
intf : USB Interface インスタンス
2.オープンしたエンドポイントを叩く
int length = mDeviceConnection.bulkTransfer(mEndpointIN,
mReadbuf, mReadbuf.length,0); // RX
int length = mDeviceConnection.bulkTransfer(mEndpointOUT,
write_buf, write_size, 0); // TX
USBバルク転送でエンドポイントINとエンドポイントOUTを叩く
- 26. 最後に
githubからPull Request大歓迎
✦ これまでの開発協力者
https://github.com/ksksue
✦ @titoi2
✦ @yishii
✦ @yakagawa
✦ @darkukll
✦ @zaki50
✦ 他
FTDriverをBitbangモードへ対応
ソースコード提供(@yishii)
使ってみたよ or 開発してみたよ Twitter ID
@ksksue
などあれば気軽にメンションください
- 37. ワード定義
コロン定義の書式
: ワード名 処理 ;
Forth 内の辞書にワード名のエントリが作
られ、処理部分がコンパイルされた実行コー
ドへのリンクが作成されます。
インタプリタでありながらコンパイラを内蔵
Editor's Notes
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n