🐍

ラズパイでサーボモーターを制御する

2023/08/11に公開

GPIOピンの接続方法

ラズパイのGPIOに接続するために、サーボモーターのコネクタにジャンパワイヤを取り付けます。

茶: GND -> 6番ピン.
赤: 電源 -> 2番ピン.
黄: 制御信号 -> 12番ピン.

ライブラリのインストール

GPIO制御のライブラリーをインストール。

$ sudo pigpiod

ソースコード

プログラムはMacのVSCodeからssh接続して書いてます。

import pigpio
import time

SERVO_PIN = 18
ANGLE = 90 # 回転角度

# pigpioを初期化
pi = pigpio.pi()

# サーボモーターを特定の角度に設定する関数
def set_angle(angle):
    assert 0 <= angle <= 180, '角度は0から180の間に注意する'
    
    # 角度を500から2500のパルス幅にマッピングする
    pulse_width = (angle / 180) * (2500 - 500) + 500
    
    # パルス幅を設定してサーボを回転させる
    pi.set_servo_pulsewidth(SERVO_PIN, pulse_width)

# 使用例
try:
    while True:
        set_angle(90 + ANGLE)  # +angle度
        time.sleep(1)
        
        set_angle(90)  # 0度
        time.sleep(1)
        
        set_angle(90 - ANGLE) # -angle度
        time.sleep(1)
        
        set_angle(90)  # 0度
        time.sleep(1)
except KeyboardInterrupt:
  # Ctrl+Cで終了
    pi.set_servo_pulsewidth(SERVO_PIN, 0)
    pi.stop()

実行結果

今後の課題

目標は、LINE Messaging APIと連携して、LINEからサーボモーターを制御してマンションの解錠ボタンを押すこと。
そのために、ラズパイで立ち上げたflaskのローカルサーバーを、ngrok経由で通信できるようにしようと思う。

GitHubで編集を提案

Discussion