Hi,
I'm Simone from Italy, author of the ESP32S3 Camera Mastery Course
and owner of the eloquentarduino.com blog.
This course is the updated version of my original book Mastering the ESP32 camera, which got much more interest than I could have anticipated. This is why I spent months working on this new revision: you reader and the whole Arduino/ESP32 community deserve better tools to work with the fantastic piece of hardware that is the ESP32 camera.
If there would have existed top quality, advanced content on this topic on the internet, I wouldn't have sold a single copy of the book. Instead, I sold +100 copies (not that much, but more than I anticipated). It means there's lack of resources online: the intent of this course is to fill this gap.
What's inside?
This book covers a few topics. Some are very basic:
- take your first picture in a sane way
- real time video stream
- save pictures to SD card with structure
- motion detection without PIR
- Telegram notifications
Others can be considered more advanced:
- face detection
- image classification using Edge Impulse
- object detection using Edge Impulse
The first chapters work on the old generation of ESP32 chip (e.g. AiThinker board), while the latest ones that require machine learning (face/object detection) only run (or run better) on the new ESP32S3 chip.
I strongly recommend you upgrade if you can, because the S3 chip is a lot faster and has a lot more RAM that its predecessor. A couple boards I can recommend because I have them:
- Seeed XIAO Sense: tiny and pretty cheap, it gets hot really quick though
- Freenove Cam Board S3: good price point, may be available even on Amazon in your country. Pay attention that it is the S3 version (the one with 2 USB ports!), since they also have a non-S3 version
A note about the coding style
This course is articulated in short chapters, each for each topic.
Even though they don't follow any particular order (apart from the first chapter that shows how to take your first picture), I would recommend to read it in order. The first chapters cover the most frequent use cases and show the basics, which you can later integrate into more advanced projects to get a complete working project.
The code examples make heavy use of a few C++ features:
- object orientation: everything from the library we'll be using is scoped under an object, there are no global functions. Many methods even return objects instead of primitive values, so you will often find chains of functions. Don't be scared, they're still easy to use
- namespaces: everything from the library is scoped under a C++ namespace to not pollute the global scope. Most object are scoped under the
eloq
namespace, but sometimes you will encounter constructs likenamespace::object
: don't be scared! Namespaces are helpful in grouping related objects and functions under a common name - lambda functions: when a function returns multiple objects, we will iterate them using a
forEach
construct that accepts a function to run on every result. Declaring a global function would be not as idiomatic as using a locally-defined function, so we'll be using lambdas.
Here's an example snippet showing the above points.
using namespace eloq;
// object orientation with method chaining
if (!camera.capture().isOk()) {
Serial.println(camera.exception.toString());
return;
}
// namespacing: 'face' is the namespace, 'detection' is the object
if (!face::detection.run().isOk()) {
Serial.println(face::detection.exception.toString());
return;
}
// lambda functions
fomo.forEach([](int i, bbox_t bbox) {
Serial.printf("Detected object #%d\n", i + 1);
});
Hardware requirements
Only an ESP32 camera board is required. We will not use any external sensor nor hardware. Supported boards are:
- AiThinker
- M5 cameras (normal, fisheye, timer)
- TTGO camera with LCD display
- Seeed XIAO Sense (see above)
- Freenove Camera S3 (see above)
- Espressif Eye
Software requirements
To follow the sketches in the book you will need:
- Arduino IDE (1.8.13 recommended)
- ESP32 core 2.x.x (2.0.14 recommeded)
- EloquentEsp32Cam library 2.x.x (latest version recommended)
If you cannot find version 2.x.x of EloquentEsp32Cam from the Arduino Library Manager, you can install it from Github.
- visit https://github.com/eloquentarduino/EloquentEsp32cam/tree/2
- download library as zip
- extract the zip inside your Arduino libraries folder
- if the folder is named
EloquentEsp32Cam-master
, delete the-master
part
Free sample limitations
If this is the free sample of the course, you will have access to the first handful chapters only. To unlock all the chapters, consider buying the full course at https://eloquentarduino.lemonsqueezy.com/checkout/buy/e7995ef6-f001-4208-8080-d5365a35a14e