ラズパイでキャットセンサーカメラを作ってみた
愛猫自動撮影装置を作りたい
家族全員が外出し、ひとりぼっちになったときの「こてつ」(愛猫)のようすを、デジタル一眼レフカメラに自動撮影してみようと思い、装置を考えてみることにしました。
以前、星や花のタイムラプス撮影にハマり、リモートレリーズというアクセサリは持っていたのですが、これは一定時間ごとにシャッターを切ることしかできません。こてつがいようがいまいが関係なしに撮り続けるため、こてつ不在の写真が大量に保存されることになってしまいます。そこで自分の思い描く装置を自作してみようと思い考えてみました。
仕様を考える
まずはじめに、どんなものを作りたいのか仕様を検討してみます。
- こてつがカメラの前にいるときだけ撮影。
- リビング全体が見渡せる位置や至近距離のソファーでも撮影可能に。
- 固定フォーカスではなく、オートフォーカスでピントを合わせる。
- 暗くなったら撮影はしない。こてつに向かってフラッシュは焚きたくない。
- 撮影したら外出先のスマホに報告。
- コンセントのない場所でも使えるようにする。
こんなところでしょうか。結構ハードルが高そうですが、どうせ作るなら妥協はしたくないので、納得できるものに仕上げようと思います。
構成を考える
さて、これを作るためには電子回路の知識が必要となります。また「5.撮影したら外出先のスマホに報告」の機能を実現するにはマイコンボードなどの力も借りなければなりません。必要部品や作り方のマニュアルが入っていて、はんだ付けするだけの電子工作キットしか作ったことのないこの私に、果たしてこんな複雑なものが作れるのでしょうか? ま、あれこれ迷っていても進みませんのでそれなりの試行錯誤を承知で始めてみます。
調べてみると、マイコンボードは「Arduino(アルドゥイーノ)」と「Raspberry Pi(ラズベリーパイ)」というのが主流のようです。
Arduino UNO3(左)と、Raspberry Pi 3 Model B(右)
どちらも人気ですが、ラズベリーパイ(ラズパイ)にはOSが搭載されており、かつ部品追加なしにWifiでネットワークに接続できるので、今回作ろうとしているものに向いているような気がします。ということで、マイコンボードはラズパイに決定。こんな値段でLinuxコンピュータが買えてしまう時代なんですね。
部品を揃える
電子工作の入門書やネットの情報を参考に必要と思われる部品を揃えます。今回、ラズパイと一部のパーツは大阪の日本橋に直接足を運び、足りないパーツはネット通販で購入しました。ラズパイこそ5,800円という価格でしたが、電子部品なんて安いもの。数円から数百円程度で買えてしまうものばかり。安くつく趣味っていいですよね。
- Raspberry Pi 3 Model B
- 電源アダプタ(USB充電器とmicroUSBケーブルでも可)
- MicroSDカード(今回は16GBを購入)
- ラズパイケース
- ブレッドボード&ジャンパーワイヤ
- ハーネス
- コネクタ
- ユニバーサル基板 (ICB-288)
- 焦電赤外線センサー (KP-IR612)
- 角型青色LED (OSB5XA7DA4B-GH)
- フォトカプラ (TLP785)
- CdSセル5φ (SEN-9006)
- ADコンバータ (MCP3002-I/P)
- ディップスイッチ (EDS Series)
- カーボン抵抗
- その他
回路を組んでみる
回路をあれこれ試行錯誤しながら構成を変更できるよう、まずはブレッドボードを用いて部品配置を考えていくことにします。そのまま部品を差していくことで回路を組めてしまうという便利なボード。はんだで固定しないので自由にやり直しも可能です。
ネットに参考となるサイトが多数存在しますので、今回ラズパイのインストール手順などを記載することは致しません。また参考書からダウンロード可能なADコンバータ用ライブラリなども使用しているため、装置のソースプログラムの掲載は控えます。
焦電赤外線センサーでこてつを検知
試行錯誤を重ねつつ、ひとつずつ機能を追加していきます。まずは焦電赤外線センサーが人や猫を感知したら青色LEDを点灯させるところから始めました。購入したセンサー(こちら)は最大8メートル先まで検知できるので、我が家のリビング全体が見渡せる位置に設置してもOKそうです。ラズパイの5V電源とGND、I/Oの端子に接続するだけなので簡単です。
センサー基板に元々付いているOUT端子にLEDをつければ検知時に光るのですが、ディップスイッチの切り替えでLEDを光らないようにもしたかったので、ラズパイから引いてきた別の信号線に接続しています。今後自宅や車内からの防犯カメラとして使用したくなったとき、LEDの光を見られたくないからです。
段階的に写真を撮っていないので一気に以下の写真ですがご容赦ください。とりあえずこてつ対策のため仮のケースに入れておきます。こてつに見つかってしまうと目がキラキラ、すぐに全ての線が引っこ抜かれることでしょう^^;
デジタル一眼レフカメラと連動させたい
ラズパイのケースに収まる非常にコンパクトな公式のカメラモジュールが販売されており、それを使えば簡単にできそうなのですが、今回はあえてそれをせず一眼レフにこだわりました。ただ単にやってみたかったというのが一番ですが、
・大量の写真でラズパイのMicroSDカードの容量を圧迫したくない。
・たとえ1枚でもいいショットが撮れるなら、背景をぼかし綺麗な写真で残したい。
という理由からです。以前カメラにハマり毎日のように持ち歩いていたデジイチでしたが、最近は部屋の片隅でホコリをかぶっていたので久々の出番。Nikon D90という10年近く前の古い機種ですが、お気に入りの相棒くんです。
デジイチと連動させるためにレリーズの差し込み口を使います。D90のレリーズコネクタは特殊な形状なので、以前数百円で購入したD90対応シャッターリモコンコードレリーズのケーブルをぶった切って利用しました。
直接基板に繋ぐより、3.5φミニジャックにして先端を差し替えできるようにしておけば、今後拡張性がありそうなのでこんな感じで加工しました。
レリーズボタンを分解して調べてみると、電池が入っているわけでもなく、ただ単に金属の接点があるだけ。半押しでピント合わせの接点が導通状態になり、更に押し込むとシャッターを切る接点が導通状態になります。
ということで、ラズパイ側のシャッターON/OFF信号をカメラに伝えるために「フォトカプラ」という部品を購入。1個たったの20円。ピント合わせ用とシャッター用の2個が必要となります。フォトカプラは、5ミリ角程度の小さな部品の内部に発光ダイオード(LED)が仕込まれており、入力側から電圧をかけると内部でLEDが発光し、その光に反応して出力側のスイッチがON状態になるという仕組みです。入力(ラズパイ側)と出力(カメラ側)は内部で絶縁されているため、カメラ側の回路を壊すことはありません。
参考:RENESAS(フォトカプラはこうして使う)
有線ではなくラズパイ側から赤外線を飛ばしシャッターを切るという方法も可能ですが、それは次の楽しみに取っておこうと思います。
プログラミング
ラズパイ側でプログラムを組みます。OSはLinuxなので慣れていないかたは戸惑うかも知れませんね。私は長年UNIXを触っていたのであまり抵抗はありません。でもちょっと検索すれば参考になるサイトがたくさん存在し、サンプルプログラムを掲載してくださっている親切なサイトも数多くありますので、私のように勉強しながら進めて行くにはいい環境だと思います。今回使用する言語はpython。C言語は得意ですがpythonは初めて。でもなんとなくC言語と似ていているので順応できそう。
メールを送信する
センサーが反応するたびにスマホに検知した時間などをメール送信させます。ラズパイからメールを送信させるには、Gmailを利用するのが手っ取り早いようなので、新たにGmailのメールアドレスを取得。ところがなかなか送信がうまくいかずあきらめかけていました。よくよく見ると、メールアドレスのつづりを間違えて申請していたことが判明。間違いメルアドで再設定しプログラムを組んだところすんなり送信。先が思いやられます^^;…
赤外線センサーが検知すると回路がONになり、2秒後自動的にOFFになります(センサー側の仕様。2秒~80秒の間で変更可能)。ということはセンサー前にこてつが居続け、少しでも動くと検知し、数秒ごとにメールを送信してしまうことになります。
実はメール送信を実現できたのが嬉しく、テスト運用も兼ねて装置の電源をONにし会社に出勤。ところがこてつが私の部屋に居座り続けたため、とんでもない数のメールが送られて来てスマホのバイブが震えっぱなし。たまりかねてカミさんに「頼む!電源抜いてくれー」と電話する始末^^;
仕事中にメールをバンバン送られては、たまったもんじゃないので、以下のような仕様とすることにしました。
最初にセンサーが検知してから60分間は、何度検知しようが検知回数をカウントアップさせるだけでメールは送らない。送信は検知開始から60分後。ただし撮影は検知のたびに行う。メールを送信した後は同様のルールを繰り返す。
5分以内に連続して検知した場合はそこに滞在しているものとみなし、最後の検知後5分を経過した時点で反応がなかった場合、その場所から離れたものとみなす。(60分、5分という時間はプログラムで変更可能)
これでメール地獄から脱却。
いまどきメールじゃなくてLINEでしょ
メール送信は実現したものの、送られてきたメールをスマホからいちいち削除するのも面倒。そこでLINEにも送れるようにし、メール送信/LINE送信をディップスイッチで切り替えできるようにします。ラズパイからLINEにメッセージを送るには、LINEが提供する公式アカウント「LINE Notify」を利用。予想に反しメールよりずっと簡単に実現できました。送信先は個人宛だけでなくグループも可能なので、今後色んなことに使えそうですね。
参考:LogFile様(Raspberry Pi 3からLINE Notifyでメッセージを送る)
周囲の明るさを検知し撮影するしないを判断
前述の焦電赤外線センサーは名前の通り赤外線を使用するので、真っ暗な状態でもこてつを検知できます。夕方から夜にかけて辺りが暗くなっても撮影は続行できますが、こてつに向けてフラッシュを焚きたくありません。カメラ側でフラッシュをOFFにしておけばいいのですが、それでも真っ暗な中でシャッターを切る信号は送られ続けることになります。黒写真が大量に保存されることを防ぐため、CdSセル(こちら)という安価な光センサーを利用し、暗くなったらシャッターを切らないよう制御します。
CdSセルだけでは明るさの度合いを数値化できないため、A/Dコンバータ(こちら)という部品が必要になります。アナログ信号からデジタル信号に変換し明るさを数値化してくれます。今回は細かな精度を必要としないので、安価なタイプにしました。
ユニバーサル基板への移植
ブレッドボードに部品を乗せたままでは別の装置を作ることができません。また部品を固定していないので、こてつにいじったり落としたりされると抜けてしまう恐れがあり、せっかくの苦労が水の泡となりかねません。2~3日動作確認してみて問題は発生しなかったので、ユニバーサル基板に部品をはんだ付けします。
「ただ単にそのまま置き換えるだけでしょ?」と思い簡単に考えていたのですが、これがなかなか大変でした。自分で回路を組むのは初めてのため要領が分からず、はんだ付けしやすい配置というのもやってみないと分かりません。イモはんだヨロシク、人様に見せられるシロモノではありませんが、せっかく完成したので載せておきます。
ケーブルを接続するとこんな感じ。
ディップスイッチの設定
1 – LED [発光させる/発光させない]
2 – カメラ撮影 [する/しない]
3 – スマホに通知 [する/しない]
4 – 通知方法 [メール送信/LINE送信]
赤外線センサーはここに装着しました。電源を入れてみましょう。ラズパイが壊れないか、もうドキドキです^^;
点いた!カンペキ!
全体像はこんな感じ。ACアダプタはもちろんのこと、モバイルバッテリーからの給電も可能なので屋外でも使うことができ、野鳥の撮影にも役立ちそうです。カメラの前に鳥のエサを置いて、ただひたすら待つだけ。スマホで遊んでいても勝手に撮影してくれます。
当然屋外にはwifiが飛んでいないので、LINE送信機能は無効になりますが、外にいるときはカメラのそばに自分がいるので通知は必要ありません。数年間スマホの充電に使用し、ヘタっているはずのpanasonicモバイルバッテリーでテストしてみたところ9時間以上もちました。十分な性能です。
検証してみる
それでは、こてつくんに協力してもらいましょう!
玄関で居座るこてつ。
おっ!ちゃんと映ってそうです。
至近距離で試してみましょう。こてつが大好きな座椅子の前にカメラを置き待ち伏せしてみました。
成功!撮れています。アングル悪いけど…
ピントはどうでしょうか?拡大してみましょう。
お!目ン玉に私が映っています。大丈夫そうですね。
ピントを合わせる信号線とシャッターを切る信号線を別々に配線していますので、それぞれ何秒間ONにするかを設定できます。試行錯誤の結果、ピント合わせを3秒間にしたところ綺麗にピントが合う写真が多くなりました。まあその3秒の間に移動されてしまったらどうしようもないですけどね。ピント合わせの時間を0秒にしたい場合は、カメラ側で置きピンし固定フォーカスにすればOKです。このように至近距離から撮らない場合はそれでいいと思います。
動画を載せておきます。ピント調整の甘い段階に撮影したものですので、とりあえずテストということでご容赦ください。
最後まで読んでくださいましてありがとうございました。また面白い装置を作ったら載せていきますので、よろしければご覧くださいね。
ディスカッション
コメント一覧
課題研究で同じようなカメラを製作しているのですが、ラズベリーパイの設定がよくわかっていないのですが、motionやmjpg-streamerなどはインストールしたのでしょうか?していたのなら少し詳しく教えていただきたいのですが。私用ですみません。
返信が遅くなり本当に申し訳ありません。本日コメントを頂いていることに気づきました。ありがとうございます。
motionやmjpeg-stremer等は使用しておりません。センサーがこてつを検知したら信号がラズパイに送られるので、それをトリガにフォトカプラをON/OFFしシャッターを切っているだけです。ラズパイ側で動画や写真を扱うのではなく、デジタル一眼レフカメラのSDカードに撮りためるのが目的です。USBカメラやカメラモジュールをラズパイに繋げば、motion等で同じようなことを実現できましたが、画質が悪かったのでデジイチに挑戦しました。(^^)
ピンバック & トラックバック一覧
[…] ラズパイでキャットセンサーカメラを作ってみた […]