Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

M5Camera Bを試してみる その3:mDNSを設定する

M5Cameraが便利なのは分かりましたが、毎回毎回IPアドレスをコンソールで表示、確認するのも面倒です。
連携するサービスも毎回毎回IPアドレス張替えでは不便ですしね。
こういうときは、mDNSの力を借りましょう。

実際のところ

まずはライブラリのインクルード

#include <ESPmDNS.h>

追記部分はsetupに

void setup() {
  //...

  Serial.print("Camera Ready! Use 'http://");
  Serial.print(WiFi.localIP());
  Serial.println("' to connect");

 //mDNSの設定
  if (!MDNS.begin("esp32")) {
     Serial.println("Error setting up MDNS responder!");
     while(1) {
         delay(1000);
     }
  }
  Serial.println("mDNS responder started");
}

これでhttp://esp32.localをいれてやれば表示されます
ipアドレスを毎度毎度調べなくていいですね

M5Camera Bを試してみる その2:GETで画像を入手する

shuzo-kino.hateblo.jp

実際のところ

接続先のIPアドレスhttp://192.168.X.Yのとき
国際標準のタイムスタンプをファイル名に採用して

$ curl  http://192.168.X.Y/capture --output "$(date -Iseconds).jpg"

何が起きている

app_httpd.cppの1104行目に

    httpd_uri_t capture_uri = {
        .uri = "/capture",
        .method = HTTP_GET,
        .handler = capture_handler,
        .user_ctx = NULL};

とあり、ここでレンダリングしているご様子

参考もと

jetloger.com

imagemagickのsmushオプションでそのまんま画像を繋げる

imagemagickである程度連続した画像を横に繋げる簡単な方法としてsmushオプションがあります。

実際のところ

プラスだと横、マイナスだと縦
引数をつけて多少オーバーラップさせることも可能

$ convert rose: rose:  +smush -10 sixel:

f:id:shuzo_kino:20220105230352p:plain

gimpを使う方法もあるらしい

とはいえ、この方法だと歪みやズレはどうにもなりません。
この場合、画像処理ソフトの有名ドコロgimpプラグインが目的を達成するいい方法になるやもしれません。
Pandora: a GIMP Plugin for Making Panoramas
Hugin - Panorama photo stitcher


参考もと

shallowsky.com

M5Camera Bを試してみる

M5stack兄弟のひとつ、M5CameraのBタイプを使ってみました。

実際のところ

デフォでM5Camera自身がAPになるサンプルが書き込まれていますが……後々自分でいじる事を考え、配信するタイプをコンパイルして書き込んでみることに。

ボードの用意

M5とかついてるのでM5stack系かと思いましたが、実際にはESP32のサブボード情報が必要です。

ボードマネージャーにESP32系を先に認識させておき
"ESP32 Arduino" -> "ESP32 Wrover Module"を選択。

サンプルから
ESP32 -> Camera -> CameraWebServer

14行目辺りを更新

// Select camera model
//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM  <= コメントアウト
//#define CAMERA_MODEL_ESP_EYE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM
#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM <= こちらを活かす

24行目の接続先を使っているSSID

const char* ssid = "YOURSSID";
const char* password = "YOURPASS";


若干まつと、シリアルの方に自信のIPアドレスがでて使用可能に。
ここ、mDNSとかに出来たら便利なんですがネ

WiFi connected
Camera Ready! Use 'http://172.XX.XX.XX' to connect

WEBのUI

iPhoneで先程でたURLを起動すると、
ゲインだのを調整できる本格的UIが
f:id:shuzo_kino:20220104232510j:plain
start streamを押すと、iPhoneテザリング程度でも割とヌルヌル動いてくれます。
f:id:shuzo_kino:20220104232508j:plain

raspiにもsixel環境をつくる

raspiにもsixel環境を作って少しでも帯域を軽く

実際のところ

導入

特に苦労することもなく……aptでいけます

$ sudo apt install libsixel-bin

みる

mintty等、sixelに対応したクライアントで

$ convert image.jpg sixel: