ESP-SensorCamをブラウザから制御 (人感センサー、明るさセンサーと組み合わせたIoTカメラ)

概要

スマホやPCのブラウザからボードを制御

ESP-WROOM-02をWebサーバーとして動作させ、スマートフォンやPCのブラウザから 写真撮影、照度センサーの情報を取得、モーションセンサーが反応したら撮影、動作ログの取得などを行うESP-SensorCam用のアプリケーション例です。

リッチなWebインターフェース

Bootstrapを使用することで、少ないコードでリッチなWeb画面を実現しています。 インターネット上のBootstrapコードを参照しているので、インターネットに接続されているWiFiが必要です。

別途VPNなどを使えば外出先からもアクセス可能

家庭内LANに繋がっていればアクセスできるので、VPNなどで外出先から家庭内LANに接続すれば、 外から情報を確認したり、カメラで室内の様子を確認できます。

Arduino IDEソースコード

プログラムはArduino IDE形式です。以下よりダウンロードして、お使いのArduino IDEで プログラムを書き込んでください。

Version日付ESP8266core変更履歴
2019_9_212019/9/212.5.2 / 2.5.0動作中にカメラを挿し直した場合の動作を改善しました。

サードパーティライブラリ

以下のサードパーティArduinoライブラリを使用していますので、あらかじめインストールしてください。

SdFatに関してはArduinoIDEよりインストールできます。 ArduinoIDEの”ツール” > “ライブラリを管理”で開いたダイアログから、目的のライブラリを検索し、 ”インストール”を選択してインストールして下さい。

ArduCAMに関しては、GitHub配布ページ右にある”Clone or Download” > “Download ZIP”をクリックしてダウンロードしたファイルを解凍して下さい。 その中からlibrary.propertiesを含むディレクトリをArduino IDEディレクトリ内のlibrariesディレクトリにコピーして下さい。 解凍したディレクトリ自体をコピーする場合もあります。その際はディレクトリ名から”-master”を削除した方が名前が分かりやすくなります。

ライブラリVersion内容
ArduCAM1.0.0ArduCAM Miniカメラモジュールの制御に使用します。 あらかじめ使い方をご参考に設定を済ませてください。
SdFat1.1.0SDカードの読み書きに使用します。標準のSDライブラリと違って長いファイル名が扱えるため、 こちらを使用しています。

プログラムの準備

SensorCam-Server-Sample.inoファイルの16行目にお使いのWiFi SSIDとパスワードを入れてください。 Bootstrapコードをインターネット上から取得しているのでインターネットに接続されたWiFiをご使用ください。

const String wifiSSID = "yourssid";      // お使いのWiFiのSSIDを入力してください
const String wifiPass = "yourpassword";  // お使いのWiFiのパスワードを入力してください

デフォルトではSDカードにログ情報を書き込むようになっています。SDカードをFAT32でフォーマットし、 常にスロットに入れた状態でご利用ください。アクセス時にSDカードが無いとフリーズすることがあります。 SDまたはSDHC規格のものをご使用ください。SDXCには対応しません。

SDカードを使用せず、内蔵フラッシュのSPIFFS領域に書き込むように変更することも出来ます。 その場合はStorage.hの10行目のコメントを外してdefineを有効にしてください。 SPIFFSを使う場合は容量に余裕を持ってお使いください。残り容量が減ってくるとファイルの書き込みに失敗する 現象が起きることがあります。

//#define STORAGE_SPIFFS    // SDカードの代わりに内蔵フラッシュのSPIFFSを使用する場合にコメントを外す

使い方

電源を入れてシリアルモニタを開いてプログラムを書き込んでください。 起動して正常にWiFiに接続すると以下のようにIPアドレスが表示されます。 同じWiFi上のPCやスマホのブラウザを開いて、http://IPアドレス/camera.php を開いてください。

-----------------------
Program Start

WiFi Connected IP : 192.168.2.23
2017/01/28 22:39 TimelyTaskManager Started
2017/01/28 22:39 ArduCamManager Initialized
2017/01/28 22:39 Web Server Started

以下のようにカメラのページが表示されます。 これまで撮影した画像の一覧が表示されます。見たい画像をリストから選んで選択ボタンを押すとその画像 を見ることができます。画像の削除のほか、カメラの撮影を行うことができます。

カメラページ

以下はカメラ設定ページです。JPEG画像サイズと画質を設定できます。 大きなサイズ、高画質にするほどファイルサイズが大きくなり表示などが遅くなります。

カメラ設定ページ

以下はTSL2561照度センサーページです。センサーが接続されていれば、明るさがルクスで表示されます。 ログ開始ボタンを押すと1分おきに明るさを ファイルに記録していきます。 停止を押すと記録を中止します。 クリアを押すと記録していたファイルを消去します。 ダウンロードを押すと記録したファイルをcsv形式でダウンロードできます。 表計算ソフトなどでグラフ化することもできます。

TSL2561照度センサーページ

以下はモーション(人感)センサーページです。 開始ボタンを押すと、センサーが感知した際に自動で撮影させることができます。人やペットが通ったら撮影して記録する、といった 使い方が可能です。本機能は室内または日陰での使用を推奨致します。太陽光など強い光が入ると誤検知することがあります。

モーション(人感)センサーページ

以下システム情報のページです。ストレージ消去を押すと選択中のストレージ(SDカードか 内蔵フラッシュSPIFFS領域)を全て消去します。この動作にはしばらく時間がかかりますので 応答が戻るまでしばらくお待ちください。 また、デフォルトではシリアルモニタに表示する内容を動作ログとして保存しています。 動作ログ消去ボタンで消去、動作ログDLボタンでログファイルをダウンロード出来ます。 ボードの管理などにご利用いただけます。 動作ログを無効にするにはStorage.hファイルの23行目opLogStorageをfalseに設定してください。

システム情報ページ