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

ESP32-CAM & Pythonでお手軜監芖カメラシステムを構築!!

    こんにちは、Rcatです。今回はESP32CAMずいうESP32マむコンずカメラを組み合わせたモゞュヌルを䜿った監芖カメラシステムを䜜成しおみたした。
    通垞Arduinoでプログラミングするこずの倚いESP32ですが、今回は志向を倉えおPythonを組み合わせたシステムの玹介をしたす。
    なお、本蚘事はテキストで収集する方向けで䞋蚘動画の抜粋蚘事ずなりたす。詳现や゜ヌスコヌドの関しおは動画の方をご確認ください。

    Ver2公開したした。

    Ver2動画はこちら


    旧Verはこちら

    ケヌス䜜成したした!こちらもよろしくお願いしたす

    どんなシステムなのか??

     最初に本システムの抂芁を玹介したす。

    • ESP32自䜓はプログラミングしない
      たずESP32にはサンプルスケッチを曞き蟌んでおきたす。
      そのため、ESP32を盎接Arduinoでプログラミングするこずはありたせん。たぁ流石に䜿いづらいので、Wi-Fi蚭定はスマホからやれる皋床には改造したすが。

    • Pythonで別途システムを構築する
      本䜜のキモです。システム自䜓はPythonを䜿いPCで皌働させたす。

    • 耇数のカメラを同時に監芖可胜
      システムを別個に構築しおいるのでハヌドりェアリ゜ヌスの蚱す限りいくらでも同時監芖が可胜なシステムです。

    • 録画や撮圱が可胜
       画像凊理はPythonシステム偎で行うので録画や撮圱を行うこずができたす。OpenCVを甚いたすので動䜓怜知も可胜です。

    • Windows/Linux/RaspberryPiで動䜜可胜
      Python蚀語を䜿う郜合䞊OSに囚われづらいシステムずなっおいたす。
      筆者はRaspberryPi4䞊で動䜜させおいたす。

    画像
    動画抜粋

    操䜜画面

    画像
    動画抜粋

     たずは操䜜画面の玹介です。
    本システムの利甚の流れは次の通りです。

    1. ESP32CAMにArduinoのサンプルスケッチを曞き蟌む
      ArduinoからESP32CAM甚のサンプルスケッチを曞き蟌んで、自宅のWi-Fiに接続したす。
      ここでIPアドレスを調べおおいおください。

    2. 本システムを皌働しお管理ペヌゞにアクセスする
      初回はたっさらなペヌゞです。

    3. カメラを远加する
       ESP32CAMのIPアドレスを指定しおシステムにカメラを远加したす。

    4. 蚭定を倉曎する
      カメラメニュヌから远加したカメラをIDで指定しお蚭定を倉曎できたす。
      䞻に蚭眮向きに応じお回転や反転を行いたす。

    5. 監芖/撮圱をする
      プレビュヌボタンを抌すこずでESP32CAMから映像を転送したす。
      録画ボタンを抌すこずで映像を動画ずしお保存を開始し、撮圱を抌すこずで画像ずしお保存するこずができたす。

    ちなみに、以䞋でWi-Fi蚭定をあずから倉えられたり、スケッチを無線で曞き換えられるように改造したサンプルを玹介しおいたす。

    ESP32CAMの準備

    画像
    動画抜粋

    ボヌドは"ESP32Wrover Module" 曞き蟌むサンプルスケッチは"CameraWebServer"

    画像
    動画抜粋

    私の改造版を぀かうか、サンプルスケッチの画像の箇所を曞き換えたす。
    解像床のみ任意です。解像床は電源を入れお最初に遞択される解像床を指定しおおくずいう意味があり、解像床が倧きいずフレヌムレヌトが1FPSでなくなるので基本的に䞋げるこずをお勧めしたす。

    • モゞュヌルタむプの倉曎

    • Wi-Fiの蚭定

    • 解像床蚭定(なくおも良い)

    画像
    動画抜粋

    ESP32CAMにスケッチを曞き蟌んだら䞀旊動䜜確認しおみたしょう。
    ブラりザからESP32CAMにアクセスしお画像のようなペヌゞにアクセス出来れば準備は完了です。

    Pythonシステムの準備

    画像
    動画抜粋

    Pythonツヌルを動かすにはいく぀かのラむブラリが必芁なのでむンストヌルしたす

    • OpenCV
      動画化や画像凊理で䜿甚
      ※OSにより導入難易床が高いので泚意

    • Numpy
      OpenCVで利甚するので必芁

    • Flask
      WEBシステム構築に必芁

    • cryptography
      WEBシステム内で䜿甚

    画像
    動画抜粋

    ラむブラリのむンストヌルが出来たらシステムを起動したす。
    配垃デヌタの内容を確認し、Pythonプログラムを起動したす。
    ここで起動しない堎合、きちんずラむブラリがむンストヌル出来おいるか確認しおください。゚ラヌメッセヌゞを確認する堎合はダブルクリックで起動ではなく、コマンドプロンプトから起動させるずメッセヌゞを確認できたす。

    画像
    動画抜粋

     ツヌルが起動出来たら管理ペヌゞにアクセスし、最初の手順で説明したようにカメラを远加したす。

    仕組み

    画像
    動画抜粋

    なぜPython x ESP32-CAMずいう暎挙が可胜なのか。それはサンプルスケッチで玹介はされおいたせんが、ストリヌムではなく画像を取埗するURLが存圚するこずにありたす。ここにアクセスするこずで画像を䞀枚取埗できたす。
    埌は簡単です。取埗した画像をOpenCVに回しお回転や日付印字を行い、録画バッファに回したりそのたた保存すれば録画ができたすし、それをクラむアントに送信すれば疑䌌ストリヌミングも可胜です。

    たずめ

     ESP32-CAMは栌安で監芖システムが䜜れそうな玠晎らしいモゞュヌルでしたが、C蚀語で画像凊理等は非垞に難易床が高くサンプル以䞊に進んでいる䟋は殆ど芋かけたせん。
     そこで芋方を倉えお本䜓でプログラミングするのではなく倖郚に別のシステムを構築するずいう方法で本䜜が生たれたした。Pythonであれば比范的簡単に画像凊理なども組めるのでそれなりに凝った機胜を実装できたした。

    システムの配垃に぀いお

     配垃情報は最䞊郚で玹介されおいる動画説明から確認できたす。


     
     

    Rcat999

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

    あなたぞのおすすめ