【ラズパイDIY講座】ラズパイゼロで作る監視カメラ① 〜 ラズパイ側から画像配信してみる
※ 当ページには【広告/PR】を含む場合があります。
2021/06/27
2021/07/03
Web監視カメラの概要
ラズパイカメラのセットアップ
ラズパイ-カメラモジュールの接続準備
ラズパイ用に設計されたカメラケーブル ラズパイZere/Zero W用カメラFFCケーブル 2本セット(15ピン22ピン15cm)
カメラの動作テスト
$ sudo raspi-config
/dev/
$ ls /dev/ | grep video
video0 #👈カメラモジュール
video10
#...
$ vcgencmd get_camera
supported=1 detected=1
supported=0
detected=0
raspistill
$ sudo raspistill -o 1.jpg
1.jpg
raspi
192.168.0.123
12345
/home/raspi/1.jpg
$ mkdir tmp
$ scp -P 12345 raspi@192.168.0.123:/home/raspi/1.jpg tmp/
$ ls tmp/
1.jpg
UV4Lサーバのセットアップ
$ curl http://www.linux-projects.org/listing/uv4l_repo/lpkey.asc | sudo apt-key add -
gpg: no valid OpenPGP data found.
$ wget http://www.linux-projects.org/listing/uv4l_repo/lpkey.asc
$ sudo apt-key add lpkey.asc
OK
/etc/apt/sources.list
$ echo 'deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/stretch stretch main' | sudo tee -a /etc/apt/sources.list
/etc/apt/sources.list
$ sudo nano /etc/apt/sources.list
#...追加👇
deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/stretch stretch main
raspbian/stretch
apt-get
$ sudo apt-get update
$ sudo apt-get install uv4l uv4l-server uv4l-raspicam
#Raspberry Pi 2, 3 or later
#$ sudo apt-get install uv4l-webrtc
#Raspberry Pi 1, Compute Module 1, Zero or Zero W (Wireless)
$ sudo apt-get install uv4l-webrtc-armv6
uv4l-webrtc-armv6
$ uv4l --driver raspicam --auto-video_nr --encoding h264 --width 320 --height 240 --server-option '--port=8080' --enable-server on
<notice> [core] Trying to loading driver 'raspicam' from built-in drivers...
<notice> [core] Loading driver 'raspicam' from external plug-in's...
<notice> [driver] Dual Raspicam & TC358743 Video4Linux2 Driver v1.9.76 built Apr 10 2021
<notice> [driver] Detected camera imx219, 3280x2464
<notice> [driver] Selected format: 320x240, encoding: h264, H264 Video Compression
<notice> [driver] Framerate max. 30 fps
<notice> [driver] H264 costant bitrate: 8000000
<notice> [core] Device detected!
<notice> [core] Registering device node /dev/video0
http://[ラズパイのIP]:8080/stream
$ sudo pkill uv4l
UV4LからWebRTCを試す
https://[ラズパイのIP]:8080/stream/webrtc
mkcertでローカルssl証明を発行する
#パッケージの取得 ※ラズパイゼロ > armv6
$ wget https://golang.org/dl/go1.16.5.linux-armv6l.tar.gz
#今回は例ではパッケージの展開先はデフォルト
$ sudo tar -C /usr/local -xzf go1.16.5.linux-armv6l.tar.gz
#インストール確認
$ ls -l /usr/local/go
$ cat /usr/local/go/VERSION
go1.16.5
$ nano ~/.bashrc
#...GoのPATHを通すためファイル末尾に以下を追記
export PATH=$PATH:/usr/local/go/bin
#パスの有効化
$ source .bashrc
#パスの確認
$ which go
/usr/local/go/bin/go
$ sudo apt-get install git
$ git clone https://github.com/FiloSottile/mkcert && cd mkcert
$ go build -ldflags "-X main.Version=$(git describe --tags)"
$ ./mkcert --version
v1.4.3-1-g0a3190b
$ sudo mkdir /usr/local/mkcert && sudo mkdir /usr/local/mkcert/bin
$ sudo cp mkcert /usr/local/mkcert/bin/
$ nano ~/.bashrc
#...mkcertのPATHを通すためファイル末尾に以下を追記
export PATH=$PATH:/usr/local/mkcert/bin
#パスの有効化
$ source .bashrc
#パスの確認
$ which mkcert
/usr/local/mkcert/bin/mkcert
$ sudo apt install libnss3-tools
$ mkcert -install
Created a new local CA 💥
The local CA is now installed in the system trust store! ⚡️
$ mkcert localhost 127.0.0.1
Created a new certificate valid for the following names 📜
- "localhost"
- "127.0.0.1"
The certificate is at "./localhost+1.pem" and the key at "./localhost+1-key.pem" ✅
It will expire on 27 September 2023 🗓
$ ls
localhost+1-key.pem localhost+1.pem
localhost+1-key.pem
localhost+1.pem
$ mv localhost+1-key.pem server.key
$ mv localhost+1.pem server.crt
$ ls
server.crt server.key
/home/user/server.key
/home/user/server.crt
$ uv4l --driver raspicam --auto-video_nr --encoding h264 \
--width 320 --height 240 \
--server-option '--port=4300' \
--server-option '--use-ssl=yes' \
--server-option '--ssl-private-key-file=/home/user/server.key' \
--server-option '--ssl-certificate-file=/home/user/server.crt' \
--enable-server on
https://[ラズパイのIP]:4300/stream/webrtc
UV4Lカメラ画面に出る"linux-projects.org"のウォータマークを外す
software by http://linux-projects.org
raspicam
raspicam
/etc/modules
$ sudo nano /etc/modules
#...中略
#👇V4L2ドライバを追加
bcm2835-v4l2
v4l2-ctl
video0
$ v4l2-ctl --list-devices
bcm2835-codec-decode (platform:bcm2835-codec):
/dev/video10
/dev/video11
/dev/video12
bcm2835-isp (platform:bcm2835-isp):
/dev/video13
/dev/video14
/dev/video15
/dev/video16
mmal service 16.1 (platform:bcm2835-v4l2-0):
/dev/video0
mknod /dev/video0 c 81 0
chmod 666 /dev/video0
chown root.video /dev/video0
$ uv4l --external-driver --device-name=video0 \
--auto-video_nr --encoding h264 \
--width 320 --height 240 \
--server-option '--port=4300' \
--server-option '--use-ssl=yes' \
--server-option '--ssl-private-key-file=/home/user/server.key' \
--server-option '--ssl-certificate-file=/home/user/server.crt' \
--enable-server on
まとめ
参考サイト
記事を書いた人
ナンデモ系エンジニア
電子工作を身近に知っていただけるように、材料調達からDIYのハウツーまで気になったところをできるだけ細かく記事にしてブログ配信してます。
カテゴリー