yoursunny / esp32cam

OV2640 camera on ESP32-CAM, Arduino library
https://esp32cam.yoursunny.dev
ISC License
499 stars 174 forks source link

Help wanted: Making it work with LilyGOCAM-1.6.2 #24

Closed mbariola closed 2 years ago

mbariola commented 2 years ago

Hi,

I am trying to make this code work with this version of the camera. It's an OV2640 with fisheye.

Camera Pinout

There are 2 things that I don't seem to get.

1) At runtime, sketch throws out either a "CAMERA NOT FOUND" when using AiThinker or TTGO pinouts or "CAMERA NOT SUPPORTED" when I use a pins::LilyGO config (line 66 of main.cpp) that I put in pins.hpp based on the pinout above. This is my platformio.ini (I tried the esp32cam board (AiThinker) as apparently is the only cam-enabled board in platformio registry, more on that further down)

[platformio]
default_envs = esp32cam
build_dir = ${sysenv.TEMP}/pio-build/$PROJECT_HASH

[env:esp32cam]
platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-upstream
;platform = espressif32
board = esp32cam
framework = arduino
monitor_speed = 460800
upload_speed = 460800
monitor_filters = esp32_exception_decoder, send_on_enter, colorize, time
lib_deps =
    yoursunny/esp32cam@^0.0.20220215     
    shaggydog/OneButton @ ^1.5.0 ; recommended by LilyGO
    thingpulse/ESP8266 and ESP32 OLED driver for SSD1306 displays @ ^4.2.1 ; recommended by LilyGO

This, combined with either cfg.setPins(pins::AiThinker); or cfg.setPins(pins::TTGO); gives me the following serial monitor output

> Executing task: C:\Users\Massi\.platformio\penv\Scripts\platformio.exe device monitor <

--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters

Please build project in debug configuration to get more details about an exception.
See https://docs.platformio.org/page/projectconf/build_configurations.html

--- Miniterm on COM5  460800,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
15:19:32.028 > x�x�x�x��xxxx����x������x�x��x����������x���������x�xx�x��x�x�x���x��xx��xxxxx�x��x�xx��xxx�xxxxx�xx�x�x�x�x���x�����x��xxx�xx�xx�xxxx�x�xx�x�xx�x�x�xxx�xx�x�x�x�x�x��x�x�x��xx����x���xxx�xxxx����xxxxx��x�x�xxxx�x�x�x���x��xxxx�x�x�x���x��x�xx�x�x�x���x��x�x�x��x�x�x�x���x��x�x�xx�x�x�x���x��x��xxx�x�x�x���x��x�xx�x�x�xxx��x��x�xx��x�x�xxxx��x��x�x�����x�x�x�xx�x���x����x�x�x������x�xxx�x��x�x����x�x�x�xx�x���x�����������x�xxx�x��x�������������x�x�x�xx�x���x����������x�xxx�x������������x�xx�x�x�x�x�x��x������x��x�x��x�x
15:19:32.480 > E (918) camera: Camera probe failed with error 0x105(ESP_ERR_NOT_FOUND)
15:19:32.480 > CAMERA FAIL
15:19:36.609 > http://192.168.0.11
15:19:36.611 >   /cam-lo.jpg
15:19:36.611 >   /cam-hi.jpg
15:19:36.611 >   /cam-mid.jpg

When I change line 66 in main.cpp to cfg.setPins(pins::LilyGO);, with this pin configuration in pins.hpp made from the published pinout above:

/** @brief Tentative pin definition for LilyGO ESP32-CAM. */
constexpr Pins LilyGO{
  D0: 34,
  D1: 13,
  D2: 14,
  D3: 35,
  D4: 39,
  D5: 38,
  D6: 37,
  D7: 36,
  XCLK: 4,
  PCLK: 25,
  VSYNC: 5,
  HREF: 27,
  SDA: 21,
  SCL: 22,
  RESET: -1,
  PWDN: -1,
};

this is the serial monitor output

> Executing task: C:\Users\Massi\.platformio\penv\Scripts\platformio.exe device monitor <

--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters

Please build project in debug configuration to get more details about an exception.
See https://docs.platformio.org/page/projectconf/build_configurations.html

--- Miniterm on COM5  460800,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
15:21:15.299 > x�x�x�x��xxxx�x����x������x�x��x��x���������x�xx�x��x�x�x���x��xx��xxxxx�x��x�xx��xxx�xxxxx�xx�x�x�x�x���x�����x��xxx�xx�xx�xxxx�x�xx�x�xx�x�x�xxx�xx�x�x�x�x�x��x�x�x��xx����x���xxx�xxxx����xxxxx��x�x�xxxx�x�x�x���x��xxxx�x�x�x���x��x�xx�x�x�x���x��x�x�x��x�x�x�x���x��x�x�xx�x�x�x���x��x��xxx�x�x�x���x��x�xx�x�x�xxx��x��x�xx��x�x�xxxx��x��x�x�����x�x�x�xx�x���x����x�x�x������x�xxx�x��x�x����x�x�x�xx�x���x�����������x�xxx�x��x�������������x�x�x�xx�x���x����������x�xxx�x������������x�xx�x�x�x�x�x��x������x��x�x��x�x
15:21:15.736 > E (901) camera: Detected camera not supported.
15:21:15.736 > E (902) camera: Camera probe failed with error 0x106(ESP_ERR_NOT_SUPPORTED)
15:21:15.736 > CAMERA FAIL
15:21:20.864 > http://192.168.0.11
15:21:20.866 >   /cam-lo.jpg
15:21:20.866 >   /cam-hi.jpg
15:21:20.866 >   /cam-mid.jpg

2) This is more of a question. Trying to troubleshoot, I googled around, and saw this link where to a request to properly implement the TTGO CAMboard into platformio, to just use esp32dev generic board

So I tried modifying my platformio.ini accordingly


[platformio]
default_envs = esp32dev
build_dir = ${sysenv.TEMP}/pio-build/$PROJECT_HASH

[env:esp32dev]
platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-upstream
;platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 460800
upload_speed = 460800
monitor_filters = esp32_exception_decoder, send_on_enter, colorize, time
lib_deps =
    yoursunny/esp32cam@^0.0.20220215     
    shaggydog/OneButton @ ^1.5.0
    thingpulse/ESP8266 and ESP32 OLED driver for SSD1306 displays @ ^4.2.1

And now the sketch doesn't compile

> Executing task: C:\Users\Massi\.platformio\penv\Scripts\platformio.exe run <

Processing esp32dev (platform: https://github.com/platformio/platform-espressif32.git#feature/arduino-upstream; board: esp32dev; framework: arduino)
-----------------------------------------------------------------------------------------------------------------------------------------
* Adding toolchain toolchain-riscv32-esp with version 8.4.0+2021r2
* Adding toolchain toolchain-xtensa-esp32 with version 8.4.0+2021r2
* Adding toolchain toolchain-xtensa-esp32s2 with version 8.4.0+2021r2
Verbose mode can be enabled via `-v, --verbose` option
* Adding toolchain toolchain-riscv32-esp with version 8.4.0+2021r2
* Adding toolchain toolchain-xtensa-esp32 with version 8.4.0+2021r2
* Adding toolchain toolchain-xtensa-esp32s2 with version 8.4.0+2021r2
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (3.3.1+sha.3784198) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
 - framework-arduinoespressif32 0.0.0+sha.50e9772
 - tool-esptoolpy 1.30100.210531 (3.1.0)
 - toolchain-xtensa-esp32 8.4.0+2021r2
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 34 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <esp32cam> 0.0.20220215
|-- <OneButton> 1.5.0
|-- <ESP8266 and ESP32 OLED driver for SSD1306 displays> 4.2.1
|-- <WebServer> 2.0.0
|   |-- <WiFi> 2.0.0
|   |-- <FS> 2.0.0
|-- <WiFi> 2.0.0
Building in release mode
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\src\main.cpp.o
Generating partitions C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\partitions.bin
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\lib493\esp32cam\esp32cam.cpp.o
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\lib493\esp32cam\internal\config.cpp.o
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\lib493\esp32cam\internal\frame.cpp.o
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\lib493\esp32cam\internal\mjpeg.cpp.o
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\lib493\esp32cam\internal\resolution.cpp.o      
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\libd96\OneButton\OneButton.cpp.o
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\libf59\ESP8266 and ESP32 OLED driver for SSD1306 displays\OLEDDisplay.cpp.o
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\libf59\ESP8266 and ESP32 OLED driver for SSD1306 displays\OLEDDisplayUi.cpp.o
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\lib856\WiFi\WiFi.cpp.o
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\lib856\WiFi\WiFiAP.cpp.o
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\lib856\WiFi\WiFiClient.cpp.o
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\lib856\WiFi\WiFiGeneric.cpp.o
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\lib856\WiFi\WiFiMulti.cpp.o
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\lib856\WiFi\WiFiSTA.cpp.o
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\lib856\WiFi\WiFiScan.cpp.o
src/main.cpp: In function 'void setup()':
src/main.cpp:66:23: error: 'LilyGO' is not a member of 'esp32cam::pins'
     cfg.setPins(pins::LilyGO);
                       ^~~~~~
Archiving C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\libd96\libOneButton.a
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\lib856\WiFi\WiFiServer.cpp.o
Compiling C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\lib856\WiFi\WiFiUdp.cpp.o
*** [C:\users\massi\AppData\Local\Temp\pio-build\ESP32CAM_OPENCV-6a1a552529\esp32dev\src\main.cpp.o] Error 1
====================================================== [FAILED] Took 3.77 seconds ======================================================

I am curious as to why a board change would cause that. It's not vital, just if you feel like explaining that.

Best regards

mbariola commented 2 years ago

I just checked on the lilygo website and apparently, they have a different pinout published (and an even different one down the aliexpress page...). Tried the 2nd on, still says not recognized. will try the 3rd.

http://www.lilygo.cn/prod_view.aspx?TypeId=50067&Id=1273&FId=t3:50067:3

mbariola commented 2 years ago

ok I managed to make it work, with this config

/** @brief Tentative pin definition for LilyGO ESP32-CAM 1.6.2 w/mic . */
constexpr Pins LilyGO162Mic{
  D0: 34,
  D1: 13,
  D2: 14,
  D3: 35,
  D4: 39,
  D5: 38,
  D6: 37,
  D7: 36,
  XCLK: 4,
  PCLK: 25,
  VSYNC: 5,
  HREF: 27,
  SDA: 18,
  SCL: 23,
  RESET: -1,
  PWDN: -1,
};