twitterよりちょっと長いの

せっかくだから書き残すよ。

Raspberry Piでドライビングレコーダを作った話 -製作編-

「データを計測するためのハードウェア」編

ボタンを押したら録画を開始するドライビングレコーダを作ります。
録画中は現在位置での「風景」と「現在位置」を記録します。
注:実はこの計画、「不幸な事故」で一時中断中です。完璧な完成までは至っていません。
f:id:AIN0204:20150829231845j:plain:h400

ハードウェア

使った部品は以下のとおり

  • Raspberry Pi model A+ x1 約3000円
  • カメラモジュール x1 3400円
  • u-blox GPSモジュール x1 約2000円
  • タクトスイッチ x2
  • LED x1
  • ブレッドボードとか色々。
  • モバイルバッテリー

一般的なご家庭にあるであろうブレッドボードとかモバイルバッテリーは除いて、材料費はだいたい8500円くらいですね。単純にドライビングレコーダを作るならGPS要らないですし、もう少し安く上がりそう。もっとも、今回は防犯目的のドライビングレコーダではありませんが。

ドライビングレコーダとして使うので基本的にはモバイルバッテリーで動かす必要があります。そのため、今回は数あるモデルの中でも消費電力が一番少ない「model A+」を使いました。Raspberry Piには画像を保存するためにカメラモジュール、位置情報を計測するためにGPSモジュールを取り付けます。そして、スタンドアローンで動かすのでシャットダウン用、録画on/off切り替え用にタクトスイッチを2つを取り付けます。最後に、録画中であることを示すLEDを取り付けて完成です。大体こんな感じ。小さく収まりました。
f:id:AIN0204:20150829224350j:plain:h400

回路図は以下のとおり。model B+で書いてますがmodel A+に読み替えてください。
f:id:AIN0204:20150831031750j:plain:h400

カメラモジュールについては純正のカメラモジュールなので、そんなに資料に困ることはありませんでした。
GPSモジュールについては色々、先人の知恵をお借りして何とか使えるようになりました。使えるまでの格闘の様子は以下の記事をご参照ください。ain0204.hatenablog.com
あと、シャットダウンボタンとかタクトスイッチの使い方については以下のページを参考にして実装しました。raspi.seesaa.net

ソフトウェア

基本的には先に挙げたページとかを参考にしてPythonのコードを書きました。
主な動きとしては以下の通り。

  • 録画ボタンが押されたら録画を開始、シャットダウンボタンが押されたらシャットダウンする
  • 録画中はLEDを光らせる
  • 録画を開始したら10秒に1度、カメラの画像と現在位置情報を記録する
  • 画像はその都度保存し、位置情報は経度緯度に分けてCSVファイルに保存する
  • 画像名と位置情報を結びつけるために計測した順番にidを1から順に割り当てています(画像名、またはCSVファイル内に保存)

詳しくはGithubの方を見てください。録画中はシャットダウンできなかったりと構造的に問題はありますが、多分大丈夫でしょう。多分。
pi_recording/recording.py at master · AIN0204/pi_recording · GitHub
後は起動と同時にこのプログラムが実行されるよう設定ファイルを書き換えてやれば完成です。

完成品

モバイルバッテリー以外を小さくまとめた完成品はこんな感じになりました。
「テム=レイの回路」みたいな謎デバイス感が漂いますね。
f:id:AIN0204:20150829231845j:plain:h400
これを自転車とかに搭載するわけです。これは針金で自転車に固定してあります。
f:id:AIN0204:20150830160054j:plain:h400
モバイルバッテリーがカゴに投げ込まれていますが、走行時はポケットに入れます。

不幸な事故

ウランガ!なんたることか!締め切り前日にGPSモジュール=サンは逝ってしまわれたのだ!!
f:id:AIN0204:20150830161959j:plain:h400
修理も虚しく帰らぬ部品となってしまいました...。今から取り寄せるのも時間的に間に合わないので、GPS機能を一旦捨てて動かします。

「計測したデータをいい感じに表示するソフトウェア」編

位置情報が取れてないのでソフトウェアの開発まではやってません...。


次、一旦完成編へain0204.hatenablog.com