Edited at

Raspberry Pi3 でカメラと赤外線センサーであそぶ

More than 1 year has passed since last update.


購入したもの

ラズパイはあるので、カメラ、ジャンパワイヤ、赤外線センサーを購入します。


カメラのとりつけ

そんなに難しくはないですが、カメラモジュール取り付けが初めてだったので、上に押し上げることにしばらく気づかず四苦八苦しました。

上に押し上げて(取り外しまではしない)、シールをとります。

そしてそこに隙間があるのでカメラモジュールの端子部分を USB モジュール側にむけてさしこみます。

_2016-12-23_21-24-04_658.png


カメラのチェック

ラズパイの sudo raspi-config でカメラを有効にして再起動をかけます。

そのあと、次のコマンドで画像が出力されていれば OK です。

raspistill -o /tmp/image.jpg


Raspberry Pi と赤外線センサーの接続

GPIO 18 ピンを使います。

赤外線センサーに、VCC、OUT、GND とあります。

2016-12-23_21-39-05_293.jpeg

それぞれ次の通りに接続します。

VCC → Raspberry Pi 4番ピン の 5V

OUT → Raspberry Pi 12番ピンの PWMO(18)
GND → Raspberry Pi 6番ピンの GND

_68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f33343032322f30663331316435642d636331392d623163362d323637302d6361346333363166636636352e706e67.png

※ピンについてはドキュメント参照してください。GPIO: Raspberry Pi Models A and B - Raspberry Pi Documentation

※配線は、VCC を 5V、OUT を GPIO、GND を GND に接続できたらなんでも大丈夫です。GPIO ピン変えたときはそのピン番号を適宜スクリプトに反映して下さい。

これで接続完了です!


実装前準備

pip install でもいけると思いますが、apt-get でインストールします。

sudo apt-get install python-picamera

Python の REPL で次がコケなければ OK です。

import pycamera


実装

GPIO のどのピンにさしたかにもよりますが、18番にさしたとして次のコードにしました。

もう少しイベント的に取る方法があったはずですが、ひとまず。


# -*- coding: utf-8 -*-
# 2016/12/20 0:51
import traceback
from functools import wraps
import time
import RPi.GPIO as GPIO
import picamera

__author__ = 'isann'

def wrapper(func):
@wraps(func)
def _func(*args, **keywords):
try:
func(*args, **keywords)
except Exception:
traceback.print_exc()

return _func

@wrapper
def main():
sensor_pin = 18
sleeptime = 5

GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
GPIO.setup(sensor_pin, GPIO.IN)

cam = picamera.PiCamera()
cam.resolution = (384, 288)

try:
print "App Start"
print "ctrl+c : if you want to stop app"
while True:
if (GPIO.input(sensor_pin) == GPIO.HIGH):
print('shot!!!!')
filename = time.strftime('%Y%m%d%H%M%S') + '.jpg'
save_file = '/tmp' + '/' + filename
cam.capture(save_file)
time.sleep(sleeptime)
print('wait...')
else:
time.sleep(1)
except KeyboardInterrupt:
print "Quit"
finally:
print "clean up"
GPIO.cleanup()

if __name__ in '__main__':
main()

これで人感カメラができましたー!

人の動作などに反応してカメラがショットされます!

あとは WEB にアップして表示する普通の仕組みを作ってやるだけです。

おわり。


参考

人感センサーとカメラをRaspberryPiにつないでみた - ついてる工房

人感センサ A500BP (DSUN-PIR, SB00412A-1も) が安いだけでなく Raspberry Pi との相性もバッチリだったので、人感カメラが10分で出来てしまった話。 - Qiita

Raspberry Piに赤外線センサーを付けて、動きを検知してみた: Raspberry Piでやってみた