デジタルカメラを自作してみよう【Raspberry Pi Setup編】

f:id:karaage:20140830180007j:plain

2016/11/20 変デジ開発室へのリンク追記

はじめに(2016/11/20修正)

 Raspberry Piの後継として、クアッドコアとなり、大幅にパワーアップしたRaspberry Pi 2やWiFi Bluetooth機能が追加されたRaspberry Pi 3、が販売されています。特別な理由がなければ今はRaspberry Pi 3の方がオススメかなと思います。こちらのセットアップ記事も書きましたので、以下記事参照ください。


 Raspberry Pi 3での最新のOS Raspbian Jessieのセットアップ


 Raspberry Pi 2での設定はこちら


 こちらはRaspbian Wheezy(NOOBS)のセットアップ方法です。参考まで

[asin:B00T356SFO:detail]

一年越しの企画再開

 デジカメ作ると宣言して下記の記事書きました。

 気づけば、一年の月日が流れていました。実はあんまりピッタリ来る筐体が見つからなくて、3D CADで設計しようとしてめんどくさくなったり、2眼レフを買ったけどあまりに加工がしんどかったりとウダウダやっていてこんな感じになっていました。
 そんなこんなですっかり忘れかけていたのですが、なかよしのピンホールカメラが筐体にピッタリそうということで思い切って再開してちょっと公開したら結構反響あったので、まあ引くに引けなくなって再開することと相成りました。


Raspberry Pi Setup

 メインのマイコンはRaspberry Piを使います。理由は以下です。

  • 結構安い
  • カメラモジュールあって映像取り込みの部分が楽そう
  • 映像出力が楽(HDMI, コンポジット出力有り)
  • USB端子で色々拡張できそう
  • 市販のUSBバッテリがバッテリとして使える

 セットアップの仕方はネットを探せばいくらでもでてくるのですが、いつも忘れて探すのに時間かかるので自分のためにまとめておきます。自分以外の人は、ここみるより参考リンクをみるか、ネットで検索して詳しく説明しているサイト探した方がよいかと思います。これ以降は、Raspbian Wheezyインストールする前提で書いています。

必要なもの

 ソフト開発環境に必要なものです。基本的にデスクトップパソコンはあるものという前提で話しています。もし無い場合は、USBキーボードとディスプレイも購入して下さい。

Raspberry Pi

カメラモジュール

小型化のため、これ使ってマイクロSDカード使います

今後のデジカメ化を見越してmicroSDカードでセットアップ

[asin:B005DU4XSM:detail]
WiFi内蔵デジカメ化するため

パソコンのディスプレイ活用するため、HDMI->DVI変換が安くて便利。HDMI入力あればHDMIケーブルでもOK

[asin:B00PTGO146:detail]
 電源はRaspberry PiからUSBデバイス繋げること考えると、2A程度供給できるものだと安心。
大体 Raspberry Piが700mA@5V, USBデバイスの規格がMax 500mA@5Vでこれが2つだと合計1.7A程度。

 タイプAオス- マイクロタイプBオスのものなら何でもOK

microSDカードにOS書き込み

f:id:karaage:20140822073500j:plain

 以下Mac向けです。Windows用は適当にググってみて下さい(すみません)。以下のサイトでOSをダウンロードします。無料なので安心してダウンロードして下さい。今はNOOBSというのが主流らしいですが、少し起動が遅くなるっぽいのでRASPBIANをダウンロードして下さい。

 書き込みはSDカードライタを使うと楽です。以下からダウンロードして下さい。

SD card setup – Raspberry Pi – Mac | All the (*)Ware


 後は、SDカード刺してSDカードライタ起動して、最初にダウンロードしたイメージ "2014-06-20-wheezy-raspbian.img"を開いてSDカードのドライブを選択。その後しばらく待つ(何も画面が出なくて不安だけど5分くらい)と書き込み完了のダイアログが出ます。これで書き込みはOK。

 他DDコマンドでSD書き込みをする方法があるのですが、私はこちらはうまくできませんでした(一日放置しても書き込みが終わらない)。ネットだとカードライタを使うと失敗する人とかもいるようです。まあここでうまくいくもいかないも基本運なので、うまくいかないときはあまり悩まず色々な環境、方法で試してみるのがよいと思います。SDカード、書き込み方法、OS、PC等の組み合わせが肝です。なるべくネットで実績ある組み合わせを使うのと、あんまり新し過ぎるもの、古過ぎるものは使わないのが肝です。

Raspberry Piハードウェアセットアップ

 ハードウェアのセットアップです。

microSDカード挿入

f:id:karaage:20140822073555j:plain

 上記の写真のように変換アダプタとRaspbianを書き込んだmicroSDカードを挿入します。

周辺デバイスとの接続

f:id:karaage:20140827224948j:plain
 上記の写真を参考に電源、ディスプレイ、キーボード、カメラモジュールを接続して下さい。要はパソコンの要領です。カメラモジュールが刺さるコネクタ2つあるので間違えないように注意。ちなみに一度私は間違えました…
 あと写真では繋ぐの忘れてましたが、LANケーブルも繋げましょう。

Raspberry Pi起動

f:id:karaage:20140822073840j:plain

 接続して電源入れると起動します。特にスイッチとかは無くて電源入れるといきなり動き出します。なのでコンセントのタップにスイッチがあると便利かもしれません。

初期設定

raspi-config

 最初、初期設定画面が出ます。初期設定はこの後raspi-configというコマンドで何度でも設定できるので間違えてもOKです。

  • Expand Filesystem: SD カードの空き領域をハードディスク(ルートファイルシステム)として使う【設定する】
  • Internationalisation Options: 言語の設定をする

 Change Locale: ロケール(文字コード等)を設定する【en_GB.UTF-8 を解除し,en_US.UTF-8 と ja_JP.UTF-8 を選択する.デフォルトは en_US.UTF-8 としておく】
 Change Timezone: 時間帯を設定する【Asia/Tokyo とする】
 Change Keyboard Layout: キーボードを設定する【使用するキーボードに合わせて(日本語キーボードの場合は "Generic 105-key (Intl) PC" > "Others" > "Japanese" > "Japanese" ...)】

  • Advanced Options: 高度な設定

 Hostname: この Raspberry Pi のネットワーク上でのホスト名【例.karaagePi】 (*アンダーバーとか記号使うとダメなので注意)
 SSH: SSH によるログイン【Enable】 とする

  • Camera module:【Enable】に設定

 設定終わって、OKすると再起動します。

 再起動後は ユーザー名:pi パスワード:raspberry でログイン

Raspbian Update

 最初は以下の2つのコマンドを打ってOSをアップデートします。Windowsアップデートみたいなものです。多分数分程度かかります。ちなみに、コマンドの一番頭にあるsudoというのは、管理者権限で実行するという意味です。

pi@karaage_pi~ $ sudo apt-get update
pi@karaage_pi~ $ sudo apt-get upgrade

 とりあえず初期設定はこんなもん。

Raspberry Pi ネットワーク・リモートアクセス設定

 次にネットワーク関係の設定をしておきます。これをしておくと、以降はRaspberry Piにディスプレイ、キーボード、LANケーブルの接続が不要になります。
 以降は、無線LAN(USB)、電源を繋いでおくだけで、外から別のPCでRaspberry Piにアクセスして、デバッグすることができるようになります。

無線LAN設定

 無線LANアダプタをRaspberry Piに差し込んで起動しましょう。

 /etc/network/interfaces画面を編集。viというエディタを使って編集します。viエディタはwindowsのメモ帳とかのエディタに比べると独特な操作方法だから、知らない人はグーグル先生に教えてもらってね☆

pi@karaagePi ~ $ sudo vi /etc/network/interfaces

 以下の6行目のdhcpという部分と、6行目のwpa-confという箇所を修正。

auto lo
iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

 次に/etc/wpa_supplicant/wpa_supplicant.confを編集

pi@karaagePii ~ $ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

 以下のMynetworkMyPassPhraseの部分を修正。自分の使っている無線LANのSSIDとパスワードを入力してね☆平文で不安だわーという人は、後で出て来る参考リンクのところを参考に設定してみて下さい。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="MyNetwork"
    psk="MyPassPhrase"
}

 これでOK。一旦再起動しましょう。再起動は以下のコマンドね。

pi@karaagePi ~ $ sudo reboot

 再起動したら、ifconfigでipアドレスとれているかチェックしてみるとよいです。

pi@karaagePi ~ $ ifconfig

wlan0ってところに192.168.0.*的な番号がふられていればOK!

 2015/10/16追記。複数のWiFiスポット設定したい場合は、以下のように書けばOK

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="MyNetwork"
    psk="MyPassPhrase"
}

network={
    ssid="MyNetwork2"
    psk="MyPassPhrase"
}

network={
    ssid="MyNetwork3"
    psk="MyPassPhrase"
}
ネットワーク設定

 ipアドレスはころころ変わったりするので、ホスト名(自分の場合はkaraagePi)を使ってアクセスできると便利なので、Avahiというやつをインストールします。インストールは以下のコマンドでOK。Yes/No 枕的なものが出て来たらとりあえずYesで。

pi@karaagePi ~ $ sudo apt-get update
pi@karaagePi ~ $ sudo apt-get install avahi-daemon

 これ以降は再起動しても自動実行されるようになります。再起動したら、Macのターミナルから以下のコマンドをうってみましょう。

karaage mac ~ $ ping karaagePi.local

 なんか反応きたらOK。ipアドレス直だとOKだけど、ホスト名だとダメな場合は Raspberry Piとパソコンが同じ SSIDを使っているかチェックしてみて下さい。
 じゃあ次はsshでアクセスしてみましょう。

karaage mac ~ $ ssh pi@karaagePi.local

 これでsshでアクセスできたらひとまずリモートアクセス環境はOK!

固定IP設定

 2015/06/16追記

 Raspberry PiのローカルIP。外から繋げたい場合等、なにかと固定しておいた方がよいこともあるので、固定する方法です。無線LANで固定IPにする設定が意外になかったりしたのでメモ。まあ有線の場合と基本同じなんですけどね。

 まずは/etc/network/interfacesを以下コマンドで編集

pi@karaagePi ~ $ sudo vi /etc/network/interfaces

 以下はRaspberry PiのローカルIPが192.168.0.50、ルーターのIPアドレスが192.168.0.1の場合の例です。それぞれのネットワーク環境に応じて修正下さい。nameserverは省略しても大丈夫でした。ルーターから引っ張ってこれるのでしょう。

auto lo
iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet static
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
address 192.168.0.50
netmask 255.255.255.0
gateway 192.168.0.1
iface default inet static
リモートデスクトップ設定

 じゃあ次はリモートデスクトップできるようにしましょう。
以下のコマンドでインストール。簡単だね!

pi@karaagePi ~ $ sudo apt-get install tightvncserver

 あとは以下のコマンドで起動。初回だけパスワード設定が必要なので設定しましょう。

pi@karaagePi ~ $ vncserver :1

 あとは、Macのファインダーの移動 -> サーバーに接続 (Command + KでもOK)から接続にいきます。

f:id:karaage:20140830173146p:plain

+ボタンでよく使うサーバーに追加しておくと便利です。これでRaspberry Piのデスクトップ画面が表示できたらOK

 ただ、tightvncserver 自動起動しないため、今後再起動するたびに vncserver :1 とコマンドをうってやる必要があります。これは面倒くさいので、自動起動できるようにしましょう。

 まずは /etc/init.d/vncboot を作成

pi@karaagePi ~$ sudo vi /etc/init.d/vncboot

 vncbootに以下の内容を書いて下さい。sshでログインしているなら、以下をコピーして、ターミナルの編集->ペーストでコピペできます。

### BEGIN INIT INFO
# Provides: vncboot
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start VNC Server at boot time
# Description: Start VNC Server at boot time.
### END INIT INFO

#! /bin/sh
# /etc/init.d/vncboot

USER=pi
HOME=/home/pi

export USER HOME

case "$1" in
    start)
        echo "Starting VNC Server"
        #Insert your favoured settings for a VNC session
        su $USER -c '/usr/bin/vncserver :1 -geometry 1600x900 -depth 24'
        ;;

    stop)
        echo "Stopping VNC Server"
        su $USER -c '/usr/bin/vncserver -kill :1'
        ;;

    *)
        echo "Usage: /etc/init.d/vncboot {start|stop}"
        exit 1
        ;;
esac

exit 0

 実行権限を付与して、自動起動に登録。まあここらへんは最初は意味わからなくてもよいです。私もあんまりわかってないです(ダメダメ)。

pi@karaagePi ~ $ sudo chmod 755 /etc/init.d/vncboot
pi@karaagePi ~ $ sudo update-rc.d vncboot defaults

 エラーとか出なければこれでOK。再起動してしばらくしてから vnc でデスクトップ画面にアクセスできたら成功です!

f:id:karaage:20140830180334p:plain

 こんな感じの画面が出たらOK

ファイル共有

 Raspberry Piとファイルを簡単にやりとりできたら便利ですね。そんなときはnetatalkをインストール。

pi@karaagePi ~ $ sudo apt-get install netatalk

 そうするとMacのファインダー上でRaspberry Piが見えるようになるので、自由にファイルやりとりできるようになります。

f:id:karaage:20140830180808p:plain

カメラ撮影テスト

 初期設定が一通り終わったので、カメラを使ってみましょう。まずはRaspberry Piを起動させて、リモートログイン(sshでもvncでのリモートデスクトップでもOK)。
 あとは以下のコマンドをうちましょう(vncの場合はターミナルを起動してから)。

 ホームディレクトリ(home/pi)に移動

pi@karaagePi ~ $ cd

 撮影

pi@karaagePi ~ $ raspistill -o test.jpg

 カメラのLEDが点灯して、しばらくすると消灯します。そしたらtest.jpgという写真ファイルが生成されます。あとはRaspberry Piから写真ファイルをダウンロード。
 これで一応カメラのリモートシャッターとWiFiでのファイル転送が実現できたことになりますね。あらステキ☆

f:id:karaage:20140830180007j:plain
 テスト写真。逆光だったので明るさだけ調整しました。

カメラモジュールLED消灯(2015/6/7追記)

 Raspberry Pi用カメラモジュールは、撮影中にLED点灯します。動作確認になってよいのですが、動画撮影中はずっと点灯して眩しいので、消したい人は消しましょう。私は消しました。やり方は以下のコマンドで/boot/config.txtを編集。

pi@karaagePi ~ $ sudo vi /boot/config.txt


 以下の1行をファイルの最後に追記してあげましょう。

disable_camera_led=1

 後は以下のコマンドで再起動するだけ。

pi@karaagePi ~ $ sudo shutdown -r now

 詳しくは以下参照。

qiita.com

Raspberry Pi終了処理

 最後に、Raspberry Piを終了させる前は必ず以下のコマンドをうってから電源落としましょう。ようはパソコンなのでいきなり電源きるのは危険なのです、SDの中のファイルシステムがぶっ壊れて最悪起動しなくなります。

pi@karaagePi ~ $ sudo shutdown -h now

参考リンク

こじ研 Raspberry Pi 準備編
 今回の記事はほとんどここを参考にしています。多分こちらの方が分かりやすいので、ここがわかりづらかったらこちらに行きましょう。

http://blog.knakajp.com/2013/05/raspberry-pi-3.html
 ファイル共有の設定はこちらを参考にしました

Raspberry Piで遊ぼう [No.5:VNC接続をしよう]:アシマネくんのほんわか日記:So-netブログ
 vncサーバの自動起動に関しては、こちらを参考にしました