やること
RaspberryPiとサーボドライバ、サーボモーターを接続しロボットアームを動かします。
用意したもの
ロボットアーム組み立て
Amazonで購入したのですが、説明書がなく検索しても見当たらなかったので関連画像を見つつ手探りで組み立てました。
ラズパイ起動
RaspberryPi OSをインストールしたSDカードをラズパイに差し込み起動します。
接続
ラズパイとサーボドライバをジャンパワイヤーで接続します。
接続についてはこちらの記載がとても参考になりましたので、ここでは省略します。
https://zenn.dev/naoya_oshiro/articles/fa95bd81e3ac8a
接続が終わったらi2cdetect
コマンドで利用できるアドレスが分かるので確認します。
利用したラズパイはi2cが無効だったので、設定から有効化しました。
raspberrypi:~ $ sudo i2cdetect -r -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- -- -- -- -- -- --
動作確認
ライブラリを利用してpythonで開閉するコードを実行し、サーボモーターを動かします。
#!/usr/bin/python
import Adafruit_PCA9685
import time
SERVO = Adafruit_PCA9685.PCA9685(address = 0x40, busnum = 1)
SERVO.set_pwm_freq(60)
ARM = 0
def move(pulse):
print(pulse)
SERVO.set_pwm(ARM, 0, pulse)
time.sleep(2)
def close():
move(280)
def open():
move(420)
while True:
close()
open()
アドレスはコマンドで確認できた0x40を設定してます。
アームの開閉はサーボモータのパルス幅(set_pwmの第3引数)を150~600に設定します。
値が極端過ぎると動作場所によっては可動域が合わないため注意です。
無事動きました!
アームの可動域は掴むものによって良しなに変えていこうと思います。
最後に
ラズパイ購入から一通りを今回初めてやってみたのですが、ロボットアームの組み立てが一番大変でした。
ラズパイのセットアップやGPIO周りの接続についてはノウハウが転がってるので、気軽に始めやすく良かったです。
次は他の部分も一通り接続して全体的に動かしたいと思います。