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円だったのでテスト用の基板を作ることにした。(毎回配線するの面倒だしね)
ピン番号を確認しながら頑張って作った結果がこれだ。
とても汚い。悲しい。
後になってデモの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 SSIDとWiFi 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を取得することができる。
出力された画像がこれだ!
えええ………なんで上手くいかないの………
ひとまず撮影するところまではできた(?)ので今回の記事はここまでにして、鮮明な画像を取得する方法については次回にする。