画像をマイクロ SD カードに保存する監視カメラの作成 1/2
ここでは、Arduino Uno R3 と JPEG TTL カメラ (VC0706) を組み合わせて、 監視カメラっぽいものを作ります。
監視カメラというと仰々しいですが、要は「はい、チーズ」でタイミングをみて撮影するのではなくて、 決められたタイミングで自動的にドンドン撮影していくタイプのカメラ、ということです。
今回は数秒置きに自動的に撮影して、撮影した画像をマイクロ SD カードに保存するようにしました。
JPEG TTL カメラは Adafruit で購入した VC0706 です。
マイクロ SD カード (TF カード) モジュールについては、 Shenzhen Caizhixing Electronic というところで安く売っていたので購入して試しました。
SPI インターフェイスです。
Arduino は Arduino Uno です。
マイクロ SD モジュール (SPI インターフェイス) の利用
今回利用したマイクロ SD (TF カード) モジュールのピン配列は次の通りです。
レベルコンバータ内蔵で 5V でも 3.3V でも動作するとのこと。Arduino Uno なので 5V として、そのまま接続しました。
SPI インターフェイスは Arduino では次の通りです。
SPI | Uno | Mega 2560 | Pro Mini |
---|---|---|---|
SS(CS) | 10 | 53 | 10 |
SCLK | 13 | 52 | 13 |
MOSI | 11 | 51 | 11 |
MISO | 12 | 50 | 12 |
今回は Arduino ビルトインの SD ライブラリを利用します。 これはオープンソースで公開されている sdfatlib ライブラリのラッパーです。 必要に応じて sdfatlib を参照すると SD ライブラリの使い方も理解しやすいです。
SD カードのファイルシステムとしてサポートされているのは FAT16 と FAT32 です。 使う前にマイクロ SD カードのファイルシステムが FAT16 または FAT32 であることを確認し、必要なら FAT でフォーマットして使います。
ファイル名は 8.3 形式とします。現状小文字のファイル名は許可されておらず、 小文字のファイル名を作っても大文字に変換されます。
ライブラリのソースを確認したところ、SD ライブラリの utilities にある SDFile.cpp の make83Name 関数内で大文字に変換してました。 ドキュメントの記載は見つけられなかったので、今後動作は変わるかもしれません。新しいライブラリでビルドし直したら動作が変わった、 とか、そういう混乱を避けるためには最初から大文字を指定しておいた方がよいでしょうね。
JPEG TTL カメラの利用
VC0706 はシリアルインターフェイスのカメラで、TX/RX は 3V 動作です。 「TTL カメラと Ethernet シールドで作るネットワークカメラ」で行ったのと同様に、 Arduino Uno からの TX (カメラの RX) は 10kΩ で分圧しています。
LED の点灯
データを書き込んでいる間に電源を落とすと画像ファイルが正しく保存されません。このため、 いつデータを書き込んでいるか知るために、写真を撮影してメモリにデータを書き込んでいる間に、LED を点灯させるようにしました。
LED は Arduino の D4 ピンに接続しました。また、電流制限抵抗は 220Ω にしてます。
実装
以上からブレッドボード上に実装すると写真のようになりました。
ブレッドボードの電源のラインには 10µF の電解コンデンサと、0.1µF のセラミックコンデンサをつけてます。
以上でハードは構成できましたので、Arduino のプログラミングをしましょう。