成り行きで引き受けた「大人の自由研究」。ラズパイを使って『スズメ激写装置』をつくるというテーマのもと見切り発車でスタートしたが、大方の予想を裏切りとんとん拍子で進行中。そしてついに、WEBカメラを使った動体検知撮影に漕ぎ着けた。

Wi-Fiが途切れる?

I氏:「どうなってるんですか!」
海上:「はい?」
I氏:「Wi-Fi化してからネットワークがすぐ切れると、読者から質問が来ましたよ!」
海上:「それね。『8192cu』というドライバで動くWi-Fiアダプタで起きる現象ですよ」
I氏:「型番だけ言われたって、普通の人はわかりませんよ!」
海上:「『lsmod』コマンドを実行し、8192cuと表示されるかどうかでわかりますよ」
I氏:「で、対策は?」
海上:「以下のコマンドラインをSSHクライアントにコピペして実行、その後再起動すればOK」

echo "options 8192cu rtw_power_mgnt=0 rtw_enusbss=0" | sudo tee /etc/modprobe.d/8192cu.conf

RealTek製Wi-Fiアダプタのドライバ(8192cu)の省電力機構には問題があるため、オプションを設定して無効化したほうがいい

I氏:「……確かに、通信が途切れなくなったような。なんですか、これ?」
海上:「Wi-Fiアダプタのドライバを読み込むとき、USBの省電力機構を無効化するようにしたんですよ」
I氏:「じゃあ、消費電力が増えると」
海上:「バッテリーのもちに大きく影響するほどではないです。たびたび通信が途切れるよりいいでしょ?」

いよいよWEBカメラを接続

RaspbianをインストールしてUSB Wi-Fiアダプタの設定が完了すれば、あとはWEBカメラシステム「Motion」をインストールするだけ。Raspbianはdebian系のLinuxディストリビューションなので、apt-getコマンドを使えばかんたんにインストールできる。結論からいうと、以下の2行をSSHクライアントで実行すれば準備完了だ。

$ sudo apt-get update
$ sudo apt-get install motion

念のため説明しておくと、1行目ではパッケージ情報が保管されているインデックスファイルを更新し、2行目でMotion本体および依存関係にあるパッケージ群をサーバからインストールしている。Motionは「ffmpeg」や「libav-tools」など映像系のプログラムに依存しているため、AにはBが必要で、Bをインストールしようと思ったらCが必要で、CにはDが必要で……といった事態に陥る。apt-getは、そんな依存関係にあるパッケージを芋づる式にインストールしてくれるのだ。

なお、ときどき「Do you want to continue [Y/n]?」などと質問されることがあるが、そのときには「Y」と答えればOK。しばらく放置すれば、多数のパッケージが次々インストールされるはずだ。

apt-getコマンドを利用して「Motion」をインストールする。直前に「apt-get update」を実行することを忘れずに

ファイルを取り出す準備

Motionが撮影した静止画/動画は、microSDカードの空き領域に書き込まれる。それを取り出すには、『スズメ激写装置』でファイル共有サービスを動作させておき、WindowsのエクスプローラやMacのファインダーで操作することが近道だ。

しかし、『スズメ激写装置』で使うシステム(Raspbian)では、あらかじめファイル共有サービスがインストールされていないため、手動でセットアップしなければならない。利用する共有サービスは、WindowsでもMacでもシステム標準で対応していることを考慮すれば、Samba(Windowsネットワーク互換のOSSファイル共有機能)が妥当だろう。apt-getを使えば、以下の1行を実行するだけでインストールできる。

$ sudo apt-get install samba

ネットワーク上で共有する領域の準備も必要。「Motion」の初期値では、/tmp/motionディレクトリに静止画/動画を記録するよう設定されているため、「path=/tmp/motion」とパスを記述しておけばOK。sudoと組みあわせてnanoを起動し、Sambaの設定ファイル(/etc/samba/smb.conf)の末尾へ以下のとおり記述をくわえ上書き保存すれば準備完了だ。

テキストエディタ「nano」を利用してSambaの設定ファイル(/etc/samba/smb.conf)に記述をくわえる

$ sudo nano /etc/samba/smb.conf

(末尾に追加)
[share]
path=/tmp/motion
read only=no1
browsable=yes
guest ok = yes
force user = pi

設定を有効にするには、Sambaの再起動が必要(sudo service samba restart)。さらに、次回以降『スズメ激写装置』を起動したときSambaを自動的にスタートさせるため、起動スクリプトにもひと手間くわえておこう(sudo update-rc.d samba defaults)。

$ sudo service samba restart
$ sudo update-rc.d samba defaults

『スズメ激写装置』を起動、すると……

これでとりあえずの準備は完了、あとはベランダに『スズメ激写装置』を置き、ひたすら待つのみ。利用するWEBカメラ「iBUFFALO BSW32KM04WH」は予想以上に広角なので、適当な方向に向けておけばおそらくだいじょうぶと思う。ただ、この暑さの中、飛んできてくれるかどうか不安なので、ちょっとしたプレゼント(ヒエとかアワとか)を用意してみた。そうそう、肝心の「Motion」の起動を忘れずに。

$ sudo motion -n

WEBカメラを接続してからmotionを起動すると、すぐに動作検知が開始される。カメラの前を行ったり来たりすれば、JPEGが生成されたことを確認できるはず

待つこと4時間。時折ファイルブラウザで「Motion」の撮影状況をチェックするが、特に変化なし。ベランダに置いた植物の葉の揺れか太陽が雲に隠れたことかを検知したのか、数枚の静止画が撮影されていたが、どこにもスズメの姿はない。バッテリーを使い切ったのか、通信が途絶えたところで最初の運用テストを終えた。

I氏:「来ないじゃないですか!」
海上:「そういわれても。動作検知は期待どおりなんですけどね」
I氏:「それに、なんですか、あのドリキャスコントローラの箱は」
海上:「お目が高い。Pippin@のコントローラの箱もありますよ」
I氏:「そうじゃなくて。もうちょっと"らしさ"ってものがあるでしょ?」
海上:「ドリキャスのなにがいけないのかと(略)」
I氏:「ともかく、解像度の低さとかタイムスタンプの狂いもどうにかしてくださいよ」
海上:「次回、シリーズ最終回。『スズメ激写装置』の変貌ぶりにご期待を!」

ドリキャスコントローラの箱にRaspberry Piとバッテリーを詰め、WEBカメラだけ外に出して撮影することに

ベランダでスズメ待ち。作為感満点のエサ箱を警戒してか、はたまたドリキャスコントローラの箱を畏怖してか、スズメは一向にやってこないのだった

太陽が雲でさえぎられると動体検知機能が反応するらしく、陰の濃さが異なる写真が何枚も自動撮影されていた