Raspberry Pi Pico でFutabaコマンドサーボRS304MDを動かす(VSC + C言語)
RaspberryPi PicoでPWMサーボを動かせるようになったので、コマンド通信でフタバコマンドサーボのRS304MDを動かしてみる。
RS304MDは、通常のRCサーボと異なりホビーロボット用のサーボモータで板金部品に取り付けやすい、コマンド通信でIDを指定して一つのバスで複数のサーボモータを動作させることができるという特徴がある。
今回はこのRS304MDのコマンド通信をRaspberryPi Picoに実装して、ID変更、トルクON、角度指令を行う。コマンドサーボからの受信は行っていない。
フタバのコマンドサーボはプロトコル
フタバのコマンドサーボはプロトコルが共通なので、今回のソースはRS304MDでも他のサーボでも使用できる。ただし、RS485通信のサーボの場合は外部でRS485ドライバを接続してEnable端子をGPIOに接続する必要がある。
詳細のプロトコルは公式のHPからダウンロードすればよい。コマンドサーボの取扱説明書の中に記述してある。
取扱説明書|ダウンロード|ロボット・無人機用機能部品|双葉電子工業株式会社
配線
配線は以下のようにする。
- RS304MDの信号線:GPIO16
- PWMサーボの信号線:GPIO1
- アナログ入力:GPIO26
ソースコード
まずCMakeLists.txtでプロジェクトで使用するヘッダやCファイルを設定する。
今回は見辛くなるので、フタバのコマンドサーボ用のCファイルとヘッダファイルを別で作成した。なのでそれらもプロジェクトに含める必要がある。
Githubへのリンクの方が良かったかもしれないが、Githubをあまり使わない人がいたのでとりあえずここに全て書く。
CMakeLists.txt
Futabaコマンドサーボ用Cファイル
Gist用にファイル名を変更しているが、MakeLists.txtでは futaba_rs_servo.cとなっているソースコード。
futaba_rs_servo.c
Futabaコマンドサーボ用ヘッダファイル
futaba_rs_servo.h
mainソースコード
Gist用にファイル名を変更しているが、MakeLists.txtではmain.cとなっているソースコード。
main.c