BPK-KS4 : サーボを動かしてみる

ここではラズパイでRCサーボモータ(以降サーボと略します)を動かす方法を説明します。

サーボの接続

2016-09-04 09.06.18


I2Cの有効化
  • ラズパイとサーボドライバボードは「I2C」という方式で通信しますが、ラズパイはデフォルト設定ではI2Cが無効になっているので、有効にしてください。
    • X Window System画面左上のメニューアイコン(ラズベリーの絵)から「設定」→「Raspberry Piの設定」を選び、「インターフェース」タブの「I2C」を「有効」に切り替えます。
    • 再起動することで、設定が有効になります。

モジュールとサンプルプログラムの取得
  •  ユーザーディレクトリ「/home/pi」にベゼリー用のディレクトリ「bezelie」を作りましょう。
    • $ cd
      $ mkdir bezelie
  •  gitからベゼリーのサンプルプログラム集を取得しましょう。
    • $ cd /home/pi/bezelie
      $ sudo git clone https://github.com/bezelie/pi.git
    • /home/pi/bezelieの下に「pi」というフォルダーが作成され、その中にベゼリーのサンプルプログラムがコピーされたはずです。lsコマンドで確認しておきましょう。
  • AdaFruit社がサーボドライバ「PCA9685」を使うためのモジュールを公開してくれています。同社は他にもラズパイで各種デバイスをPythonから使うためのモジュールを公開してくれているので、まとめて取得してしまいましょう。
    • $ cd
      $ sudo git clone -b legacy https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
    • 「adafruit」「Adafruit」など大文字と小文字は区別されますので、注意して入力してください。
    • これで「/home/pi」の下に「Adafruit-Raspberry-Pi-Python-Code」というディレクトリが作られ、いろいろなファイルがコピーされたはずです。サーボを動かすためのファイル(Adafruit_I2C.py, Adafruit_PWM_Servo_Driver.py)は「Adafruit_PWM_Servo_Driver」というディレクトリの中に入っていますので、これら を作業ディレクトリ「/home/pi/bezelie/pi」の下にコピーします。
      • $ cd
        $ sudo cp Adafruit-Raspberry-Pi-Python-Code/Adafruit_PWM_Servo_Driver/* bezelie/pi
      • フォルダー名が長くて入力するのが大変ですが、数文字打ったあとTABキーを押してみてください。候補が表示されるので、入力の手間を省くことができます。
  •  さっそくサーボを動かすサンプルプログラムを実行してみましょう。
    • $ cd /home/pi/bezelie/pi
      $ python sampleServo1.py
      • べゼリーの3つのサーボが動いたら成功です。
      • 終了したいときは「CTRL+C」を押してください。


  •  応用
    • サンプルプログラムをテキストエディタnanoで開いてみましょう。
    •  12行目でベゼリー首を上下に振る関数は以下のように記述されています。
      •  bezelie.movePit (30, 2)
        sleep (0.2)
        
        bezelie.movePit (-30, 1)
        sleep (0.2)
      • movePitのPitはPitchの略で、首の縦振り方向の回転を意味しています。
      • カッコ内の(30, 2)は、角度と速度です。角度は正の値が下向き、負の値が上むきなので、「30」の場合は、下方向に30度向きます。速度は最速が0で、値を大きくするほどゆっくり動きます。記述を省略した場合は最速の0になります。したがってmovePit(0)は最速で首を正面を向かせる命令になります。
      • 同様に21行目と24行目のmoveRot関数はRotation、つまり首を左右に回転させる関数です。角度は正の値が反時計回り、負の値が時計回りの回転です。
      • まずは自分なりに回転角度と回転速度を変えてみることから始めてみましょう。
      • 編集終了後に保存するファイル名を聞かれますが、別名で保存しましょう。

Tips
  • I2Cとは
    • I2CはInter-Integrated Circuitの略で、アイツーシーあるいはアイスクエアドシーと読みます。
    • フィリップス社が提唱したシリアル通信の規格です。
    • シリアルデータ(SDA)とシリアルクロック(SCL)の2本の信号線だけで通信することができます。
    • 複数のデバイスを同時に接続することができます。
    • ディスプレイ、温度センサー、加速度センサーなど、I2C接続に対応したディスプレイが多数発売されています。
  • I2Cのためのツール「i2c-tools」もインストールしておくと便利です。
    • $ apt-get install i2c-tools
    • 以下のコマンドでI2Cの接続状態を知ることができます。
      • $ sudo i2cdetect -y 1
    • 他にも、i2cset、i2cget、i2cdumpといったコマンドが使えます。