手元に転がっていたESP-WROOM-02とJPEGカメラを使用して監視カメラ(そのベースになるようもの)を作ってみた。
今回は夏に作った↓の機能に追加する形で作成。
MQTTでIoTデバイスを管理
使用した主なパーツ
・秋月電子通商通販
Wi-Fiモジュール ESP-WROOM-02 DIP化キット
http://akizukidenshi.com/catalog/g/gK-09758/
Grove-シリアルカメラキット
http://akizukidenshi.com/catalog/g/gM-09161/
FT-232RQ USBシリアル変換モジュール
http://akizukidenshi.com/catalog/g/gM-11007/
・スイッチサイエンス
レベルシフト回路搭載 microSDブレークアウト
https://www.switch-science.com/catalog/2653/
・どこかのお店
BOSCH BMP280
その他スイッチや抵抗など…
動作仕様
・定期的に温度と気圧をWEBブラウザに表示。
とりあえず、転がっていたセンサーがこれしかなかったので付けただけ。
・WEBブラウザのボタン操作でカメラ画像を取得
安い振動センサーや赤外線センサーなどがあったら、これらの検知をトリガーにしてカメラ画像を取得すると防犯用途に使用できる。
技術的なキーワード
・MQTT (Message Queue Telemetry Transport)
・HTML5,WebSocket,Ajax…
ESP-WROOM-02, Serial Camera, SD memory, MQTTの実装に使用したライブラリ
#include <ESP8266WiFi.h> #include <Adafruit_MQTT.h> #include <Adafruit_MQTT_Client.h> #include <Wire.h> #include <SPI.h> #include <Adafruit_Sensor.h> #include <Adafruit_BMP280.h> #include <SD.h> #include <Ticker.h>
ソースコードはAdafruitやスイッチサイエンスで公開されているもので動作したので、これらを少し改造して使用。
回路
あちこちネットの情報を見ながら…間違っているかもしれへんけど、とりあえず動作している。
※ 2018/09/26 追記 (今更ですが..)
下の回路はBMP280のI2Cアドレスを0x76で使用する場合のものです。
I2Cのアドレスは、SDOをプルダウンすると0x76に、OpenまたはVCCに接続すると0x77になります。
Adafruitのライブラリを使用する場合、デフォルトは0x77になっています。
0x76で使用する場合は、beginの引数に0x76を設定します。
※ 2018/10/19 追記 (今更ですが..)
下の回路ではAE-TTL-232Rの出力電圧を3.3Vと記載していますが、AE-TTL-232Rからの出力は5Vです。
記載を端折ってしまいましたが、三端子レギュレータ(NJU7223など)を使用して5Vを3.3Vに変換してください。
[低損失CMOS三端子レギュレータ 3.3V 500mA NJU7223F33]
http://akizukidenshi.com/catalog/g/gI-00432/
※ 2018/10/22 追記 (今更が続いていますが..)
Cameraの電源は正しくは5Vです。三端子レギュレータの手前の5V(AE-TTL-232Rの出力)を使ってください。
サーバー
・Linux MINTを使用してMosquittoとApacheを稼働
・MosquittoはBrokerとWebSocketを担当。
・ESP-WROOM-02で撮影したカメラ画像はMQTTで送信されサーバーで受信&保存した後、画像ファイル名をAckとしてMQTTで送信。画像を受信して保存するために処理は、ライブラリ(libmosquitto0-dev)を利用して自作。
・Apacheは保存した画像をWEB Brawserで読み込むために使用。
WEBブラウザ
・MQTTによる通信はmqttws31.jsにお任せ。
・カメラ画像の表示は、画像の保存完了のACKをMQTT(WebSocket)で受信して、httpでサーバーに取りに行っているだけ。
・サーバーに保存した画像をWEBブラウザで一覧する機能を追加すると便利かなぁ。
☆今時のWeb Browser(MS Edge, Firefox, Google Chrome…) やったら動作するんで、端末の依存度が低く導入しやすいのがイイところ!!
組み上げた状態 (カメラと基板を固定できるようにレゴを使用)
PCとスマフォの両方で制御しているところ。MQTT,WebSocketを使用してるんで、複数の端末でリアルタイムで同期できる。
カメラでの撮影~表示までの時間は3秒程度。
ピンバック: ESP-WROOM-02とJPEGカメラでタイムラプス | IT社会の崖下で...その2
ピンバック: MQTTでIoTデバイスを管理 (ESP-WROOM-02で監視カメラ) その2 | IT社会の崖下で...その2
ピンバック: Lego EV3にシリアルカメラを付ける | IT社会の崖下で...その2
ピンバック: Lego EV3を使用して太陽電池パネルを制御 | IT社会の崖下で...その2