masimaro blog

menu

home > 電子工作:M5Stack > M5stackで2足歩行ロボットの作成②「micropythonでPCA9685を制御してサーボモーターを動かしてみる」

M5stackで2足歩行ロボットの作成②「micropythonでPCA9685を制御してサーボモーターを動かしてみる」


M5Stack
2021-07-23


今回は早速、micropythonでサーボモーターを制御するプログラムを作成します。

サーボモーターの制御には「pca9685」のサーボドライバを使うので、正確に言えばこれを制御するプログラムになります。

raspberrypiのwebiopiにはpca9685のpythonライブラリがありましたが、M5stackにもmicropythonでpca9685を制御するライブラリがありましたので、これを使う事にします。

それでは、まずpca9685のライブラリをダウンロードします。

micropython-adafruit-pca9685

git-hubのリポジトリから下記のモジュールをDLし、USB経由でM5sackのフラッシュに保存します。

motor.py, pca9685.py, servo.py, setup.py, stepper.py

リンクはこちら↓

https://github.com/adafruit/micropython-adafruit-pca9685

 

ターミナルが使えるなら、git cloneでDLし、その後M5stackに移動させます。

ターミナルが使えないならサイトから直でファイルをDLして、thonny IDEでM5stackへ転送する事も可能です。

これでpca9685のライブラリが使えるようになります。

続いて、pc,M5stack,pca9685,サーボモーター,電源,のハードウェアの接続をしておきます。

 

ハードウェアの接続

図のように接続し、PCとM5stackをUSBケーブルでつないでおきます。

モーター用の電源は、たしか4V程度でも動作したはずですので、乾電池でもOKです。

ちなみに、ここでは過去にラズパイで作成したロボットがあるので、それを使ってテストします。

最後に制御プログラムを作成します。

mtest.py

M5stackは、microphthonのファームウェアが入っていれば起動後にまず「main.py」のプログラムを読みに行きます。

今回は、最終的にはmain.pyに「モーター制御」や「WEBサーバー」など、全てまとめて1つのファイルにする予定ですが、とりあえずテストとしてPC上から動作確認をしてみます。

以下のプログラムをPC上に作成し、実行してみます。

from machine import Pin, I2C
import time
import pca9685
import servo

i2c = I2C(0, scl=Pin(22), sda=Pin(21))
sev = servo.Servos(i2c)

while True:
    sev.position(0, 90)
    time.sleep_ms(1000)
    sev.position(0, 60)
    time.sleep_ms(1000)
    sev.position(0, 120)
    time.sleep_ms(1000)

必要なライブラリをインポートします。

i2cのインスタンス化は、引数に0(I2Cペリフェラルを識別),22(SCLに使用するピンを指定するピンオブジェクト),21(SDAに使用するピンを指定するピンオブジェクト)を指定しています。

servoのインスタンス化の引数にi2cを指定すれば、サーボモーターを動作させる下準備ができます。

インスタンスメソッドのpositionは、第一引数にサーボモーターのチャンネル、第二引数に角度を指定しています。

(サーボモーターのチャンネルは、pca9685に接続したモーターのチャンネルを指定すれば良いです。)

whileでループさせているので、実行すれば下のようになります。

次回はM5stackのWIFI APとWEBサーバーの設定を作りたいと思います。

コメントを残す

お名前

コメント



コメント一覧

コメントはまだありません
MENU