Comment programmer l’ESP32-CAM avec l’Arduino IDE ?

Faire clignoter le flash

L’ESP32-CAM possède une LED embarquée très puissante servant de flash pour les photos et les vidéos. Cette LED est routée sur la sortie numérique 4 de l’ESP32-CAM:

Emplacement du flash embarqué sur la carte de développement ESP32-CAM

Comme dans les programmes Arduino précédents, partons de l’ossature de code suivante:

// Fonction de démarrage, s'exécute une seule fois:
void setup()
{
}
// Fonction principale du programme, s'exécute en boucle:
void loop()
{
}

Tout d’abord, afin de faciliter la lecture du programme, nous allons définir l’alias  « PORT_LED_FLASH » pour désigner la sortie numérique du flash.  La directive de préprocesseur « #define » permet de créer cet alias:

// Définition des constantes globales
#define PORT_LED_FLASH      4   // Numéro de port auquel est branchée la LED servant de flash.

Nous indiquons ensuite que nous voulons utiliser la broche d’entrée/sortie du flash en mode sortie (« OUTPUT ») à l’aide l’instruction  « pinmode » . Il n’est nécessaire d’exécuter cette instruction qu’une seule fois avant l’utilisation de cette sortie, aussi vous l’insérez dans la fonction « setup » :

  pinMode(PORT_LED_FLASH, OUTPUT);

L’allumage du flash s’effectue par une demande de positionnement de la sortie à l’état allumé (« HIGH ») et son extinction par une demande de positionnement de la sortie à l’état éteint (« LOW »). Vous allez utiliser la fonction « digitalWrite » pour effectuer ce changement d’état de la sortie du microcontrôleur.

Il est également nécessaire de marquer une pause après avoir modifié l’état allumé/éteint du flash pour permettre sa visualisation. Vous utiliserez pour cela la fonction « delay »  avec la valeur de 1000 millisecondes en paramètre.

En utilisant ces instructions dans la fonction « loop », vous obtiendrez l’effet répétitif:

  digitalWrite(PORT_LED_FLASH, HIGH);
  delay(1000);
  digitalWrite(PORT_LED_FLASH, LOW);
  delay(1000);

Maintenant votre programme de clignotement du flash est terminé. Voici le code complet:

// Définition des constantes globales
#define PORT_LED_FLASH      4   // Numéro de port auquel est branchée la LED servant de flash.

// Fonction de démarrage, s'exécute une seule fois:
void setup()
{
  pinMode(PORT_LED_FLASH, OUTPUT);
}
// Fonction principale du programme, s'exécute en boucle:
void loop()
{
  digitalWrite(PORT_LED_FLASH, HIGH);
  delay(1000);
  digitalWrite(PORT_LED_FLASH, LOW);
  delay(1000);
}

Compilation du code logiciel

Si vous n’êtes pas familier avec la compilation sous Arduino je vous invite à vous reporter à l’article « Comment écrire un programme sous Arduino ?« .

Pour les autres, la compilation ne pose pas de difficulté particulière uns fois le type de carte « AI Thinker ESP32-CAM » sélectionné.

Transfert du programme dans la carte ESP32-CAM

La carte ESP32 et donc le module ES32-CAM ont 2 différents modes de fonctionnement:

  • Le mode normal d’exécution de programme
  • Le mode de transfert de programme
Modes de fonctionnement de l'ESP32

Le basculement vers l’un ou l’autre de ces 2 modes s’effectue au démarrage:

  • Si son entrée GPI0 est reliée à la masse, l’ESP32-CAM bascule en mode transfert de programme par liaison série.
  • Dans les autre cas (GPI0 déconnectée ou alimentée en +3,3V),  l’ESP32-CAM bascule en mode d’exécution du programme stocké sur sa mémoire flash.

Pour le transfert du programme que vous venez de compiler, la première chose à faire est de lister les ports USB visibles par l’Arduino IDE avant même le branchement de votre convertisseur USB/TTL à votre PC.
Dans le menu « Outils », cliquez sur « Port » puis notez les ports listés:

Liste des ports USB avant le branchement de la carte de l'ESP32-CAM

Le schéma de câblage fourni au début de cet article permet de basculer l’ESP32-CAM en mode de transfert de programme. Pour transférer votre programme Arduino dans l’ESP32-CAM, vous allez donc réaliser ce câblage puis brancher le convertisseur USB/TTL à votre PC:

Branchement du cable USB au PC

Maintenant si vous allez dans le menu « Outils » puis cliquez sur « Port » vous voyez un nouveau port référencé. C’est celui qui correspond à notre carte de développement ESP32-CAM. Sélectionnez le pour indiquer à l’Arduino IDE d’utiliser ce port USB pour le transfert du programme.

Liste des ports USB après le branchement de la carte de l'ESP32-CAM

Afin que l’état de l’entrée GPI0 soit bien pris en compte par l’ESP32-CAM, vous débranchez puis rebranchez l’alimentation de l’ESP32-CAM (broche 5V, fil rouge du schéma de câblage) pour le redémarrer.

Vous pouvez maintenant lancer le transfert de ce programme dans la carte ESP32-CAM par le menu « Croquis », en cliquant sur « Téléverser »:

Transférer le programme compilé sur la carte de développement ESP32-CAM

Comme lors de l’étape de compilation, l’Aduino IDE affiche le message « Compilation du croquis » et une barre de progression. Une fois ce transfert terminé, si tout s’est bien déroulé, il va afficher le message « Téléversement terminé »:

Le transfert du programme dans la carte de développement ESP32-CAM est terminé

Il ne vous reste plus qu’à sortir l’ESP32-CAM du mode de transfert de programme. Pour cela:

  1. débranchez l’entrée GPI0 de la masse ( fil jaune du schéma de câblage)
  2. débranchez puis rebrancher l’alimentation de l’ESP32-CAM (fil rouge du schéma de câblage) pour le redémarrer.

Eh voilà le flash clignote ! Cela prouve que vous avez transféré avec succès votre programme Arduino dans l’ESP32-CAM.

Si cet article vous a plu, n’hésitez pas à laisser un commentaire.

Laisser un commentaire