タグ別アーカイブ: sensor

CIMG2383

動体検出にPIRセンサーを

動体検出には幾つかの方法が有ります。まずカメラ画像の中から動いている物体を検出するものがあります。これは人でも車でもカメラが見ることのできる動いているものを検出します.カメラの性能にも依存しますので例えば暗い時のようにカメラの映像にノイズが入ってしまう場合にはご検出を頻繁に起こしてしまうでしょう。

赤外線の変化を検出して動体検出とするものが有り、これが焦電センサーまたはPIRセンサーで行うことができます。防犯ライトなどにも多く使われている一般的なセンサーです.人間や動物など熱を持つ物体は赤外線を放出しており、その赤外線をセンサーが検出します.赤外線の検出値に変化が有れば何らかの物体が動いたという事でセンサーからの出力を行います.カメラのように画像によることがありませんので暗闇でも検出することができます.一方風なども物体と捉える事が出来るため、風の強い日はその赤外線の変化さえも検出してしまいます.

ここでは安価に入手できるPIRセンサーを紹介します.
CIMG2383
PIR センサー A708-1H
AITENDOで購入
仕様概要:動作電圧0.8-8v、 出力電圧 h:3.3 l:0v、 検出距離5-7m
参考にRaspberry piで接続する場合の例を紹介します.
必要な回路部品はすべてセンサーモジュールに実装されています.接続はPIRの出力をRaspberry piのいずれかのGPIOにつなげるだけです.

スクリーンショット 2013-12-15 13.06.30
あえて書くまでもないかもしれませんが、一応サンプルコードを紹介します.
PythonのGPIOはインストールしている前提です.


#!/usr/bin/python3
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
io_pin=17
GPIO.setup(io_pin,GPIO.IN)
while True:
        gp17=GPIO.input(io_pin)
        if gp17 == 1:
                print ("Move!");
        else:
                print("No move");
        time.sleep(1)

電源電圧が3.3VであるRaspberry piはGPIOの入力電圧も電源電圧を超えないものとしなければなりません。このPIRセンサーの出力は3.3Vという事でそのまま接続できますので大変便利ですね。

IMG_1900

温度センサーADT7310をRaspberry piで使う

温度センサーADT7310をRaspberry piで使ってみます.
秋月電子で売られている同タイプの温度センサーにはI2Cインターフェイスに対応したADT7410もあります。
ここではSPIに対応したADT7310を使います。
IMG_1900

スクリーンショット 2013-12-14 5.55.12

事前にRaspberry piでSPIが使えるようシステムの設定を済ませておきます。
ここではPythonで制御します

import spidev
import time
spi_ch = 1
spi = spidev.SpiDev()
spi.open(0,spi_ch)
spi.max_speed_hz=(100000)   #クロック周波数を設定
spi.xfer2([0x08,0x80])  # センサーを16ビット精度に設定
time.sleep(0.5)
spi.xfer2([0x54]) #連続モードにセット
time.sleep(1) #ADT7410が測定データをAD変換するための時間を待つ
ret = spi.xfer2([0xff,0xff]) #ダミーの2バイトをセンサーに書き込んで2バイトの温度データを読み取る
temp = ret[0]<<8 | ret[1]
temp /= 128.0      #℃に変換
print "temparature:",temp
print "stop:",spi.xfer2([0x50]) #連続モードを停止
spi.close()

無事動作すればコンソールに現在温度を表示するはずです。定時観測に使う場合はこのプログラムに測定結果をメールなどで飛ばす処理を加えたスクリプトにしてcronで定期的に呼び出すようにすると良いでしょう。
ADT7310の制御コマンドは他にも有りますが、順番など含めて動作を確認できたのが上で紹介したコマンドの流れになります.使いこなしによっては他のコマンドも使えると思います。いろいろと試してみてください。

Raspberry piにはSPIで使えるCE信号がCE0とCE1の二つしか無いと言う事はSPIデバイスを二つ使えるという事ですね。液晶デバイスなどSPIシリアルを持ったモジュールなども有りますので使いこなしてみるのも面白いでしょうね。

今回はSPIシリアルを持った温度センサーを使いました。同タイプの温度センサーモジュールにはI2Cインターフェイスを持ったものが有ります.他にも気圧センサーなどもSPIとI2Cのどちらかを選択することができます.もっと多くのモジュールをつなげたい、ほかのセンサーも同時に使いたいと言った時にはI2C対応のモジュールを検討してみると良いでしょう。(それでもI2Cアドレスが競合してしまっては使えないので気をつけましょう)