• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
プロペラブForth発表osc愛媛
 

プロペラブForth発表osc愛媛

on

  • 2,519 views

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

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

Statistics

Views

Total Views
2,519
Views on SlideShare
2,517
Embed Views
2

Actions

Likes
0
Downloads
0
Comments
0

2 Embeds 2

http://us-w1.rockmelt.com 1
http://www.google.co.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \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愛媛 プロペラブForth発表osc愛媛 Presentation Transcript

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