Loading [MathJax]/extensions/Safe.js
MENU

Pi Pico でJoystick を使ってサーボモータを制御してみる


2軸Joystick モジュールをPico につないで、2軸のカメラマウントを動かしてみます。

開発環境はArduino IDE とMicroPython の2つを使ってみます。

 

Arduino IDE

MicroPython

joystick の操作

組み立ててみました

動かしてみました

 


構成

ラズパイ4 Model B はPico にファームウェアやプログラムを仕込むのに使います。

実際にカメラを使う場合は、processingなどでカメラ映像を表示するのに使います。

参照 Pi Pico でエッジAI を試してみる(1)カメラ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

用意するもの

ラズパイ4 Model B

Pico W(H)

Joystickモジュール

カメラマウント

Servo motor(sg-90を使ってみる)

 

GPIO について

Pico ではADCが5つ使えて、そのうち3つ(GP26,27,28)がユーザーに開放されています。今回はそれを使います(VRX、VRY、SW)。

サーボモータには、GP0とGP4を使います。

Wiring (配線)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


TOP


Arduino IDE

母艦(ラズパイ4)にArduino IDE をインストールしておきます。

ラズパイ4でArduino IDE を使ってみる

ボードマネージャーにEarle Philhower版をインストール」しておきます。

Arduino IDE でPi Pico Wの開発用にEarle Philhower版を使う

ツールー>ボードー>ボードマネージャー>Raspberry Pi RP2040 Board(3.3.2)ー>Raspberry Pi Pico W

 

 

 

 

 

 

 

 

 

 

 

 

ファイルー>新規ファイルで開いて書き込みます。

コードはこんな感じです。

Map関数の最大値、最小値はloop内のX_POS , Y_POS をシリアルモニターで確認しておいてください(表示が速すぎる場合はdelay を1000くらいにする)。

Pico をラズパイに接続して、マイコンボードに書き込むをクリック

 

 

 

 

 

 

 

 

 

 

 

 


TOP


MicroPython

Pico W にMicropython用ファームウェアUF2をインストール

UF2 ファイルは、Raspberry Pi MicroPython ドキュメント ページにあります。

どれでもいいと思います。

 

 

 

 

 

 

 

ファイルをダウンロードしたら、BOOTSEL ボタンを押しながら、USB ケーブルを使用して Raspberry Pi Pico を母艦に接続します。 RPI-RP2 という名前の新しいドライブがファイル エクスプローラーに表示されます。 UF2 ファイルをこのドライブにドラッグ アンド ドロップ します。 完了すると、ドライブはファイル エクスプローラーから自動的に消えます。

 

Thonny IDE を使う

母艦であるラズパイにはThonny はプレインストールされています。

起動して新しいプロジェクトを開き(NEW)、以下の2つのコードをPico W に書き込み、main.pyを実行します(RUN)。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

【servo.py】

 

【main.py】

 


TOP


サーボモーターを動かしてみましょう。

Joystick の動き(よく見るとちょっと変な気もしますが……..気にしない)

 

 

 

 

 

 

 

 

 

 

 

 

 

サーボモータの回転は以下のように制御されます。

ホームポジションをこう取った場合

 

 

 

 

 

PRESS

グッと押し込むとGNDに接続されて、ホーンはhomeポジションに戻ります。

 

 

 

 

 

UP

ホーンは以下の位置まで瞬時に回転します。

 

 

 

 

 

DOWN

ホーンは以下の位置まで瞬時に回転します。

 

 

 

 

 

 

LEFT

ホーンは以下の位置までゆっくり回転します。速度はloop内のsleep()の引数で調整できます(0.01の値を大きくすればよりゆっくり回転します)。

 

 

 

 

 

 

RIGHT

ホーンは以下の位置までゆっくり回転します。速度はloop内のsleep()の引数で調整できます(0.01の値を大きくすればよりゆっくり回転します)。

 

 

 

 

 


TOP


カメラマウントを組み立ててみました

部品はこれだけです。

Aに上部モーターがセットされ、Bに下部モーターがセットされます。Cがそれをつなぐアームです。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

全体像

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

下部のモーターをセットして、上部のモーターを支えるアームを組みます。こんな感じです。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

なかなかキツいですが、何とか入るサイズになっています。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

十字のホーンを切って削って押し込み、ここにモータをセットします。

 

 

 

 

 

 

 

 

 

 

 

 

 

上部のモーターをセットする場合、事前に0度で回転させておいて、そのレベルでモーターを軸受けにセットします。0度の位置で上のモーターが下のモータに接触しないように調整しましょう。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

上部モーターのホームポジション (90 度の位置)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

この時点で天井板をセットします。ただし、この製品、精度に問題があり、あまりきつくねじ止めすると、モーターの軸と軸受けがズレてしまい、回転時にズレのため軸に異常に負荷がかかり過電流が流れて発熱してモーターが死んでしまったことがあります。

ねじ止めも隙間を空けてゆるく止めておきます。

 

 

 

 

 

 

 

 

 

 

このsg-90も含めて低価格のサーボモーターはセーフティーがほぼ無いので、回転時に負荷がかかるのは禁止です。

 

 


TOP


動かしてみました。

ちなみに、動画の奥に見えているのがPico です。

最後にJoystickをpressして両方のモーターをホームポジションに戻しています。

 

TOP


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*