M5Camera のHTTP stream を 動画としてキャプチャ

このサイトの情報より。

M5Camera のIPが 192.168.1.52 として、out フォルダ以下に jpg ファイルを連番で作成する場合は

ffmpeg -f mjpeg -i http://192.168.1.52:81/stream 'out/img%05d.jpg'

動画ファイルにするならば、mpg にするならば下記。

ffmpeg -f mjpeg -i http://192.168.1.52:81/stream ~/out.mpg

拡張子を変えればそのフォーマットで保存してくれる。out.avi なら aviフォーマット。

ただしM5Camera の画像サイズを大きくすると動画の再生時間がおかしくなる。 大きいほど stream が遅くなるため。だいたいVGA あたりからおかしくなる、かな。

暫定対策として、だいたいSXGA で 5-6fps程度のようなので、下記のように書いてテストし、5の値を上げたり下げたりである程度は対応可能。

ffmpeg -f mjpeg -r 5 -i http://192.168.1.52:81/stream  -r 25 ~/out.mpg

しかし入力側のスピードが安定しないので、安定した解決はできない。

Amazonブログの「ESP32 でAWS IoT+Amazon Rekognition で動物と人を検知」を訂正した備忘録

AWS のオフィシャルブログに「Creating Object Recognition with Espressif ESP32」(Espressif ESP32 を使用したオブジェクト認識の作成)が10月に掲載された。

大変勉強になったが、そのままでは動かず、色々試してやっと動作。以下備忘録。

  • 1.IoTのポリシー(Esp32Policy)に下記追加が必要。esp32/sub/+ へのサブスクライブで拒否されていた。
    {
      "Effect": "Allow",
      "Action": "iot:Subscribe",
      "Resource": "arn:aws:iot:REGION:ACCOUNT_ID:topicfilter/esp32/sub/+"
    },
  • 2.Lambda のesp32-request-url  を修正。boto3利用時にS3v4署名 明記が必要。
# s3 = boto3.client('s3')
s3 = boto3.client('s3',config=Config(signature_version='s3v4'))
  • ESP32 のオプション設定で rtc_gpio_desc 有効化
  •  platformio run -t menuconfig にて、
    • Component config → Driver configurations → RTCIO configuration
    •  [*]Support array ‘rtc_gpio_desc' for ESP32
Component config → Driver configurations → RTCIO configuration

これで下記エラーが出なくなる。ここを参考にした。

“Amazonブログの「ESP32 でAWS IoT+Amazon Rekognition で動物と人を検知」を訂正した備忘録” の続きを読む

M5StickV がPCから認識しない → 解決

M5StickV が一昨日到着したが、PCから認識できなかった。他の動作は正常。

現象:PCに接続しても、Windows 10 から USBデバイスとして認識に失敗する。「不明なUSBデバイス(デバイス記述子要求の失敗)」や「不明なデバイス」など。

USBデバイス認識失敗の例

かたっぱしからテストした結果、どうも USB供給の電圧が5V未満になると認識に失敗するようだ。

ダメになる例。一時的に5Vを下回る。
電圧がVが大きめ(+0.08V程度)に出るので実際は4.86V位。
通常は5V程度あっても認識中に5V以下になる。PC本体の電源が弱いのか。

 

ACアダプタ付きUSBハブで解決。 USBハブはエレコム U3H-A408SBK を利用しました。

さすがACアダプタ付きHUB、電圧値安定。
+0.07V程度表示ずれ。テスターも怪しいですが。

蛇足ながら、試したことは下記の組み合わせ。どれも結果良くならず。

  • USBケーブル交換、USBポート変更
  • PCリブート、PCシャットダウン
  • M5 StickV のAボタン押し続けて起動(boot.pyスクリプト起動しない)
  • 内蔵バッテリーを疑い充電を空にしたり、逆に満まで充電したり
  • Silicon Labs ドライバを手動インストールしたり(通常自動インストール)

さて、、まずは起動時の音を小さく設定。/flash/boot.py を確認。

player = audio.Audio(path = "/flash/ding.wav")
player.volume(100)

のvolume値を100から5に変更。これで夜中でも家族に怒られませんね。

簡易エディタ pye の使い方はこちらなど

maix bit とWROOM-02 でネットワーク接続など

WROOM-02(ESP8266)を接続してネットワーク接続できるようになった。

WROOM-02なので技適も問題なし。

配線は WROOM-02のTX to pin-6,RX to pin-7 ,ATモードでESP8266を動作させる。

あとは電源、Io0、IO2、EN、電源(3.3V/GND)などは通常のWROOM-02と同様。

ntp含めて、maixpy のサンプルをgithubに置いてます。

https://github.com/shiosalt/maixpy_sample

maixpy 覚書

maix bit camera

1)maixpy IDEと対応ファームウェア

maixpy IDE でファイル送付や画像表示はファームウェア 3.1以上が必要。

Add file transfer support for MaixPy IDE

yolov2 20classサンプル公開されているファームは3.0用なので注意。

os.uname() コマンド出力の version とかでファームを確認。

2)プロンプト(REPL)上で xx.py ファイルを実行する方法

with open("xx.py") as file:
    exec(file.read())
# Back Space + Enter

あるいは下記コマンドなら1行で同じことをする。

exec(open("xx.py").read())

3)カメラの撮影、LCDへの表示、SDへの保存サンプル

import sensor
import image
import lcd

#LCD初期設定
lcd.init()
lcd.direction(lcd.YX_LRUD) #デフォルトだとLCD上下逆のため設定。YX:横長 LR 左右順 UD上下順

#カメラ初期設定
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_hmirror(0) # デフォルトだとカメラがミラーに設定されているため
sensor.run(1)

i=0 #ファイル名用
while (True):
    img = sensor.snapshot()
    lcd.display(img)
    filename = "/sd/{0:0=8}.jpg".format(i) # 00000000.jpg から連番
    img.save(filename)
    i=i+1
    lcd.draw_string(10,20,filename)

4)簡易エディタ pye の使い方

pye("ファイル名")

矢印キー 移動
マウス 移動
deleteキー 実質バックスペース
BackSpaceキー 押さないこと! 文字置換 押してしまったら Enter 2回

Ctrl + l またはスペース 行選択(画面上黄色選択)
Ctrl + c 行コピー
Ctrl + v 行ペースト
Ctrl + s 保存。ファイル名が表示されるので Enter 。flash だと10-15秒保存に時間がかかる。ファイル名表示が消えれば保存完了。SDなら1秒未満で保存完了。
Ctrl + q 終了。
 保存していないときは 終了していいか聞いてくる。y/N 、デフォルト N
 保存せず終了の場合、 Delete(デフォルトのNを消す) y(Yes) Enter (確定) 

5)SDカードにより不安定

SDカードによっては、USBでシリアル接続しているとマウントされるが、USBで給電のみだとマウントされないものがある。SDにより不安定とのユーザ報告もちらほらみられる。

逆にSDカードのフォーマットは FATのみ対応を記載されているが、3.1ではFAT32でも問題なかった。古いファームでは不明。

maix bit camera
テスト中。 thingiverseから適当に3Dプリンタデータをダウンロードしたら寸法違った。

6) Maix BiT は2種類あり。マイクあり・なし

キットとしてカメラ+液晶セットだが、本体ボード上に秋月電機はマイクなし・SwitchScienceはマイクありの模様。入手は秋月電子版のためマイク未テスト。

M5StackVはまだ配送中。シンガポール。

MAix BiT 初期メモ

MAix BiT 入手。

Arduino勉強会を参照。maixpy_v0.3.2_full.bin K-FLASHを利用して書き込み。

”Unable to enter ISP mode” となるので”boot” ボタンを押しながらFlash書き込みを実行したら成功した。

error: Unable to enter ISP mode.
flash success

 

シリアルポート(今回はCOM5だった)に接続したらカメラと液晶も動作。

シリアルでmaxpy に接続するにはCtl-C。一旦切断して再接続でもOK。

心配した消費電力もカメラを液晶表示で今のところ5V 0.14A 程度。起動時は0.05A程度。yolov2 でキャプチャ連続処理させても0.2A弱。すごい。

キャプチャ取得中
yolov2 動作中

ESP32 でカメラ利用の覚書

Arduino IDのESP32用ボード情報が1.0.1(2019/1)で新サンプルが追加されていた。

This version includes updated tools, many fixes and new features (esp32-camera+esp-face for face detection and recognition)

https://github.com/espressif/arduino-esp32/releases/tag/1.0.1

2019/4/16に1.0.2に更新されている。1.0.3rcも出ているので7-8月には1.0.3正式版になりそう。

追記。1.0.2には新機能のesp_face (顔検知と顔識別)が動かないバグがあるため個人環境は1.0.1に戻して利用中。

esp32-camera について調査中。カメラはハード仕様としてexternal PSRAM が必要らしい。フレームバッファに利用している。

//
// WARNING!!! Make sure that you have either selected ESP32 Wrover Module,
// or another board which has PSRAM enabled

CameraWebServer.ino

Except when using CIF or lower resolution with JPEG, the driver requires PSRAM to be installed and activated.

esp32-camera

とりあえず現状調査結果書き出し。

  • EPS32-SOLO1、EPS32DではPSRAMの追加が必要。従来のEPS32では使えるか不明だが多分PSRAM外付けで可能。
  • いずれもESP-IDFの make menu-config からSPI-connected RAMを有効にする模様。外付けPSRAM情報は本家espressifサイト中、API Guides のSupport for external RAMにあり。
  • ESP32-WROVER-B ならばPSRAM付きで技適にも対応。ただしピンが従来のEPS32と違い18 x 31.4 mmと縦長。
  • カメラつきの開発ボードも色々出ているが、いまいち。
    1. M5Stack Fire。予算外なところ以外はすばらしい。ほしいが予算越え。
    2. TTGO T-Camera ESP32 は人感センサーまで付いて大変いいのだが、IOピンの空きがない。温湿度センサーのBME280も接続可能で大変いいのだが。
    3. ESP-EYEはespressif純正。カメラとマイク付き。だが技適がないし流通が少ない。
    4. EPS32-CAMがいいんだが残念ながら技適がない。
      • ESP32-S(AI-THINKER)を利用していてこれが技適取っていない。
      • PSRAM外付け・SDカードスロットまでついてIPピンも空きがあり大変いいのだが、技適が。。
      • PSRAMは外付けの IPS6404LSQ が利用されているらしい。参考になる。
  • ESP32 Camera Driver では OV2640 と OV3660 を対象にしている。

This repository hosts ESP32 compatible driver for OV2640 and OV3660 image sensors. Additionally it provides a few tools, which allow converting the captured frame data to the more common BMP and JPEG formats.

esp32-camera

蛇足として、Arducam社からフレームバッファ付カメラが出ていて、Arduino UNOなどから利用できる。従来のEPS32でもSPI接続で利用可能。

Arducam Mini module Camera Shield w/ 2 MP OV2640 サンプル(SD記録)