はじめに
「優しいIT」という理念の基、ITコンサルタントをしている亀井亮介と申します!
現在、仕事では要求分析・要件定義を中心に上流工程をしていますが、プログラムも書きます!
優しいIT活動の一環として「教育用ようにプログラミング可能なPCを安価に提供する」理念の「Raspberry Pi 3(通称ラズパイ)」の紹介をします!
今まで、ラズパイを触っていたのは、娘(11と8)の夏休みの工作に、ラズパイでラジコンどうかなって思ったからです!(娘なのにラジコン?育て方がね…ふふふ)
結果的に、ラジコンを選んでくれるかどうかわかりませんが(笑)、試作をしてみます。
今回はボタンを押している間モータを動くところまでを書きます!
磁石スイッチ(リードスイッチ)を使った記事もあります!
磁石を近づけている間モータが動く
磁石を近づけるとモータが動き、自動で止まる
ラズパイマガジン-2016年6月号 特集1 アキバの人気パーツ 配線図ベスト17
ラズパイマガジン-2016年8月号 特集1 電子工作12の基本パターン
を見ながら、勉強して応用をしています。非常に参考になりました!
手順
- 配線
- プログラム Raspycon_ver1.py
- プログラムを動かす
1. 配線
テキストに起こしてみました。
ラズパイから見た配線
- ラズパイ 1番端子(3.3V) - モータードライバー 8番ピン(Vs)
- ラズパイ 2番端子(5V) - モータードライバー 7番ピン(Vcc)
- ラズパイ 16番端子(GPIO23) - モータードライバー 5番ピン(IN1)
- ラズパイ 18番端子(GPIO24) - モータードライバー 6番ピン(IN2)
- ラズパイ 6番端子(GND) - モータードライバー 1番ピン(GND) - 電池のマイナス側
- ラズパイ 11番端子(GPIO17) - ボタンスイッチ 左側 - ボタンスイッチ右側 - 抵抗(1kΩ) - ラズパイ 9番端子(GND)
モータードライバーから見た配線
- モータードライバー 4番(Vref) - 抵抗5.1kΩ - モータードライバー 8番(Vs)
- モータードライバー 2番(OUT1) - DCモーター
- モータードライバー 10番(OUT2) - DCモーター
その他(画像と動画では付けていません)
- コンデンサー - DCモーター
2. プログラム Raspycon_ver1.py
GitHubにソースをアップしているので、お好きにお使いください。
$ git clone https://github.com/RyosukeKamei/raspberrypi3.git
# GPIOを制御するライブラリ
import wiringpi
# タイマーのライブラリ
import time
# ボタンスイッチを繋いだGPIOの端子番号
button_pin = 17 # 11番端子
# GPIO端子の設定
motor1_pin = 23 # 16番端子
motor2_pin = 24 # 18番端子
# GPIO初期化
wiringpi.wiringPiSetupGpio()
# ボタンスイッチを入力モード(0)に設定
wiringpi.pinMode( button_pin , 0 )
# モータードライバーは出力モード(1)に設定
wiringpi.pinMode( motor1_pin, 1 )
wiringpi.pinMode( motor2_pin, 1 )
# 端子に何も接続されていない場合の状態を設定
# 3.3Vの場合には「2」(プルアップ)
# (0Vの場合は「1」と設定する(プルダウン))
wiringpi.pullUpDnControl( button_pin , 2 )
# whileの処理は字下げをするとループの範囲になる
while True:
# GPIO端子の状態を読み込む
# ボタンを押すと直進
# GPIOの状態が0V(0)であるか比較
if( wiringpi.digitalRead(button_pin) == 1 ):
# ボタンを離している時は「3.3V(1)」
# (1の場合に停止というのもわかりにくい)
print ("停止")
# モーターを停止
wiringpi.digitalWrite( motor1_pin, 1 )
wiringpi.digitalWrite( motor2_pin, 0 )
else:
# ボタンを押している時は「0V(0)」
print ("直進")
# モーターを回転
wiringpi.digitalWrite( motor1_pin, 1 )
wiringpi.digitalWrite( motor2_pin, 1 )
time.sleep(0.5)
3. プログラムを動かす
$ sudo python3 Raspycon_ver1.py
磁石スイッチ(リードスイッチ)を使ったら面白そうということで、下記の記事も参考にどうぞ〜
磁石を近づけている間モータが動く
磁石を近づけるとモータが動き、自動で止まる
サイトマップ
Raspberry Pi 3 (ラズパイ)とpythonで遊ぼう
Raspberry Pi 3インストール→無線LAN→日本語入出力→Macから操作
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」に出力する!
Raspberry Pi 3でpythonを使いスイッチ制御でLEDを光らせる!
Raspberry Pi 3でpythonを使い暗くなったらLEDを光らせる!
ついに…Raspberry Pi 3でpythonを使いラジコンを作る!(ボタン押している間モーターが動く編)
テスト駆動開発を重点においた規則
コーディング規則「優しいコードを書こう」(FuelPHP)
命名規則「3ヶ月後の自分自身に優しく、チームに優しく、まだ見ぬメンバーに優しく」
Docker+PythonでWebアプリケーション開発
開発しやすい環境構築(Docker+PHP)
Dockerを利用しApacheにPHP環境 + Eclipseを連携
Dockerを利用したFuelPHP開発環境構築
Docker利用したFuelPHP開発環境の初期設定とscaffoldを利用してCRUDスケルトン作成
FuelPHPのデータベースマイグレーション