1
2

ラズパイでロボットアームを動かしてみた

Posted at

やること

RaspberryPiとサーボドライバ、サーボモーターを接続しロボットアームを動かします。

用意したもの

  • Raspberry Pi4 ModelB 4GB
  • AMONIDA メカニカルアーム
  • zetaon PCA9685 サーボドライバ PWM
  • ジャンパーワイヤ

ロボットアーム組み立て

Amazonで購入したのですが、説明書がなく検索しても見当たらなかったので関連画像を見つつ手探りで組み立てました。

稼働確認しやすいように今回はアームの部分のみ利用します。

ラズパイ起動

RaspberryPi OSをインストールしたSDカードをラズパイに差し込み起動します。
スクリーンショット 2024-06-03 0.46.13.png

接続

ラズパイとサーボドライバをジャンパワイヤーで接続します。
接続についてはこちらの記載がとても参考になりましたので、ここでは省略します。
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周りの接続についてはノウハウが転がってるので、気軽に始めやすく良かったです。

次は他の部分も一通り接続して全体的に動かしたいと思います。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2