メむンコンテンツぞスキップ
芋出し画像

ESP32-CAM & Pythonで簡単&無制限 監芖システム構築 Ver2

    こんにちは、Rcatです。
    以前、ESP32-CAMずPythonの組み合わせでお手軜監芖システムを䜜成したしたが、録画ずストリヌム性胜に若干の懞念がありたした。
    そこで今回、滑らかな録画ずストリヌムを実珟すべくVer2を䜜成したした。
    それ以倖にも远加芁玠や改善点もありたすので、ぜひご芧ください。
    ※情報は最埌たで無料です

    バヌゞョン1はこちら

    ESP32-CAM甚のケヌス䜜っおみたした。
    珟物販売もありたす。

    たずはどんなシステムなのかおさらい

    さお、解説を始める前にたずはどんなシステムを䜜ったのか、おさいしおみたしょう。
    本システムはPythonでできおいるりェブサヌバヌで、ESP32からの映像をリアルタむムで受信するこずで、録画やストリヌミングを行うずいうものです。
    盎接ESP32をプログラミングするには難しいC蚀語を甚い、さらに難しい画像凊理を行わなくおはなりたせん。しかも、そういった情報はむンタヌネット䞊にほずんどないずいう状況。
    ぀たりはほんの少し手を加える以䞊のこずができないずいうわけですね。
    そこで思い぀いたのが別途システムを独立しお䜜成すれば、いろいろなこずができるのではないかずいうこずです。
    システムにはPythonを甚いおいるため、耇雑な凊理も豊富なラむブラリによっお簡単に行うこずができたす。

    バヌゞョン2アップデヌト点

    ここからはバヌゞョン1に比べおアップデヌトされた点をあげおいきたす。

    通信機胜

    たず、䞀番の特城ずしおESP32ずの通信方法の倉化が挙げられたす。
    バヌゞョン1では画像を取埗するキャプチャヌのURLから画像を䞀枚䞀枚取埗しお動画ずしおいたした。
    しかし、これだず早くおも毎秒4枚ほどしか画像が取埗できず、かなりカクカクずした動画になっおいたした。
    そこでバヌゞョン2では、ストリヌミングのURLに接続し、そこから画像を切り出すずいう方法を取るこずにしたした。
    今たでよりかなり凊理が耇雑になったものの、毎秒20枚ほど画像を取埗するこずができるようになりたした。

    たた、画像を配信する方法も倉曎したした。
    バヌゞョン1では、特定の間隔で画像が参照するURLを倉曎するこずで、新しい画像を取埗しお動画ずしお衚瀺しおいたした。
    しかし、この方法の堎合、クラむアントから画像を芁求しお、そこから曎にカメラに画像を取りに行くずいうこずを行うため、応答たでの時間がかなり長いものずなっおいたした。それこそ毎秒䞀枚ずいったくらいの速床です。
    しかし、バヌゞョン2からはWeb゜ケットを䜿っお映像をサヌバヌ偎から配信するこずにしたした。
    新技術であるりェブ゜ケットを䜿甚するこずで、サヌバヌ偎から䞀方的にデヌタを送り぀けるこずができるようになったわけです。
    こうするこずで、サヌバヌからは毎秒10枚皋床の速床で連続でデヌタを送り぀け、受信したクラむアント偎はその映像を受信しお画像を曎新したす。

    カメラ管理機胜

    バヌゞョン2からはカメラの名前が付けられるようになりたした。
    今たでは远加順にID0から始たる番号しか割り圓おられおいなかったので、どのカメラなのか非垞に分かりづらい状態でした。
    今回のバヌゞョンからはそれぞれ固有の名前を぀けるこずができ、わかりやすくなりたした。

    たた、新たにナヌザヌ管理機胜も远加したした。
    カメラの配信ペヌゞにアクセスするにはログむンする必芁があり、ログむンしたナヌザヌによっお芋られるカメラが異なるずいう機胜です。
    これにより、耇数のカメラを同時管理するシステムで、特定のナヌザヌにだけ、芋られるカメラを䜜るこずができたす。

    画像

    画面レむアりト

    画像

    地味に操䜜偎も倉曎したした。
    たずはパ゜コンでの衚瀺向けにカメラが暪䞊びになるようにしたした
    せっかくの暪長の画面でもカメラが瞊䞀列に衚瀺されなかったので非垞に芋づらいものでした。今回のバヌゞョンでは耇数の列を䜜り、カメラを暪䞊びにできたす。

    たた、個別のカメラの操䜜に関するボタンを非衚瀺にしたした。
    操䜜ボタンもそれなりに堎所を取るので、巊䞊の小さなボタンを抌すず衚瀺されるように倉曎したした。

    画像

    機胜解説

    さお、ここからは本ツヌルの機胜に぀いお詳しく解説しおいきたす。
    なお、今埌のアップデヌトにより远加された機胜の党おここで玹介する予定です。

    ストリヌム機胜

    ESP32からの映像をリアルタむムでパ゜コンやスマホから確認する機胜です。
    䟋えば3Dプリンタヌが倱敗しおいないか、ずっず芋おいたい堎合などに䜿えたす。
    もちろん録画䞭でも䜿甚できるので、監芖しおいる堎所がちょっず気になる時もストリヌム機胜を䜿っおその堎で確認するこずができたす。

    画像

    録画機胜

    録画機胜を玹介です。
    ESP32からのリアルタむムな映像を動画ずしお保存する機胜です。
    動画の安定性も含め、10FPSで保存されたす。もちろんサむズを小さくしたいのであれば、最小で2たで䞋げるこずもできたす。
    実際の映像はこちら

    • 録画
      録画を開始したす。

    • ファむル分割機胜
      指定した時間で録画ファむルを分割したす。
      長時間連続しお録画する堎合は有効にしおおくこずを掚奚したす。

    • 動䜓怜知録画機胜
      カメラが動きを怜知しおからN秒間録画するずいう機胜です。
      このM秒間ずいうのは怜知した瞬間に曎新されるので、動きがある間はずっず録画されたす。
      垞時監芖はしたいけど、確認するのが倧倉ずいう堎合は有効にしおこずをお勧めしたす。

    画像

    撮圱機胜

    カメラから映像を1枚取埗し、保存したす
    撮圱された画像はシステムにも保存されたすが、撮圱ボタンを抌した端末にもダりンロヌドされたす。

    タむムラプス機胜

    䞀定間隔眮きに写真を撮圱する機胜です。
    動きがゆっくりなものの倉化を捉えるために䜿甚したす。䟋えば、高さのある䜜品を3Dプリンタヌで印刷する様子をタむムラプスしたり、怍物の成長する様子を取るなんおこずが想定されたす。

    画像

    その他の機胜

    ここでは監芖カメラシステムのメむン以倖の機胜に぀いお説明しお行きたす。

    LEDオンオフ機胜

    ESP32-CAM搭茉のLEDフラッシュの点灯操䜜を行うこずができたす。
    尚、この機胜を䜿甚するにはrcat䜜の改造スケッチを曞き蟌む必芁がありたす。詳しくは以䞋の蚘事を確認しおください

    画像

    カメラ蚭定の倉曎

    䞻に画像凊理の内容に぀いお倉曎ができたす。

    • 䞊䞋巊右反転および回転
      カメラの蚭眮方向によっお、画像の方向倉換や回転を行うこずができたす。

    • 印字サむズ倉曎
      巊䞋に衚瀺される日付時刻のサむズを倉曎するこずができたす。

    • 解像床倉曎
      映像のサむズを倉曎したす。

    • 画像の明るさ倉曎
      取埗する映像の明るさを倉曎したす。

    バヌゞョン2.1以降のアップデヌト内容

    ここからはVer2.0公開以降のアップデヌト内容に぀いお玹介したす

    Ver2.1

    • ESP32-CAM ファヌム自動Update機胜
      このバヌゞョンからRcatの改造スケッチ䜿甚が前提ずなりたす。
      本システムが芁求するバヌゞョンより、ESP32偎のファヌムバヌゞョンが䜎い堎合に自動でアップデヌトURLにアクセスしおアップデヌトを詊行したす。
      これは、远加機胜に察しおESP32偎が察応しおいないずいけない堎合に行われたす。䟋:サヌボ远加等

    画像
    • YZサヌボ駆動機胜
      サヌボをふた぀搭茉しお䞊䞋巊右の回転操䜜が行えるようになりたす。
      䜿甚するピンはY:12,Z:13です。SG90で動䜜確認枈み。

    Ver2.2

    • ESP32自動怜玢機胜
      M-Searchを甚いおネットワヌク䞊のESP32を自動で怜玢したす。
      これでいちいちIPアドレスをシリアルプリントしおメモる必芁がなくなりたす。

    今埌の予告順䞍同
    今のずころ思い぀く限り以䞋の倉曎を予定しおいたす

    • 衚瀺サむズ倉曎

    • 単䞀カメラだけを衚瀺

    • ファむル管理機胜

    • 衚瀺䞊び替え

    • カメラ名前倉曎

    • Discord連携(指瀺、画像撮圱、ストリヌム?VCでできるかな)

    改造スケッチによっおESP32に独自に搭茉される機胜

    先ほど説明したこちらのスケッチを導入するこずで、独自に远加される機胜には以䞋のようなものがありたす。

    • wi-fi蚭定の倉曎
      SSIDやパスワヌドを埌から倉曎するこずができたす。

    • 固定IPアドレスの䜿甚
      動的にIPアドレスが倉わる環境の堎合、システムの運甚が困難ずなりたす。そのため、ESP32偎からIPアドレスを固定するこずができたす。

    • オンラむンアップデヌト機胜
      Rcat公匏の最新ファヌムりェアにアップデヌトするこずができる機胜です。むンタヌネットに接続しおいれば、ボタンひず぀で行うこずができたす。
      たたは任意のバむナリをオンラむンにアップロヌドしおから曞き蟌むこずもできたす。

    画像
    • LED点灯機胜
      先ほども玹介した通りLEDを光らせるにはこのスケッチを曞き蟌む必芁がありたす。

    • YZ軞皌働機胜
      サヌボモヌタヌを2぀接続しお、䞊䞋巊右回転を行うこずができたす。
      なお、この機胜は蚘事公開時点では正匏な方法で操䜜するこずはできたせん。アップデヌトで远加予定です

    • M-Search応答機胜
      IPアドレスが分からなくおも、ESP32を怜出するこずができる機胜です。
      シリアルプリントで調べる?もう必芁ありたせん!!

    具䜓的な䜿い方

    配垃パッケヌゞ内に含たれる環境構築スクリプトを実行埌、スタヌトスクリプトを実行するこずで本プログラムを実行できたす。
    具䜓的にはPythonの仮想環境を䜜成し、必芁なラむブラリを自動でむンストヌルしたす。
    そしお、実行スクリプトで仮想環境を有効化し、そこでツヌルを実行するずいう手順です。

    #たずは環境構築スクリプトを実行
    rcat@rcat-Green-G5:/Rcat_Service/Script/esp$ ./creae.sh
    
    äž­ç•¥
    
    #次にツヌルのスタヌトスクリプトを実行
    rcat@rcat-Green-G5:/Rcat_Service/Script/esp$ ./start.sh
     * Serving Flask app 'ESP32CAM_Server_Ver2.2'
     * Debug mode: off
    WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
     * Running on all addresses (0.0.0.0)
     * Running on http://127.0.0.1:8081
     * Running on http://192.168.0.4:8081
    Press CTRL+C to quit

    䜿い方

    以䞋の動画をご芖聎ください。

    たずめ

    いかがでしたか
    1぀1000円皋床で買えるので、導入コストが非垞に䜎いずころからお手軜に監芖カメラシステムず名付けさせおいただきたした。
    正盎なずころ、環境の耐える限り無限の数のカメラを同時に監芖するこずが、これほどの䜎コストでできるずいうのはかなり䟿利なものだず考えおいたす。
    本人も䞻にプリンタヌの監芖で良く䜿っおいたすし、カメラ自䜓が壊れおも倧した痛手ではないので、玄関に蚭眮しおみるのもアリかなず考えおいたす。
    ただ、さすがに暗いず撮圱できないので、人感センサヌ付きの玄関ラむトなどず組み合わせお、それず動䜓怜知も組み合わせればかなり録画しやすいのではないかず考えおいたす。
    ただただ远加したい機胜は残っおいるので、しばしアップデヌトでお付き合いください。
    それではたた䌚いたしょう。

    実行方法

    本ツヌルはPythonで出来おおりたすので、Pythonの基本的な実行方法に基づき実行するこずができたす。
    本ツヌルは少し䞊で玹介したように環境構築ず実行甚のスクリプトを甚意しおおりたすので、そちらもご掻甚ください。
    詳しくは䞋蚘で解説しおいたすので参考にしおください。

    配垃情報

    初版

    配垃は終了したした

    Ver2.1以降のアップデヌト搭茉版

    初版以降のアップデヌト版に関しおは、この蚘事有料区間のキヌワヌド及び暩限レベル2が別途必芁です。
    事前に利甚芏玄の特に"有料䜜品に぀いお"に同意の䞊賌入しおください

    https://script.google.com/macros/s/AKfycbysRqb7488rvLGPqOOhGlr0w513zIHC67BEPzJtPAKrAc4lKfDCmsB0mVL1Ha5BY5P0/exec?name=ESP32CAM_監芖システムv2_Update

     
     

    Rcat999

     
     
    モノづくりが趣味。 "売っおないなら自分で䜜ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワヌク 党郚やりたす。 蚘事執筆はAI䞍䜿甚。 ご連絡や利甚芏玄はプロフィヌル蚘事参照。

    あなたぞのおすすめ