サイトアイコン KOKENSHAの技術ブログ

Servo Driver HAT for RaspberryPi PCA9685 16チャンネル

目次

Servo Driver HAT for Raspberry Piの購入

アマゾンの商品の名前は下記の通りです:

PCA9685 16チャンネル 12-ビット PWM Servo モーター ドライバー IIC モジュール Arduinoに対応 サポート Raspberry Pi Zero/Zero W/Zero WH/ 2B/ 3B / 3B+ ロボット

だいぶ長い名前ですね!笑

Raspberry Piも全部使えるんですね。これはなかなか便利です!

Arduinoも書いていますが、こっちは対応しない模様です。

[amazonjs asin=”B07K7NK2TJ” locale=”JP” title=”PCA9685 16チャンネル 12-ビット PWM Servo モーター ドライバー IIC モジュール Arduinoに対応 サポート Raspberry Pi Zero/Zero W/Zero WH/ 2B/ 3B / 3B+ ロボット”]

 

Servo Driver HATが到着

早速開けてみようと思います!

綺麗に包装されています。

中身出して、今回のServo Driver HATの本体と、固定用のネジ類ですね。

ピンのところにちゃんと保護用の発泡スチロールで保護しています。

発泡スチロールを外して本体にフォーカスしてみます。

 

サイズの比較

せっかくなので、前の記事でも書いたPCA9685のボードと比較しみましょう!

RaspberryPi+Python+PCA9685で複数のサーボを制御する!簡単!

(サイズの比較だけなので、ちょっと外れているケーブルは気にしないでください。)

 

サーボと接続するところは全く同じ配置ですね。

ボードのサイズが違います。今回の Servo Driver HATの方がすこい大きいです。ほぼRaspberry Pi Zeroと同じサイズ(HATなので!笑)

 

背面もこのように、違います。直接にRaspberry Piに接続することができます。

 

Raspberry Pi Zeroも一緒に比較すると、サイズ感がわかりやすいかと思います。

ここで気づいたのですが、私が持っているRaspberry Pi Zero WHですが、まだピンが半田付けしていません!

合体することができない!

大丈夫!

Raspberry Piもいっぱい持っていますから!笑

 

Raspberry Pi 3Bと接続

Raspberry Pi Zeroを諦めて、以前別の実験をした時のRaspberry Pi 3Bを見つけてきました!

レインボーケーブル綺麗ですね!笑。

ただ、これで向きはどっちだっけとなっています。

イメージとしては、メスの方を使うと、真ん中のコネクタにこういうふうに接続することができます。

オスの方を使うと、レインボーケーブルの末端のコネクタと接続することができます。

どっちでも、応用によってはありですね!

向きが間違って接続すると、Servo Driver HATもRaspberry Pi本体も壊れることがあるかもしれませんので

やはり一回しっかりケーブルの向きを確認してから、通電しましょう!

そのために、Raspberry Piの箱を一回解体します。

蓋を外して、Raspberry Pi 3Bが見えてきました!

これでケーブルの向きも確認できて、安心してServo Driver HATを接続することができます。

レインボーケーブルの真ん中のコネクタに接続します!

なぜか空中に浮いています!笑

さらに、Servo Driver HATにサーボを接続していきます!

最終的に、8個まで接続していきます!

 

Raspberry Pi電源ON

いつものように周辺必要なものを接続します!

今回はSSHでRaspberry Piに入って操作します!もちろん、直接に操作しても問題ないですよ!

 

プログラミングと設定

必要な設定は、本系の情報サイトを参照してください。

https://www.waveshare.com/wiki/Servo_Driver_HAT

プログラムはまず、前回の記事の中のプログラムをそのまま試してみます!

ソースコードはこちらです。

https://github.com/adafruit/Adafruit_Python_PCA9685

その中のexamples/simpletest.py

このプログラムは8個のサーボを動かしてくれます!

(必要な設定も前の記事を参考してください、下にリンクを貼ります。)

RaspberryPi+Python+PCA9685で複数のサーボを制御する!簡単!

# Simple demo of of the PCA9685 PWM servo/LED controller library.
# This will move channel 0 from min to max position repeatedly.
# Author: Tony DiCola
# License: Public Domain
from __future__ import division
import time

# Import the PCA9685 module.
import Adafruit_PCA9685


# Uncomment to enable debug output.
#import logging
#logging.basicConfig(level=logging.DEBUG)

# Initialise the PCA9685 using the default address (0x40).
pwm = Adafruit_PCA9685.PCA9685()

# Alternatively specify a different address and/or bus:
#pwm = Adafruit_PCA9685.PCA9685(address=0x41, busnum=2)

# Configure min and max servo pulse lengths
servo_min = 150  # Min pulse length out of 4096
servo_max = 600  # Max pulse length out of 4096

# Helper function to make setting a servo pulse width simpler.
def set_servo_pulse(channel, pulse):
    pulse_length = 1000000    # 1,000,000 us per second
    pulse_length //= 60       # 60 Hz
    print('{0}us per period'.format(pulse_length))
    pulse_length //= 4096     # 12 bits of resolution
    print('{0}us per bit'.format(pulse_length))
    pulse *= 1000
    pulse //= pulse_length
    pwm.set_pwm(channel, 0, pulse)

# Set frequency to 60hz, good for servos.
pwm.set_pwm_freq(60)

print('Moving servo on channel 0, press Ctrl-C to quit...')
while True:
    # Move servo on channel O between extremes.
    # ここ少し改造しました。今回はサーボ8個を動かしてみます。
    for i in range(8):
        pwm.set_pwm(i, 0, servo_min)
        time.sleep(1)
        pwm.set_pwm(i, 0, servo_max)
        time.sleep(1)

結果はこちらです!

 

まとめ

いかがでしょうか!Servo Driver HATのイメージが伝わったでしょうか?

今回は、プログラムも完全に前の記事のものそのまま使っていまして、ハードウェアをそのまま入れ替えた感じですね。前もRaspberry Piを使っていましたが、配線などちょっと面倒でした。

今回は、そのまま刺すだけで、すぐ動作できました。だいぶコンパクトになりましたし、動作も安定しています。

これで、サーボをどうやって動かすのかという段階はもうクリアして

次はいよいよロボットらしい部品を作って、何か面白い挙動をする「もの」を作りたいですね!

また、JavaScriptで動かすことのできるので、下記の記事をご覧ください。

JavaScript(johnny-five)でArduinoのFirmata方式で、PCA9685複数サーボを動かす!

購入を検討する方はこちらのリンクどうぞ!

[amazonjs asin=”B07K7NK2TJ” locale=”JP” title=”PCA9685 16チャンネル 12-ビット PWM Servo モーター ドライバー IIC モジュール Arduinoに対応 サポート Raspberry Pi Zero/Zero W/Zero WH/ 2B/ 3B / 3B+ ロボット”]

Amazonのページですが、なぜか1万円もする同じようなものもあるので、気をつけてください。

[amazonjs asin=”B07FQ9678G” locale=”JP” title=”ABOX Raspberry Pi 3 Model b+ ラズベリーパイ 3 b+【2018新型】 MicroSDHCカード32G/NOOBSシステムプリインストール/カードリーダ /5V/3A スイッチ付電源/高品質HDMIケーブルライン/ヒートシンク /簡単に取り付けケース /日本語取扱説明書”]

 

 

モバイルバージョンを終了