明日は我が身の備忘録(あすびぼ)

自分向け備忘録です。Amazonリンクは権利的に画像を使いやすく、価格確認もしやすいからです。頻繁に更新は難しいでしょうね

Raspberry pi Pico でKONDOサーボ(KRS-4034)を動かす

f:id:kirikoshokunin:20210421203921p:plain:w350
 Raspberry Pi PicoからICS通信経由KONDOサーボを動かしてみる。今回はIDの設定と角度指令を行う。構成はPasberryPi PicoのハードウェアシリアルをKONDOサーボの通信線に直接接続して通信をする。

 KONDOサーボのKRSシリーズはフタバのコマンドサーボと同様にホビーロボット向けのサーボモータで板金部品にフタバのサーボより簡単に取り付けることができる。通信は5VのTTLレベルで一つのバスに32個を接続することができる。ただし、デイジーチェーンする際は電流とコネクタの定格電流を考慮する必要がある。

 また、KONDOサーボはカタログスペックのトルクは大きいが、連続してこのトルクは出力できない。また、アルミギヤを使用しているので、ギヤ破損をしやすい。その一方で価格はフタバやDYNAMIXELと比べて安価。

 

動作


www.youtube.com

ソースコード

 ソースコードは今回もics通信用のCファイルとヘッダファイルを作成して、プロジェクトに含める必要がある。まずCMakeLists.txtでビルドに含めるソースを設定する。

CMakeLists.txt

ics_servo.h

ics_servo.c

メインソース

Raspberry Pi Pico でFutabaコマンドサーボRS304MDを動かす(VSC + C言語)

f:id:kirikoshokunin:20210420225819p:plain:w300

 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

動作


www.youtube.com

Raspberry Pi Pico PWMでRCサーボを動かす(windows10 + VSCode)

f:id:kirikoshokunin:20210419203354p:plain:w400
RaspberryPi Pico  前回は、Raspberry Pi PicoでPWMを出力できるようにしてLEDを調光したが、今回はソースコードを一部変更しRCサーボを動かせるようにする。Picoは16chのPWMがあるので、16個のRCサーボを接続して動かすことができる。

続きを読む

Raspberry Pi PicoでPWMを出力する(windows10 + VSCode)

f:id:kirikoshokunin:20210418213215p:plain:w350
 
 今回はRaspberryPi PicoのハードウェアPWMを2本出力して、LEDをゆっくり点滅と可変抵抗で調光できるようにする。

続きを読む

Raspberry pi Pico ADCを使う(Windows + VSCode)

f:id:kirikoshokunin:20210417152050p:plain:w350

 今回は、マイコン触りはじめの定番のADC(Analog to digital converter)を使用してみる。前回のタイマ割り込みのプロジェクトにADCの機能を追加実装する。

続きを読む

Raspberry Pi Pico タイマ割り込みでLチカ(VSC + C言語)

 

f:id:kirikoshokunin:20210416234931p:plain
 
前回新しいプロジェクトを作成する方法がわかったので、今回はタイマ割り込みでLチカをしてみる。タイマ割り込みは色々な制御を行うので真っ先に抑えておきたい。またUSB経由でシリアルポートに文字を送ることも行う。新しいプロジェクトの場合printfの設定を行う必要がある。

CMakeLists.txtを変更

上述した通りsdioのprintfの出力先を設定する。 プロジェクト名が”my_project”の場合USB経由のprintf有効にする場合は下のように追加で記述する。

pico_enable_stdio_usb(my_project 1)

USB経由を有効にしたらUART経由は無効にする。それは下のように記述する。

pico_enable_stdio_uart(my_project 0)

CMakeLists.txtの全体は下のようになった。

ソースコード

今回はタイマ割り込み設定を2通り行った。

  • add_alarm_in_ms()
  • add_repeating_timer_ms()

 add_alarm_in_ms() は一回だけタイマ割り込み関数を呼び出す設定を行う関数。

 add_repeating_timer_ms()は繰り返しタイマ割り込み関数を呼び出す設定を行う関数。

 今回はオンボードLEDを一回だけの割り込みでONして、外付けLED(GPIO15)を繰り返し関数でON/OFFを行う。

ソースコード全体は下のようになった。

動作

ブレッドボードのタクトスイッチはリセットスイッチで3V3_ENに接続されていてONするとGNDに電圧を落とす。これを付けると書込みのときラクで、これがないとUSBを毎回挿抜しないといけない。


www.youtube.com

Raspberry Pi Pico Visual Studio Codeで新しいプロジェクトを作成して書き込む

 

f:id:kirikoshokunin:20210415233417p:plain:w400
 
 前回の記事ではGithubからクローニングしたサンプルのプロジェクトを開いてビルドして書き込んだが、それだけではオリジナルのプログラムを作るには面倒。 そのため今回は新しいフォルダでVisual Studio Codeプロジェクトを作成し、Cファイルを作成、ビルド、書込みj実行を一通り行う。

続きを読む