Serveur Web sur ESP8266

Hello,

En ce jour nous allons voir ensemble une utilisation du module wifi ESP8266. Nous allons y installer un mini serveur web et allumé/éteindre une led via des requêtes HTTP. Beau programme n’est-ce pas ?

ESP8266, késako ??

espLes ESP8266 sont des mini modules wifi avec plus ou moins de ports GPIO en fonction des versions (13 à ce jour). Ils s’interfacent et dialoguent en série mais vous pouvez, et c’est là tout l’intérêt, installer un firmware qui permettra la communication en wifi. On pourra par exemple interroger un serveur web, y connecter une sonde de température et l’envoyer à notre box domotique… Les possibilités sont assez énormes ! Si vous vous dites qu’il va encore falloir y laisser un bras pour acquérir ces petits bijoux vous vous tromper ! En effet, ces modules sont vendus pour la modique somme de quelques euros (de 3 à 10€ suivants le modèle et le vendeur).

Si vous voulez les détails de toutes les versions c’est par ici.

Objectif du TP

Dans ce post je vais vous montrer comment installer un serveur web sur un ESP8266-03 et activer un port GPIO à distance via des requêtes HTTP.

Matériel :

  • Un module ESP8266. J’ai pris la version 03 avec une devboard mais vous pouvez prendre le 01 qui est plus simple à utiliser (pas besoin de souder)
  • Un adaptateur USB-Serial TTL FTDI232
  • Une plaque d’essai et des cables.
  • Une led et sa résistance de 220ohm.
  • Un  PC avec Windows (ça fonctionne avec linux mais je ne vous le montrerai pas ici)

Branchement

Les ESP8266 ont 2 modes de fonctionnement, programmation ou run. Comme leurs noms l’indique, quand vous voulez programmer le module avec un nouveau firmware il faut relier le pin GPIO0 à la masse (GND) pour qu’il passe en mode « programmation ». En supprimant le lien entre GPIO0 et la masse vous passer en mode d’exécution. Entre chaque mode il faut redémarrer le module, pour cela il suffit d’enlever l’alimentation et de la remettre.

Dans un premier temps nous allons le flasher avec le firmware nodemcu, connectez donc votre module comme ceci mais ne l’alimenter pas encore :

esp03_vers_serialSi vous avez un ESP01 ne vous inquiétez pas, je vous ai préparez la correspondance des pins.

ESP8266-01-Pin-out

ATTENTION : Il ne faut surtout pas l’alimenter en 5V, j’en ai fait les frais et je confirme… il n’aime pas !! Placer donc le jumper du module FTDI afin qu’il délivre du 3,3V en sortie et non pas du 5V (contrairement au schéma).

Vous pouvez maintenant connecter le tout à votre PC via le moodule usb-serial. Vous devriez voir un nouveau port COM. Si vous n’avez pas le drivers, ils sont disponibles ici. Quand vous avez repérez le n° du port COM notez le dans un coin de votre tête 🙂

Flash de l’ESP

Commencez par télécharger le firmware nodemcu-flasher.

nodemcuflasher

Dézippez l’archive et lancer l’application en fonction de votre système.

nodemcu-flasher

Sélectionnez votre port COM (celui que vous aviez retenu plus haut… comment ça vous l’avez oublié ?) et cliquez sur « Flash ». Si tout se passe bien, le process de flashage (si si ça se dit… :p) se mets en marche ! Si par contre ça ne fonctionne pas, allez dans l’onglet « Config » et vérifié que cela correspond à l’écran ci-dessous :

nodemcu-flasher2

Si c’est le cas, on va dans l’onglet suivant « Advanced » et on va « jouer » avec les différentes options. Normalement avec les paramètres par défaut cela doit fonctionner mais si ce n’est pas le cas, changez la vitesse à 9600 bauds :

nodemcu-flasher3

Voilà voilà, votre ESP doit être prêt. Si vous rencontrez des soucis je vous invite à poster votre problème en commentaire.

Configuration

Maintenant que votre ESP est prêt on va s’amuser avec 🙂

Télécharger le logiciel LuaLoader ici, dézippez l’archive et ouvrez le !

LuaLoader

Dans le menu « Settings/Comm Ports Settings » changer votre port si besoin et configurer le baudrate à 9600 si ce n’est déjà fait, vous pouvez laisser le reste par défaut.

Maintenant on va redémarrer l’ESP en mode « run » afin qu’il démarre sur le système NodeMCU. Pour cela, supprimez la connexion du GPIO0 à la masse, déconnecter l’alim et rebranchez là ! Il démarrera automatiquement en mode « run ».

Cliquez ensuite sur « Connect », si la liaison est OK, le menu en haut à droite passera au vert.

lualoader_connect

A partir de maintenant vous pouvez envoyer vos commandes et/ou script LUA. J’imagine que vous ne savez pas trop quoi envoyer alors je vais vous aider un peu (bah voui, j’suis pas comme ça !!).
On va commencer par configurer le réseau wifi. A droite, dans l’encadré orange vous avez juste à renseigner le nom de votre réseau wifi ainsi que le mot de passe associé, cliquez alors sur « Set AP » qui ne fera rien d’autre que d’associer votre ESP à votre réseau, faite alors « Get IP » pour obtenir une IP. Elle devrait s’afficher dans l’écran principal :

lualoader_wifi

En réalité les commandes qui sont envoyées sont :

A partir de là vous pouvez normalement pinguer votre IP depuis votre PC par exemple et ça doit répondre (Super y’a de la vie !!!). On va maintenant configurer un serveur web statique. Copiez les lignes suivantes :

Puis collez les dans LuaLoader via le bouton « Paste Text ». C’est tout, votre serveur web est configuré ! Ouvrez maintenant votre navigateur et connectez vous sur votre ESP, vous devriez voir votre magnifique page.

web_server_nodemcu

Si vous retourner dans Lualoader vous verrez les détails de votre requête s’afficher.

OK, c’est bien joli mais l’intérêt est restreint je vous l’accorde. Le but maintenant va être d’interagir sur les ports GPIO depuis le serveur Web. On va donc s’amuser à allumer/éteindre une led. Connectez donc une led (avec sa résistance de 220ohm) au port GPIO0 par exemple.

esp03_vers_serial_avec_led

Débranchez/rebranchez l’alimentation pour faire un reset (ou utilisez le bouton restart dans Lualoader). Copiez maintenant le script suivant :

Reconnectez vous à l’adresse de votre ESP, vous devriez voir 2 boutons vous permettant d’allumer et éteindre votre LED. Et ça, ça envoi du pâté !! 🙂

J’ai mis des commentaires succincts dans le script, mais pour les curieux (et les courageux), je vous invite à lire la doc de l’API de nodemcu qui détail chaque commande.

Conclusion

Pour une somme dérisoire nous avons un module wifi avec des ports GPIO, de plus le firmware nodeMCU intégre un grand nombre de librairie ce qui nous laisse une multitude de possibilité pour actionner des éléments à distance comme par exemple une pompe à eau dans le jardin, une bandeau de led sous le lit, un capteur de température…etc.

16 commentaires

  1. bonsoir
    j’ai flashè mon esp8266-01 sans probléme
    avec lualoader j’ai choisi le com , la connexion est ok
    j’ai saisi le ssid et le mot de passe et cliquè sur Set Ap
    puis sur Get Ip
    rien ne se passe, je n’ai pas l’adresse ip
    pouvez vous m’aider ?
    cordialement
    pierre

    1. Bonjour Pierre,

      Êtes vous sûr que votre box accepte les nouveaux équipements sans manipulation de votre part ? (exemple filtrage MAC ? WPS, etc)

      avez-vous aussi éssayé de saisir : print(wifi.sta.getip()) à la main dans la console ?

  2. bonsoir
    j’ai flashè mon esp8266-01 sans probléme
    avec lui loader j’ai choisi le compte, la connexion est ok
    j’ai saisi le ssid et le mot de passe et cliquè sur Set Ap
    puis sur Get Ip
    rien ne se passe, je n’ai pas l’adresse ip
    pouvez vous m’aider ?
    cordialement
    pierre

  3. re-bonjour,

    Mon dernier commentaire est mal passé :

    votre message date un peu mais je pense que vos guillemets ne sont pas les bonnes : il semblerait que des « « » aient été envoyées au ESP à la palce de »  » « . See the difference ?

  4. bonjour,

    Petit problème avec WP ds mon précédent message, il faut lire :

    votre message date un peu mais je pense que vos guillemets ne sont pas les bonnes : il semblerait que des « « » aient été envoyées au ESP à la palce de »  » « . See the difference ?

  5. Bonjour à tous ! Je travaille avec un : https://learn.adafruit.com/adafruit-feather-huzzah-esp8266/using-nodemcu-lua

    J’ai installé les drivers, retenu mon port COM, flashé ma mémoire (en connectant GNIO au GND) pendant la période de Flash. J’arrive ensuite à ouvrir mon port sous Lua la station Wifi démarre correctement (enfin je pense) mais j’ai une réponse NIL quand il s’agit de récupérer l’adresse de mon ESP… Est ce que vous auriez une piste?
    Merci d’avance 😉
    Cordialement

  6. Bonjour

    j’ai reçu deux ESP-03, suivi le tuto, tester sur deux PC mais quand je fais flash il ne se passe rien du tout.

    Un windows 10 64 / Un Windows 7 32 Bits.

    Deux ESP de tester des fois que.
    Je ne vois aucun voyant sur mon ESP c’est normal ?

    Je passe par une interface FDTI232RL USB bien JUMPER en 3.3V ( Qui sort 3.5V d’ailleur
    J’ai suivi le schema.
    Il y a aucun retour du ESP3 8266
    J’ai teste l’ interface FDTI232RL USB seul, il y a un retour et le voyant rouge clignote

    Merci votre aide

  7. Pour julien

    srv=net.createServer(net.TCP)
    srv:listen(80,function(conn)
    conn:on(« receive »,function(conn,payload)
    print(payload)
    conn:send( » Hello, NodeMCU. »)
    end)
    end)

  8. Hello
    Merci pour le tuto mais j’ai reçu deux ESP-03, suivi le tuto, tester sur deux PC mais quand je fais flash il ne se passe rien du tout.

    Un windows 10 64 / Un Windows 7 32 Bits.

    Deux ESP de tester des fois que.
    Je ne vois aucun voyant sur mon ESP c’est normal ?

    Je passe par une interface FDTI232RL USB bien JUMPER en 3.3V ( Qui sort 3.5V d’ailleur )
    Donc la je seche et je comprend pas ce qu’il faut faire ?

    Merci

  9. Bonjour,
    j’ai suivi le tuto flashage OK, lumière bleue clignote sur l’esp
    j’enleve le Gpio0 de la masse
    avec Lualoader 0.91,lorsque je fait un set AP et get IP (avec réseau wifi et mot de passe):je n’ai aucune réponse.
    j’ai essaye chipID pas de réponse
    j’ai reflashé l’esp (en remettant le gpio0 à GND) ; pareil pas de réponse avec lualoader
    j’ai meme refait les manip avec un autre ESP
    Aurait tu une idée d’ou pourrait venir le probleme ?
    merci

    Didier

  10. Bonjour,

    J’ai bien suivi ton tuto !

    Malheureusement, je ne parviens pas à avoir les mêmes résultats…
    Lorsque je colle le premier exemple, rien ne s’affiche dans mes différents explorateur internet à mon adresse IP.

    De plus, lors de l’exécution des commandes, certaines lignes sont affichées stipulant des erreurs (il me semble):

    > srv=net.createServer(net.TCP)
    > srv:listen(80,function(conn)
    >> conn:on(« receive »,function(conn,payload)
    >> print(payload)
    >> conn:send( »
    >>
    stdin:4: unfinished string near ‘ »‘
    > Coucou, C’est moi NodeMCU !!!
    stdin:1: unexpected symbol near ‘
    stdin:1: unexpected symbol near ‘ « )
    >> end)
    stdin:1: unfinished string near ‘ »)’
    > conn:on(« sent »,function(conn) conn:close() end)
    stdin:1: attempt to index global ‘conn’ (a nil value)
    > end)
    stdin:1:  » expected near ‘end’

    Est-ce normal ?

    Comment pourrais-je remédier à cela ?

    ____ J’ai un ESP8266 01 connecté à mon arduino UNO _____

    Mille mercis pour l’info ..

    Julien

    1. bonjour,

      votre message date un peu mais je pense que vos guillemets ne sont pas les bonnes : il semblerait que des « « » aient été envoyées au ESP à la palce de  »  » « . See the difference ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.