mardi 1 mars 2016

Afficher dans une page web l'état des pins GPIO de l'ESP8266

Il y a quelques mois, j'avais publié un article qui expliquait comment contrôler l'état d'une sortie de l'ESP8266 à partir d'une page web, ce qui nous avait permis d'allumer et éteindre une LED.

Aujourd'hui, nous allons plutôt afficher dans une page web l'état de quelques-unes des pins GPIO d'un module ESP8266 programmé au moyen de l'IDE Arduino.  Ça peut se révéler très utile lorsque des capteurs sont branchés à votre module ESP8266.

Contrairement au tutoriels précédents, dans lesquels j'utilisais un module ESP-01, j'utiliserai cette fois-ci un module ESP-12, puisqu'il comporte un plus grand nombre de pins GPIO (et l'une d'entre elles comporte un convertisseur analogique-numérique (ADC) qui nous permettra d'afficher dans notre page web une mesure analogique).   Si votre module est un ESP-01, vous pouvez quand même utiliser ce tutoriel, mais vous serez limité à la lecture des pins GPIO 0 et 1. Cette page peut être utile pour distinguer les différents modèles d'ESP8266.

IDE Arduino

Pour être en mesure de programmer votre module ESP-12 avec l'environnement de programmation intégré Arduino, il est important que vous ayez installé dans le logiciel les extensions nécessaires.  Vous pouvez vous référer à cet article si ces extensions complémentaires n'ont pas déjà été installées.


Le montage


Le module est branché à un ordinateur par l'entremise d'un convertisseur USB-UART fonctionnant en 3,3 V (si vous n'en avez pas, vous pouvez aussi utiliser une carte Arduino, comme je le montrais dans cet article).

Toutefois, compte tenu du fort courant consommé par le module, vous le reliez à sa propre alimentation de 3,3 V et non à la sortie 3,3 V du convertisseur USB-UART,

La pin GPIO0 doit être reliée au GND pour que le module puisse être programmé, mais il se peut que vous deviez la relier à 3,3 V pendant le fonctionnement du sketch (dans mon cas, c'était parfois nécessaire, mais pas toujours).

Je vais afficher dans une page web l'état des pins GPIO 4 et 5:  ces dernières seront donc branchées à GND ou à 3,3 V, selon l'état logique auquel on désire les soumettre.

Je désire également afficher l'état de la seule entrée analogique:  celle qui s'appelle ADC/TOUT.  Je vais y brancher un potentiomètre mais attention:  contrairement à ce qu'on pourrait penser, cette pin accepte un signal analogique variant entre 0 et 1 V.   Je dois donc ajouter une résistance en série avec mon potentiomètre pour que la valeur maximale de l'entrée analogique soit de 1 V et non de 3,3 V. Pour un potentiomètre de 10 kΩ, une résistance de 23 kΩ fait l'affaire (en pratique, j'ai utilisé une résistance de 22 kΩ en série avec une résistance de 1 kΩ) .

Le sketch

Le sketch n'est pas très long, car ce sont les bibliothèques qui font tout le travail.



(Comme point de départ, j'ai utilisé un sketch proposé dans un tutoriel d'Adafruit, mais je l'ai beaucoup modifié.)

Le résultat

Lors du démarrage du programme, si le moniteur série est ouvert, votre module ESP8266 y affiche l'adresse IP qui lui a été assignée (au besoin, vous pouvez faire un reset pour redémarrer le programme; il s'agit de relier temporairement la pin reset au GND).


Vous accédez à cette adresse IP au moyen de n'importe quel fureteur web pour afficher une page web comportant l'état des pins GPIOs de votre module ESP-12 (attention:  cette page n'est pas accessible sur internet, vous devez y accéder au moyen d'un appareil branché sur le même réseau local que votre ESP8266).

Si vous faites des changements (en tournant le potentiomètre ou en modifiant la tension d'une des autres pins), vous devez rafraîchir la page pour que les nouvelles données s'affichent.




Yves Pelletier   (TwitterFacebook)

3 commentaires:

  1. et si je veux commander un moteur de chassis!!!!
    par exp ( je veux faire une page web qui me permet de commander le robot avancer/reculer son besoin d'une liaison cable) deja j'ai vu ton voiture teleguidee mais je veux que la commande a travers dans la page web
    merci de me laisse une reponse !!!!

    RépondreSupprimer
  2. merci pour le tuto
    donc si je veux commander par exp les moteur d'un robot a travers une page web son besoin de soolution teleguide qui t as publier est c k sera possible ou nn ?

    RépondreSupprimer

Related Posts Plugin for WordPress, Blogger...