AtomS3R CAMを実際に運用してみる

AtomS3R CAMがどこまで使えるのかを試してみました。上の写真のように、車の後方モニターとして使ってみることにします。
1.システムの構成
前回の記事のとおり、AtomS3R CAM自体がWi-Fiポイントになることができるのですが、実際に使うとネット権限などでいろいろ警告が出て使いづらいです(特にスマートフォン)。そこで、テザリング環境下で動作する方法にします。
ユニバーサル基盤にAtomS3R CAMとSSD1306ドライバで動作するOLEDを配置して配線します。OLEDにはAtomS3R CAMのIPアドレスを表示します。このIPアドレスをスマートフォン上のブラウザで指定し、AtomS3R CAMの映像を表示するようにします。
AtomS3R CAMとOLEDの接続はI2C接続で行うので、4線で済みます。以前に何度も使ったやり方なのでおなじみですが、以下の接続をします。左がOLEDで右がAtomS3R CAMです。
VCC ⇒ 5V出力
GND ⇒ GND
SCL ⇒ GPIO38
SDA ⇒ GPIO39
2.プログラム
公式で公開されているプログラムに、OLEDの表示ロジックを追加するだけです。追加部だけを下記に示します。ライブラリも追加させてください。
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// setupの中で
Wire.end();
Wire.begin(39,38); // SDA / SCL
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println(WiFi.localIP());
display.display();
プログラムができたら、AtomS3R CAMにアップロードします。アップロードをする前に、AtomS3R CAMのリセットボタンを長押しして緑のLEDが光ると準備が完了します。これは初期のATOMにはなかった操作なので注意してください。
本当は、USBケーブルを右に接続する運用を考えており、画像の90度回転?を行う予定でしたが、処理速度の点からやめています。しかしながら、上下反転であれば以下の命令でそれほど影響なくできるみたいです。(実際、冒頭の写真では上下反転させてます)⇒訂正です。以下の命令を入れると入れないでは、処理速度に明確な差が出ます。入れるべきではありません。
sensor_t *s = esp_camera_sensor_get();
s->set_vflip(s, 0); // 0:通常 1 :上下反転
3.動作させてみて

実際に動作させてみたのですが、まずは画質が悪いです。30万画素だから仕方ないとは言え、もう少し発色が良くならないでしょうか。
そして、画像の表示速度であるfps(1秒間に表示されるコマ数)が悪すぎます。条件によっては1秒を超える表示遅延が発生するため、実用性に難がありました。監視カメラなら何とか使えるかもといった感じで、後方カメラとしてはちょっと使えないですね。AtomS3R M12カメラを使ったとしても、画質は向上しますが、fps問題は解決が難しそうです。
4.ラジコン用途に使う?

と言うことで、AtomS3R CAMの後方モニター利用は難しそうです。USB直結という手もありますが、配線が煩わしいです。(⇒しばらく使ってますが、遅延があるにせよ、ないよりはマシかなという感想を持ちつつあります。)
そのため、これから使うとすればラジコンの類いかなと思っています。ラジコンとまでいかなくてもグライダーに載せて空撮に使えないかと思案中です。記録をSDカードにしようとか、いろいろ考えてます。それも駄目だとしても、ATOMS3 LITEとして考えれば使えるでしょう。