ESP32-CAM. Quel modèle choisir ? ESP-EYE, AI Thinker, TTGO T-Camera, M5Stack Timer Camera… • Domotique et objets connectés à faire soi-même

Cela fait maintenant plusieurs année que les modules ESP32-CAM ont été mis sur le marché. Chez certains fabricants tel que M5Stack, on est déjà à la 5ème génération de carte de développement ce qui complique pas mal le choix surtout lorsqu’on débute. AI Thinker, M5Stack et TTGO sont les fabricants les plus connus dans le domaine.

Impossible de tester toutes les cartes de développement proposés dans cet article. ESP-EYE d’Espressif, ESP32-CAM Ai Thinker, M5Stack Timer Camera, TTGO T-Camera, T-Camera Plus et T-Journal. N’hésitez pas à partager votre expérience (bonne ou mauvaise) ou à me signaler une erreur ou un oubli à l’aide des commentaires.

Recommandations générales avant de faire votre choix

Certaines cartes de développement ne disposent pas de connecteur (GPIO). Il sera donc impossible d’ajouter un lecteur de carte SD, un détecteur de mouvement ou tout autre équipement I2C. Il faudra en tenir compte lors de votre choix. La présence d’un connecteur d’extension (GPIO) est indiquée dans chaque tableau comparatif.

Si vous êtes débutant, privilégiez un modèle avec un connecteur USB-C ou micro-USB ce indique que la carte de développement est équipée d’un convertisseur UART / USB. La programmation sera simplifiée

Le nouveau SoC Kentrix K210 est un micro-contrôleur dédié à la vision pour application mobile. Ce n’est pas un ESP32. Il ne dispose pas de connectivité WiFi, ni du Bluetooth. La programmation est différente et les projets pour ESP32-CAM ne sont pas compatibles.

ESP-EYE d’Espressif

L’ESP-EYE est une carte de développement pour la reconnaissance d’image et le traitement audio développée par Espressif. C’est une carte de développement avant tout destinée aux entreprises qui souhaitent développer rapidement un prototype connectée à la plateforme Amazon AWS-IoT.

L’ESP-EYE est équipée d’une puce ESP32 (version ESP32-D0WD), d’une antenne WiFi 3D d’un appareil photo de 2MP, d’un microphone Cirrus Logic CS53L30, 2 LED (rouge et blanche), 8Mo de PSRAM utilisable pour augmenter la RAM de l’ESP32 et de 4Mo de mémoire flash (stockage du programme et des données utilisateur). La programmation se fait via un connecteur micro USB.

L’ESP-EYE dispose d’un mini connecteur d’extension permettant de connecteur des équipements supplémentaires via le bus SPI (écran OLED, lecteur de carte microSD).

Bus SPI Broche ESP32
DATA_OUT (DOUT) IO12
DATA_INT (DIN) IO2
CLK IO0
CS IO19

On pourra l’utiliser pour connecter des équipements I2C en attribuant manuellement les broches à l’aide de la méthode wire.begin(broche_SDA, broche_SCL).

L’ESP-EYE est une carte de développement certifiée Amazon AWS-IoT.

Plusieurs exemples de démarrage sont disponibles sur GitHub ici. L’exemple est livré avec les drivers des modules caméra OmniVision OV2640, OV3660 et OV5640.

ESP32-CAM AI Thinker

C’est finalement le fabricant AI Thinker qui a popularisé le projet Open Source ESP-EYE d’Espressif avec sa version ESP32-CAM. Les autres fabricants de carte ont ensuite emboités le pas.

On trouve maintenant de nombreux fabricants qui ont clonés le projet. La plupart des modules ESP32-CAM utilisent un SoC ESP32-S de AI Thinker.

L’ESP32-CAM est la carte de développement équipée d’un module caméra la moins chère et donc la plus vendue. Elle fait le travail sans broncher.

Pour rogner sur le prix et l’encombrement de la carte, elle est dépourvue de convertisseur UART / USB ce qui rend la programmation plus compliquée, surtout lorsqu’on débute.

Pour débuter, il est préférable de s’équiper de la Timer Camera de M5Stack ou d’une T-Camera de TTGO. Tous ces modèles sont présentés plus en détail dans la suite de l’article.

La carte de développement ESP32-CAM Ai Thinker dispose d’un véritable connecteur d’extension compatible avec les breadboards et expose plusieurs broches de l’ESP32 encore disponibles.

Trouver plus de cartes de développement ESP32-CAM

Comment téléverser un programme ?

Comme l’ESP32-CAM AI Thinker ne dispose pas de convertisseur UART / USB, il faudra penser à acheter un module FTDI. Vous aurez également besoin de quelques jumpers femelle-femelle. Connectez les broches du module FTDI comme ceci.

FTDI ESP32 CAM Ai Thinker
5V 5V
GND GND
TX UOT
RX UOR
Connecteur IO0 sur GND + RESET avant de  téléverser

Avant de pouvoir téléverser le programme depuis l’IDE Arduino (ou un autre environnement), il faudra mettre l’ESP32 en flash mode. Pour cela, il faut connecter la broche IO0 à la broche GND puis faire un reset (ou mettre sous tension).

Comment activer l’antenne externe ?

Les modèles construits autour du micro-contrôleur ESP32-S disposent d’un connecteur IPEX (uFL) qui permet d’utiliser une antenne externe pour augmenter la portée et la qualité du signal WiFi. Par défaut, c’est l’antenne gravée sur le PCB qui est sélectionnée.

Pour pourvoir utiliser l’antenne externe, il faudra donc déplacer la résistance (ou la remplacer par un petit morceau de fil de cuivre) comme ceci.

Antenne PCB activée Antenne externe activée

Antenne PCB activée

Antenne externe IPEX activée

Pour réaliser la modification, suivez les instructions détaillées dans cet article

M5Stack Timer Camera

La Timer Camera de M5Stack est un module caméra basé sur un ESP32 (version non précisée, probablement ESP32-D0WD) avec 8Mo de PSRAM intégré. Le module OmniVision OV3660 offre une résolution de 2048×1536 pixel est équipé d’une lentille ayant un champ de vision de 66,5°.

La M5Stack Timer Camera est disponible seule ou livrée installée dans un boitier (version X) avec support Lego Technics.

Le capteur OmniVision OV3660 n’est pas adapté pour la vision nocturne. La réponse spectrale est la meilleure entre 400nm et 700nm.  Un éclairage additionnel à 800nm devrait toutefois améliorer la vision de nuit pour l’observation d’animaux ou la vidéo surveillance avec un faible éclairage.

Source : Omnivision

La carte de développement dispose également d’une horloge RTC (BM8563), d’un port PH2.0-4P (Grove), d’une LED blanche (IO2) et d’un connecteur pour batterie LiPo. La charge de la batterie pourra être mesurée sur la broche (IO33). Rendez-vous au paragraphe suivant pour le repérage des broches.

La carte est équipée d’une antenne WiFi 3D 2.4GHz rendant inutile une antenne externe via un connecteur IPEX.

La programmation pourra se faire avec du code Arduino (librairie ESP32-Arduino), avec du code C++ (ESP-IDK 4.1 minimum) ou en Blockly avec la version maison UIFlow.

Un exemple développé avec le SDK ESP-IDF (programmation en C++) est disponible sur GitHub ici.

La version X est livrée dans un boitier de protection avec une fixation compatible LEGO Technic ainsi qu’une batterie 140mAh.

La M5Stack Timer Camera est également permettant de connecter des accessoires I2C via un connecteur PH2.0 à 4 broches plus connu sous le nom de connecteur Grove.

Le connecteur Grove expose les broches GPIO04 et GPIO13 de l’ESP32. On pourra utiliser les nombreux équipements Grove  M5Stack ou SeeedStudio disponibles.

Plus d’équipements Grove M5Stack ou SeeedStudio

Comme la Timer Camera de M5Stack est équipée d’un convertisseur UART / Série (contrôleur CP2104), il est inutile de mettre la caméra en mode “bootloader” à chaque fois que vous voulez téléverser un nouveau programme.

La M5Stack Timer Camera est un solution idéale pour débuter. La programmation peut se faire par assemblage de blocs (language blocky) ou avec du code Arduino.

Repérage des broches de la M5Stack Timer Camera

Voici le repérage des broches de l’ESP32 réservées pour le module caméra OmniVision OV3660, la LED blanche et le contrôle de charge de la batterie LiPo (en option).

Interface Broche ESP32
Connecteur Grove
SCL IO13
SDA IO4
5V 5V
GND GND
Autres équipements
LED blanche IO2
Tension de la batterie LiPo (BAT_ADC_Pin) IO33

Données techniques extraites de la documentation officielle.

Modèles obsolètes à éviter : M5Camera A et B, M5CameraX, M5CameraF et ESP32-Camera

M5Stack a retiré de son catalogue les cartes de développement M5Camera A, M5Camera B, M5CameraX et M5CameraF détaillée ici sur GitHub. Vous risquez de les trouver en promo sur AliExpress par exemple. Restez à l’écart de ses modèles moins performant qui ne recevront plus de support technique.

Source : M5Stack

Vous pouvez toujours acheter l’ESP32-Camera mais c’est un peu dommage car son prix est très proche de la Timer Camera beaucoup plus récente et mieux équipée. A vous de choisir.

M5Stack M5StickV K210 AI Camera (Kendryte K210 sans WiFi)

Le M5StickV est construit autour du SoC Kendryte K210, un processeur RISC-V 64 bits double cœur et un processeur de réseau neuronal dédié à l’analyse d’image et au traitement vidéo.

Le M5StickV AI est équipé d’un capteur OmniVision OV7740 qui offre une grande sensibilité même avec une faible luminosité. Le M5StickV embarque entre autre un haut-parleur I2S de Class-D, un écran IPS, un accéléromètre 6 axes MPU6886, une batterie LiPo 200mAh, un gestionnaire d’alimentation AXP192.

Le Kendryte K210 ne dispose d’aucune connectivité (WiFi ou Bluetooth).

Le plus facile est d’utiliser le langage MicroPython pour développer du code pour le K210. Plusieurs exemples de code MicroPython développés à l’aide de  l’éditeur MaixPy (mis au point par Seeed Studio) sont disponibles ici. Petit regret, aucun exemple pour le module caméra n’est encore disponible ?!

Comme je l’avais signalé dans ce guide de choix de TTGO T-Watch, le site internet du fabricant Kendryte n’est plus en ligne depuis un bon moment déjà. Rachat ou faillite suite à la pandémie de COVID-19, telle est la question ? Seul le dépôt GitHub est encore actif. Je vous conseille donc de rester en retrait de ce produit pour le moment.

Le M5StickV K210 AI est disponible pour environ 30$ (hors frais de port) sur la boutique en ligne de M5Stack.

TTGO T-Camera, T-Camera Plus ou T-Journal de LilyGo

LilyGo, le fabricant des cartes de développement ESP32 TTGO nous propose 3 cartes de développement ESP32-CAM.

Les cartes ESP32-CAM TTGO T-Camera et T-Camera Plus sont équipées d’une antenne WiFi 3D ainsi que d’un connecteur IPEX. A priori, il n’est pas nécessaire d’intervenir sur le circuit pour connecteur une antenne externe. L’antenne WiFi 3D devrait toutefois offrir un signal de qualité dans la plupart des situations, en intérieur du moins. La T-Journal est équipée d’une antenne SMA que l’on pourra remplacer par une antenne IPEX (connecteur disponible sans modification).

TTGO T-Camera

La TTGO T-Camera est équipée d’un détecter de mouvement PIR (AS312) accessible sur la broche IO33 ainsi qu’un écran OLED SSD1306 I2C

TTGO T-Camera Plus

La TTGO T-Camera Plus embarque un micro (MSM261S4030H0), un capteur de température, humidité et pression atmosphérique (BME280), un écran TFT couleur offrant une diagonale de 1,3″ et un lecteur de carte SD (jusqu’à 16Go).

Dommage le détecteur de mouvement a été remplacé par un bouton poussoir, probablement pour faire des selfies ! Elle aurait été parfaite pour une caméra de surveillance avec son lecteur de carte microSD.

TTGO T-Journal

La TTGO T-Journal est directement équipée d’un connecteur SMA. Un connecteur IPEX (uFL) est également présent à la base du connecteur SMA. Bonne idée ! Aucune antenne n’est gravée sur le PCB, il faudra donc obligatoirement utiliser une antenne externe.

Tableau comparatif des TTGO T-Camera, T-Camera Plus et T-Journal

Voici un tableau comparatif qui récapitule les principales spécifications techniques des 3 cartes caméras de LilyGo TTGO.

Fonction ESP32-CAM Ai Thinker TTGO T-Camera TTGO T-Camera Plus TTGO T-Journal
SoC ESP32 ESP32-S2 ESP32-WROVER-B ESP32-DOWDQ6 ESP32-PCIO-D4
Mémoire PSRAM 4Mo 8Mo 8Mo
Mémoire Flash 4Mo 4Mo 4Mo 4Mo
Connecteur GPIO x x x
Micro x x

MSM261S4030H0

x
Lecteur de carte SD x x
BME280 (température + humidité + pression atmosphérique) x x x
I2C GPIO* Connecteur Connecteur x
Écran x OLED SSD1306

0,96″ (128×64)

IPS ST7789

1.3″

OLED SSD1306

0,96″ (128×64)

Caméra OV2640 OV2640 OV2640 OV2640
PIR GPIO*

AS312

x

x

Bouton utilisateur x

x

x
Programmateur intégré (UART / USB) x CP2104 CP2104 CP2104
Connecteur x micro-usb micro-usb micro-usb
Connecteur JST pour batterie LiPo x
Antenne WiFi 3D x  
Connecteur IPEX uFL A modifier**
Connecteur SMA x x x
Dimension 40*27*18mm 69.13*28.41*8.45mm 64.57mm*23.98mm
Ressources Consulter Consulter Consulter
Prix moyen (hors frais de transport) < 8€ 15€ 17€ 14€

(*) Attention, si vous utilisez le lecteur de carte micro SD, seules les broches 1, 3 et 16 sont disponibles pour le bus I2C. Les broches 1 et 3 devront être libérées chaque fois que vous voulez téléverser un programme.

(**) Suivre les instructions de ce tutoriel.

Comment programmer un module ESP32-CAM ?

L’ESP32-CAM est avant tout une carte de développement ESP32. Cela veut dire qu’on peut développer du code à l’aide des languages compatibles :

  • ESP-IDF, c’est le kit de développement C++ proposé par Espressif qui permet d’exploiter toutes les fonctions de l’ESP32. Il est basé sur FreeRTOS. Vous devez déjà avoir une très bonne maitrise du C++ pour vous lancer.
  • ESP32-Arduino. C’est la version du SDK ESP-IDF adaptée à l’IDE Arduino ou PlatformIO. Vous trouverez de nombreux projets et exemples pour débuter. C’est la solution à privilégier lorsqu’on débute.
  • UIFlow. C’est la version maison de Blockly développée par M5Stack. Elle n’est utilisable qu’avec les cartes M5Stack.
  • Micro Python. Quelques projets commencent à émerger sur internet.
ESP-IDF ESP32-Arduino UIFlow

(Blockly)

Micro Python
ESP-EYE
ESP3-CAM
M5Stack Timer Camera, ESP32 Camera et anciens modèles  
TTGO T-Camera
TTGO T-Camera Plus
TTGO T-Journal

Tableau récapitulatif, quel modèle choisir en 2021 ?

Voici un tableau récapitulatif pour vous aider à choisir la carte de développement ESP32-CAM qui correspond le mieux à votre projet.

Fabricant Espressif + générique

Ai Thinker + générique

M5Stack

TTGO

Modèle

ESP-EYE

ESP32-CAM AI-THINKER

Timer Camera

T-CAMERA

T-CAMERA PLUS

T-JOURNAL

ESP32

ESP32-D0WD

ESP32-S2

ESP32-D0WD

ESP32-WROVER-B ESP32-DOWDQ6 ESP32-PCIO-D4

PSRAM

8Mo

4Mo

8Mo

8Mo

8Mo

x

Capteur 

OV2640

OV2640

OV3660

OV2640

OV2640

OV2640

Résolution

2MP

2MP

3MP

2MP

2MP

2MP

Ecran

x

x

x

0.96″ OLED (SSD1306)

1.3″ TFT (ST7789)

0.91″ OLED (SSD1306)

Lecteur carte SD

x

x

x

x

Microphone

x

x

x

x

Horloge RTC

x

x

BM8563

x

x

x

Bouton utilisateur

x

x

x

Connecteur batterie

x

x

Tension batterie

x

x

x

x

x

Programmeur intégré

CP2104

x

CP2104

CP2104 CP2104 CP2104

GPIO

4

10

x

x

2

4

Détecteur de mouvement

x

x

x

x

x

Connecteur Grove

x

x

x

x

Antenne WiFi 3D

x

x

x

Connecteur IPEX ou SMA

x

x

x

x

LED blanche

x

x

x

x

Prix moyen (hors frais de transport)

 ~ 26€

< 8€

~ 10€

~ 15€ ~ 17€ ~ 14€

Tutoriel et projets ESP3-CAM

Prêt à vous lancer, voici quelques projets et tutoriels pour débuter.

Vous trouverez également dans cet article de nombreuses astuces pour améliorer

Mises à jour

23/12/2020 Publication de l’article

English Version

Merci pour votre lecture

Avez-vous aimé cet article ?