samedi 18 janvier 2020

ESP32-CAM: première utilisation avec l'IDE Arduino


L'ESP32-CAM est carte offerte à prix très modique (moins de 10 euros) qui comporte un microcontrôleur ESP32 et une caméra OV2640. Une des caractéristiques les plus intéressantes de l'ESP32 étant la possibilité de communiquer en WiFi, une utilisation évidente de l'ESP-32 CAM consiste à transmettre en direct des images vidéo par WiFi (caméra de surveillance, etc.).

En plus d'une caméra OV2640, le module est équipé d'un lecteur de cartes micro SD qui pourra éventuellement servir à stocker des images ou des séquences vidéo.

Si vous êtes déjà familier avec les modules ESP-32 conventionnels, vous remarquerez toutefois que le module ESP32-CAM ne comporte aucun connecteur USB: pour programmer le microcontrôleur, vous devez utiliser un convertisseur USB-Série fonctionnant à un niveau logique de 3,3 V.

De plus, puisque la caméra accapare un certain nombre d'entrées/sorties du microcontrôleur, les broches GPIO disponibles sont beaucoup moins nombreuses que sur un module ESP-32 conventionnel (il n'y en a que 8, et 6 d'entre elles sont déjà connectées au lecteur de carte SD).

Le module que j'ai reçu était déjà assemblé: nul besoin de souder soi-même les connecteurs, ni même de connecter la caméra.

Dans ce court tutoriel, je vous explique comment, dans les minutes suivant la réception de mon module ESP32-CAM, j'ai pu utiliser un exemple fourni avec l'IDE Arduino pour diffuser en direct sur une page web la vidéo captée par la caméra.

Connexions de l'ESP32-CAM au convertisseur USB-série

Pour programmer mon module ESP32-CAM, j'ai utilisé un convertisseur USB-série qui fonctionne à un niveau logique de 3,3 V.


Pour la phase de programmation, les connexions étaient les suivantes:

  • Sortie 5 V du convertisseur USB-série:  Entrée 5 V de l'ESP32-CAM
  • Broche GND du convertisseur USB-série: Broche GND de l'ESP32-CAM
  • Broche TXD du convertisseur USB-série: Broche UDR de l'ESP32-CAM
  • Broche RXD du convertisseur USB-série: Broche UDT de l'ESP32-CAM
  • Broche IO0 branchée à GND



Le module est donc alimenté en 5 V pendant la programmation (je n'ai pas testé, mais j'ai lu sur des forums de discussion que certaines personnes ont eu des problèmes en tentant de programmer sous une alimentation de 3,3 V).

L'information transite de l'ordinateur vers le microcontrôleur (TXD / UDR) et du microcontrôleur vers l'ordinateur (RXD / UDT) à un niveau logique de 3,3 V (si votre convertisseur USB-série est muni d'un commutateur permettant de sélectionner le niveau logique, veillez à le régler à 3,3 V).

Pour mettre l'ESP32-CAM en mode programmation, il faut que la broche IO0 (ou GPIO 0) soit reliée à la masse (GND); on appuie ensuite sur le bouton "reset". Pour exécuter le programme, on débranche la broche IO0 et on appuie à nouveau sur le bouton "reset".

Après quelques heures de développement sur cette carte, j'ai bricolé un rudimentaire support en carton qui permet de maintenir la caméra à un angle pertinent tout en laissant le bouton "reset" facilement accessible. De plus, j'ai placé un interrupteur entre la broche IO0 et la masse pour éviter de devoir sans cesse débrancher et rebrancher un fil.





Réglages de l'IDE Arduino

Les cartes de la famille ESP32 ne sont pas incluses par défaut avec l'IDE Arduino; il faut les installer en passant par le "Gestionnaire de cartes". Si ce n'est pas déjà fait, vous trouverez la marche à suivre détaillée dans ce précédant billet.


Parmi les nombreuses cartes ESP32 disponibles, vous sélectionnez "AI Thinker ESP32-CAM". (À vrai dire, rien sur mon module ou sur la description offerte par le vendeur ne mentionne "AI Thinker", mais ce choix a fonctionné correctement.)

Vous ouvrez ensuite l'exemple "CameraWebServer" (Menu Fichier - Exemples - ESP32 - Camera - CameraWebServer).


Par défaut, le sketch est réglé pour être utilisé avec le modèle WROVER: utilisez plutôt la ligne 14 "#define CAMERA_MODEL_AI_THINKER".

De plus, écrivez les paramètres de votre réseau WiFi aux lignes 18 et 19.


Après vous être assuré que la broche IO0 est reliée à la masse GND et appuyé sur le bouton "reset", vous pouvez maintenant verser le sketch dans votre ESP32.


Si tout se passe bien, vous devriez voir, au bout de quelques dizaines de secondes, un message indiquant la réussite du téléversement.



Pour démarrer le programme, vous débranchez le fil reliant la broche IO0 à la masse et appuyez sur le bouton "reset".

Le moniteur série affiche l'adresse IP qui permettra de visionner l'image dans un navigateur web.


On copie cette adresse dans le navigateur web de notre choix. Dans la page web qui s'affiche, il s'agit de cliquer sur le bouton "Start Stream" pour que l'image captée par le module ESP32-CAM s'affiche à l'écran. Plusieurs contrôles situés à la gauche de la fenêtre permettent de modifier les caractéristiques de l'image.




En ce qui me concerne, cette première exploration du module ESP32-CAM s'est effectué sans le moindre pépin. J'espère bien, dans un proche avenir, apprendre à personnaliser les programmes pour, par exemple, enregistrer des images sur une carte SD, etc.

À lire également

D'autres articles sur l'ESP32-CAM:  un web server minimaliste , enregistrer des photos sur la carte microSD, time-lapse avec ESP32-CAMles LEDs de l'ESP32-CAM, mouvement panoramique avec servomoteur.

Mon article sur sur le module caméra du Raspberry Pi, et la liste des articles impliquant l'ESP32.

Yves Pelletier (TwitterFacebook)

2 commentaires:

  1. Bonjour,
    Merci pour votre partage et pour sa clarté.
    Est-il possible d'utiliser un arduino uno r3 après avoir ôté son processeur de ses broches pour remplacer le convertisseur USB-Série ?
    Merci.

    RépondreSupprimer
  2. Bonjour Yves,
    très bon tuto, j'espère que vous serez plus chanceux que moi ! J'en ai commandé plusieurs chez Ali et je peux vous dire que j'ai eu à boire et à manger ! Je n'ai jamais réussi à téléverser dans un , l'autre il falait l'alimenter par la pin VCC au lieu de 5V..
    Votre caméra était déjà branché vous dites ? Quelle chance ! Certains fournissent des caméras grand angle avec mais pas le la librairie avec bien sur du coup, ne fonctionne pas..
    Bref attention à vos achat :) !

    RépondreSupprimer