Closed13

Raspberry Pi 4 Model B で遊んでみる

tttoltttol

Rasberry Pi OSのインストール

下記の公式手順を参考にする
https://www.raspberrypi.com/documentation/computers/getting-started.html

micro SDカードにOSをインストールする

任意のPCにmicro SDカードを接続し、SDカードにOSイメージをDLする。
OSイメージのDLにはRaspberry Pi Imagerを利用する。Win/Mac/Linux版で分かれてるので適したものをインストールする。
OSはRaspberry Pi OS (64-bit)を利用する。

設定項目

  • hostname

    • raspberrypi.local
  • username & password

    • 任意のものを
  • wireless LAN

    • 2.4GHzのやつを指定した
    • Country:JP
  • Locale

    • Asia/Tokyo
    • jp
  • SSH

    • Enable SSHにチェック
    • Use password authenticationにチェック

SDカードへのOSインストールが終わったら

PCからSDカードを取り外し、SDカードをラズパイに挿す。
マウス・キーボード・HDMIケーブルもこのタイミングで挿す。

ラズパイ起動

周辺機器の接続ができたら、最後にACアダプタを接続する。
接続した瞬間にラズパイの端のランプが光りだす。赤点灯と緑点滅。

公式によると5分以内に起動するとのこと。それ以上時間がかかる場合は何かしらのエラーが起きてるらしい。
自分の場合は1〜2分ほどで起動完了した。

tttoltttol

SDカード

ラズパイにSSD/HDDなどのストレージはないので、SDカードをストレージとして利用する。
SSD/HDD?→ https://chatgpt.com/share/2722b44e-73a8-462c-b7ea-a61282dde53b

容量

  • Raspberry Pi OS自体が2GB前後なので、最低でも4GB以上はマストで必要
  • 32~64GBが一般的に必要とされる容量っぽい
  • ソフトウェアを多数インストールしたり、画像・映像を大量に扱ったりなどする場合は128GBとかも検討の余地あり
  • 今回は32GBを採用する

なお、容量によって規格がある。

  • SD(Secure Digital)
    • 最大2GB、FAT16、古い規格
  • SDHC(Secure Digital High Capacity)
    • 4GB~32GB、FAT32、現代のデバイスで広く使用
  • SDXC(Secure Digital eXtended Capacity)
    • 64GB~2TB、exFAT、非常に大容量のデータ保存に適している

Rasberry Pi 4BはSDHC,SDXCに対応してそう。

UHS

Ultra High Speedの略。SDカードの転送速度規格。
今回はUHS-I 3を採用する。

  • UHS-I
    • バススピード:最大104MB/s
    • UHSスピードクラス
      • U1(最低書き込み速度10MB/s)
      • U3(最低書き込み速度30MB/s)
    • 用途:一般的な用途、HDビデオ撮影、写真撮影など。
  • UHS-II
    • バススピード:最大312MB/s
    • UHSスピードクラス:U1、U3(同じく最低書き込み速度10MB/s、30MB/s)
    • 用途:4Kビデオ撮影、高速連続撮影など、より高速なデータ転送が必要な用途。
  • UHS-III
    • バススピード:最大624MB/s
    • UHSスピードクラス:U1、U3(同じく最低書き込み速度10MB/s、30MB/s)
    • 用途:8Kビデオ撮影、プロフェッショナル用途など、非常に高速なデータ転送が必要な用途。

SDカードリーダー

MacBook AirはSDカードスロットがないのでリーダーを別途用意する必要がある
https://www.amazon.co.jp/SDメモリーカードリーダー-BENFEI-4in1BENFEI-USB-CからSD-CFカードリーダーアダプター/dp/B08P517NW5/ref=sr_1_1_sspa?__mk_ja_JP=カタカナ&crid=2F0B2B1AWO7A1&dib=eyJ2IjoiMSJ9.Koc7fSOwaBrBVEh7Q32jq9SnSjdqT1lkJDQccZMyjOJWtrcqzGz5QSiumsrpFLbpoUad_LWcO1c3ExAxJEpR5B7-6PYXYkfkB7K0iFqOXwfE7f1C8Kp4DevDAJ3OOimmbNZcz8dgrB9ZlmVqh6G0H2rqJN0mcDHWP_x_vgVZcjH-ACECxH_j9Rl8agjBxUBH6yMkOeGvW8XjB2iq7uElw3-XCCxD7FXEMmkDG5BaazfgyYSffUo0lRwlKtWItKwTMI_twQvOSRPaPCfkccO6yyUXV5GnPhoqd2EWGhsNmcI.-le8SUXWU4F_E1iVs6ycSRFapHOjga31PAzP-TuSmn8&dib_tag=se&keywords=microsdカードリーダー+mac&qid=1718146986&sprefix=microsdカードリーダー+mac%2Caps%2C160&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&psc=1

tttoltttol

冷却ファン&ヒートシンク付きケース

  • 冷却の仕組みが何かしら必要
  • 冷却ファン・・・ファン部分の故障が心配。静音性要チェック。
  • ヒートシンク・・・機器の熱を吸収して放熱してくれる部品。一定温度を超えると放熱効率は下がる。
  • 冷却ファン&ヒートシンク付きのケースがあるので、それを買う↓

https://www.amazon.co.jp/dp/B07VB24K9W?psc=1&smid=A2NFT1NT6EPBDZ&ref_=chk_typ_imgToDp

tttoltttol

カメラモジュールの動作確認(libcamera編)

  1. libcameraのインストール
sudo apt update
sudo apt install -y libcamera-apps
  1. カメラモジュールを有効にする
sudo vi /boot/firmware/config.txt


追記する

dtoverlay=vc4-kms-v3d
  1. 再起動
sudo reboot
  1. libcameraでカメラ撮影
# プレビュー表示
libcamera-hello

# 静止画撮影
libcamera-jpeg -o test.jpg

# 動画撮影(-tオプション撮影時間をミリ秒で指定)
libcamera-vid -t 10000 -o test.h264
tttoltttol

カメラモジュール動作確認(rpicam編)

libcameraはOSSのカメラソフトウェア、rpicamはOSにプリインストールされているカメラソフトウェア。公式は後者を勧めてるっぽい。
ということでrpicamでも動作確認する。

# プレビュー表示
rpicam-hello

# 静止画撮影
rpicam-jpeg --output test.jpg
tttoltttol

rpicamで撮影した映像をRTSPプロトコルで配信する

ここから本編
以下公式ドキュメントを見ながら。

Stream video over a network with rpicam-apps

https://www.raspberrypi.com/documentation/computers/camera_software.html#stream-video-over-a-network-with-rpicam-apps

ラズパイ側の操作

配信を観る際にラズパイのIPを指定する必要があるので、あらかじめ確認しておく。

# ラズパイ自身のIPを確認
hostname -I

IPがわかったところで、配信を開始する。以下コマンドを実行することで配信が開始される。

# 配信を開始する
rpicam-vid -t 0 --inline -o - | cvlc stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/stream1}' :demux=h264

クライアント側の操作

PCで配信映像を見る場合、以下コマンドを実行する。
<ip-addr-of-server>は先程確認したラズパイのIPで置換する。

vlc rtsp://<ip-addr-of-server>:8554/stream1

iPadやiPhoneで観たい場合はVLCというアプリをAppStoreからインストールし、アプリ内でrtsp://<ip-addr-of-server>:8554/stream1を入力して「ネットワークストリームを開く」をタップすると配信を観ることができる。

起動時に配信を開始する

crontab -eでcrontabを開き、以下を記載する。

crontab
@reboot rpicam-vid -t 0 --inline -o - | cvlc stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/stream1}' :demux=h264

sudo rebootで再起動後、配信が自動で開始されていればOK。

ただし、これをやるとラズパイをディスプレイに繋いでも配信のウィンドウがでかでかと全画面で表示されるだけになり、他の操作ができなくなる。

操作をする場合はラズパイ以外のホストからラズパイにSSHして操作する必要がある。
hostname -Iで確認したIPをもとに、SSHする↓

ssh <ラズパイ側のユーザー名>@<ip-addr>

その後、以下操作でVLCのプロセスを探してkillすれば配信を終了できる。

ps aux | grep vlc
sudo kill <PID>

もしくは、rpicam-vidコマンドに-nオプション(--nopreview)を渡してプレビュー表示をOFFにする。

tttoltttol

rpicamの映像に現在日時を表示する

上記画像のように、撮影映像に2024-06-24 08:51:08 +09:00のような現在日時を表示します。
Post-processingという機能を使います。Post-processingとは「後処理」を意味し、カメラが撮影した映像に後から処理を施すことを指します。
例えば撮影映像にネガ反転処理を加えたり、顔認識処理を加えたりできます。
今回はこの機能を使って、シンプルに現在日時を追加で表示する処理を加えます。

まずは以下のJSONファイルを用意します。ファイル名は任意です。

annotate-date.json
{
    "annotate_cv" : {
        "text" : "%F %T %z",  //表示するテキスト
        "fg" : 255,  //テキストの文字色
        "bg" : 0,  //テキストの背景色
        "scale" : 1.0, //フォントサイズ
        "thickness" : 2,  //フォントのweight
        "alpha" : 0.3  //背景ピクセルを上書きするときに適用するアルファの量
    }
}

textに記載されている記号の意味は以下です。

  • %F displays the ISO-8601 date (2023-03-07)
  • %T displays 24h local time (e.g. "09:57:12")
  • %z displays the timezone relative to UTC (e.g. "-0800")

JSONのサンプルは以下のassetsディレクトリにあります。公式ドキュメントにも同じサンプルが書いてあります。
https://github.com/raspberrypi/rpicam-apps/tree/main/assets

作成したJSONをrpicam-vidコマンドの--post-process-fileオプションに渡せばOKです。

rpicam-vid --post-process-file annotate-date.json -n -t 0 --inline -o - | cvlc stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/stream1}' :demux=h264

参考

https://www.raspberrypi.com/documentation/computers/camera_software.html#post-processing-with-rpicam-apps:~:text=onto an image.-,annotate_cv stage,-This stage writes

このスクラップは1ヶ月前にクローズされました