RPU-10講座/第一章 RPU-10でできること

公開日:  最終更新日:2014/06/05

すいません m(_ _)m、本記事はブログ引越時に書式が崩れました。順次修正中です。

今回、G-TuneF108MはFUTABAのRPU-10を使用しています。時間が無かったので、ザクザクっとプログラム作っちゃったのですが、まこ君に「プログラムのやり方、アップします」と約束もしたので、数回に渡ってプログラミングテクニックとか紹介していこうと思います。内容は、こんな感じで進めようと思います。



  1. RPU-10でできること

  2. RS232C通信で、データのやりとり

  3. Flash ROM領域を使ったデータでのRS232C通信

  4. 待たないRS232C通信とボタンでLED点灯

  5. 電源電圧と加速度センサーの読み取り

  6. ボタンとロータリースイッチでブザーオン

  7. とにかくサーボ動作

  8. コンプライアンスの変更

  9. モーションっぽくサーボ動作

  10. RPU-10からサーボIDの書き換え

  11. 4つのサーボ動作

  12. ジャイロセンサの接続

  13. ジャイロセンサを使ってサーボへフィードバック

  14. 目玉LEDの点灯

  15. サーボ角度の取得

  16. ロングパケットでサーボ動作

そのほか、無線コントローラパッドとかもやろうかな、とは思っていますが、それは進み具合で、おいおい考えることにします。まずは、第一回目として、RPU-10でできることを紹介したいと思います。


■RPU-10の構成
RPU-10は、ATmega128をCPUとして搭載しており、入出力I/Fとして、RS232CとRS485があります。外付けEEPROMはありませんが、ATmega128には4KバイトのEEPROMが内臓されています。また、Flash ROM(いわゆるプログラム領域)として128Kバイト、RAMは4Kバイト内臓しています。RISCチップで8ビットとは言いながら、かなりの能力を持っているCPUと思います。sin()とかを実行しても、H8TINYとかの10倍速ぐらいで演算してくれます。クロックは、14.7456MHzという、あまり聞きなれない周波数ですが、実は、115.2Kbpsや460.8kbpsに適した周波数となっています。


Flash ROMは、1万回の書き換えが保障されているため、実際には外付けEEPROMの必要性はあまり感じません。また、RPU-10にはSTK500互換のブートローダがあらかじめ書き込まれているため、RS232Cさえあればプログラム可能となっています。ただし、Flash ROM (constなデータ)上のデータの取り扱いは、H8などとだいぶ異なるため、プログラム作成時、ちょっと注意が必要です。


RPU-10は、かなり割り切ったCPUボードで、外部I/Fについては、後述のものしかありません。そこがネックといえばネックなのですが、小型化に貢献しているとも言えますので、どちらを取るか、悩ましいところです。


■RPU-10でできること
RPU-10に内蔵されている加速度センサ以外に、ジャイロセンサとしてKONDOのKRG-3を2つ使用しています。RPU-10に載せているソフトウェアは、新作のSIPHA SYSTEMなのですが、もともとRPU-10自体がGYROセンサ用として2つのアナログ入力を持っていますので、これKRG-3を接続しています。


RPU-10の入出力機器をまとめると、以下のようになります。



  • オンボード


    • プッシュボタン

    • ロータリースイッチ

    • LED(電源LED横に配置)

    • 3軸加速度センサ

    • 電源電圧センサ

    • ブザー(というかスピーカー)

  • 外部インターフェイス


    • RS232Cインターフェイス(PC通信用)

    • RS485インターフェイス(サーボ用)

    • LEDドライブ(2個、PWM出力可能)

    • コントローラパッド

    • ジャイロセンサ(2個、アナログ入力)

ここまではコネクタさえなんとかすればそのまま接続できますので、今後、接続方法や回路に加え、Best TechnologyのGCC Developer Liteに同梱されているRPU-10用ライブラリを使ったプログラミングと、それをどうプログラムの中で使うか?ということについて紹介して行きます。


課題としては、これ以上の接続をするときにどうすればいいのか?が悩みどころです。RPU-10、非常に割り切っているのでサイズはとても魅力的なのですが、これ以上の拡張をするには、RPU-10から直接I/O線を引き出すか、あるいはRS485でぶら下がる機器を開発してしまうか?というあたりになるかと思います。


センサ等の拡張について
接続センサを増やそうと思うと、上記のように、RPU-10を改造してI/Oを引き出すか、RS485でぶら下げるか?というあたりですが、RS485でぶら下げた場合、仮に460KBPSで通信できたとしても、ちょっとしたデータを取り込むのに、0.5msec程度の時間がかかってしまうのが難点ですね。しかし、このあたりは、相手方がインテリジェントなものにすることで、逆に処理分散という考え方をすることで良い結果を得ることができるかもしれません。FUTABAさんかHPIさんで、I/Oボード、出してくれないかなー、なんて思ったりして。


自作する場合、RS485コンバータとマイコンを載せる必要がありますので、どのあたりのマイコンがいいかなーと、いちおう模索中です。G-TuneF108Mに搭載することが前提ですので、あまり大きなものは載せられません。また、自作ということで、あまりにもピッチが小さいLSIは使えませんので、マイコンは20P前後でSOPタイプが入手可能、USARTあり、14.7456MHz動作可能(もしくはその倍数)、A/Dコンバータ内臓、それにやっぱりSOPのRS485コンバータってところでしょうか。そのものずばりの超小型CPUボードがあればそれが一番いいんですけど。そうなるとPICか、PSoCあたりか。PSoC、センサ処理(特にアナログ系)では超魅力的なんですが、開発環境を持っている人が少ないのであまり参考になるものを出せないかな…とちょっと心配。


あと、以前、「RPU-10とRS301が460KBPSで通信できなかった」と書きましたが、その後の調査で、CPUクロック的には問題が無さそうなので、引き続き、460KBPSへはあれこれ挑戦してみようと思っています。





※注意:本BLOGにてRPU-10での再プログラミングについての情報を公開していますが、これらはSISOが個人的に再プログラミングを行った時の技術情報を整理して紹介しています。GDLへのRPU-10ライブラリ同梱については、Best Technologyさんのご好意で、趣味人への1つのチャンスとして同梱してくださっていると理解しています。そのため、RPU-10の再プログラミングについては、くれぐれもご自身の責任で、また、Best TechnologyさんやFUTABAさんに問い合わせたりすることの無いようにお願いいたします。

  • このエントリーをはてなブックマークに追加
  • Pocket

関連前後記事

Comment

  1. まこ より:

    早速のアップありがとうございますm(_ _)m
    SISOさんに教わることのみでなく、自分でも努力してみようと思います。
    基礎は教えを仰ぐことになりそうですが…
    よろしくお願いします。

  2. かつ より:

    期待していたプログラミング講座の開講、うれしく思っております。
    私の場合はプログラミングの方はさっぱりなので、がっつりSISOさんについて行こうと思ってますので、よろしくお願いします。
    あっ、カリキュラム(?)に開発環境の準備の項目を加えていただけるとうれしいです。

  3. みっちー より:

    すごい!
    まさに知りたかったことのオンパレード!w
    僕もSISOさんの講座についていきます!!
    よろしくお願いします。

  4. SiSO より:

    まこさん>
    今回、アップしていこうと思っているのは、ロボットプログラミングというよりは、その前段階の基礎部分になりますので、かっつり吸収しちゃって、その後はがんばってみてくださいね!
    かつさん>
    開発環境の件、了解です。第二章のところで、開発環境構築の話を入れることにします。ほかにも要望があれば、ちょちょっと加えていきたいと思いますので、都度、コメントくださいね。
    みっちーさん>
    みっちーさんなら、ここまでネタがあれば、あとはご自分でグイグイといけちゃうのではないでしょうか?SIPHA SYSTEMでは、手抜き逆運動学計算とかも入れていますが、みっちーさんならそれ以上行っちゃいそうですよね!楽しみにしています。

  5. みっちー より:

    4年も経って今更ですが、最近またRPU-10をいじってます。
    相変わらずSISOさんのドキュメントにすごくお世話になってます。
    質問なのですが、結局SISOさんはその後460kbpsで通信出来たのでしょうか。
    僕は結局通信出来てません。

  6. SiSO より:

    みっちーさん>
    おひさしぶりです!最近は全然触れてないです…。460kbps通信はできませんでした。当時、フタバさんに問い合わせたら「クロックはぴったり合わせているはずなんですが…」と回答を頂いた記憶があります。当時、大会に出場した時にG-Tuneのソースコードもやっぱり115kbpsでした。
    で、あいまいな記憶ですが、実験して不安定ながらちょっとできた記憶があります。それは、「ゆっくり460kbpsで通信する」というものです(試しただけなのか、できたのか記憶が怪しい…)。通常、連続したデータは、ドバっと1バイトの送信完了フラグが立ったら即効で流し込みますが、それを、少しだけ間隔を空けてやる、みたいな実験をしたような記憶が…あるような、ないような。
    うーん、実験したソースコードが見つかりません。夢だったのか、現実だったのか…。

  7. みっちー より:

    さっそくの返事ありがとうございます。
    ゆっくり460kbpsってなんだか矛盾してますね(笑)
    ヒントありがとうございます。いろいろ試してみます!
    ディズニー楽しんできてください♪

  8. SiSO より:

    みっちーさん>
    最近、ロボット関係さわってなくて、しっかりした回答ができなくてすいません。確か、自分で通信ライブラリを開発していたような記憶があります。
    世の中ではもっとハイスペックなCPUが出ていますが、RPU-10、まだまだいろいろできるとおもいます。

  9. […] RPU-10講座/第一章 RPU-10でできること […]

Your Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

PAGE TOP ↑