概要
今回部屋の中の猫の状態が知りたいと思いまして初期型RaspberryPiモデルB+と手持ちにあったWebcamを利用して動体検知を追加した装置を作ってみました。
今回用意した物
初期型RaspberryPiB+(ぶっちゃけPiZeroにHUB付けてでも行けると思う。以下rpi)
余っていたMicroSD4GBメモリ
余っていたWindows用Webcam(私のはJETAKu
というamazonで格安で売ってた物を利用。
有名所で言えばLogicoolC270n
ぶっちゃけLinuxで確認できる物だったらどれでもOKです)
母艦WindowsPC(イメージが書ければMacOSやLinuxでもOK)
RaspberriPiOSLite(Raspbian GNU/Linux 11 (bullseye))
設定方法
母艦でRaspberriPiOSLiteをSDに書き込みます。
私はRaspberryPiImagerを利用しました。
終わったら一旦メモリを抜きもう一度差し込みます。
すると「フォーマットしますか?と聞かれますがここはいいえを選択します。
そして出てきた「boot」と書かれたドライブに新規で「ssh」という拡張子無しの中身無しのファイルを作成します。これをすることによって最初からSSHでアクセスできるようになります。
そして母艦からメモリを取り外しrpiに差し込んでおきます。
各々電源周りやらWebcamの設置をしておきます。ネットワークは有線を利用します(初期型は有線しかないから・・・)
すべて接続が終わったらrpiの電源を入れます。
SSHで接続します。大抵の方はipアドレスを「raspberrypi.local」で接続できると思います。
私はPuttyを利用しています。使いやすいですがsshで接続できれば何を利用してもかまいません。
接続後usernameを「pi」passwordを「raspberry」の初期値を入れてログインします。
その後アップデートを行います。
$ sudo apt update $ sudo apt upgrade
結構時間かかります。その間にipアドレスを固定するための情報を取得します。
Windowsでコマンドプロンプトを開き「ipconfig /all」とし現在のネットワーク情報を書き留めておきます。
その後rpiのssh画面でipアドレスを固定化します。
$ sudo nano /etc/dhcpcd.conf
エディタ画面が開きます。ここで変更するのは43行目から始まる
# Example static IP configuration
から下を以下のように変更します。
interface eth0 static ip_address={固定したいIPアドレス}/24 #static ip6_address= static routers={先ほどコマンドプロンプトで調べたデフォルトゲートウェイ} static domain_name_servers={同じくDNSサーバー}
例えば私の環境ですと
interface eth0 static ip_address=192.168.0.9/24 #static ip6_address= static routers=192.168.0.1 static domain_name_servers=192.168.0.6 8.8.8.8
こうして編集したあと保存します。
そして再起動してIPアドレスを変更します。
$ sudo reboot
再度sshで接続したら今度は今のwebcamの状態を確認します。
$ lsusb Bus 001 Device 004: ID 0c45:6366 Microdia Webcam Vitade AF Bus 001 Device 003: ID 0424:ec00 Microchip Technology, Inc. (formerly SMSC) SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9512 Microchip Technology, Inc. (formerly SMSC) SMC9512/9514 USB Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
この場合0c45:6366 Microdia Webcam Vitade AFがwebcamですね。
ロジクールだと多分Logitech, Inc. Webcam C270とか出ると思います。
またwebcamが接続された時にデバイスファイルが作られるかを確認します。
$ ls /dev/video* /dev/video0 /dev/video10 /dev/video12 /dev/video14 /dev/video16 /dev/video1 /dev/video11 /dev/video13 /dev/video15 /dev/video18
と出ました。webcamを接続していない場合/dev/video0と/dev/video1が出ませんので出てきたという事はきちんと認識され使える状態であるという事です。
motionのインストール
次に、motionをインストールします。
$ sudo apt install motion
この時に[Y/n]で聞かれますがYを入力して進みます。
$ sudo motion -h
私がインストールした時はver4.3.2が入りました。
そして設定ファイルを編集します。
$ sudo nano /etc/motion/motion.conf
最初はデーモン起動はしないでテストするので以下の4行を追加します。
# 動体マーカをつける locate_motion_mode on # 動体検知時に動画を出力しない movie_output off # 動体検知時に画像を出力しない picture_output off # 映像信号の規格を1(NTSC)にする norm 1
これらはrpiにデータを保存させない(SDカードに負荷をかけない)設定です。
後日必要ならNASなどに接続してそちらに画像を保存させる方針です。
では設定ファイルを保存して起動してみましょう。
$ sudo motion [0:motion] [NTC] [ALL] conf_load: Processing thread 0 - config file /etc/motion/motion.conf [0:motion] [NTC] [ALL] motion_startup: Logging to file (/var/log/motion/motion.log)
と出てwebcamの動作LEDが光り始めると思います。
母艦PCのブラウザで
http://{rpiのipアドレス}:8081
で動作しているか確認します。どうですか?ちゃんと映っていますか?
動作していると動いた部分が検知され白い四角で追ってくれます。検知した時にファイルに保存する機能は設定ファイルを変更すれば特定の場所にjpgで保存されたり、検知後に動画ファイルとして保存させたりすることも可能です。
最後にmotionをデーモン起動させる方法ですがまずは今動いているmotionをストップさせます。Ctrl+Cで終了します。そして設定ファイルの16行目のdaemon offをdaemon onに変更して下さい。再度sudo motionでデーモン起動します。
他にも起動時に立ち上げなど色々やることはありますが目的は「動体検知が動く」ですのでここまでにします。
最後に
いかがでしたでしょうかwebcam以外にもスマホにアプリを入れてカメラ代わりにもできるそうです。時間があったらまた挑戦してみようかと思います。
コメント