Raspberrypi zero w & カメラでネットワーク定点カメラ作った



キャンピングカー製作のDIY動画など更新しています。チャンネル登録お願いします。


ベランダのエビを、家にいないときでもリモートで観察したくなったのでネットワークカメラ作った。






ラズパイは前からzeroが欲しかったがなかなか手に入らず、忘れた頃にもう一度探したら最新のwifi&bluetoothが組み込まれてるzero wを入手できた。

カメラも一緒にゲット。


[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]
Raspberry Pi Zero V1.3 ミニカメラ
価格:2742円(税込、送料別) (2017/9/23時点)



平日の夜とか波無い週末にちまちま作業を進めたので作業ログをここに残す。

8/19 OSインストール&SSH設定

ラズパイに直接繋げるモニタ(HDMI)とキーボード(USB)は持ち合わせてなかったので、最初は部屋のPC(windows7 64bit)にUSBでつないでSSHでラズパイにログインして作業することにした。

手順1:
Raspbian最新バージョンをDL。 (https://www.raspberrypi.org/downloads/raspbian/)
※DESKTOPとLITEがあるが、SSHで作業するのでLITEを選択。

手順2:

手順3:
手順2でDLしたWin32DiskImagerを使って手順1でDLしたOSイメージをSDカードに書き込む。

ここまでの作業は以下サイトがWin/Mac/Linuxの各OSごとに良くまとまっている。
https://www.lifehacker.jp/2013/02/130226raspberry_pi_guide.html

手順4:
PCに刺してるSDカードを一度抜いて刺しなおす。

手順5:
SDカードのbootディレクトリ内のファイルを修正。

[config.txt]
一番下に dtoverlay=dwc2を追加する。

[cmdline.txt]
modules-load=dwc2,g_etherを rootwaitとquietの間に入れる。

手順6:
SDカードをラズパイに刺し、ラズパイをPCに繋ぐ。

手順7:(もっと前にやっといても良い)
cabを解凍すると、RNDIS.inf と rndis.catが出てくる。

手順8:
デバイスマネージャを開くと、USB シリアル デバイス(COMx)と認識される。
右クリック > ドライバーソフトウェアの更新(P)... > コンピュータを参照してドライバーソフトウェアを検索します(R) > ... と進めて、手順7で解凍して出てきたRNDIS.infを指定してインストールする。

手順9:
itunesをインストールしていない場合はインストールする。
itunesに含まれているBonjourというソフトがあると、ラズパイのIPアドレスが分からなくてもホスト名でLAN上のデバイスにアクセスできる。
Bonjourだけインストールしてもいいが、俺の場合はitunesが入ってるからそのまま特に何もしないでOKだった。

手順10:
puttyからraspberrypi.localにssh接続し、以下初期アカウントでログイン。

[id] 
 pi
[password]
 raspberry

手順4~8は、以下のサイトが参考になった。
http://qiita.com/mt08/items/ce5e3911d74d7fad4563


これで、PCにラズパイをつないでSSHログインするところまで完了。



8/20 アカウント設定


手順1:
rootのパスワードを設定。

sudo passwd root

手順2:
一般ユーザーを作成。

sudo adduser USER

手順3:
手順2で作ったユーザーにpiユーザーのグループを引き継がせる。

[piユーザでidコマンド結果]
uid=1000(pi) gid=1000(pi) groups=1000(pi),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),101(input),108(netdev),997(gpio),998(i2c),999(spi)

これのgroupsの番号をカンマ区切りでusermodの引数に渡して以下コマンド実行
※1000(pi)は不要そうなので除いた。(だめ?なら作り直す。)

usermod -aG 4,20,24,27,29,44,46,60,100,101,108,997,998,999 USER
※-aオプション付けないとよろしくないことになる。

手順4:
piユーザーを削除。

userdel -r pi

アカウント設定完了。
以後、基本的に新しく作った一般ユーザーで作業をする。


8/21 wifi設定&wifi経由でssh

ラズパイを作業用PCと同じLANに繋げればPCにUSBで繋げなくともSSHで入れるようになるので、その設定をした。(ラズパイをwifiに繋ぐというだけだが..)

手順1:
アクセスポイント一覧から、対象のwifiが認識されていることを確認

sudo iwlist wlan0 scan | grep ESSID

手順2:
設定ファイルを編集
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

[以下を追加]

network={
    ssid="SSID"
    psk="パスワード"
}

手順3:
再起動

sudo reboot

手順4:
ルーティングテーブルに192.168.xxxがあることを確認
(プライベートIPが割り振られている = wifiにつながっている)

sudo route -n

手順5:
シャットダウンし、PCから外してコンセント電源で起動

sudo shutdown -h now

手順6:
puttyで今までどおりログインできればOK

※固定IPを設定する場合以下参照(Bonjour使ってホスト名でSSHできるので今のところ不要)
http://frontier-of-curiosity.org/2016/08/15/raspberry-pi-3%E3%81%ABwifi%E7%B5%8C%E7%94%B1%E3%81%A7ssh%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B/


8/21 NAS構築(samba)

ラズパイカメラで撮った写真を操作元PCですぐ確認できるようにするためにNAS構築した。

手順1:
apt最新化

sudo apt-get update

手順2:
sambaインストール

sudo apt-get install -y samba

手順3:
nas用ディレクトリ作成

sudo mkdir -m 777 /home/{user_name}/nas/

手順4:
設定ファイル編集

sudo vi /etc/samba/smb.conf

以下を追記。

[nas]
path = /home/{user_name}/nas/
guest ok = Yes
read only = No

手順5:
パーミッションの設定
ラズパイ側とPC側で相互にファイルの追加&編集ができるようにしたいと思ってゴチャゴチャやったけど結局完璧な設定は、確かできてない。
現状以下のようになってる。

・smb.confのcreate maskとdirectory maskを、それぞれの箇所で以下のように設定した。

create mask = 0700
directory mask = 0700

・nasディレクトリの権限設定。umaskはやったか忘れたけど、現状nas/以下に作られるファイルはread onlyになっててそれで問題ない。

chmod 700 /home/{user_name}/nas/


とりあえずラズパイから追加したファイルをPC側から参照できるようになってるからOK。

ラズパイから追加したファイルがPCで参照できている。

PCから追加したファイルがラズパイから参照できている。
sambaメモ

・ログの場所
/var/log/samba/

・起動/停止/再起動コマンド
sudo /etc/init.d/samba satart
sudo /etc/init.d/samba stop
sudo /etc/init.d/samba restart

9/3 カメラモジュール接続&撮影

ついに!

手順1:
カメラモジュールをラズパイに接続


手順2:
カメラ有効化。
以下コマンドで設定モードの画面が立ち上がる。

sudo raspi-config

5 Interfacing Optionsを選択

P1 Cameraを選択

Yes

Ok

Finish

Yes

手順3:
静止画を撮影してみる。
上で作ったnasディレクトリに保存する。

raspistill -o /home/{user_name}/nas/test.jpg


撮れた

9/16 動画撮影&公開サーバーに転送するようにした

手順1:
ラズパイで撮った動画ファイルを定期実行バッチで実家の公開サーバにscpで転送したいので、そのときにパスワード聞かれたりしないように鍵認証の設定をした。
※今回は3年前に自作したサーバーを使う

[ラズパイ側]
cd ~
(.sshが無かったらmkdir .ssh)
# sshのパーミッション設定
chmod 700 .ssh

# 鍵生成
ssh-keygen -t rsa

# 鍵をサーバに配置
scp ~/.ssh/id_rsa.pub {user}@{server_host}:~/.ssh/authorized_keys


[サーバー側]
# パーミッション設定
chmod 600 ~/.ssh/authorized_keys
# 公開鍵認証を許可していることを確認(していなかったらyesに変更する)
cat /etc/ssh/sshd_config | grep PubkeyAuthentication


[もう一度ラズパイ側]
# ログイン確認(パスワード入力を求められないことを確認)
ssh  {user}@{server_host}


手順2:
ラズパイカメラで撮影した動画は.h264という形式で保存されるので、mp4に変換したい。そのために動画ファイルの変換ソフトをインストールする。
※サーバー側で変換処理したほうがいいとも思ったけど、動画ファイル形式の中でmp4が一番圧縮率が高い(実際そんな変わらないが)ので、通信量を考慮してラズパイ側でmp4に変換してからサーバに転送することにした。

# gpacをインストール
sudo apt-get update
sudo apt-get install -y gpac

手順3:
動画を撮影して公開サーバーに転送するシェルを作成。

[シェルの中身]

#!/bin/bash

now=`date "+%Y%m%d%H%M"`
rm /home/{user_name}/nas/*
raspivid -w 960 -o /home/{user_name}/nas/ebi_${now}.h264 -t 20000
MP4Box -fps 30 -add /home/{user_name}/nas/ebi_${now}.h264 /home/{user_name}/nas/ebi_${now}.mp4
scp /home/{user_name}/nas/ebi_${now}.mp4  {user}@{server_host}:/var/www/


手順4:
cron設定。
暗い時間に撮影しても黒い映像しか取れないので、6時から17時に動かす。

0 6-17 * * * cd ~ ; sh ebicamera.sh

手順5:
電源確保。

エビカメラはベランダに置くので部屋のコンセントは電源として使えない。
なのでソーラーパネルつきのモバイルバッテリーをゲットした。

↓これが大容量で良さそうだったのでぽちった。

手順6:
設置。

ラズパイをケースに入れてラップで包んだ

水槽内を撮れるように置いた

これで、日が当たれば充電しながら稼動してくれるようになった。

ジーザス。

今後やりたいことは、以下。
  • 良い感じのケースないかな。
  • 外部ネットワークからラズパイにログインできるようにしたい。
    • SSHポートフォワードか、ソラコムのサービスを利用するなど。
  • 暗視カメラで夜も撮影できるようにしたい。
  • 人体感知センサと傾斜センサ組み合わせての盗難防止装置を作りたい。
  • リアルタイムでストリームしたい。
    • そのためにwimaxとか容量無制限の通信環境に変えたい。