プロペラブForth発表osc愛媛

2,795 views
2,604 views

Published on

AndroidからPICマイコンのForthで動かすロボット制御

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,795
On SlideShare
0
From Embeds
0
Number of Embeds
23
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \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
  • プロペラブForth発表osc愛媛

    1. 1. ANDROIDからPICマイコンのFORTHで動かすロボット制御 Presented by プロペラブ in OSC愛媛 2012/03/24
    2. 2. 本日の内容 プロペラブメンバー作成によるロボットタンク「たーとるくん1号」について,紹介します。
    3. 3. プロペラブとはPARALLAX社製マルチコアCPU『Propeller』を愛でる会。それが、プロペラブ。⇛展示を行っておりますので、プロペラブブースにてお気軽にお声がけください。
    4. 4. クイックスタートボード
    5. 5. 本日の講師自己紹介ちいといつすーあん石井康寛 ⇛メキシコ出張
    6. 6. 自己紹介名前:ちいといつtwitter : titoi2所属:プロペラブ自己紹介:プログラマー、最近はAndroid屋さん。Androidアプリの代表作は『A・文庫』
    7. 7. A・文庫とは著作権切れの文学作品を中心に、1万点以上の作品を公開するイターネット図書館「青空文庫」の作品をAndroidで読むためのビューアアプリです。
    8. 8. 『坊っちゃん』も読めますぞなもし
    9. 9. 自己紹介3名前:すーあんtwitter : @ksksue所属:プロペラブ自己紹介:Android、マイコン、FPGAなどをたしなんでおります。組込み屋です。Android USB Serial Monitor Liteをgithubとマーケットで公開しています
    10. 10. ANDROID USB SERIAL MONITOR LITE• Github / Google Playにて公開(無料)• カンタンなUSBシリアルモニタ• Android 3.2以上対応• FTDIチップに対応• ボーレートの設定• 文字、10進数、16進数表示に対応• 結果をメールで送信
    11. 11. FTDRIVER• GITHUBにて公開• FTDIチップドライバ• ライブラリプロジェクト(単体では動作しません)• ARDUINOライクなインタフェース
    12. 12. たーとるくん1号ベース:タミヤ模型のシャベルドーザー制御基板:PIC ADK MiniBoad『IC-02』
    13. 13. たーとるくん1号 PIC ADK Miniboad 『IC-02』
    14. 14. 基本ハード構成たーとるくん1号 USB PIC ADK Miniboad USB Host PIC24F FTDI cv モータードライバ Android 端末 左モーター 右モーター
    15. 15. PIC ADK Miniboardについて 日本Androidの会・神戸支部でADKや Microbridgeを楽しむために2011年7 月に配布したオリジナル基板 Eagleで設計し、Fusion PCBで基板制 作実施しました。
    16. 16. PIC ADK Miniboardの特徴・PIC24FJ64GB002搭載・USB Host機器が容易に作成できる(ADKやMicrobridge等でAndroid連携機器容易に制作に使用できます)・2ch DCモータドライバTB6552搭載、ラジコンカー等の制作に最適・3ch RCサーボモータコネクタ搭載・FTDI FT232RL搭載。FTDriverと連係可・PICKit直結可能なコネクタ搭載・安価(実費2000円で頒布中)
    17. 17. ソフト構成PIC ADK Miniboad側・PIC24Fで動作するForth『A Forth』Android側・USB Host APIを用いたシリアルドライバ『FTDriver』
    18. 18. FTDriver Androidとマイコンをつなげよう✦ FTDriver ✦ USB-シリアル変換チップの Android用ドライバ ✦ 言語:Java ✦ Githubで公開中https://github.com/ksksue 秋月 FTDI USBシリアル変換モジュール
    19. 19. 使ってもらった例ガイガーカウンタとAndroidタブレット 海外:ヘリコプター用コントローラを XBee経由でつなげてみたよ! Galaxy Nexusと繋げたよ! (@yakagawa さん) これからヘリゲームつくるよ!
    20. 20. FTDriver設計にいたるまで✦ Android 3.1からUSBプログラミングができる ようになったよ!✦ みんなが持ってるマイコンとAndroidが繋がると 面白いんじゃない?✦ マイコンと言えばUSBシリアル!でもUSBシリ アルドライバがないじゃないか・・・✦ よしつくろう
    21. 21. 他の接続方法との違いは?✦ でもちょっとまてよ。。。 USBシリアルじゃなくてもAndroidとマイコンと繋げる方 法はあるよね? ✦ ADK ✦ Microbridge ✦ Wi-Fi ✦ Bluetooth✦ これらとどうちがうの?
    22. 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. 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. 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. 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. 26. 最後にgithubからPull Request大歓迎 ✦ これまでの開発協力者https://github.com/ksksue ✦ @titoi2 ✦ @yishii ✦ @yakagawa ✦ @darkukll ✦ @zaki50 ✦ 他 FTDriverをBitbangモードへ対応 ソースコード提供(@yishii) 使ってみたよ or 開発してみたよ Twitter ID @ksksueなどあれば気軽にメンションください
    27. 27. FORTH言語の紹介たーとるくん1号の制御言語であるForth言語について紹介します。
    28. 28. FORTHとは?・1971年ごろ、アメリカのチャールズ・ムーア氏が天体望遠鏡の制御用言語として完成させた。・1980年代くらいまでは、マイコンを中心に結構使われていた。今でも制御系の世界では現役で使われている。
    29. 29. FORTHの特徴・対話的実行コンソールから命令を打ち込むことにより即時実行可能。Forthでは命令やコマンドのことを『ワード』と呼ぶ。・スタック指向演算はすべてスタックで行う。
    30. 30. スタック指向の利点・括弧を使わず複雑な演算が可能技術者にはHP社の逆ポーランド電卓を愛用していた人も多い。・関数のパラメータや戻り値をフレキシブルかつシームレスな受け渡しが可能
    31. 31. FORTHによる演算1+4 を計算するには> 1 4 + . 改行と打ち込みます。スタック志向言語では必然的に、逆ポーランド記法になります。
    32. 32. 結果は>14+.5 OKと表示されます。
    33. 33. 解説数値:スタックに積む +:二つの数値を加算し てスタックに積む>14+. .:数値を表示5 OK スタック 1 4 5 Empty 1
    34. 34. JAVAとの関係Javaの実行環境JVMはForthを参考に作られたと言われています。AndroidのDalvikVMはレジスタ型JavaのJVMはスタック型 だって、Forthだもん
    35. 35. FORTHの特徴・2・自己増殖型ワード定義を積み重ねることにより、プログラミングを行う。・すべてがワード数値や文字列などのデータ以外は全てがワード。
    36. 36. ワード定義ForthにおけるワードとはCの関数やJavaのメソッドのようなものです。ワードを定義するには、 : を用いる為、ワード定義の事を、コロン定義とも言います。
    37. 37. ワード定義コロン定義の書式 : ワード名 処理 ;Forth 内の辞書にワード名のエントリが作られ、処理部分がコンパイルされた実行コードへのリンクが作成されます。インタプリタでありながらコンパイラを内蔵
    38. 38. ワード定義例えば、スタック上の数値に1を足すワードinc を定義してみます。: inc 1 + ;実行すると、以下のような結果になります。10 inc .11 OK
    39. 39. 全てがワードForthでは、数値などのデータ以外は全てワードです。つまり、:などのコンパイラや、IF、LOOPといった制御構造、演算子、変数宣言、定数宣言など全てがワードです。それらは新たなワードとしてユーザが定義することが可能です。
    40. 40. なぜFORTHなのかたーとるくん1号にForth言語を搭載した理由。その方が格好良いから
    41. 41. マイコンとFORTH・処理系が小さいため、マイコンに最適ミニマム構成では2Kバイト程度のメモリーで実行可能。PIC ADK Miniboardに使われているPIC24Fは32KバイトのROMと8KバイトのRAMを搭載。
    42. 42. マイコンとFORTH・外部からプログラミングフレキシブルな運用が可能。・コンパクトで強力な言語小さなマイコンで自律行動への可能性。

    ×