LoginSignup
27
31

More than 3 years have passed since last update.

RaspberryPi と暗視カメラを使ってハリネズミの常時監視をするためのメモ

Last updated at Posted at 2016-05-03

namauni.gif

概要

  • Raspberry Pi で常時監視+暗視可能な仕組みを作ったときのメモ
  • ストリーミング配信は mjpeg 方式で 15~30 fps 出るようにする
  • パブリックに公開するので、同時接続数が増えた時に Raspberry Pi が死なないようにプロキシサーバーを立てる

用意するもの

  • Raspberry Pi Model B+ 以上

    $ uname -a
    Linux raspberrypi 4.1.18+ #846 Thu Feb 25 14:11:56 GMT 2016 armv6l GNU/Linux
    
  • Raspberry Pi 用暗視カメラモジュール

  • プロキシ用サーバー

    • 自分しか見ないなら不要
    • さくらのVPS等、インターネットへの outbound traffic が従量課金ではないものが望ましい

あると嬉しい

  • Raspberry Pi に対する固定IP
    ポートフォワードで解決できなくもない

Raspberry Pi セットアップ

カメラモジュール

以下のサイトを参考にした
https://www.rs-online.com/designspark/raspberry-pi-camera

sudo raspi-config するとこまででOK。

mjpg-streamer

  1. mjpg-streamer の Raspberry Pi 用の Fork をコンパイル(make)
    https://github.com/jacksonliam/mjpg-streamer
  2. /opt/mjpg-streamer 下にインストール(make install せずに単純にコピー)
    • ファイル群のオーナーを、実行ユーザー(仮に pi とする)に変更しておく
  3. Systemd 用のファイルを作成

    /opt/mjpg-streamer/systemd/run.sh
    #!/bin/bash
    
    ROOT=/opt/mjpg-streamer
    AUTH_USER={Basic認証用のユーザー名}
    AUTH_PASS={Basic認証用のパスワード}
    
    cd $ROOT
    
    $ROOT/mjpg_streamer -i "$ROOT/input_raspicam.so -fps 15 -x 640 -y 480" -o "$ROOT/output_http.so -c $AUTH_USER:$AUTH_PASS"
    
    /etc/systemd/system/mjpg-streamer.service
    [Unit]
    Description=mjpg-streamer
    
    [Install]
    WantedBy=multi-user.target
    
    [Service]
    User=pi
    Group=pi
    ExecStart=/opt/mjpg-streamer/systemd/run.sh
    
  4. サービスの起動

    # systemctl start mjpg-streamer.service
    

動作確認

ブラウザから http://raspberrypi:8080/?action=stream にアクセス

プロキシサーバーセットアップ

$ uname -a
Linux myproxy 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
  1. mjpeg-relay/opt 下に clone
    • submodule も初期化する
    • ファイル群のオーナーを、実行ユーザーに変更しておく
  2. 実行

    • python 2.7 でしか動かないので注意
    $ python relay.py "http://{Basic認証用のユーザー名}:{Basic認証用のパスワード}@raspberrypi:8080/?action=stream"
    

動作確認

ブラウザから http://myproxy:54321/stream にアクセス

成果物

http://namauni.com/timemachine
※過去の gif 動画になります

備考

mjpeg-relay は docker 化が可能なようだが、手元の環境では動かなかった。
docker run で python プロセスが立ち上がった時に、 relay.py#L80except EOFError: に入ってるっぽい。

因みにシェルスクリプトから実行しても同じ症状なので、せめて systemd でサービス化したかったけど諦めた。python-daemon 使ってほしい。

27
31
1

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
27
31