ESP32 CAM Support

Just wondering if support for the ESP32 Cam will be available anytime?

Thanks,
Tony

Edit by @janjongboom (April 2nd, 2021): @louis now has published an end-to-end example on running your impulses on the ESP32 CAM: GitHub - luisomoreau/ESP32-Cam-Edge-Impulse: How to run inference on a ESP32 cam using Edge Impulse (putting this in the OP for the 1,200 people who already looked at this question!).

Edit by @louis (April 19th, 2021): The example has been published on Edge Impulse Github organisation here https://github.com/edgeimpulse/example-esp32-cam

1 Like

Hi @tcontrada, you can already use the Arduino and C++ Library exports on the ESP32, so you just need to hook up the camera output to the impulse and it will work! :rocket:

3 Likes

Hi, thanks for the reply.

I just ordered an ESP32 CAM, and this will be my first time trying out your application.
I was wondering if there might be a sample or example of such with the ESP32 CAM in order to help with my first attempt?

Thanks,
Tony

@tcontrada we don’t for that platform, but I’d take it in these three steps:

  1. Connect the ESP32 CAM into the Arduino IDE.
  2. Train a small model in Edge Impulse, export as Arduino library, and make sure you can run the static_buffer example.
  3. Feed the data from the camera in rather than static buffer.
2 Likes

Hi, I created a simple ML for recognizing a computer in an image and created the model via your application and exported the model for the Arduino.

I actually have the ESP32 CAM set as the board to compile, but when I try to compile the static_buffer example I get the following compile error:
’fmin’ is not a member of ‘std’ return std::fmin(x, y);

Is there a reference issue in the header file, or something else?

Thanks…

@tcontrada What’s the exact package name in the Boards Manager?

1 Like

Hi Jan,

The board manager configuration in the Arduino IDE is the following, including configuration as recommended by ESP32CAM.

ESP32 Wrover Module, Huge APP (3MB no OTA/1MB SPIFFS) QIO, 80MHz, 921600.

Hope this helps!

Thanks,
Tony

Hi @tcontrada,

It works on my side with similar settings as yours:

Which esp32 version is installed in your Board Manager? I have the 1.0.4 setup.

Best,
Aurelien

1 Like

I have ESP32 1.0.4 installed. So it must be a software library.
Is there a list of all libraries and their respective versions, else I won’t be able to compile the example application?

Thanks,
Tony

1 Like

There are no dependencies in the Arduino library that we export so that shouldn’t be it. But based on the error I suspect either a broken standard library or something weird with a compiler version. Will take a look today.

1 Like

@tcontrada I see the same thing as @aurel, I can build fine with this target against an Arduino library created today with this package and the ESP32 Wrover Module:

Perhaps reinstalling the board package might work?

1 Like

I reinstalled the ESP32 Board Files (1.0.4) and getting basically the same compile error.
’fmax’ is not a member of ‘std’ return std::fmax(x, y);
I am also running the Arduino IDE 1.8.13 which is the latest version.

Any other suggestions?

Thanks,
Tony

1 Like

@tcontrada, sorry I have no idea where that comes from. I’m also on Arduino IDE 1.8.13 with the same board support package as you it seems…

Hi @tcontrada,

Just to double check, the additional boards manager URL is correctly set to: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json?

Last thing: before compiling, you correctly selected the ESP32 Wrover module under Tools -> Board?

Aurelien

1 Like

I did adjust the URL as suggested, but get the same compile error.

I think the problem is the fmin and fmax functions where the error occurs. First, these functions are not part of the std library, but the math library. Your code references std::fmax which is not correct, it should be math::fmax.

See if you can make this change in your code/libraries as I think it will fix the issue.

Best,
Tony

@tcontrada You can modify where we call this (the source of all files is in the libraries folder of the IDE, e.g. ~/Documents/Arduino/libraries/ on macOS), would be interested to see if that helps, but std::fmax is valid and part of cmath (see https://en.cppreference.com/w/cpp/numeric/math/fmax).

1 Like

@tcontrada. I had the same issue but I found a solution after reading this forum.

Now I have another issue that “The filename or extension is too long.” I have yet to solve this problem or find a solution.

@electronictechgreg interesting though, we bundle a distribution of TensorFlow Lite in the Arduino library… The filename is too long is described here: https://docs.edgeimpulse.com/docs/running-your-impulse-arduino#code-compiling-fails-under-windows-os by @aurel

1 Like

I’ve fixed that issue a while back after reading your documentation. But I got another issue which is below.

fork/exec C:\Users\elect\AppData\Local\Arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0/bin/xtensa-esp32-elf-gcc.exe: The filename or extension is too long.

1 Like

That’s a similar issue but as it’s a different compiler, you’ll need another platform.local.txt to fix it. I’ll try to have a look at it.
FYI there is a pull request on the Arduino side but it’s still in progress: https://github.com/arduino/arduino-cli/pull/961

Aurelien

1 Like