« 「週刊 ロボゼロ」 第4号(2)補強フレームとフロントカバーの取り付け | トップページ | 「週刊 ロボゼロ」 第5号(1)背中にバックカバーを取り付ける »

Arduinoでロボゼロのサーボを動かしてみよう!(6)

これまで「Arduinoでロボゼロのサーボを動かしてみよう!」では、

  • Arduinoからサーボ

にコマンドを送信して、サーボを動かしていましたが、今回は、

  • サーボからArduino

にデータを受信する方法についてです。

リクエストパケット
サーボからデータを受信する為には、リクエストパケット(という言葉はマニュアル的には使ってない)をサーボに送信すると、サーボからリクエストに応じたデータをリターンパケットとして送ってくる仕組みになっています。

●アドレスを指定してデータを得る場合のリクエストパケットは
FA AF AA 0F BB CC 00 DD

  • AA=サーボID
  • 0F=アドレスを指定してデータを得る場合のフラグ
  • BB=アドレス
  • CC=バイト数
  • DD=チェックサム

となります。例えば「現在位置」を知りたい場合のリクエストパケットは、現在位置のアドレスが0x2Aで、バイト数は2バイトなので、

  • FA AF 01 0F 2A 02 00 26

となります。

●アドレスの範囲を指定していっきにデータを得る場合のリクエストパケットは
FA AF AA BB 00 00 01 CC

  • AA=サーボID
  • BB=アドレスの範囲
    • 0x03=0から29バイト
    • 0x05=30から59
    • 0x07=20から29
    • 0x09=42から59
    • 0x0B=30から41
  • CC=チェックサム

となります。BBの値によって、メモリーアドレスの範囲が変わります。各アドレスの内容に関しては、双葉電子工業さんのRS303MR,RS304MDのマニュアルの25,26,33ページを見て下さい。また、RS30xPacketUtilを使うと簡単にパケットを生成できます

リターンパケット
リクエストに応じてサーボから返ってくるパケットをリターンパケットといいます。リターンパケットは送信のパケットと異なってヘッダーの値がFDDFと異なっているだけで基本構造は同じです。

  • ヘッダー2バイト=FDDF
  • サーボID
  • フラグ
  • サイズ=データのバイト数
  • カウント=1
  • データ=リクエストに応じたバイト数
  • チェックサム=サーボIDからデータまでのXOR

半2重の為の回路
シリアル通信において、データの受送信の為に、送信用と受信用とそれぞれ1本づつ配線されている場合=全2重と言いますが、送信用と受信用が1本からなる場合=半2重と言います。

サーボには、シグナル用の線は1本しかないので、Arduinoとデータを受送信する為には半2重の回路を作る必要があります。

以下は、その写真と回路図です。

20110322022541

2
※図のTX/RXを修正(2011/4/2)

用意するもの

  • 第3号のバッテリーボックス
  • 抵抗1KΩ、100Ω
  • IC?????

※この回路はロボコンマガジン2010年11月号と、ここの写真を参考にしたものです。使っているICはロボコンマガジンに書いてあったので図では?????とさせて頂きました。申し訳ありませんが、?????が何か知りたい場合は、ロボコンマガジン2010年11月号を購入して下さい

さて、実際に、この回路を使ってリクエストパケットを送って、リターンパケットを得るのは次回とさせて頂きます

※プレゼント
このIC?????を抽選で2名様にプレゼントしたいと思います

  • 応募方法:このブログのコメントに「IC?????を希望」していることがわかるコメントを書いて下さい。また、メールアドレスの欄に必ずメールアドレス書いて下さい。メールアドレスが書いてない場合は抽選から外させて頂きます。
  • 応募期限:2011年3月31日
  • 当選発表:抽選の後、当選者にメールで当選の報告を致します。

ご応募お待ちしております

----------------

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

|

« 「週刊 ロボゼロ」 第4号(2)補強フレームとフロントカバーの取り付け | トップページ | 「週刊 ロボゼロ」 第5号(1)背中にバックカバーを取り付ける »

Arduino / Processing」カテゴリの記事

週刊 ロボゼロ」カテゴリの記事

コメント

「IC?????を希望」

3ステートバッファロジックICですかね・・・。
ACかHCかが気になりますっ(^^
個人的にはあのIC以外でもバッファ代わりになるものないかなーと探してたりします。

投稿: MK84 | 2011年3月24日 (木) 07時59分

MK84さん
えっと、写真の方です(^^)

投稿: micono | 2011年3月24日 (木) 10時15分

答えを知っている関係者は対象外?

投稿: yuki | 2011年3月24日 (木) 17時02分

投稿: yuki | 2011年3月24日 (木) 17時03分

yukiさん
こんにちは(^^)
答え知っててもいいですよ(^O^)/

投稿: micono | 2011年3月24日 (木) 17時54分

IC ??!!??? 希望

ご了承頂いたので応募しました。

投稿: yuki | 2011年3月25日 (金) 23時14分

miconさん、いつもお世話になっております。
 紹介頂いたロボコンマガジン2010年11月号で、RS304MDを使った半2重の回路が載っているとのことで見てきましたが、この回路で動きますか。
 RX端子がGNDに接続されていたら信号があっても消えてしまいますよね。10ピンがGNDで、RX端子には接続してはダメだと思うのですが、強力なバッファでもGNDには勝てないけど勘違いかな。
 私はケチって擬似的に半二重回路を在り合わせの抵抗で構成しました(まだ動作確認はしていません)。

投稿: takuo | 2011年4月24日 (日) 15時56分

miconoです。

これ絵の書き方が間違っていて、スリーステートバファーって三角形の側面に繋がっているべきラインがRXに繋がっているように描かれちゃっているんです。

絵だけの問題なので大丈夫ですよ。

投稿: micono | 2011年4月24日 (日) 19時22分

ロボコンマガジン2010年11月号、すでに廃盤で入手できないのですが、ICの型番を知る方法を教えてください。

投稿: Sai | 2018年4月27日 (金) 09時32分

Saiさん
いま、家にいないので
正確なのはわからないですが、
74◯◯125のスリーステートのICです。
適当に検索したURLを添付します。
http://www.chip1stop.com/tutorialContents.do?page=047
あと, ◯◯はHC, AC, LSとか、お好みので。
最近、3.3V<->5Vのレベル変換したかったので、SN74LV4T125を買ってみましたが、まだ、試してません。ゴールデンウィーク中にテストできれば報告します。

投稿: micono | 2018年4月27日 (金) 09時53分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: Arduinoでロボゼロのサーボを動かしてみよう!(6):

« 「週刊 ロボゼロ」 第4号(2)補強フレームとフロントカバーの取り付け | トップページ | 「週刊 ロボゼロ」 第5号(1)背中にバックカバーを取り付ける »