Envoyer “Coucou” par la liaison série
La carte de développement ESP32-DevKitC possède une LED témoin de présences de tension, mais pas de LED embarquée commandable par programme. Aussi le moyen le plus simple de vérifier le bon fonctionnement de notre environnement de compilation avec cette carte est l’envoi de messages texte au PC par liaison série.
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() { }
Dans le monde Arduino, la bibliothèque de gestion de la liaison série est incluse nativement (il n’est pas nécessaire de le déclarer). Elle s’utilise à travers l’objet “Serial“.
La première chose à faire avant d’utiliser une liaison série est d’ouvrir le port. Ceci s’effectue sous Arduino par la méthode “begin” de l’objet “Serial“. Comme il n’est nécessaire d’ouvrir le port qu’une seule fois pour tout le programme, nous plaçons cette instruction dans la fonction “setup” et choisissons en paramètres la vitesse par défaut de 115200 bauds (bits par seconde):
Serial.begin(115200);
Pour l’envoi de texte, l’objet “Serial” possède 2 méthodes “print” et “println” qui prennent en paramètre la suite de caractères à transférer sur le port série. La méthode “println” effectue les mêmes opérations que la méthode “print“, mais en plus ajoute automatiquement 2 caractères non imprimables en fin de chaîne, le 13ème et 10ème de la table ASCII qui sont interprétés par les terminaux série comme une demande de retour à la ligne. Ainsi les instructions
Serial.print("toto\r\n")
… et
Serial.println("toto")
… sont équivalentes.
En ce qui concerne notre programme test, nous allons afficher une barre de séparation et le message “Coucou” au démarrage:
Serial.println("---"); Serial.println("\nCoucou");
Puis nous afficherons une ligne à laquelle sera ajouté un point toutes les secondes. Pour rappel, la fonction “delay” suspend l’exécution du programme Arduino pendant une durée paramétrable exprimée en millisecondes.
Cela se traduit par l’ajout des instructions suivantes dans la fonction “loop”:
delay(1000); Serial.print(".");
Le programme de test est maintenant terminé. Voici le code complet:
// Fonction de démarrage, s'exécute une seule fois: void setup() { Serial.begin(115200); Serial.println("---"); Serial.println("\nCoucou"); } // Fonction principale du programme, s'exécute en boucle: void loop() { delay(1000); Serial.print("."); }
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 une fois le type de carte “ESP32 Dev Module” sélectionné.
Transfert du programme dans la carte ESP32-DevKitC
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 ESP32-DevKitC.
Dans le menu “Outils”, cliquez sur “Port” puis notez les ports listés:
Vous branchez le câble USB à votre 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-DevKitC. Sélectionnez-le pour indiquer à l’Arduino IDE d’utiliser ce port USB pour le transfert du programme.
Vous pouvez maintenant lancer le transfert de ce programme dans la ESP32-DevKitC en utilisant au choix:
- L’icône représentant une flèche horizontale:
- ou le menu “Croquis”, en cliquant sur “Téléverser”:
Comme lors de l’étape de compilation, l’Aduino IDE commence par afficher le message “Compilation du croquis” et une barre de progression. Une fois le transfert terminé, si tout s’est bien déroulé, il va afficher le message “Téléversement fait.”:
Il ne reste plus qu’à vérifier que le programme s’exécute correctement.
Lecture des messages envoyés par notre programme
La lecture sur le PC des messages envoyés par la carte ESP32-DevKitC s’effectue en utilisant un Terminal de port série. Vous pouvez pour cela utiliser un outil spécifique comme PuTTY, RealTerm ou bien utiliser celui intégré à l’Arduino IDE comme nous allons le détailler.
Pour accéder au Terminal de port série, cliquer sur “Moniteur série” dans le menu “Outils“:
Dans la fenêtre de sortie, vous verrez peut-être s’afficher dans un premier temps “Déconnecté. Sélectionnez une carte ainsi qu’un port pour vous connecter automatiquement“:
Si vous avez laissé branché votre carte après le téléversement, ne tenez pas compte de message il disparaîtra au bout de quelques secondes. Sinon rebranchez-la sur le même port USB de votre PC que précédemment.
Vous verrez ensuite probablement s’afficher des caractères étranges dans la fenêtre de sortie du Moniteur Série. C’est généralement le symptôme d’une vitesse de communication configuré différemment sur le Terminal de port série de celle configurée sur la carte embarquée.
Pour corriger cela, il vous suffit d’aller dans le menu de droite du moniteur série et de choisir la même vitesse que celle spécifiée dans notre code logiciel (115200 bauds) :
Des petits points s’affichent maintenant à l’écran à raison d’un par seconde. Cela correspond au code logiciel que nous avons mis dans la fonction “loop”.
Maintenant si vous redémarrez la carte ESP32-DevKitC par un bref appui sur le bouton reset identifié “EN”.
Vous voyez s’afficher les traces générées par le programme d’initialisation de la carte…
… avant celles générées par notre code logiciel:
Un résumé en vidéo:
Cet article est terminé. Vous savez maintenant programmer l’ESP32-DevKitC et utiliser l’interface série avec Arduino.
Bonjour,
Je me suis retrouvé sur ce topic suite à un problème avec le moniteur série.
Il restait bloqué sur le message Déconnecté. Sélectionnez une carte ainsi qu’un port pour vous connecter automatiquement“.
Je viens de comprendre mon problème et du coup je posts… Pour quelqu’un d’autre.
En fait j’avais une première branché et fonctionnelle.
Puis j’ai changé de carte et me suis retrouvé sans moniteur série.
J’ai perdu une heure la dessus alors qu’il suffisait de fermer le montieur série et le rouvrir. Cette fois ces bon.