t3ta blog

作ったり登ったりします

OV2640をESP32-DevKitCに繋いで写真を撮ってみた その1

以前eBayで注文したOV2640が届いたので、早速ESP32-DevKitCに繋いで動作確認をしてみた。

GitHubで公開されているデモ(GitHub - igrr/esp32-cam-demo: Demo for working with a camera on ESP32)を使った。
このデモを使うためにはESP32公式の開発キット(GitHub - espressif/esp-idf: Espressif IoT Development Framework. Official development framework for ESP32.)を用意する必要がある。
これらの準備に関してはREADMEを読めば分かるので割愛する。

当初はメスメスのジャンパーで適当に繋ごうと思っていたが、秋月で10本330円だったのでテスト用の基板を作ることにした。(毎回配線するの面倒だしね)
ピン番号を確認しながら頑張って作った結果がこれだ。
f:id:t3ta:20180116211204j:plain
とても汚い。悲しい。
後になってデモのREADMEを読んだところ配線の仕方が書いてあった…
説明書はよく読もうね…

ということで、ひとまずハードウェアの準備は整った。
早速先ほど用意したデモを書き込もう。
ESP32-DevKitCへの書き込みは以下のコマンドでできる。

$ make flash
・
・
・
CC build/main/app_main.o
/Users/*****/esp/esp32-cam-demo/main/./app_main.c:35:25: fatal error: http_server.h: No such file or directory
compilation terminated.
make[1]: *** [app_main.o] Error 1
make: *** [component-main-build] Error 2

出来なかった。
git cloneする際にrecursiveオプションをつけていなかったため、esp32-http-serverがcloneされなかったためだった。凡ミス。
esp32-http-serverを持ってくると無事書き込むことができた。
以下コマンドでserial terminalが起動する。

$ make monitor
・
・
・
E (204) camera_demo: Camera probe failed with error 0x20001

また怒られた。
0x20001はカメラモジュールが認識されていない場合に出るエラーのようだ。
汚い基板の導通確認をしたが、特に異常はなかった。
これは結局ピンの割り当てが間違っていたのが原因だった。
デフォルトではESP32-DevKitJ向けの割り当てになっているので、割り当て直す必要がある。
設定の変更には以下のコマンドを使う。

$ make menuconfig

ESP32 Camera Demo Configuration->Pin Configurationを選択し、ピンを割り当てる。
この時に設定する数値はGPIOのピン番号だ。(参考:ESP-WROOM-32
ピンを割り当て直し、再度書き込むとカメラを認識するようになった。やったー!

しかし、まだ撮影出来なかった。 今度はWi-Fiの設定をしていなかったためだった。(説明は読もうね…)
先ほどと同じように設定画面でESP32 Camera Demo Configurationを選択し、WiFi SSIDWiFi Passwordを設定する。
ここでもう一度書き込んで、serial monitorを立ち上げると…

$ make flash
$ make monitor
・
・
・
I (914) camera_demo: Connecting to "SSID"
I (2844) event: sta ip: 192.168.0.12, mask: 255.255.255.0, gw: 192.168.0.1
I (2844) camera_demo: Connected
I (2844) camera_demo: Open http://192.168.0.12/jpg for single image/jpg image
I (2844) camera_demo: Open http://192.168.0.12/jpg_stream for multipart/x-mixed-replace stream of JPEGs
I (2854) camera_demo: Free heap: 201760
I (2864) camera_demo: Camera demo ready

ここまでの道のりは長かった…デモが動いた…!
ブラウザからこの時出力されたhttp://[IP Address]/jpgにアクセスするとjpgを取得することができる。
出力された画像がこれだ!
f:id:t3ta:20180116210645j:plain
えええ………なんで上手くいかないの………

ひとまず撮影するところまではできた(?)ので今回の記事はここまでにして、鮮明な画像を取得する方法については次回にする。