腰を痛めて以来、電子工作をする気になれなかったが、ようやく重い腰を上げて、昨年購入したカメラモジュールで監視カメラを作ることにした。制作の目的は鳥獣監視と、家の前の市道の交通量調査。
製品:「Lilygo®Ttgo t-カメラ ESP32-WROVER-B OV2640 カメラモジュール」
初期動作の確認
USB端子から電源を供給すると、予めインストールされているソフトウェアがAPモードで起動し、有機ELディスプレイ(OLED)にURL 「http://2.2.2.1/」が表示される。またPCまたはスマホからWiFiネットワークを見ると、ESPモジュールのネットワーク(TTGO-CAMERA-XX:XX)が表示されるので、そのネットワークに切り替えブラウザーでhttp://2.2.2.1/と入力すると、画像、動画を取得するアプリが表示される。
1.開発環境の準備
久しぶりにArduinoのIDEをいじるので、操作方法を忘れている。そこで、下記の記事を参考に、DELLのPCに新たにArduino IDEの環境を構築した。
①Arduino IDE revision 1.8.16をPCにインストール
②ESP8266のLibraryパッケージをインストール
Arduino IDEの「ファイル→環境設定」で「追加のボードマネージャのURL」に以下を設定
・http://arduino.esp8266.com/stable/package_esp8266com_index.json
・https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json
・https://dl.espressif.com/dl/package_esp32_index.json
引き続き、「ツール→ボード→ボードマネージャ」で
「esp32 by Espressif Systems」
「esp8266 by ESP8266 Community」
を探してインストール。
インストールが完了したら、「ツール→ボード→ESP32 Wrover module」を選択すれば、Arduino自体の準備は完了。
ボードの初期設定は以下の通り:
Upload Speed: 11520
Flash Frequency: 80Mhz
Flash Mode: QIO
Partition Scheme: default 4MB with spiffs
Core debug level: なし
2.ソースコードの導入
ソースコードは「https://github.com/Xinyuan-LilyGO/LilyGo-Camera-Series」からZIPファイルをダウンロード。実はこのソースは「https://github.com/lewisxhe/esp32-camera-series」からのforkなので、こちらのZIPをダウンロードしてもよい。ダウンロードした zip を展開し、~/Arduinoの下にLilyGo-Camera-Series-masterを移動し、その下にesp32-camera-seriesのフォルダーを作成。
3.ライブラリの準備
Arduino OneButton Library を 「https://github.com/mathertel/OneButton」 からZIPでダウンロードしてきて、OneButton-master.zip を展開。展開したらディレクトリ名を「OneButton」に変更して、~/Arduino/libraries の下に移動。
esp8266-oled-ssd1306 Library を「https://github.com/ThingPulse/esp8266-oled-ssd1306」 からZIPでダウンロードし展開。ディレクトリ名を「esp8266-oled-ssd1306」に変更して、~/Arduino/libraries の下に移動。
4、スケッチの修正
Arduino IDEの「ファイル→開く」で ~/Arduino/esp32-camera-series/esp32-camera-series.ino を開き、以下を修正する。
①Board selectでT_Camera_V17_VERSIONを選択
* Board select
**************************************/
/* Select your board here, see the board list in the README for details*/
#define T_Camera_V17_VERSION
②WIFIルータのSSID, PASSWD設定
/***************************************
* WiFi
**************************************/
#define WIFI_SSID "xxxxxxxxxx-g" //"YourSSID"
#define WIFI_PASSWD "33**********62" //"YourPASSWORD"
これでも動作可能だが、IPアドレスを固定する方法は以下の通り。
③ESP32のIPアドレスを固定IPに変更する
・SoftAPモードからSTAモードへ変更
#define SOFTAP_MODE //The comment will be connected to the specified ssidをコメントアウトして、SoftAPモードを禁止
・SSID/PASSWORDの設定の箇所の後に以下の記述を追加
#define FIXED_IP
#ifdef FIXED_IP
IPAddress fixed_ip( 192, 168, 1, 20); // for fixed IP Address
IPAddress gateway( 192, 168, 1, 1); // Gateway Address
IPAddress subnet(255, 255, 255, 0); // Subnet Mask
IPAddress DNS( 8, 8, 8, 8); // DNS server
#endif
さらに、WiFi.begin()の直前に以下の記述を追加
#ifdef FIXED_IP
WiFi.config(fixed_ip, gateway, subnet, DNS); // Set fixed IP address
#endif
④BME280のライブラリについては TTGO T-Cameraでは途中から削除されているのでソースコード中の#include <Adafruit_BME280.h>の行はコメントアウト。
Arduino IDEのチェックマーク(検証)を押してコンパイル。
うまく行ったら、右矢印マークを押して書き込み動作テストをする。
→ 結果OK
ブラウザーで固定IP http://192.168.1.20/を入力すると、初期設定のAPモード同様、ブラウザーに動画・画像取得アプリが表示された。
スケッチ名:esp32-camera-series.ino
スケッチのありか:\Documents\Arduino\LilyGo-Camera-Series-master\esp32-camera-series
コメント