D'accord, mais pourquoi ne pas plutôt utiliser une carte de développement qui fonctionne déjà à un niveau logique de 3,3 V comme, par exemple, la carte MSP430 Launchpad de Texas Instruments? Aucune conversion de niveau logique n'est nécessaire, et le circuit s'en trouve donc grandement simplifié.
Une première tentative...pas très convaincante
Tout comme l'Arduino Uno, le msp430 Launchpad ne comporte qu'un seul canal de communication série ("hardware UART"). Dans un premier temps, j'ai tenté de répliquer la méthode que j'avais appliquée avec succès avec l'Arduino Uno: utiliser la bibliothèque Software Serial pour dédier deux autres pins à la communication série entre le Launchpad et l'ESP8266. Grâce à l'IDE Energia, jue pouvait recycler sans modification le sketch que j'avais utilisé pour l'Arduino.
Ça a semblé fonctionné, à première vue, sauf que les messages affichés dans le moniteur série d'Energia (en provenance de l'ESP8266) n'étaient pas complets: pour une raison que j'ignore, plusieurs caractères étaient manquants.
Voyez ci-dessous le résultat de ma requête "AT+CWLAP": chaque ligne de la réponse devrait commencer par "+CWLAP", mais la plupart des lignes commencent par "CWA", "+WA", "CLP", etc.: plusieurs des caractères semblent avoir été perdus en cours de route!
Changeons de méthode
Suite à ces décevants résultats, j'ai décidé de changer d'approche: je n'utilise que le convertisseur USB/série inclus sur la carte Launchpad, sans utiliser le microcontrôleur msp430 qui se trouve sur la même carte.
Puisqu'on ne veut pas que le microcontrôleur interfère avec la communication série, nous téléversons un sketch vide dans le microcontrôleur (c'est simplement l'exemple "Bare Minimum" situé dans les exemples "Basic" d'Energia):
Une autre option, inutilement radicale mais tout aussi efficace, aurait été de retirer carrément le microcontrôleur de la carte!
Attention aux jumpers du Launchpad
Les cartes msp430 Launchpad comportent une paire de jumpers qui doivent être orientés différemment selon qu'on souhaite utiliser l'UART en hardware ou en software: assurez-vous de les placer en position "hardware", comme sur la photographie ci-dessous.
Le pinout du breakout ESP-01
Le circuit complet
Je ne le rappellerai jamais assez: l'ESP8266 consomme beaucoup de courant, et ce ne serait donc pas une bonne idée de l'alimenter au moyen de la sortie 3,3 V du Launchpad. Vous trouvez donc une alimentation autonome de 3,3 volts capable de fournir au moins 300 mA, et vous branchez la borne positive de cette alimentation à la pin Vcc, et la borne négative de l'alimentation à la pin GND de l'ESP8622 (cette pin doit également être reliée à la pin GND du Launchpad, pour que tous les morceaux de votre circuits mesurent leurs tensions à partir de la même référence).
UTXD (données émises par l'ESP8266) doit être branchée à la sortie UART du Launchpad (P1.2).
URXD (données reçues par l'ESP8266) doit être branchée à l'entrée UART du Launchpad (P1.1)
(On pourrait penser qu'il faut coupler Tx et Rx mais non: les données envoyées par l'ordinateur son reçues par le msp430 et par l'ESP8622, alors que les données reçues par l'ordinateur pourraient tout aussi bien être émises par le msp430 que par l'ESP8622).
CH_PD doit être branché à 3,3 volts, et les 3 autres pins (RST, GPIO0 et GPIO2) peuvent l'être aussi.
Réglages du moniteur série d'Énergia
Tout comme nous l'avions fait pour l'Arduino dans l'autre article, nous réglons le moniteur série d'Énergia à 9600 bauds et à "Both NL & CR".
Commencez par brancher le Launchpad et afficher le moniteur série. Ensuite, alimentez l'ESP8266.
Résultats
Vous pouvez maintenant envoyer des commandes AT à l'ESP8266 en les écrivant dans le champ situé en haut du moniteur série d'Energia. Référez vous à mon article précédent pour des suggestions de commandes AT, ainsi que les réponses que l'ESP8266 devraient normalement vous retourner.
Voyez ci-dessous les résultats obtenus suite à une requête AT+CWLAP: cette-fois, il n'y a pas de caractères manquants.
J'ai détecté pas moins de 28 réseaux sans fil dans mon voisinage, soit beaucoup plus que ce que j'avais détecté en utilisant l'Arduino dans mon prédédent article: c'est probablement parce que cette fois-ci, je me trouvais à un endroit différent dans la maison, deux étages plus haut...
Yves Pelletier (Twitter, Facebook)
Bonjour,
RépondreSupprimerJ'ai juste parcouru l'article et donc je ne sais pas si le problème est le même mais j'ai eu à peu près la même chose : quelques caractères incohérents dans les réponses de l'esp8266 à travers un arduino avec SoftwareSerial. J'ai résolu le problème en changeant le baudrate de l'esp8266 à l'aide d'une commande AT de 115200 à 9600 bauds. Visiblement SofwareSerial a du mal à 115200 bauds...