LoginSignup
16
15

More than 5 years have passed since last update.

GrovePi+ Starter Kit で Parking Sensor が 10 分でできてしまった話

Last updated at Posted at 2015-06-14

始めに

10分は大げさにいっているのではなく本当で、内訳は関係ありそうなサンプルプログラムを眺めてた時間が5分ぐらい、パーツを繋いでコード書く(実体はコピペ)のに5分ぐらいで合計10分ぐらいでした

GrovePi+ Starter Kit

GrovePi+ Starter Kitは Seeed 社の Grove センサー を Raspberry Pi で使えるようにする拡張ボード GrovePiに、いくつかの Grove センサーを詰め合わせてお得なお値段でセットになった、ようするに Raspberry Pi ユーザ用の Grove システムのスターターキットです(名前から分かる事しか説明できてないですね ^^;)

MagPi の Issue 33の Review のコーナー (P56) で GrovePi+ Starter Kitもしあなたがエレクトロニクスをはじめてみたいと思っている python ファンだったら素晴らしい選択 という釣書で紹介されていたのが気になっていました。それまで単に 電気的な接続を気にしないですむ だけなんだろう(私のように電気が苦手なソフト屋には、それを気にしないですむだけでも大変ありがたいのですが)と思っていたのですがどうもそうではなく、大変便利な Cleaver Script が使えるそうです

とりあえずセンサーを繋いでサンプルプログラムを走らせながら読んでみた印象

どのプログラムがどのセンサーのサンプルなのか分かりにくかったのですが、とりあえず動かしているとだんだんわかってきました。これはたしかに楽そうで、とにかく線をつなげて、Arduino のスケッチみたいな構文でリード&ライトするだけでなんでもできそうです。
特に、 LCD が凄く便利で、表示したい文字列とバックライトの色を set するだけという簡単さで、これだけでも買った元がとれそうです

Parking Sensor

Kit の部品を眺めていて、MagPi の issue 31にでていた Parking Sensor がつくれそうなきがしてきました。ここから、完成までが 10分ぐらいでした。とにかく なにも考える必要がない と思うぐらい簡単です

材料

基本的に RaspberryPi と GrovePi+ Starter Kit だけなのですが

  1. Raspberry Pi (Raspbian に GrovePi の設定済み。その際、こういうトラブルもありましたが Q&Aが速くて安心)
  2. GrovePi+
  3. LCD (何番でもいいので I2C に接続)
  4. 超音波距離センサー (Pixcer のロボットキャラの目玉みたいな奴、D2に接続)
  5. 緑LED (D5に接続)
  6. 赤LED (D6に接続)
  7. ブザー (D8に接続、ビクッとする程の大音響なので穴を爪楊枝とかで塞いでもいいかも)

完成イメージはこんな感じです

スクリーンショット 2015-06-14 18.54.44.png

すみません^^; 今は関係ない DHT(デジタル湿度温度計、青い奴)が写っちゃってます ^^;;;;
近日中にこちらの測定値を M2X に送るのも簡単だった話も...

仕様

超音波距離センサーで駐車場の壁までの距離を測って

  1. 測った距離を LCD に表示する
  2. 距離が 1m 以下になったら LCD のバックライトを緑にして、緑の LED を点灯させる
  3. 距離が 30cm 以下になったら LCD のバックライトを赤にして、赤の LED を点灯させ、ブザーを鳴動させる

車を駐車するのに多分便利なんでしょうね。実は私はドライバーズライセンスを持った事がないのでよく知らないのですが...

バックライトはサンプルプログラムを参考(コピペ)にフェードアウトの効果をいれてみました。完成コードの中では for ループでバックライトの色を変えて実現してます

完成品の紹介動画

完成品の動作はこんな感じです

参考にしたサンプルプログラムと完成コード

以下のコードをまず眺めました、ぱっと見てすぐわかるような短いコードばっかりです

  1. LEDのオンオフ
  2. 距離センサー
  3. ブザー
  4. LCD これはちょっと長いですが、要は色と文字列を set してるだけですね

これらをなんとなくくっつけて以下のコードが完成。やってることは単にループをまわして距離を測って、距離に合わせて表示を変えているだけの簡単なものなのですが、それはそうとマジックナンバーだらけでコメントが十分じゃないあたりの手抜きこそが、10分で出来た本当の理由な気が...

完成コード
import sys
sys.path.append("/home/pi/GrovePi/Software/Python/grove_rgb_lcd")

import time
from grovepi import *
from grove_rgb_lcd import *

# Connect the Grove Ultrasonic Ranger to digital port D4
# SIG,NC,VCC,GND
#ultrasonic_ranger = 4
ultrasonic_ranger = 2
led_green = 5
led_red   = 6
buzzer = 8

pinMode(buzzer,"OUTPUT")
pinMode(led_green,"OUTPUT")
pinMode(led_red,"OUTPUT")
time.sleep(1)

while True:
    try:
        # Read distance value from Ultrasonic
        distance = ultrasonicRead(ultrasonic_ranger)
        print distance
        dist = int(distance)
        if dist > 100:
            # non
            digitalWrite(led_green,0)
            digitalWrite(led_red,0)
            setText("distance = "+str(dist))
            for c in range(0,255):
                setRGB(255-c,255-c,255-c)
                time.sleep(.0039)
        elif dist > 30:
            # green
            digitalWrite(led_green,1)
            digitalWrite(led_red,0)
            setText("distance = "+str(dist))
            for c in range(0,255):
                setRGB(255-c,255,255-c)
                time.sleep(.0039)
        else:
            # red, buzzer 1sec
            digitalWrite(led_green,0)
            digitalWrite(led_red,1)
            digitalWrite(buzzer,1)
            setText("distance = "+str(dist))
            for c in range(0,255):
                setRGB(255,255-c,255-c)
                time.sleep(.0039)
            digitalWrite(buzzer,0)



    except TypeError:
        print "Error"
    except IOError:
        print "Error"

感想

ほんとになにからなにまで簡単です。

  1. ハンダ付けはもちろん不要
  2. センサーの接続方法(電圧が5Vか3.3Vか、プロトコルは etc)を意識する必要なし、単に線を接続するだけ
  3. ソフトウェアは GrovePi で用意されている Python の関数を呼ぶだけ

これだけでなんとなく電子工作っぽいことができてしまう簡単さはたしかに MagPi のいうとおり ”a great choice” だったなと思いました

残課題

距離センサーの測定値がちょっと短い気がします。超音波距離センサーは音速に超音波のパルス波が物体に反射してかえってくるまでの時間を掛けて距離を測るのですが、その音速(温度や湿度の関数です)の設定値がちょっと速すぎる(高温多湿の場所を基準にした?)のではと推測されます。補正用の温度、湿度をあたえる API がないので、正確な距離を求めるためにアプリ側での補正が必要そうです

Futur works

GrovePi+ を使ってdht11温室度センサーの測定値をm2xに10分で送信できた話

16
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
15