lundi 7 mars 2016

8 capteurs analogiques sur le même ESP8266

Il y a quelque jours, je vous ai présenté un projet qui consistait à afficher dans une page web les mesures prises par des capteurs branchés à un module ESP8266.  Puisque l'ESP-12 ne comporte qu'une seule entrée analogique, nous nous étions limité à un seul capteur analogique.

Doit-on en conclure qu'il est impossible de brancher plusieurs capteurs analogiques sur un même ESP8266? Pas du tout:  grâce au multiplexeur CD4051 (que nous avions déjà étudié dans cet article publié à l'été 2014), il est possible de brancher jusqu'à 8 capteurs analogiques différents sur l'unique entrée analogique de l'ESP8266.  C'est ce que nous allons faire aujourd'hui.

Notre projet consiste donc à brancher 8 capteurs analogiques à un même module ESP8266, et à afficher leur valeur dans une page web...

...bon d'accord, dans les faits, je me suis contenté de 4 capteurs, car ça devenait un peu redondant, mais puisque le CD4051 comporte 8 entrées, vous pouvez facilement modifier mon sketch pour brancher 8 capteurs si c'est ce dont vous avez besoin.

IDE Arduino

Nous allons programmer l'ESP8266 au moyen de l'IDE Arduino.  Les extensions nécessaires à la programmation de l'ESP8266 doivent donc avoir été installées.  Si ce n'est pas le cas, vous pouvez suivre les instructions disponibles ici.

Le circuit

  • Vous devez utilisez un module ESP8266 qui comporte une entrée analogique (ADC), comme par exemple le module ESP-12.  Le module ESP-01 ne convient pas, puisqu'il ne comporte pas d'entrée analogique.
  • L'entrée ADC de l'ESP8266 requiert une tension située entre 0 et 1 V;  puisque les capteurs sont alimentés par une tension de 3,3 V,  vous devez concevoir vos diviseurs de tension de façon à tenir compte de cette limite. La loi d'Ohm vous permet de calculer facilement les valeurs de résistances nécessaires, et c'est une bonne idée de faire quelques tests avec un multimètre avant de brancher vos capteurs sur l'ESP8266.
  • L'alimentation de 3,3 V n'est pas la sortie 3,3 V du convertisseur USB-UART.  Il s'agit d'une alimentation externe, car l'ESP8266 a la réputation d'être plutôt gourmand en courant.
  • Je n'explique pas ici le fonctionnement détaillé du multiplexeur CD4051, puisque je l'ai déjà fait ici.
  • Le capteur 1 (un potentiomètre) est relié à l'entrée Y0 (pin 13) du CD4051.
  • Le capteur 2 (une photorésistance) est relié à l'entrée Y1 (pin 14) du CD4051
  • Le capteur 3 (une thermistance) est relié à l'entrée Y2 (pin 15) du CD4051
  • Le capteur 4 (un potentiomètre) est relié à l'entrée Y3 (pin 12) du CD4051
  • GPIO4 de l'ESP8266 est configuré en sortie et relié à l'entrée S0 (pin 11) du CD4051
  • GPIO5 de l'ESP8266 est configuré en sortie et relié à l'entrée S1 (pin 10) du CD4051
  • GPIO15 de l'ESP8266 est configuré en sortie et relié à l'entrée S2 (pin 9) du CD4051
  • La sortie du CD4051 est la pin 3; elle est reliée à l'entrée ADC de l'ESP8266.
  • Les pins GPIO4, GPIO5 et GPIO6 servent à sélectionner le capteur dont la valeur sera acheminée à l'entrée ADC de l'ESP8266,


Le sketch

Voici le sketch qui permet à l'ESP8266 d'afficher les résultats sur une page web:


Utilisation et résultats

Lors du démarrage du programme, l'adresse IP de votre ESP8266 s'affiche dans le moniteur série.


Il s'agit d'accéder à cette adresse IP à partir de n'importe quel fureteur web lié au même réseau WiFi pour voir s'afficher les valeurs mesurées par chaque capteur­.   Vous devez rafraîchir la page pour que ces valeurs se mettent à jour.




Yves Pelletier   (TwitterFacebook)

1 commentaire:

  1. Bonjour
    merci de votre tuto très instructif. j'avais oublié ce circuit 4051... j'aimerais plutôt qu'une page web transmettre les 4 (ou plus) valeurs analogiques vers mon serveur MQTT. j'ai encore du mal à cause des variables pointeur, mais ça va finir par entrer!! Le but est d'utiliser 8 capteurs ACS712 pour mesurer le courant au niveau du tableau électrique.
    Encore merci pour vos précieuses explicaions

    RépondreSupprimer