Posted at

Raspberry Pi Compute Module 3 2つのカメラを認識、操作してみる(ソフト側)

More than 1 year has passed since last update.


はじめに

Compute Module 3 は2つのカメラを使えるのですね。

ソフト側のみ ですが、 2つのカメラモジュール を認識させ、簡単な操作をさせてみます。


使用するもの


前提


  • Raspberry Pi Compute Module3


    • 評価ボードなどに繋がっている

    • OSインストール済み(今回は Raspbian Jessie Lite を使用してます)

    • ボードに CSI CAMERA CONNECTOR 2つがついている


    • CSI CAMERA CONNECTOR にカメラモジュールが接続されている


      • 今回は、基板の CAMERA0 に可視光、 CAMERA1 に赤外線が接続されている






カメラモジュールの認識


参考URL


  1. ATTACHING A RASPBERRY PI CAMERA MODULE TO THE COMPUTE MODULE IO BOARD

  2. COMPUTE MODULE ATTACHING AND ENABLING PERIPHERALS GUIDE


カメラモジュールの有効化

pi@raspberrypi:~ $ sudo raspi-config


  1. 「5 Interfacing Options」選択

  2. 「P1 Camera 」を選択

  3. 「Would you like the camera interface to be enabled?」→「Yes」選択

  4. reboot


カーネル等のアップデート

一応、アップデート

pi@raspberrypi:~ $ sudo apt-get update

pi@raspberrypi:~ $ sudo apt-get upgrade
pi@raspberrypi:~ $ sudo rpi-update


ブロブファイルを作成

参考URL 1. 「Quickstart」のブロブファイルでは、2つのカメラモジュールを認識できないため、

ページ下部にあるEnable both camerasファイルから作成します

Enable both camerasをダウンロード

pi@raspberrypi:~/camera $ wget https://www.raspberrypi.org/documentation/hardware/computemodule/dt-blob-dualcam.dts

--2017-11-10 06:14:27-- https://www.raspberrypi.org/documentation/hardware/computemodule/dt-blob-dualcam.dts
Resolving www.raspberrypi.org (www.raspberrypi.org)... 46.235.227.11, 93.93.128.133, 93.93.130.214, ...
Connecting to www.raspberrypi.org (www.raspberrypi.org)|46.235.227.11|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12421 (12K) [application/octet-stream]
Saving to: ‘dt-blob-dualcam.dts’

dt-blob-dualcam.dts 100%[==================================================================================>] 12.13K --.-KB/s in 0.006s

2017-11-10 06:14:36 (2.07 MB/s) - ‘dt-blob-dualcam.dts’ saved [12421/12421]

pi@raspberrypi:~/camera $

参考URL 2.を参考にdts→binに変換し「/boot」配下に配置

pi@raspberrypi:~/camera $ 

pi@raspberrypi:~/camera $ ls
dt-blob.dts dt-blob-dualcam.dts
pi@raspberrypi:~/camera $
dt-blob.dts dt-blob.dts.back dt-blob-dualcam.dts
pi@raspberrypi:~/camera $ sudo dtc -I dts -O dtb -o /boot/dt-blob.bin dt-blob-dualcam.dts
/boot/dt-blob.bin: Warning (unit_address_vs_reg): Node /videocore/pins_cm/pin_config/pin@default has a unit name, but no reg property
/boot/dt-blob.bin: Warning (unit_address_vs_reg): Node /videocore/pins_cm/pin_config/pin@p0 has a unit name, but no reg property
/boot/dt-blob.bin: Warning (unit_address_vs_reg): Node /videocore/pins_cm/pin_config/pin@p1 has a unit name, but no reg property



pi@raspberrypi:~/camera $
# 再起動
pi@raspberrypi:~/camera $ sudo shutdown -r now

※ 定義されているが、実際にpinなどがないため、Warningがでていると思われます

再起動後、2つのカメラモジュールが認識されています


カメラモジュールを操作


コマンド

pi@raspberrypi:~ $ 

# 普通のカメラ
pi@raspberrypi:~ $ raspistill -o firstpic.jpg -cs 1
pi@raspberrypi:~ $
# 赤外線カメラ
pi@raspberrypi:~ $ raspistill -o firstpic_noir.jpg -cs 0
pi@raspberrypi:~ $


Python3 で操作

pi@raspberrypi:~ $ sudo apt-get install python3-venv




pi@raspberrypi:~ $ mkdir test
pi@raspberrypi:~ $ cd test
pi@raspberrypi:~/test $
pi@raspberrypi:~/test $ python3 -m venv env
pi@raspberrypi:~/test $ source env/bin/activate
(env) pi@raspberrypi:~/test $
(env) pi@raspberrypi:~/test $ pip install picamera
Collecting picamera
Downloading https://www.piwheels.hostedpi.com/simple/picamera/picamera-1.13-py3-none-any.whl (154kB)
100% |████████████████████████████████| 163kB 148kB/s
Installing collected packages: picamera
Successfully installed picamera-1.13
(env) pi@raspberrypi:~/test $
(env) pi@raspberrypi:~/test $
(env) pi@raspberrypi:~/test $ python
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170124] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from picamera import PiCamera
>>>
# 赤外線カメラ
>>> camera = PiCamera(camera_num=0)
>>> camera.start_preview()
<picamera.renderers.PiPreviewRenderer object at 0x744c7df0>
>>> camera.stop_preview()
>>> camera.close()
>>>
# 普通のカメラ
>>> camera = PiCamera(camera_num=1)
>>> camera.start_preview()
<picamera.renderers.PiPreviewRenderer object at 0x744c7fd0>
>>> camera.stop_preview()
>>> camera.close()
>>>

picameraの参考URLはこちら