raspberry pi zeroでライブカメラ作成

前回の投稿で初期設定の方法を紹介しましたが、その後ライブカメラのための設定をしてみたのですが、思ったより簡単にできてしまったので紹介です。

作り方をググった限りではミドルウェアを使うのが一般的みたいですが、今回使ったのがzeroでスペックが低いのとミドルウェアはインストールが難しかったり設定に癖があったりするので、今回はphpで画像を自動作成し、Apacheでそれを連続で表示するような簡易的な仕組みで作成しました。

参考にしたページはこちらです。
実際の作業は以下の通りです。

1.カメラモジュール有効化

コマンド:raspi-config

・5.Interfacing Optionsを選択
・P1 Cameraを選択
・<yes>を選択
・自動で再起動がかかる

2.Apacheのインストール

コマンド:apt-get install apache2
→インストールが完了すると自動でサービスが起動し
 再起動時も自動で起動するので設定は不要

3.Apacheの設定

外部公開はしないのでセキュリティ関連の設定はしないが
sudoの実行権限だけ与えておく

コマンド:vi /etc/sudoers

以下を「root ALL=(ALL:ALL) ALL」の下に追記

www-data ALL=(ALL) NOPASSWD: ALL

設定適用のため再起動
コマンド:reboot

4.phpのインストール

コマンド:apt-get install php php-cli php-gd php-pgsql php-mcrypt php-dev

5.画像取得用PHPスクリプト作成

「/var/www/html/still.php」を以下の内容で作成

<?php

ob_start();
 system(“sudo raspistill -o – -t 1 -w 640 -h 480 -e jpg -q 70 -n -rot 180”);
$data = ob_get_contents();
ob_end_clean();

echo “data:image/jpeg;base64,” . base64_encode($data);

?>

6.画像連続表示用htmlファイル作成

「/var/www/html/camera.html」を以下の内容で作成

<html>
<head>
<title>MyCamera</title>
<meta charset=”UTF-8″>
<meta name=”viewport” content”width=device-width, initial-scale=1.0″>
<script src=”//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js”></script>
<script>
var temp = $(“”);
setInterval(function(){
$.ajax({
type: “get”,
url: “still.php”
})
.done(function(result){
temp.on(“load”, function(){
$(“#my-camera”).attr(“src”, temp.attr(“src”));
});
temp.attr(“src”, result);
})
}, 100);
</script>
</head>
<body>
<img id=”my-camera” src=””>
</body>
</html>

ここまで設定出来たら「http://[ラズパイのIPアドレス]/camera.html」でアクセスすれば表示されます。

phpスクリプトとhtmlはほぼ参考サイトのコピペです。

処理内容も参考サイトに説明があるのでそちらを見ていただければ良いですかね。

一応、ちょっとだけ手を加えるとしたら以下の点ぐらいですね。

・画像サイズ
phpスクリプトのraspistillコマンドの「-w ○○」「-h ○○」で画像サイズ横と高さを指定

・画像クオリティ
phpスクリプトの raspistillコマンドの 「-q ○○」で画像のクオリティを指定

・画像向き
phpスクリプトの raspistillコマンドの 「-rot ○○」で画像の向きを指定

・画像更新頻度
htmlの「setInterval(function(){~省略~},○○)」で更新頻度を指定
→「100」で0.1秒ごとに更新になります。

ひとまず解説はこれくらいで。

意外と簡単に作れたのはいいのですが、暗視用に赤外線カメラを買ったはずが普通のカメラでした・・・

まぁ、必要そうならカメラモジュール変えるだけなのでとりあえず現状で設置して使用ですかなぇ

とりあえず今日はここまでで
では