USB2.0カメラをRaspberry Pi で使用する方法


センテックUSB2.0カメラをRaspberry Pi で使用する方法

このページではRaspberry Pi にセンテックUSB2.0カメラを接続しMJPG-Streamer(イーサネット経由)で映像を見る一連の方法について説明します。

・2015年2月20日:初稿

・2015年5月12日:更新

Raspberry Pi Model Bの起動準備をする

SDカードをフォーマットする

下記のRaspberry Pi財団のドキュメントに従いSDカードをフォーマットする。

http://www.raspberrypi.org/wp-content/uploads/2012/04/quick-start-guide-v2_1.pdf

SDFormatterをダウンロードしてインストールする。

フォーマット時にオプション設定ボタンをクリックする。

論理サイズ調整をONにする。

フォーマットボタンをクリックする。

NOOBSをダウンロードする

http://www.raspberrypi.org/downloads/ より NOOBS_v1_3_8.zip をダウンロードする。(最新版はバージョンが違う可能性があります。)NOOBSとは「New Out Of Box Software」の略でRaspberry Pi財団が配布している初心者Raspberry Piユーザーのためのディストリビューションです。

NOOBS_v1_3_8.zip を解凍し、フォーマットしたSDカードへ保存する

Raspberry Piにモニター、マウス、キーボード、NOOBSが保存されているSDカードを差し込み、最後に電源をつなぐ

Raspberry Pi には、電源スイッチがないので電力が供給されると起動してしまう。

Raspberry Piが起動し、NOOBSメニューが表示されるので Raspbian を選択して、左上のInstallボタンを押す

Keyboard は”jp”を選択する。Language は”English(UK)”のままにする。(文字化けするので)

インストールにしばらく時間がかかる。

無事終了すると、OS(es) Installed Successfully が出力されるので OKボタンを押す

自動的に再起動し、Raspberry Pi Software Configuration Tool (raspi-config)メニューが出ます。

Raspi-configメニューで、必要に応じて設定する

終了したら Finish を選択し終了する。

ルートパーティションの拡張を確認する

SDカードにRaspbianのカードイメージファイルを書き込みましたが、ディスクのパーティションは2GBほどのサイズとなっており、SDカードの残りの領域はパーティション未定義となっています。ルートパーティションの拡張を行うことで、SDカードのすべての領域を使用できるようにします。

“1. Expand Filesystem”を選択して、ルートパーティションが拡張されていることを確認してOKボタンを押す。

Graphical desktopを設定する

“3. Enable Boot to Desktop/Scratch”を選択して、”Desktop Log in as user ‘pi’ at the graphical desktop”を選択し、OKボタンを押す。これらは必要に応じて設定します。

Local、Timezone、Keyboard Layout を変更する

“4. Internationalisation Options”を選択して、必要に応じて設定する。設定が終了したら”Finish”を選択する。”Would you like to reboot now?”と表示されるので、”Yes”を選択すると、Raspberry Piが再起動します。


Raspberry Piのシャットダウン・再起動する方法

シャットダウンするには、デスクトップ上にある”Shutdown”アイコンをクリックするか、

もしくは、”LXTerminal”をダブルクリックしてターミナルを起動し、以下のコマンドを実行する。

シャットダウンするには、以下のコマンドを実行する。

$sudo shutdown -h now

再起動するには、以下のコマンドを実行する。

$sudo shutdown -r now

 


Raspberry Pi にイーサネットを接続する(固定IPアドレスを設定する)

Raspbian のIPアドレス設定は、デフォルトでは”DHCP”となっており、IPアドレスは自動で割り当てられます。DHCPにするか固定IPアドレスにするか必要に応じて設定してください。以下、固定IPアドレスを設定する方法を説明します。

固定IPアドレスを設定する

固定IPアドレスを割り当てるには、interfaces設定ファイルとresolv.conf設定ファイルを編集します。編集はviエディタで行ってもnanoエディタ(Raspbian付属)で行っても構いません。ここではnanoエディタで編集する方法を示します。

interfaces設定ファイルを編集する

/etc/network/ 下にある interfaces設定ファイルを編集します。LXTerminalを起動し”$sudo nano /etc/network/interfaces“とコマンド入力しEnterを押す。

nanoエディタが起動しinterfaces設定ファイルが開きます。iface eth0 inet dhcp の “dhcp” を 固定IPアドレスとしたいので “static” に変更する。変更した次の行以降に、

・設定する固定IPアドレス

・サブネットマスク

・デフォルトゲートウェイ

を記述する。

例)

iface eth0 inet static

address 192.168.1.180

netmask 255.255.255.0

gateway 192.168.1.1

編集が終了したら、Ctrl+Oを押し、Enterを押して上書き保存し、Ctrl+Xを押してnanoエディタを終了する。

resolv.conf設定ファイルを編集する

/etc/ 下にある resolv.conf設定ファイルを編集します。LXTerminalで”$sudo nano /etc/resolv.conf“とコマンド入力し、設定ファイルを開きます。nameserver 8.8.8.8 の 8.8.8.8 を DNSサーバーのIPアドレスに変更します。

例) nameserver 192.168.1.1

編集が終了したら、Ctrl+Oを押し、Enterを押して上書き保存し、Ctrl+Xを押してnanoエディタを終了する。

IPアドレスが正しく設定されているか確認する

LANケーブルを Raspberry Pi に接続します。パソコンのコマンドプロンプトからpingを実行するなどして、固定IPアドレスが設定できたか確認してください。

方法1: WindowsのコマンドプロンプトのPingコマンドで確認する

Windowsの検索に”cmd”と入力し、”cmd.exe”を実行する。


コマンドプロンプトに”ping 192.168.1.180“を入力しEnterを押す。(例:Raspberry PiのIPアドレスを192.168.1.180にした場合)正しく設定されている場合は、下図の様にReplyがあります。

正しく設定されていない場合は、下図の様にtime out や unreachable になります。

方法2: ウェブブラウザで確認する

“Midori”というウェブブラウザのショートカットがデスクトップにあるのでこれを起動する。

正しく設定されている場合は、Yahooなどが表示されます。

方法3: LXTerminal で”sudo ifconfig“と入力する

正しく設定されている場合は、下図の様に設定したIPアドレスなどが確認できます。

 

 


カーネルソースコードを入手して、カーネルをビルドできる環境を構築する

例)カーネル 3.12.28+ のソースコードをビルドして、カーネル 3.12.28+ で立ち上げる。バージョンが変わっている場合は、そのバージョンに合わせて数字を変更して進めてください。

環境を構築する

インターネットに繋げ、下記のコマンドによりアップデートとインストールを行う。

$ sudo su

# apt-get update

# apt-get -y dist-upgrade

# apt-get -y install gcc make bc screen ncurses-dev

カーネルソースコード等入手する

# cd /usr/src(/usr/src の下には、Raspbianインストール直後は何もない。)

# git init

# git clone –depth 1 git://github.com/raspberrypi/linux.git(githubより、カーネルソースコード入手する。)

# git clone –depth 1 git://github.com/raspberrypi/firmware.git

# cd linux

# gzip -dc /proc/config.gz > .config(config.gz を .config として解凍する。configの前にドットが必要です。)

# cp -p /usr/src/firmware/extra/Module.symvers .(Module.symvers をコピーする。最後のドットが必要です。)

# ls –a(.config と Module.symvers が存在することを確認する。)

カーネルをビルドする

# make oldconfig

新しく追加された追加項目があれば確認があるので、”Y”か”m”を選択して先に進める。

# make clean

# make(この処理に長時間要する。約10時間)

カーネルの起動準備をする

/lib/modulesの下にローダブルモジュールをインストールする

# make modules_install

# mkdir boot

インストールパスを作成した /usr/src/linux/boot に指定し、make install する

# make INSTALL_PATH=/usr/src/linux/boot install

vmlinuz-3.12.28+ を /boot の下にコピーする

# cp /usr/src/linux/boot/vmlinuz-3.12.28+ /boot

nanoエディタを使用して、kernel=vmlinuz-3.12.28+ を config.txt ファイルに追加する

# nano /boot/config.txt

スクロールをして最下部に”kernel=vmlinuz-3.12.28+“の記述を追加して、Ctrl+O を押し、Enterで上書き保存、Ctrl+X で Exitし、nano を終了する。

再起動する

# ln -s /usr/src/linux/ /lib/modules/3.12.28+/build

# reboot

vermagicを確認する

$ cd /lib/modules/3.12.28+/build

以下の2つの出力が同じであることを確認する

$ cat include/generated/utsrelease.h

出力:#define UTS_RELEASE “3.12.28+”

$ uname -r

出力:3.12.28+

 


Raspberry Pi上で、センテックLinuxドライバ※をビルドする

※Sentech_Rpi.zip内のSentech-3.2.7.tgzとして配布します。Windowsなどでダウンロードをした後にZipファイルを解凍して下さい。(Sentech_Rpi.zipをダウンロード)以下、Sentech-3.2.7 を例に説明します。

※2015年5月12日更新:Raspberry Pi のカーネルバージョンが3.18以降では上記 Sentech_Rpi.zip 内の Sentech-3.2.7 ではエラーが発生しますので、Sentech-3.2.32 を使用してください。(Sentech-3.2.32をダウンロード

Raspberry Pi に センテックLinuxドライバをコピーする

ネットワークドライブなどにLinuxドライバを置く。

Raspberry Pi で File Managerを起動する。

Start > Accessories > File Manager


ネットワークドライブを開く。Menu > Go > Network Drives

ネットワークからRaspberry Pi の任意の場所に、Linuxドライバをコピーする。

Raspberry Pi内の任意のフォルダに Sentech-3.2.7.tgz を解凍・展開する

$ tar -zxf Sentech-3.2.7.tgz

Sentech-3.2.7下にあるMakefile を Raspberry Pi用にコメントアウトしたものMakefile-Rpi※に置き換える

※Sentech_Rpi.zip内のMakefile-Rpiとして配布します。Windowsなどでダウンロードをした後にZipファイルを解凍して下さい。(Sentech_Rpi.zipをダウンロード

※2015年5月12日更新:Raspberry Pi のカーネルバージョンが3.18以降ではSentech-3.2.7ではエラーが発生しますので、Sentech-3.2.32 を使用してください。(Sentech-3.2.32をダウンロード

解凍した Sentech-3.2.7下に、Makefile-Rpi を File Manager などを使って移動する

$ cd Sentech-3.2.7

$ mv Makefile-Rpi Makefile

make install する

$ sudo make install

“CC [M] /home/pi/Sentech-3.2.7/SentechTUSB.o”の部分で数分時間が掛かりますので、途中で止めないでください。次の画面のような表示になれば、make installが成功しています。


 


Raspberry Pi上で カメラ動作を確認する

STC-MB33USB(VGAモノクロUSBカメラ)もしくは、STC-MC33USB(VGAカラーUSBカメラ)を使用します。動画ストリーミングソフトウェアとして ※MJPG-streamer を使用してカメラが動作することを確認します。

※Sentech_Rpi.zip内のmjpg-streamer-Sentech0725.tgzとして配布します。Windowsなどでダウンロードをした後にZipファイルを解凍して下さい。(Sentech_Rpi.zipをダウンロード

なお、この MJPG-streamer は Sentech Cameraが MJPEGフォーマット(Video For Linux2でいうところの V4L2_PIX_FMT_MJPEG)に対応していないのでMJPEGフォーマットの代わりに GREYフォーマットをデフォルトフォーマットとし、再構築したものです。

最新のパッケージリストを取得する

$ sudo apt-get update

MJPG-streamer を動かすために必要なパッケージを事前にインストールする

$ sudo apt-get install -y libjpeg8-dev imagemagick

Raspberry Pi内の任意のフォルダに mjpg-streamer-Sentech0725.tgz を解凍・展開する

$ tar -zxf mjpg-streamer-Sentech0725.tgz

mjpg-streamerへ移動しmakeする

$ cd mjpg-streamer

$ make

Sentech Cameraを Raspberry Pi に接続し(マウスを外してカメラを繋ぐ)、以下のコマンドを実行して MJPG-streamer を起動する

$ ./mjpg_streamer -i “./input_uvc.so -f 15 -n -r 640×480 -d /dev/video0” -o “./output_http.so -w ./www -p 8080”

上記コマンドを打ち込まなくても、以下のコマンドで可能です。

$ ./start.sh

6. Webブラウザを起動して、Raspberry Pi のポート8080にアクセスすると、以下のようなページが表示されます。JavaScript を選択すると、動画を見ることができます。Windows の場合、http://192.168.1.180:8080(Raspberry PiのIPアドレスが 192.168.1.180で ポート指定が8080の場合)

以上です。

このページのリンク http://sentech.co.jp/information/faq/usb/2146