IoTする方法⑤実際の作業(モーター回し)

しっぽにちは。おみーです♪(*^^*)♪
IoT第5回です。
第1回:全体構成
第2回:GPIO
第3回:PWM
第4回:I2C
今日は実際にモーター回してみます。

第3章:実際の作業(モーター回し)
モーター(RB90)は秋葉原で買ってきました。
【理系の解説】
モーター回し:サーボモータを動かす。サーボモータはPWMで動作するため、ラズベリーパイでGPIO端子とサーボモータの端子をつなぐ。その際、ブレッドボードを利用すると便利である。
ハードウェアPWMの端子は、ラズパイのGPIO 12, 13、18, 19なので、そこにつなぐ。(今回はピン番号=32:GPIO12(ラズパイ4右下5番目))そしてサーボモータに電源を供給するため、グラウンドのピン6番(ラズパイ4右上3番目)と、5Vのピン2番(ラズパイ4右上1番目)とサーボモータも接続する。
接続が完了したら、あとはプログラムを記載するだけである。
以下にプログラムを記載する。duty比率を変更すると、モーターの角度が変更できる。

# gipoのpythonでの制御ライブラリをインストールする
sudo apt install pigpio
# ライブラリの起動
sudo pigpiod
import pigpio
import time

gpio_pin0 = 12

pi = pigpio.pi()
pi.set_mode(gpio_pin0, pigpio.OUTPUT)

# GPIO12: 8Hz、duty比0.5
pi.hardware_PWM(gpio_pin0, 8, 500000)

time.sleep(10)
pi.stop()

【文系の要約】
モーターを回す。ぐるぐる回すだけじゃなくて、好きな角度回したいじゃん。ということで、サーボモータというモータを使って、これだけ回れ!という指令を可能にする。サーボモータはPWM(電気のモールス信号)で動作するため、ラズベリーパイのGPIO(電気を送るピン)とサーボモータを銅線でつなぐ。その際に、ブレッドボード(延長コードみたいな板)を利用すると便利である。
ハードな方のPWM(ラズベリーパイに専用の制御回路があるモールス信号用ピン4本)はラズベリーパイの12, 13,18, 19番ピンなので、そこにつなぐ。(↓のプログラムは12につないでみた。)そしてもう片側はモータに電気を送るため、グラウンド(洗濯機のアースみたいなもん)のピン6,9,14,20,25,30,34,39番かな?のどれかとつなぐ。あと、5Vのピン2,4番のどっちかとサーボモータを接続する。
接続が完了したら、あとはプログラムを記載するだけである。
以下にプログラムを記載する。duty比率(モールス信号の動きの大きさ)を変更すると、モーターの角度が変更できる。

#は解説行
#なしが実際のソースコード

# ↓GPIOのpythonでの制御ライブラリをインストールする(gpio動かすための呪文ゲット)
sudo apt install pigpio
# ↓ライブラリの起動(ゲットした呪文を発動できるように起動しておく)
sudo pigpiod
# ↓ゲットした呪文を起動まではしたので、使用可能にする呪文を詠唱、これで、GPIO魔法を使える
import pigpio
# ↓あとで時間を制御したいので、時間魔法を使えるように呪文を詠唱
import time


# ↓12番のピンにgpio_pin0というあだ名をつけておく
gpio_pin0 = 12


# ↓gpio魔法用の杖を召喚
pi = pigpio.pi()
# ↓さっきあだ名をつけた12番ピンから出力モードで電気を出すように杖に設定し、魔法準備ターン終了
pi.set_mode(gpio_pin0, pigpio.OUTPUT)


# ↓魔法発動!!(GPIO12: 8Hz、duty比0.5)
# モーターがぐるっと回って、電気が途切れたタイミングで止まる。
# ※ピン12番、8ヘルツ、モールス信号の動きの大きさ500000で電気いけー!と言っている
# ※1000000がduty比1となる。なので、500000はduty比0.5
# ※duty比1に近いほうが、モールス信号のでかさがでかい。(よく回る)
pi.hardware_PWM(gpio_pin0, 8, 500000)


# ↓GPIO魔法発動したので、時間魔法発動してちょっと休む猶予をゲット
time.sleep(10)
# ↓モーター回し終わったので終了宣言。
pi.stop()

この記事が気に入ったらサポートをしてみませんか?