今回はRaspberryPi3B+とサーボモータドライバ(PCA9685)でサーボを動かしてみたいと思います。サーボモータドライバを使用する理由としては、RaspberryPiのGPIOでは正確なPWM制御をすることができずにサーボモータが振動してしまうため、サーボモータドライバを使用して正確なPWMを行いたいからです。
では以下に手順を記載していきます。
PCA9685を動かすのに必要なものをインストール
以下のコマンドを実行してPCA9685を動かすのに必要なものをインストールしていきます。
まずはI2Cのツールをインストール。
1 2 3 4 5 |
sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade sudo apt-get install python-dev and python3-dev sudo apt-get -y install python-smbus i2c-tools |
次にAdfruitのライブラリをインストール
1 2 3 4 5 |
sudo apt-get install git build-essential python-dev cd ~ git clone https://github.com/adafruit/Adafruit_Python_PCA9685.git cd Adafruit_Python_PCA9685 sudo python setup.py install |
以上で必要なものは全てインストールすることができました。
I2Cの有効化
ラズパイの設定からI2Cを有効化しておきます。GUIからI2Cを有効にするには以下の手順で行います。
設定→Raspberry Piの設定→インターフェイス→I2Cを「有効」に設定→OK→ラズパイを再起動(念のため)
こちらのサイトが参考になります。
Raspberry PiのI2Cを使って電圧を測定する(2019年3月版)
RaspberryPiとPCA9685を配線する
RaspberryPiとPCA9685を配線していきます。
PCA9685 GND <-> Raspberry Pi GND
PCA9685 VCC <-> Raspberry Pi 3.3V
PCA9685 SDA <-> Raspberry Pi SDA
PCA9685 SCL <-> Raspberry Pi SCL
上記に加えて、サーボモータとACアダプタ(もしくは電池)をつなぐ線と、サーボモータの線を0番のところに差し込む必要があります。こちらのサイトの説明が写真があって分かりやすいです。
https://snapguide.com/guides/bezeri-pi-tosabodoraibanojie-sok/
I2Cの接続確認
この段階でI2Cの接続確認を行います。こちらの結果がうまく行かなければサーボモータは動かすことができません。
以下のコマンドを実行してみます。
1 |
sudo i2cdetect -y 1 |
結果が以下のように表示されればちゃんとI2Cが認識されています。
1 2 3 4 5 6 7 8 |
00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: 70 -- -- -- -- -- -- -- |
以下のように表示されたときは何かしらの手順が失敗しています。
1 2 3 4 5 6 7 8 9 |
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70: 70 71 72 73 74 75 76 77 |
失敗したときはこちらの記事を確認してみてください。
RaspberryPiとPCA9685でサーボモータが動かない原因を探る
サンプルプログラムを動かしてみる
上記までで全ての準備が整いましたのでサンプルプログラムを動かしてみましょう。
1 2 |
cd /home/pi/Adafruit_Python_PCA9685/examples sudo python simpletest.py |
全てうまくいっていればサーボが動くと思います。
数日間これで悩んたけど、サーボを動かせて嬉しい。
これだからモノづくりは辞められない。 pic.twitter.com/m38VAIiofh— Kazuki@ロボット作り (@RoomKazuki) July 28, 2019
以上、今回はRaspberryPi3B+とサーボモータードライバ(PCA9685)でサーボを動かす方法についてご紹介させていただきました。
コメントを残す