ラズベリーパイゼロ2Wにカメラモジュールを取り付ける


ラズベリーパイゼロ2W(以後ゼロツーと表記します)にカメラモジュールを取り付けます。



今回の説明で使用したカメラモジュールはRaspberry Pi カメラモジュール V2.1になります。

Raspberry Pi カメラモジュール V2.1 — スイッチサイエンス


カメラモジュールの取り付けに関して、ゼロツー側のOSのバージョンが重要になりまして、下記コマンドで調べておきます。


$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 13 (trixie)
Release:        13
Codename:       trixie

今回はコードネームがtrixie(トリクシー)のバージョンのOSで話を進めます。




ゼロツーにカメラモジュールを取り付ける時、コンピュータとカメラモジュールを繋ぐCSI(Camera Serial Interface)ケーブルがモジュール購入時に付いているものは使用することが出来ず、



ラズベリーパイゼロ用のケーブルに付け替える必要があります。

短めのRaspberry Pi Zero用カメラケーブル — スイッチサイエンス


ゼロツー用のケーブルを購入したら、



のように繋ぐことでゼロツーからカメラモジュールを使用することが出来るようになります。





カメラモジュールで使用するライブラリの理解を深める為に、最初はゼロツーとカメラモジュールを繋げていない状態から見ていきます。


ゼロツーがカメラモジュールを操作するには、rpicam-appsライブラリを使用する必要がありますので、ライブラリのインストールを行います。

Camera software - Raspberry Pi Documentation

$ sudo apt update
$ sudo apt install rpicam-apps

rpicam-appsのインストールが終了したら、rpicam-helloというゼロツーにカメラモジュールが接続されていることを確認するためのコマンドが実行出来るようになりますので、実行してみると、

$ rpicam-hello
[0:23:57.595971220] [1124]  INFO Camera camera_manager.cpp:340 libcamera v0.6.0+rpt20251202
Made X/EGL preview window
Made DRM preview window
Preview window unavailable
ERROR: *** no cameras available ***

カメラが使用できないというエラーが返ってきました。





ゼロツーにカメラモジュールを繋げた状態で再びrpicam-helloを実行してみます。

$ rpicam-hello
[0:00:38.709865193] [990]  INFO Camera camera_manager.cpp:340 libcamera v0.6.0+rpt20251202
[0:00:38.802651651] [995]  INFO IPAProxy ipa_proxy.cpp:180 Using tuning file /usr/share/libcamera/ipa/rpi/vc4/imx219.json
[0:00:38.821599620] [995]  INFO Camera camera_manager.cpp:223 Adding camera '/base/soc/i2c0mux/i2c@1/imx219@10' for pipeline handler rpi/vc4
[0:00:38.821766443] [995]  INFO RPI vc4.cpp:445 Registered camera /base/soc/i2c0mux/i2c@1/imx219@10 to Unicam device /dev/media0 and ISP device /dev/media1
[0:00:38.821883162] [995]  INFO RPI pipeline_base.cpp:1111 Using configuration file '/usr/share/libcamera/pipeline/rpi/vc4/rpi_apps.yaml'
Made X/EGL preview window
Made DRM preview window
Preview window unavailable
Mode selection for 1640:1232:12:P
    SRGGB10_CSI2P,640x480/0 - Score: 4504.81
    SRGGB10_CSI2P,1640x1232/0 - Score: 1000
    SRGGB10_CSI2P,1920x1080/0 - Score: 1541.48
    SRGGB10_CSI2P,3280x2464/0 - Score: 1718
    SRGGB8,640x480/0 - Score: 5504.81
    SRGGB8,1640x1232/0 - Score: 2000
    SRGGB8,1920x1080/0 - Score: 2541.48
    SRGGB8,3280x2464/0 - Score: 2718
[0:00:39.529760349] [990]  INFO Camera camera.cpp:1215 configuring streams: (0) 1640x1232-YUV420/sYCC (1) 1640x1232-SBGGR10_CSI2P/RAW
[0:00:39.530451807] [995]  INFO RPI vc4.cpp:620 Sensor: /base/soc/i2c0mux/i2c@1/imx219@10 - Selected sensor format: 1640x1232-SBGGR10_1X10/RAW - Selected unicam format: 1640x1232-pBAA/RAW
#7 (0.00 fps) exp 33251.00 ag 9.85 dg 1.02
--以下省略--

ゼロツーとカメラモジュールを繋いでいない状態の時と別の結果が返ってきました。


早速カメラモジュールを使ってみます。

rpicam-jpegかrpicam-stillコマンドで写真を撮影することができます。


rpicam-jpegの場合は、

$ rpicam-jpeg -o output.jpg

になり、

rpicam-stillの場合は、

$ rpicam-still -o output.jpg

になります。


現在いるディレクトリにコマンド実行時に指定したファイル名(今回であればoutput.jpg)でJPGファイルが生成されていますので、どのように撮影出来たか確認してみましょう。

京都の東本願寺で開催されているプログラミング教室で講師をしています。
詳しくはTera schoolを御覧ください。
大阪府高槻市でプログラミング教室を開設しています。
同じカテゴリーの記事
マインクラフト用ビジュアルエディタを開発しています。

詳しくはinunosinsi/mcws_blockly - githubをご覧ください。