Posted at

子守 with らずぱい


RaspberryPiで暗視カメラ

ワタクシゴトですが、うちにはオチビがおります。まだ0歳です。

19時くらいから寝てもらうことにしているのですが、自分はまだ流石に寝ないですね。

かといって、リビングで寝てもらうには眩しいだろうなぁということで、リビングの隣の部屋を暗くして寝てもらっています。

リビングのくつろぎスペースからは見渡せるところに寝てくれているのですが、ちょっとキッチンに立ちたいときや、お風呂に入りたいときなど、うつ伏せ寝になっていないかなぁなど、気になってしょうがないです。

そこで、暗視カメラを設置し、ストリーミング配信し、スマホからチェックすることにしました。


Setup Raspberry Pi

まずはRaspberry piのセットアップをおこないます。

Raspberry piのOSはDebianベースのRaspbianにしました。Liteでも良かったのですが、GUIが欲しい日も来るだろうと思い、Raspbian Stretch with desktopにしました。

ダウンロードはこちらから。


まずはSDカードを初期化します

SDカードをDiskUtilityで初期化しても良いのですが、一度Raspberry用にセットアップしていたりすると、完全にきれいになりません。

そこで、ここでは完全に初期化する方法を取りたいと思います。Terminalを立ち上げて、次のコマンドを入力します。


user$ diskutil list


リストの中からSDカードっぽいものを見つけます。

そのディスクの名前とフォーマットのタイプを指定してフォーマットします。


diskutil eraseDisk MS-DOS RPI disk2



次にOSをインストールします

先程ダウンロードしたRaspbianのimgファイルをどこかわかるところに置いておきます。

インストール先のSDカードがどこにマウントされているかを確認します。


user$ df

/dev/disk2s2 ~


SDカードのマウント先を確認できたら、そのカードを一旦アンマウントします。


user$ diskutil unmount /dev/disk2s2


次に、imgファイルのパスを確認した上で、下記コマンドで書き込みます。


user$ sudo dd bs=1m if=[解答した.imgファイルのパス] of=/dev/rdisk2


disk2s2をrdisk2にするのは、ちょこっと高速になる裏技らしいです。

しばらく何も反応がないので不安になりますが、じっと耐えると


3248+0 records in

3248+0 records out

3405774848 bytes transferred in 217.669749 secs (15646524 bytes/sec)


こんな感じで出てくるので、安心してください。


microSDをRaspberryPiにセットする

USBキーボードとマウスとモニターがある人は、RaspberryPiにmicroSDをセットして、起動してください。

GUI対応なのでとりあえず起動するところまではすぐ行くと思います。


USBキーボードとか用意していない場合

ssh接続で接続してがんばりましょう。

raspbianをssh起動させるために、raspbianのSDカードを改めてPCに差し込みます。

そして、ディスクのルートに"ssh"という名前のファイルを作成します。(拡張子不要)

これがあるとssh起動するようにできているみたいです。

あらためて、SDカードをRaspberry Piにセットし、電源を入れます。

はじめはsshで接続するので、有線LANでルーターに接続してください。

いずれにしても、何かしらの有線接続が必要になりますね。

ssh接続のホスト側PCもRaspberry Piと同じルーターに接続しておき、


user$ arp -a


でネットワークにあるssh対象を検索します。

RaspberryPiは、Macアドレスの上位6桁がB8-27-EBになります。

これで見分けることができます。

Macアドレスの上位6桁はベンダIDです。Raspberry Pi Fundationに割り振られているIDです。

これで接続先のIPアドレスがわかったと思うので、


user$ ssh pi@[IPアドレス]


で接続をします。初期設定では、ユーザーがpiでパスワードがraspberryです。

接続できたら、IPを固定してしまいましょう。大体いつも同じIPになるようにはなっていますが、

DHCPを信じ切るのも良くないです。


sudo vi /etc/dhcpcd.conf


とタイプし、viエディタを起動してdhcpcd.confを編集します。

viエディタの使い方がわからない場合は検索してからやりましょう。

困ったら:q!で強制脱出しましょう。

static IPのところをご自分の環境に合わせて変更して、dhcpcd.confを保存して終了です。


ssh接続して、Bluetoothデバイスをつなぐ

私の場合、有線のマウスはありませんでしたが、無線ならありました。

そこで、ssh接続してBluetooth設定ができれば、何かと便利だろうと思った次第です。

これはbluetoothに対応しているraspberry pi 3でのお話です。


pi@raspberrypi:~ $ bluetoothctl


これでBluetoothコントロールに入れます。


[bluetooth]# scan on


で接続待機中のBluetoothデバイスがスキャンできます。


Device XX:XX:XX:XX:XX:XX Name:BlueToothMouse


このアドレスをコピーして


pair XX:XX:XX:XX:XX:XX

connect XX:XX:XX:XX:XX:XX

trust XX:XX:XX:XX:XX:XX


とすれば、ペアリング-> 接続-> 次回以降も自動接続 という設定ができます。


暗視カメラをセットアップする

を参考にしました。

暗視カメラはサインスマートのものを買いました。


環境整備


pi@raspberrypi:~$ sudo apt-get update

pi@raspberrypi:~$ sudo apt-get upgrade


でがさっと更新しておく。

Raspberry PiのConfigを起動する。


pi@raspberrypi:~$ sudo raspi-config


ここから、5 Interfacing Optionsを選択し、P1 Cameraを選択します。

これをenableにして、再起動します。


画像を撮影してみる


raspistill -o image.jpg


とすると、撮影してimage.jpgとして保存してくれる。


ファイルを回収する

Raspberry Pi側に、


sudo apt-get install netatalk


をインストールし、Finderで接続すると便利です。

これで、写真撮影までは成功ですね。


動画をストリーミング配信する

動画のストリーミング配信にはmjpg-streamerを使うことにしました。

まずはmjpg-streamerのソースをとってきたりするので、作業用ディレクトリを作ります。


pi@raspberrypi:~$ mkdir mjpg-streamer

pi@raspberrypi:~$ cd mjpg-streamer


次に、ソースをとってきてビルドします。


~$ sudo apt-get install libjpeg8-dev cmake

~$ git clone https://github.com/jacksonliam/mjpg-streamer.git mjpg-streamer

~$ cd mjpg-streamer/mjpg-streamer-experimental

~$ make

~$ sudo mv mjpg-streamer/mjpg-streamer-experimental /opt/mjpg-streamer


ビルド成果物は/opt/mjpg-streamerにうつしておくと良いです。

続いて実行してみます。


~$ cd /opt/mjpg-streamer

~$ ./mjpg_streamer -o "./output_http.so -w ./www -p 8080" -i "./input_raspicam.so -fps 30 -x 320 -y 240"


8080番ポートで320*240の動画をストリーミング配信するという感じです。

あとはブラウザでRaspberryPiのIPアドレスと、さっきのポート番号(8080)を指定してあげれば、ストリーミング配信がみれます。配信ページのカスタマイズはまた今度、とします。