Help us understand the problem. What is going on with this article?

Raspberry Pi 3でpythonを使いモータードライバーを使いモータを制御する!

More than 3 years have passed since last update.

はじめに

「優しいIT」という理念の基、ITコンサルタントをしている亀井亮介と申します!
現在、仕事では要求分析・要件定義を中心に上流工程をしていますが、プログラムも書きます!
優しいIT活動の一環として「教育用ようにプログラミング可能なPCを安価に提供する」理念の「Raspberry Pi 3(通称ラズパイ)」の紹介をします!
今回は、モータを制御します!これを応用すれば、ラズパイでラジコンの出来上がりです!

手順

  1. 配線
  2. プログラム motor.py
  3. プログラムを動かす

1. 配線

配線図は、ラズパイマガジン-2016年6月号 特集1 アキバの人気パーツ 配線図ベスト17 ⑨モータを自在に回せるそのままです。

写真は下記の通りです。かなり分かりにくいかと…。
ラズパイ×モーター配線図

一応動画にもしました。こちらも分かりにくいですかね…
動画解説クリック→

テキストに起こしてみました。
ラズパイから見た配線

  • ラズパイ 2番ピン(5V) - モータードライバー 7番(Vcc)
  • ラズパイ 16番ピン(GPIO23) - モータードライバー 5番(IN1)
  • ラズパイ 18番ピン(GPIO24) - モータードライバー 6番(IN2)
  • ラズパイ 6番ピン(GND) - モータードライバー 1番(GND) - 電池のマイナス側

モータードライバーから見た配線

  • モータードライバー 4番(Vref) - 抵抗5.1kΩ - モータードライバー 8番(Vs)
  • モータードライバー 8番(Vs) - 電池のプラス側
  • モータードライバー 2番(OUT1) - DCモーター
  • モータードライバー 10番(OUT2) - DCモーター

その他

  • コンデンサー - DCモーター
  • コンデンサー - DCモーター

※写真と動画ではつないでません。用途は雑音抑制です。

2. プログラム motor.py

プログラムはラズパイマガジン-2016年6月号 特集1 アキバの人気パーツ 配線図ベスト17 ⑨モータを自在に回せるをもとに、引数を入力できるように変えています。

GitHubにソースをアップしているので、お好きにお使いください。

gitでcloneする
$ git clone https://github.com/RyosukeKamei/raspberrypi3.git
motor.py
# GPIOを制御するライブラリ
import wiringpi
# タイマーのライブラリ
import time
# 引数取得
import sys

# GPIO端子の設定
motor1_pin = 23
motor2_pin = 24

# 引数
param = sys.argv

# 第1引数
# go : 回転
# back : 逆回転
# break : ブレーキ
order = param[1]

# 第2引数 秒数
second = int(param[2])

# GPIO出力モードを1に設定する
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode( motor1_pin, 1 )
wiringpi.pinMode( motor2_pin, 1 )

if order == "go":
    if second == 0:
        print("回転 止めるときはbreak 0コマンド!")
    else:
        print(str(second)+"秒回転")
    wiringpi.digitalWrite( motor1_pin, 1 )
    wiringpi.digitalWrite( motor2_pin, 0 )
    time.sleep(second)
elif order == "back":
    if second == 0:
        print("逆回転 止めるときはbreak 0コマンド!")
    else:
        print(str(second)+"秒逆回転")    
    wiringpi.digitalWrite( motor1_pin, 0 )
    wiringpi.digitalWrite( motor2_pin, 1 )
    time.sleep(second)

# 第2引数が0の場合は、ブレーキをしない
# 第1引数がbreakの場合は、ブレーキ
if order == "break" or second != 0:
    print("ブレーキ!")
    wiringpi.digitalWrite( motor1_pin, 1 )
    wiringpi.digitalWrite( motor2_pin, 1 )

3. プログラムを動かす

動かしている様子を動画に収めました。
動画解説クリック→

3-1. 引数

プログラムは次のような形式です。
引数は第1引数、第2引数両方入力する必要があります。

プログラム
$ sudo python3 motor.py [第1引数:命令] [第2引数:秒数]

第1引数は

  • go
  • back
  • break

の3つです。どれかを入力してください。
(本当はこの3つ以外だとメッセージ表示とか制御が必要ですが、プログラムが複雑になるので省略します。)

第2引数は秒数です。
1と入れると1秒回転します。
0を入力した場合、次の命令で"break"されるまで回ります。

3-2. 回転 go

10秒回転
$ sudo python3 motor.py go 10
回転を続ける
$ sudo python3 motor.py go 0

3-3. 逆回転 back

10秒回転
$ sudo python3 motor.py back 10
回転を続ける
$ sudo python3 motor.py back 0

3-4. ブレーキ

ブレーキ
$ sudo python3 motor.py break 0

サイトマップ

Raspberry Pi 3 (ラズパイ)セットアップ

Raspberry Pi 3インストール→無線LAN→日本語入出力→Macから操作

Raspberry Pi 3 にDockerを乗せてPython+MySQL環境を構築!

RaspberryPi3(ラズパイ)にDockerをインストール
RaspberryPi3(ラズパイ)にDockerでPython+bottle+MySQL環境構築する!【簡単構築編】
RaspberryPi3(ラズパイ)にDockerでPython+bottle+MySQL環境構築する!【試行錯誤編】

Raspberry Pi 3でエアコン一体型パソコン「airpi」を作る!

Raspberry Pi 3でエアコン一体型パソコン「airpi」を作る!

Raspberry Pi 3 (ラズパイ)とpythonで遊ぼう

Raspberry Pi 3でプログラミングをする Node-REDと普通にプログラミング
Raspberry Pi 3でpythonを使いLEDを光らせる(Hello World)
Raspberry Pi 3でスイッチの状態を検出する
Raspberry Pi 3でpythonを使いサーボモータを動かす
Raspberry Pi 3でpythonを使いモータードライバーを使いモータを制御する!
Raspberry Pi 3でpythonを使いスライドスイッチを検出する!
Raspberry Pi 3でpythonを使い磁石スイッチを検出する!
Raspberry Pi 3でpythonを使い温度を検出する!
Raspberry Pi 3でpythonを使いブザーを鳴らす!
Raspberry Pi 3でpythonを使いA/Dコンバーターでアナログ信号を検出する!
Raspberry Pi 3でpythonを使い「明るさ」を検出する!
Raspberry Pi 3でpythonを使い「温度(A/Dコンバーターを利用)」を検出する!
Raspberry Pi 3でpythonを使い「7セグメントLED」に出力する!

テスト駆動開発を重点においた規則

コーディング規則「優しいコードを書こう」(FuelPHP)
命名規則「3ヶ月後の自分自身に優しく、チームに優しく、まだ見ぬメンバーに優しく」

Docker+PythonでWebアプリケーション開発

Docker上のCentOSにPython3と、関連ライブラリpip, virtualenvとフレームワークDjango, bottle, Flaskのインストール!これらをまとめたDockerfile付き!

開発しやすい環境構築(Docker+PHP)

Dockerを利用しApacheにPHP環境 + Eclipseを連携
Dockerを利用したFuelPHP開発環境構築
Docker利用したFuelPHP開発環境の初期設定とscaffoldを利用してCRUDスケルトン作成
FuelPHPのデータベースマイグレーション

RyosukeKamei
「優しいIT」という理念の基、ITコンサルタントをしている亀井亮介と申します! 現在、仕事では要求分析から要件定義を中心に上流工程をしていますが、プログラムも書きます!2016年現在、ベンダーマネジメントが主な業務です! 「資格試験勉強をすればするほど、社会貢献ができる?」ウェブサイトを運営しており、並行してシステム構築中 http://korejoap.info/ 子供が3人いまーす
http://sr2s.org/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away