Raspberry Pi 3でpythonを使いサーボモータを動かす

More than 1 year has passed since last update.


はじめに

「優しいIT」という理念の基、ITコンサルタントをしている亀井亮介と申します!

現在、仕事では要求分析・要件定義を中心に上流工程をしていますが、プログラムも書きます!

優しいIT活動の一環として「教育用ようにプログラミング可能なPCを安価に提供する」理念の「Raspberry Pi 3(通称ラズパイ)」の紹介をします!

今回は、ロボットアームなどに利用される「サーボモータ」を紹介します!

「ジッ」とモータが鳴るだけでテンションが上がります(笑)


1. 配線の写真


2. ソース servo_motor.py

プログラムの説明は#から始まるコメントに記載しています。

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


gitでcloneする

$ git clone https://github.com/RyosukeKamei/raspberrypi3.git



servo_motor.py

# GPIOを制御するライブラリ

import wiringpi
# タイマーのライブラリ
import time
# 引数取得
import sys

# サーボモータに接続したGPIO端子番号を指定
servo_pin = 18
# サーボモータを動かす角度を指定する
# set_degree = 90 デフォルト
# 引数から値を受け取る
param = sys.argv
set_degree = int(param[1])
print(set_degree)

wiringpi.wiringPiSetupGpio()
# ハードウェアPWMで出力する
wiringpi.pinMode( servo_pin, 2 )
# サーボモータに合わせたPWM波形の設定
wiringpi.pwmSetMode(0)
wiringpi.pwmSetRange(1024)
wiringpi.pwmSetClock(375)

# 指定した角度が動作範囲内の場合のみサーボモータを制御
if ( set_degree = -90 ):
# 角度から送り出すPWMのパルス幅を算出する
move_deg = int( 81 + 41 / 90 * set_degree )
# サーボモータにPWMを送り、サーボモータを動かす
wiringpi.pwmWrite( servo_pin, move_deg )



3. servo_motor.pyを実行


servo_motor.pyを実行(引数に角度を取る)

$ sudo python3 servo_motor.py {設定したい角度 -90から90まで}



py3

$ sudo python3 servo_motor.py 90


引数で入力した角度に曲がります。

補足:ラズパイマガジンではソース内部に記載していました。コメントアウトしています。

ハード側

動画解説クリック→

ラズパイ側

動画解説クリック→


4. プログラミングするときに便利なこと

ラズパイを直に操作している方には関係ありません。

Macでラズパイを操作したい方向けです。

当方は、Macでソースを書いて、そのままラズパイに保存し、実行もMacから行います。

(ディスプレイがないのです…)

そのためには、AFPを利用しています。設定方法は

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



「6. AFP設定」

を参照してください!

SFTPなどでわざわざファイルアップロードする必要もなく便利です!

Windowsの方はSambaをインストールすれば似たようなことができるはずです!


サイトマップ


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のデータベースマイグレーション