Raspberry Pi 2でカメラモジュールを試してみる

記事を書くのを全く忘れていました・・・。 いまさらながらラズパイ2で、1年以上前に買って放置していていたカメラモジュールを試してみます。

前準備

  • 事前にraspi-configのEnable Cameraでカメラモジュールを使えるようにしておく
  • ラズパイにカメラモジュールを接続する

コマンド

  • raspistill : 写真を撮る
  • raspivid : ビデオを撮る

実行してみる

$ raspistill -o img.jpg
mmal: Cannot read cameara info, keeping the defaults for OV5647
mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera' (1:ENOMEM)
mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (1)
mmal: Failed to create camera component
mmal: main: Failed to create camera component
mmal: Camera is not detected. Please check carefully the camera module is installed correctly

root権限で実行してみる

$ sudo raspistill -o img.jpg
mmal: Cannot read cameara info, keeping the defaults for OV5647
mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera' (1:ENOMEM)
mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (1)
mmal: Failed to create camera component
mmal: main: Failed to create camera component
mmal: Camera is not detected. Please check carefully the camera module is installed correctly

そもそも・・・

$ vcgencmd get_camera
supported=1 detected=0

検出されていなかった。

カーネルが古いと失敗するようなのでアップデートする。

$ sudo rpi-update
$ sudo reboot 
$ vcgencmd get_camera
supported=1 detected=1

いけた模様。

LANでストリーミング配信してみる

VLCをつかって配信する

準備

$ sudo apt-get update

$ sudo apt-get install vlc

実行

ホスト

# HTTPで配信
$ raspivid -o - -t 9999999 -w 800 -h 600 --hflip | cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8080}' :demux=h264

#RTSPで配信
$ raspivid -o - -t 9999999 -w 800 -h 600 --hflip | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8080/}' :demux=h264

クライアント

#HTTPでの配信
<a href="http://RPI_IP:8080/" target="_blank" rel="noreferrer" style="cursor:help;display:inline !important;">http://RPI_IP:8080/</a>

#RTSPでの配信
rtsp://RPI_IP:8080/

Raspberry Pi 2をDLNAサーバにする

パスが長くなるとロードできないため今回はminidlnaをソースからビルドして利用します。

  1. minidlnaのアンインストール
  2. すでにminidlnaをインストールしてしまった場合は、アンインストールする。
    sudo apt-get purge minidlna
    sudo apt-get remove minidlna
    sudo apt-get autoremove
    
  3. リポジトリの追加
  4. echo "deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free" | sudo tee -a /etc/apt/sources.list
    
  5. リポジトリの更新
  6. sudo apt-get update
  7. ビルドに必要な依存パッケージをインストール
  8. sudo apt-get build-dep minidlna

    # 必要に応じて下記パッケージもインストールする sudo apt-get install libjpeg-dev libsqlite3-dev libexif-dev libid3tag0-dev libvorbis-dev libflac-dev

  9. 本体の取得
  10. http://sourceforge.net/projects/minidlna
    wget http://downloads.sourceforge.net/project/minidlna/minidlna/1.1.4/minidlna-1.1.4.tar.gz
    
  11. 解凍
  12. tar -xvf minidlna-1.1.4.tar.gz
    cd minidlna-1.1.4
    
  13. 編集
  14. そのまま利用すると下記のようなWARNがでてロードできなためソースを編集する。
    tagutils/tagutils-misc.c:198: warn: Vorbis cuesheet too long [<path>]
    tagutils-misc.c:186付近を編集する。
    strbuf[1024];   //before 
    strbuf[10240];  //after
    
    【追記】 upnpsoap.hに定義されているMAX_RESPONSE_SIZEも編集する。
    upnpsoap.c:753: error: UPnP SOAP response cut short, to not exceed the max response size [2097152]!

    #define MAX_RESPONSE_SIZE 2097152  // before
    #define MAX_RESPONSE_SIZE 0        // after
    
  15. ビルド
  16. ./configure && make && sudo make install
    
  17. インストール
  18. sudo cp minidlna.conf /etc/
    sudo cp linux/minidlna.init.d.script /etc/init.d/minidlna
    sudo chmod 755 /etc/init.d/minidlna
    sudo update-rc.d minidlna defaults
    
  19. 設定
  20. sudo vim /etc/minidlna.conf
    

    media_dir=V,/mnt/usbstorage/Movies
    media_dir=V,/mnt/usbstorage/TV
    media_dir=A,/mnt/usbstorage/Music
    media_dir=P,/mnt/usbstorage/Pictures
    # Names the DLNA server
    friendly_name=RasPi Media Server
    # Tells the DLNA to update the library when there are changes
    inotify=yes
    
  21. サービスの開始
  22. sudo service minidlna start
    

Raspberry Pi 2のNAS化(Sambaサーバの構築)

  1. パッケージのインストール
    # NTFSのサポート
    $ sudo apt-get install ntfs-3g
    
    # samba
    sudo apt-get install samba
    
    $ sudo chkconfig --list | grep samba
    samba                     0:off  1:off  2:on   3:on   4:on   5:on   6:off
    
  2. ラズパイのシャットダウン
    $ sudo shutdown -h now
    
  3. HDDを接続
  4. 接続されたHDDの確認
    $ sudo fdisk -l
    # ~略~
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1            2048  3907026943  1953512448    7  HPFS/NTFS/exFAT
    
    # UUIDを調べる
    $ sudo blkid /dev/sda1
    /dev/sda1: LABEL="foo" UUID="bar" TYPE="ntfs"
    
  5. マウントポイントの作成
    # hdd1は任意 適宜変更する
    $ sudo mkdir /mnt/hdd1
    
  6. HDDをマウントする
    $ sudo mount -t ntfs-3g /dev/sda1 /mnt/hdd1
    
  7. 確認
    $ df -k
    # ~略~
    /dev/sda1       1953512444 1733535812 219976632   89% /mnt/hdd1
    
    末尾に作成したマウントポイントと接続されたHDDのパスが表示されたらOK
  8. システム起動時に自動でマウントさせる
    # /etc/fstab
    ## <file system>  <dir>  <type>  <options>  <dump>  <pass>
    /dev/sda1    /mnt/hdd1    ntfs-3g    defaults      0    2
    # UUID="bar"      /mnt/hdd1    ntfs-3g    defaults    0    2
    
  9. マウントポイントsamba
    # /etc/samba/smb.conf
    [RaspiNAS]
    comment=outer USBHDD
    path=/mnt/hdd1
    public = Yes
    read only = No
    writable = Yes
    guest ok = Yes
    force user = pi
    
  10. sambaサービスのリスタート
    $ sudo service samba restart
    

Raspberry Pi 2の初期設定

はじめに

家内NASDLNAを構築するまでの道のりです。すでにWiFi環境が構築されていることを前提に書いていきます。 本記事は、Raspberry Pi 2 model B(以下、ラズパイ)を購入、初期設定までを書いていきます。

下準備

準備するもの
  • Raspberry Pi 2 model B ... 本体 
  • microSD 4GB … 4GB以上推奨
  • microUSB ケーブル
  • microUSB ACアダプタ
  • LANケーブル
  • 初期設定用のPC(ここでは、MacBook Proで使っています)
  • ディスプレイ
  • HDMIケーブル
  • USBキーボード
  • USBマウス
microSDカードの初期化

初期設定用のPCで作業します。

  1. 公式のダウンロードサイトにアクセスし、OSのインストーラーをダウンロードする。
    f:id:nagashy:20150411200942p:plain
  2. ダウンロード後、zipファイルを解凍する
  3. microSDカードをFATでフォーマットする
  4. 2で解答してできたフォルダ内のファイルを全て3でフォーマットしたmicroSDカードにコピーする

ラズパイにOSをインストール

ラズパイの起動まで
  1. 初期化したmicroSDカードをラズパイにセットする
  2. マウス、キーボードをUSB端子に接続する
  3. ディスプレイとラズパイをHDMIケーブルで接続する
  4. microUSBケーブルでラズパイとACアダプタを接続する
  5. ディスプレイ何をインストールするか出るので「Rasbian」を選択して「Install」をクリックして次に進む
  6. 少し待つと「raspi-config」が開きます。
raspi-config
  1. 「1 Expand Filesystem」→「OK」
  2. 「4 Internationalisation Options」→
    「I2 Change Timezone」→
    「Asia」→
    「Tokyo」
  3. 「4 Internationalisation Options」→
    「I3 Change Keyboard Layout」→
    「Generic 105-key(Intel) PC」→
    「Japanese」→
    「The default for keyboard kayout」→
    「No compose key」→
    「No」
  4. 「Finish」→再起動を要求されたら「YES」を選択して再起動する。

初期設定

初期状態のユーザIDとパスワード

ID パスワード
pi raspberry
vimのインストール
$ sudo apt-get install vim

# デフォルトエディタの変更
$ sudo update-alternatives --config editor

# nanoとedのアンインストール
$ sudo apt-get autoremove nano
$ sudo apt-get autoremove ed
リポジトリの変更
# /etc/apt/sources.list

eb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
↓
#deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
deb http://ftp.jaist.ac.jp/raspbian wheezy main contrib non-free rpi
update
$ sudo apt-get update
$ sudo apt-get upgrade
Hostnameの設定
# /etc/hostname
raspberrypi
↓
myHostname
# /etc/hosts
127.0.0.1    raspberrypi
↓
127.0.0.1   myHostname
HostnameでSSH接続
# avahi-daemonのインストール
$ sudo apt-get install avahi-daemon

# ステータスの確認
$ sudo /etc/init.d/avahi-daemon status
Avahi mDNS/DNS-SD Daemon is running

# 確認
$ ping myHostname.local
ssh秘密鍵の設定

初期設定のPCで実行します。

$ ssh-copy-id -i ~/.ssh/id_rsa pi@myHostname.local

あらかじめ、秘密鍵の作成とssh-copy-idをインストールしておく必要があります。

日本語フォントのインストール
$ sudo apt-get install fonts-vlgothic
zshのインストール
$ sudo apt-get install zsh
$ chsh -s $(which zsh)

sshでの接続設定

# /etc/hosts.denyの末尾に追加
sshd: ALL

# /etc/hosts.allowの末尾に追加
## 192.68.0.0 ~ 192.168.255.255を許可
sshd: 192.168.0.0/16 127.0.0.0/8
不要なサービスの削除
# ショートカット
$ sudo chkconfig triggerhappy off

# オーディオ
$ sudo chkconfig alsa-utils off

# ディスプレイ
$ sudo chkconfig lightdm off

# ログイン時のメッセージ
$ sudo chkconfig motd off

# グラフィック
$ sudo chkconfig plymouth off

# 時刻
$ sudo chkconfig ntp off

# 
$ sudo chkconfig rsync
# x11
$ sudo chkconfig x11-common off
ntpの設定
$ sudo apt-get install ntpdate

# crontab
0 * * * * /etc/network/if-up.d/ntpdate > /dev/null 2>&1

# /etc/default/ntpdate
NTPSERVERS="ntp.nict.jp ntp.jst.mfeed.ad.jp ntp.ring.gr.jp"

ブログ始めました

文章書くことが苦手なので、短い文章になりそうですが、習慣的に書けるように頑張ります!