このカメラは、Raspberry Pi では使えないのか?
カメラを見つめて。
公式のカメラではないからなのか。
わからなくてな。
認識範囲外のカメラを使うときはコツがいるぞ。
今回はそのあたりを紹介してみよう。
- Raspberry Pi のMIPI接続コネクタに接続するカメラ
- 接続用のケーブルは、フレキシブルケーブルを使って接続します。
- カメラとRaspberry Pi の接続方法
- カメラが認識されているか確認する方法
- Pythonでの制御プログラミング方法
カメラとRaspberry Pi の接続方法
Raspberry Pi とカメラの接続には、以下のようなフレキシブルケーブルを使って接続します。
接続するポートは、Raspberry Pi のMIPI接続コネクタになります。
MIPIって何?
MIPIは、Mobile Industry Processor Interfaceの略で、「モバイル業界におけるプロセッサーのインターフェース」となります。
モバイル機器に内蔵されるプロセッサーのインターフェースを規定した規格がMIPIです。
MIPIが規定するのは、スマートフォンやタブレット、ラップトップなどのモバイルデバイス、ポータブルデバイス向けのインターフェースです。
特に5G対応モバイルデバイスやIoT、コネクテッドカーにおいて、長期的に重要な役割を果たすことが期待されている高速インターフェース規格の一種です。
MIPI以外の代表的な高速インターフェース
MIPIのほかには、高速インターフェースとして次のようなものがあります。
- USB
- Thunderbolt
- HDMI
- DisplayPort
- SATA
- LVDS
MIPIってあんまり聞かないよね
前述したUSBなどの高速インターフェースと異なり、MIPIはあまり一般的ではありません。
USBやHDMIなどはゲーム機とテレビなどの周辺機器の接続にも使われるので、広く知られています。
MIPIはモバイルに特化した規格としてスタートしたものです。
主にSoC(システム・オン・チップ)とカメラ、またはSoCとディスプレイの間をつなぐ画像信号を伝達するために使われています。
多くの場合、例えばマートフォンなど、内部でMIPIを使っている機器はその機器単体で機能が完結しているものが多いため、使う人が意識してMIPI接続するということが少ないため、あまり広く知られていないのでしょう。
通信方法の規格
MIPIの通信規格としては、次の2種類があります。
- CSI-2(Camera Serial Interface 2)
映像データの転送に特化したプロトコルで、単方向データ転送を行います。 - CCI(Camera Control Interface)
カメラモジュールの制御インターフェースで、双方向データ転送を行います。
今回はカメラで使用しますので、単方向のデータ転送規格(CSI)を使います。
Raspberry Pi のMIPI接続コネクタ
Raspberry Pi 標準 MIPI接続コネクタには、15 ピンと 22 ピンの 2 種類があります。
- 15 -15ピン(1㎜ピッチ) コネクタ
Raspberry Pi モデル (A および B シリーズ) と Pi カメラ モジュールで使用されます。 - 15-22 ピン(0.5㎜ピッチ) コネクタ
Raspberry Pi 5、Pi Zero シリーズ、などで使用されます。
15-15ピンコネクタ
15-15 ピン コネクタは、カメラやプラットフォームで最もよく使用されているコネクタです。
カメラなどの15ピンコネクタとRaspberry Pi の15ピンコネクタを接続する形式です。
特に明記されていない限り、Raspberry Pi カメラに関しては「デフォルト」のコネクタです。
Raspberry Pi モデル A および B シリーズや V1 および V2 カメラ モジュールなどの主流の Raspberry Pi 製品でこのコネクタが使用されています。
Raspberry Pi 15ピンMIPI-CSIコネクタのピン配置
カメラ ボードのピン配置は次のようになります。信号は入力または出力タイプです。
Raspberry Pi ボード上のピン配置は逆方向になります。
ピン番号 カメラ |
ピン番号 Raspberry Pi |
名前 | 説明 |
1 | 15 | GND | 接地 |
2 | 14 | CAM_D0_N | MIPI データレーン 0 ネガティブ |
3 | 13 | CAM_D0_P | MIPI データレーン 0 ポジティブ |
4 | 12 | GND | 接地 |
5 | 11 | CAM_D1_N | MIPI データレーン 1 ネガティブ |
6 | 10 | CAM_D1_P | MIPI データレーン 1 ポジティブ |
7 | 9 | GND | 接地 |
8 | 8 | CAM_CK_N | MIPI クロック レーン ネガティブ |
9 | 7 | CAM_CK_P | MIPI クロック レーン ポジティブ |
10 | 6 | GND | 接地 |
11 | 5 | CAM_IO0 | 電源有効化 |
12 | 4 | CAM_IO1 | LEDインジケーター |
13 | 3 | CAM_SCL | I2C SCL |
14 | 2 | CAM_SDA | I2C SDA |
15 | 1 | CAM_3V3 | 3.3V電源入力 |
15-22ピンコネクタ
15-22 ピン コネクタは、カメラやプラットフォームで最もよく使用されているコネクタです。
カメラなどの15ピンコネクタとRaspberry Pi の22ピンコネクタを接続する形式です。
Raspberry Pi 22ピンMIPI-CSIコネクタのピン配置
カメラ ボードのピン配置は次のようになります。信号は入力または出力タイプです。
ピン番号 カメラ |
名前 | 説明 |
1 | GND | 接地 |
2 | CAM_D0_N | MIPI データレーン 0 ネガティブ |
3 | CAM_D0_P | MIPI データレーン 0 ポジティブ |
4 | GND | 接地 |
5 | CAM_D1_N | MIPI データレーン 1 ネガティブ |
6 | CAM_D1_P | MIPI データレーン 1 ポジティブ |
7 | GND | 接地 |
8 | CAM_CK_N | MIPI クロック レーン ネガティブ |
9 | CAM_CK_P | MIPI クロック レーン ポジティブ |
10 | GND | 接地 |
11 | CAM_D2_N | MIPI データレーン 2 ネガティブ |
12 | CAM_D2_P | MIPI データレーン 2 ポジティブ |
13 | GND | 接地 |
14 | CAM_D3_N | MIPI データレーン 3 ネガティブ |
15 | CAM_D3_P | MIPI データレーン 3 ポジティブ |
16 | GND | 接地 |
17 | POWER-EN | 電源有効化 |
18 | LED-EN | LED Enable/XCLK |
19 | GND | 接地 |
20 | SCL | I2C SCL |
21 | SDA | I2C SDA |
22 | VCC | 3.3V電源入力 |
今回使うカメラのコネクタ仕様
今回使用するカメラ側のMIPI接続コネクタは15ピン(1㎜ピッチ)になります。
カメラの中には、22ピン(0.5㎜ピッチ)のコネクタ形状をしているものもあるため注意してください。
Raspberry Pi とカメラの接続
Raspberry Piとカメラの接続します。
接続方法を次の2つに分けて紹介します。
- Raspberry Pi 4 とカメラの接続方法(15-15ピン)
- Raspberry Pi 5 とカメラの接続方法(15-22ピン)
Raspberry Pi 4 とカメラの接続方法
まず、Raspberry Pi 4 のMIPI接続コネクタは次の場所にあります。
15ピン(1㎜ピッチ)のコネクタが1つ搭載されています。
カメラと接続するケーブルは、15-15ピン(1㎜ピッチ)のフレキシブルケーブルを使います。
まず、Raspberry Pi 4のMIPI接続コネクタのストッパーを上げます。
ストッパーが手で持ち上げにくい場合は、ピンセットなどを使うとスムーズに操作できます。
フレキシブルケーブルを次の写真のような向きで差し込みます。
Raspberry Pi 4 のMIPI接続コネクタのストッパーを下げて固定します。
最後にカメラ側のMIPI接続コネクタのストッパーを上げます。
フレキシブルケーブルを写真のような向きで差し込みます。
カメラ側のMIPI接続コネクタのストッパーを下げてケーブルを固定すれば完成です。
今回使用したRaspberry Pi はこちら!
Raspberry Pi 5 とカメラの接続方法
まず、Raspberry Pi 5 のMIPI接続コネクタは次の場所にあります。
22ピン(0.5㎜ピッチ)のコネクタが2つ搭載されています。
カメラと接続するケーブルは、15-22ピン(1㎜-0.5㎜ピッチ)のフレキシブルケーブルを使います。
まず、Raspberry Pi 5のMIPI接続コネクタのストッパーを上げます。
ストッパーが手で持ち上げにくい場合は、ピンセットなどを使うとスムーズに操作できます。
フレキシブルケーブルの22ピン(0.5㎜ピッチ側)を次の写真のような向きで差し込みます。
Raspberry Pi 5 のMIPI接続コネクタのストッパーを下げて固定します。
テスト環境では、アクティブ冷却用ファンのついた状態で行っているので、ピンセットが大活躍しました。
最後にカメラ側のMIPI接続コネクタのストッパーを上げます。
フレキシブルケーブルの15ピン(1㎜ピッチ側)を写真のような向きで差し込みます。
カメラ側のMIPI接続コネクタのストッパーを下げてケーブルを固定すれば完成です。
今回使用したRaspberry Pi はこちら!
Raspberry Pi上でのカメラの認識確認
Raspberry Pi OSでは、起動時にカメラの自動認識機能が実行され、事前に定義済みのカメラが接続されている場合は、簡単に認識してくれます。
特にRaspberry Pi 公式のラズパイカメラを使う場合は、自動認識が可能です。
しかし、今回使用したカメラは、自動認識外のものでしたので、起動時の設定変更が必要です。
カメラの認識確認を行う手順は次の通りです。
- Raspberry Pi OS上でのカメラの認識状態の確認
- 起動時のカメラ認識設定の見直し
- 再起動後に再度カメラの認識状態の確認
Raspberry Pi OS上でのカメラの認識状態の確認
Raspberry Pi OS(64bit版)には、カメラ認識用の機能がインストールされています。
確認用のコマンドは次の通りです。
rpicam-hello --list-cameras
Raspberry Pi OSの準備
Raspberry Pi OSは、Rasberry Pi ImagerというソフトウェアでOSをSDカードに書き込んだものを使います。
Rasberry Pi Imagerについては、別の記事で紹介していますので参考にしてください。
Rasberry Pi への接続(SSH)
Rasberry Pi へSSHを使用して接続します。
Windowsであれば、コマンドプロンプトなどから接続してください。
接続後、以下のようにコマンドを入力して結果を確認します。
【カメラが認識されている場合】
rpicam-hello --list-cameras Available cameras ----------------- 0 : imx219 [3280x2464 10-bit RGGB] (/base/axi/pcie@120000/rp1/i2c@88000/imx219@10) Modes: 'SRGGB10_CSI2P' : 640x480 [206.65 fps - (1000, 752)/1280x960 crop] 1640x1232 [41.85 fps - (0, 0)/3280x2464 crop] 1920x1080 [47.57 fps - (680, 692)/1920x1080 crop] 3280x2464 [21.19 fps - (0, 0)/3280x2464 crop] 'SRGGB8' : 640x480 [206.65 fps - (1000, 752)/1280x960 crop] 1640x1232 [83.70 fps - (0, 0)/3280x2464 crop] 1920x1080 [47.57 fps - (680, 692)/1920x1080 crop] 3280x2464 [21.19 fps - (0, 0)/3280x2464 crop]
【カメラが認識されていない場合】
rpicam-hello --list-cameras No cameras available!
今回の記事では、上記の「No cameras available!」が表示されてしまった(認識されない)場合の方法を紹介します。
起動時のカメラ認識設定の見直し
カメラが認識されない場合、Rasberry Pi の自動認識機能の対象外である可能性があります。
この場合、Rasberry Pi の自動認識を無効化して、手動でカメラを定義する必要があります。
Rasberry Pi の起動設定ファイル修正
Rasberry Pi の起動設定ファイルは以下の場所にあります。
/boot/firmware/config.txt
ファイル編集コマンドを使って以下の通り修正します。
【config.txt】
~ # Automatically load overlays for detected cameras camera_auto_detect=1 <修正後> camera_auto_detect=0 ~ [all] <追加> dtoverlay=imx219,cam0 ※imx219はカメラのイメージセンサになります。 環境に応じて変更してください。 dtoverlay=imx219,cam1 ※Rasberry Pi 5で2つのカメラを 認識させる場合は、左のように記載します。
Rasberry Pi の再起動
Rasberry Pi の起動設定ファイルの修正が完了したら、Rasberry Pi を再起動させます。
sudo reboot now
再起動後に再度カメラの認識状態の確認
再度、次のコマンドを実行し、カメラの状態を確認します。
rpicam-hello --list-cameras
Rasberry Pi 5で2つのカメラが認識された場合は、次のような実行結果が返ってきます。
rpicam-hello --list-cameras Available cameras ----------------- 0 : imx219 [3280x2464 10-bit RGGB] (/base/axi/pcie@120000/rp1/i2c@88000/imx219@10) Modes: 'SRGGB10_CSI2P' : 640x480 [206.65 fps - (1000, 752)/1280x960 crop] 1640x1232 [41.85 fps - (0, 0)/3280x2464 crop] 1920x1080 [47.57 fps - (680, 692)/1920x1080 crop] 3280x2464 [21.19 fps - (0, 0)/3280x2464 crop] 'SRGGB8' : 640x480 [206.65 fps - (1000, 752)/1280x960 crop] 1640x1232 [83.70 fps - (0, 0)/3280x2464 crop] 1920x1080 [47.57 fps - (680, 692)/1920x1080 crop] 3280x2464 [21.19 fps - (0, 0)/3280x2464 crop] 1 : imx219 [3280x2464 10-bit RGGB] (/base/axi/pcie@120000/rp1/i2c@80000/imx219@10) Modes: 'SRGGB10_CSI2P' : 640x480 [206.65 fps - (1000, 752)/1280x960 crop] 1640x1232 [41.85 fps - (0, 0)/3280x2464 crop] 1920x1080 [47.57 fps - (680, 692)/1920x1080 crop] 3280x2464 [21.19 fps - (0, 0)/3280x2464 crop] 'SRGGB8' : 640x480 [206.65 fps - (1000, 752)/1280x960 crop] 1640x1232 [83.70 fps - (0, 0)/3280x2464 crop] 1920x1080 [47.57 fps - (680, 692)/1920x1080 crop] 3280x2464 [21.19 fps - (0, 0)/3280x2464 crop]
2つのカメラが認識されていることが確認できます。
Pythonでの制御プログラミング方法
認識されたカメラを使って写真を撮るプログラムをPythonで組んでみます。
以下のプログラムを実行してみてください。
実行すると、カメラで取得した画像が保存されます。
Pythonを使ったカメラの調整や、プログラミングについては、今後記事にする予定です。
今回の目標であったRasberry Pi 公式のラズパイカメラ以外のカメラを無事認識することができました。
編集後記
いかがだったでしょうか。
Rasberry Pi でカメラを使う場合に苦労するカメラの認識方法についてご紹介しました。
今後は、Pythonを使って色々とカメラの制御をしていく予定です。
ご期待ください。
最後までご覧いただきありがとうございました。
今回の記事は以上です。
今回使用したRaspberry Pi とカメラはこちら!