ESP32-DevKitC と OV2640カメラモジュールとOLED SSD1331 モジュールを繋げて、ほぼデジカメ

esp32-cameraライブラリを読み解く ~モジュール接続、動作チェック編~

記事公開日:2019年8月10日

こんばんは。

今回は ESP32-DevKitC とイメージセンサ OV2640 モジュールと小型有機EL(OLED)ディスプレイ SSD1331 モジュールを接続して、自作デジカメっぽいことをやってみます。

前回の記事に引き続き、第2弾として、超難解な esp32-cameraライブラリを読み解いていきますが、前回よりももっと深堀りして読み解いていきたいと思います。
ですが、あまりにも情報量が多いため、今回はモジュール同士の接続方法とサンプルスケッチの動作チェックだけにしておきます。
esp32-camera ライブラリの解体は次回以降で紹介する予定です。

スポンサーリンク

何はともあれ、以下の動画をご覧ください。

どうですか?
画像表示のフレームレートもなかなか速いと思いません?
もう、ほとんどデジカメですよね。
モジュール同士をつなげただけで、アマチュアの私でもここまでできてしまうんです。

ただ単にデバイスの接続とサンプルスケッチの動作チェックですが、これにはいろんなノウハウがあります。
これができるようになるまで、esp32-camera ライブラリをかなり解体して解読していかないと上手く動作しないシロモノでした。

ESP32 にOV2640からの画素データがどのように保存されていて、それを OLED ディスプレイにどのように転送したら画面が表示されるかというところが良く分かっていないと、とてもできないと思います。(といっても私はまだ半分も理解していませんが・・・)

なにしろ、Arduino core for the ESP32 のサンプルスケッチには CameraWebServer がありますが、それがあまりにも難解なため、それを単純化してサクッと使おうとというわけにはいきません。

前回の記事のように、M5Stack製の M5Camera を使えば結線せずに簡単に済ませられますが、イメージセンサ OV2640 からどのようなプロトコルで通信しているのか全く分からず、ブラックボックスと化してしまいます。

ということで、今回は、esp32-cameraライブラリを読み解く第2弾として、それぞれのデバイスをブレッドボードで接続して、動作チェックするところまでやってみたいと思います。
SCCB や DMA通信については、次回以降で紹介する予定です。

このブログの維持運営にご支援いただけると助かります。
支援方法はこちらの記事をご覧ください。
(管理人:mgo-tec)

 

    【目次】

  1. 使う物
  2. ESP32-DevKitC と OV2640モジュール と SSD1331モジュールを接続する
  3. Arduino core for the ESP32 のインストール
  4. Arduino core for the ESP32 のボード設定
  5. SSD1331 用自作ライブラリのインストール
  6. まずはesp32-cameraライブラリを使って、OV2640のカメラ映像をOLED SSD1331ディスプレイに表示させる簡単なサンプルスケッチで動作チェック
  7. カメラ設定
  8. コンパイル書き込み実行
  9. (追記:2019/08/15)初回起動時にリセットが数回繰り返される問題について
  10. 編集後記

使う物

ESP32-DevKitC

Amazon.co.jp

今回は、GPIOピンが多数ある、Espressif Systems 純正の ESP32-DevKitC を使って実験しました。

本当はスイッチサイエンスさんの ESPr Developer 32 を使いたかったのですが、GPIO #32, #33 が使えなかったので、あきらめました。

OV2640 CMOSカメラモジュール B0011

ov2640_esp32_01.jpg


Omni Vision社製の最大 1600 x 1200 pixel CMOS カメラ(カラーイメージセンサ)OV2640 を搭載したArducam製カメラモジュール B0011 を使いました。
秋月電子通商さんで販売しています。

http://akizukidenshi.com/catalog/g/gM-13197/

※ここで気を付けて欲しいことがあります。
秋月電子通商さんのこのページには、電源2.5V~3.0V とあります。
とすると、3.3V電源では使えないことになると思います。
確かに、Omni Vision の OV2640データシートには VDDA が 2.5~3.0V とあるので、大丈夫か?・・・と思ってしまいます。
VDDA の絶対定格が 4.5Vとなっているので、大丈夫だと思うんですが、Max 3,0V が気になります。

でも、実はArducam社の以下のページをみると、

https://www.arducam.com/docs/camera-breakout-board/2mp-ov2640/hardware-guide/

VCC : 3.3V に接続と掲載されていました。

そりゃそうですよね。
Arducam が作ったモジュールですから、Arduino の3.3Vに直結できないのはおかしいですね。
そんな訳無いだろうなと思いました。

詳しい回路図がネット上に全く見当たらず、正確なことは言えませんが、恐らく DC-DCコンバーターチップらしきもの??が基板に見えるので、それがマウントされていると思われます。
今のところ、3.3V電源に接続して使用し続けていますが、特に問題無く使用できています。

また、これにはフレームバッファ用のメモリはありません。
画面を大きくディスプレイに表示させたい場合には、フレームバッファメモリ付きのものか PSRAM などが別途必要だと思います。
M5Stack社の M5Camera では PSRAM付きの ESP32 WROVER が使われている理由が解る気がしますね。
今回は QQVGA ( 160 x 120 pixel )程度の画像をテストする程度ですから、B0011で充分です。

これを使い倒したら、次回はフレームバッファ付きのOV2640モジュールを使ってみたいと思っています。

小型有機EL ( OLED )ディスプレイ SSD1331 モジュール ( SPI 用)

ov2640_esp32_02.jpg


96 x 64 RGB pixel のSOLOMON SYSTECH社製OLED(有機EL)ディスプレイドライバー SSD1331 を搭載したモジュールです。
これは SPI インターフェース用のものです。
Amazon で以下のところで購入しました。

販売店が昔と異なっているかも知れませんので、よく確認してみてください。

Amazon.co.jp

これは個人的にとっても使い易い小型フルカラーOLEDモジュールだと思います。
今回の様な「とりあえず」的なイメージセンサの動作チェックには最適だと思います。
このモジュールについて、過去にレビューした記事がありますので、以下を合わせてご参照ください。

フルカラー OLED SSD1331 を ESP32 ( ESP-WROOM-32 )で動かしてみた

有機EL ( OLED ) SSD1331 ライブラリを作成しました ( ESP32 用 )

ブレッドボード

ブレッドボードのおススメは何と言ってもサンハヤト製のニューブレッドボード SAD-101 だと思います。
通常より列が多めなので、とっても重宝しています。

Amazon.co.jp

ブレッドボード・ジャンパーワイヤ(メス-オス)

OV2640 カメラモジュールと接続できれば何でも良いと思うのですが、私は今回は以下の多芯フラットワイヤーを使って、QIコネクタ(2550/デュポンコネクタ)を使って、長さ10cm程度のジャンパーワイヤーを自作しました。

ov2640_esp32_03.jpg


フラットワイヤーは以前Amazonで購入した販売店が無くなっていて紹介できないのですが、以下のものとたぶん同じものだと思います。

Amazon.co.jp

それと、QIコネクタは以下のようなものです。

Amazon.co.jp

また、Amazon で既にコネクタが圧着して付けられている既製品も売っていましたね。
私はこれを使ったことが無いのですが、手作り圧着が苦手な方には重宝するかも。

Amazon.co.jp

これは長さ 20cm なので、私が自作したものより 10cm 長いです。
もし、上手く動作しなかったら、長さを半分にして、ご自分で端子を圧着した方が良いと思います。

以前、こちらの記事で QIコネクタ圧着について紹介したことがありましたが、圧着工具についてネット情報では、エンジニア製 PA-09 がおススメという情報が多いです。
私の場合は HOZAN の P-706 と両方持っており、P-706 は精度が劣りますが、個人的には P-706 の方が圧着し易く、使いやすいです。

Amazon.co.jp

Amazon.co.jp

良質で太く短いUSBケーブル

ESP32 開発ボードでは、パソコンのUSBポートと接続するケーブルが必要ですが、ESP32 には突発的に大電流(最大600mA前後)が流れます。
更に、カメラセンサーの OV2640 や OLED ディスプレイの SSD1331 を使うと、思わぬ大電流が流れて、CPUの動作電圧を下回る電圧降下が起きる可能性があります。
粗悪なUSBケーブルを使ってしまうと、突発的な電圧降下で ESP32 や OV2640 の起動が不安定になる可能性があります。
ですから、電圧降下の少ない良質な太く短いUSBケーブルが必要です。
そして、USBハブは使わないようにしてください。
私はAnkerの以下のUSBケーブルを長い間使っています。

Amazon.co.jp

パソコン等

以下、Windowsパソコンで説明します。

パソコンはできるだけ高速CPU、大容量メモリのものを使用してください。

では、次は各モジュールの接続方法を説明します。


スポンサーリンク


「esp32-cameraライブラリを読み解く ~モジュール接続、動作チェック編~」への2件のフィードバック

  1. mgo-tec 様

    早速試そうと思いましたが、手元に OV2640 CMOSカメラモジュールが無く、秋月電子通商さんに注文し、現在入荷を待っているところです。
    M5Camera が使用できないのは残念ですが、今後のご検討を期待しております。

    1. juchangさん

      ご無沙汰しております。
      いつも記事をご覧いただき、そして試していただき、ありがとうございます。

      この記事はM5Cameraを自在に使えるようにする目的でもあります。
      その前に、それぞれの配線と通信プロトコルを理解するためにも、OV2640モジュールは別途配線して確認する必要がありました。
      esp32-cameraライブラリが理解できるようになると、M5Cameraでディープラーニングができるかも知れません。
      今後ご期待いただければと思います。
      いつも本当にありがとうございます。
      m(_ _)m

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください