いよいよサーボを動かしてみたいと思います。
私が買ったサーボはSG90というやつですが、amazonで買った安物なので当たり外れがひどいです。外れると負荷が大きいのかセンターまで戻らなかったり、ちょっとだけ動かしたいのに動いてくれなかったりします。ちなみに10個セットを買ったのですが、3〜4個はハズレ(と言っても動くことは動く)でした。
それは置いておいて、いよいよプログラムを組んでいくわけですが、使う言語はpythonです。
プログラミングなんてやった事ないよ〜という人でも大丈夫です。
pythonは入門しやすい言語だと思います。
なんせ、ラズパイに最初から入っているのでラズパイでは一番使いやすい言語だというのが本当の理由だったりします。
かくいう私も、pythonは初心者の部類です。これからもっと勉強したいと思いつつ、まずはサーボを動かすという事ができれば良いということで、行ってみよ〜♪
ライブラリのインストール
いきなりハードルが・・・と思ったでしょ?
そりゃ電気的にはラズパイとPCA9685は接続したよ。でも、Windowsじゃないので、接続したらすぐ使えるわけではないのです。
だって、I2Cで信号のやり取りは出来るとしても、どういうフォーマットでデータを送れば良いのかラズパイは知らないのです。データのやり取りを行うためのライブラリ(Windowsで言うところのドライバー)をインストールしなければいけないのです。
PCA9685をデザインしたメーカーはAdafruitなので、Adafruitからライブラリを入手します。AdafruitはライブラリをGitHubで公開しています。
https://github.com/adafruit/Adafruit_Python_PCA9685
上のページに行くと、README.mdというのがあるので、それを見るとインストールの方法が書いてあります。GitHubとは、公開されているライブラリを簡単に取りに行けるようになっている場所なのです。
README.mdによると、ライブラリをインストールするには、次のようにコマンドラインに入力すれば良いみたいです。
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
無事インストールが出来ました。
サーボモータの接続
の前に、PCA9685という下請け会社は今のところVcc,GND,SDA,SCLの4本でラズパイと繋がっています。この4本は電源を供給し、指示を出す事は出来るようになったのですが、仕事をする事はできません。なぜかと言うと、サーボモーターへ指令は出せてもモーターを動かす電力が供給されていないからです。
PCA9685のVccは自分を動かすための電源であり、LEDの調光だけならV+は繋がなくても良いのですが、サーボなどを動かす場合は、その電源を「V+」に入れてやらなければいけないのです。V+は5v~6vで良いのですが、電流の関係からラズパイから取るのは不安なので、別に電源を取ります。
ちなみに、ラズパイに接続するUSB機器も含めて、ラズパイ4Bだと1.2Aまでは大丈夫なようです。
https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#power-supply:~:text=Power-,Supply,-Typical%20Power%20Requirements
FPV-TANKの場合、電源からの5vを色々な所に配らなければいけないので、ミニブレッドボードを使っています。
レギュレーターの出力をブレッドボードに出して、そこからラズパイやPCA9685のVcc,V+に分配しています。
PCA9685に電源を接続したら、いよいよサーボモーターを接続します。
サーボモーターからは、PWM, V+, GND の3本の線がまとまって出ています。色も黄色(PWM)、赤(V+)、黒または茶色(GND)となっていて、PCA9685もピンの根元に色がついているので、色をあわせて0番ピンに接続します。
12-bitってことは解像度が2の12乗で4096段階と言うことです。すごい精度ですよね。
動かしてみよう!
ブラウザで、以下のフォルダに行くと、サンプルプログラムがありました。
/home/pi/Adafruit_Python_PCA9685/Adafruit_Python_PCA9685/examples
この simpletest.py をダブルクリックすると、次の画面になります。
これは、ラズパイでpythonを実行する環境Thonnyというプログラムが、さっきのサンプルプログラムを読み込んだ状態になっています。詳しい説明は追々やっていくとして、アイコンの再生ボタンと停止ボタンみたいなのが、プログラムの実行と停止です。今回はその程度の知識で、サーボを動かしてみます。
では、再生ボタンをクリックしてみます。
無事サーボモーターが動きました。ここまで来るのは大変だったけど、このモーターが動いたという感動は、やってみないと味わえません。これが電子工作にハマる理由なんですね。
何か工夫したら色んなことに応用ができそうな気がする。だから色々勉強しちゃうんですよね。
次回は、このサンプルプログラムを解読してみたいと思います。
ピンバック:PWM制御を用いたLEDの輝度調整 - northarantの研究室