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重の回路を作る必要があります。
以下は、その写真と回路図です。
用意するもの
- 第3号のバッテリーボックス
- 抵抗1KΩ、100Ω
- IC?????
※この回路はロボコンマガジン2010年11月号と、ここの写真を参考にしたものです。使っているICはロボコンマガジンに書いてあったので図では?????とさせて頂きました。申し訳ありませんが、?????
が何か知りたい場合は、ロボコンマガジン2010年11月号を購入して下さい
さて、実際に、この回路を使ってリクエストパケットを送って、リターンパケットを得るのは次回とさせて頂きます
※プレゼント
このIC?????を抽選で2名様にプレゼントしたいと思います
- 応募方法:このブログのコメントに「IC?????を希望」していることがわかるコメントを書いて下さい。また、メールアドレスの欄に必ずメールアドレス書いて下さい。メールアドレスが書いてない場合は抽選から外させて頂きます。
- 応募期限:2011年3月31日
- 当選発表:抽選の後、当選者にメールで当選の報告を致します。
ご応募お待ちしております
----------------
- 「週刊 ロボゼロ」 第3号(3)Arduinoでサーボのテスト(PWM)
- Arduinoでロボゼロのサーボを動かしてみよう!(2)
- Arduinoでロボゼロのサーボを動かしてみよう!(3)
- Arduinoでロボゼロのサーボを動かしてみよう!(4)
- Arduinoでロボゼロのサーボを動かしてみよう!(5)
- Arduinoでロボゼロのサーボを動かしてみよう!(6)
- Arduinoでロボゼロのサーボを動かしてみよう!(7)
- Arduinoでロボゼロのサーボを動かしてみよう!(8)
- Arduinoでロボゼロのサーボを動かしてみよう!(9)
- RS30xPacketUtil 1.0.1公開
----------------
にほんブログ村
| 固定リンク
「Arduino / Processing」カテゴリの記事
- Intel Galileo 開発ボード(1)入手(2014.02.24)
- FirmaSBBLE(浜サブレー) 公開(2013.12.30)
- SoftModemインターフェースボード で遊んでみる(5)(2011.10.13)
- SoftModemインターフェースボード で遊んでみる(4)(2011.10.13)
- SoftModemインターフェースボード で遊んでみる(6)(2011.10.21)
「週刊 ロボゼロ」カテゴリの記事
- Xcontroller 0.7.0 公開(2014.02.12)
- JO-ZERO2&ROBOXEROに対応した無線式送受信機JXB-1(2014.02.05)
- RCBController 1.0.0 公開(2013.09.28)
- 「SBDBT BLE for RCB」ファーム更新 (2013/9/23)(2013.09.24)
- 「SBDBT BLE for RCB with techBASIC」更新 (2013/9/23)(2013.09.27)
この記事へのコメントは終了しました。
コメント
「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分