Un capteur de température/humidité en WIFI avec une page Web

Medium htphridsba06j22ifpge

Difficulté:

La node NodeMcu une devboard basé sur l’ESP8266



Nous allons fabriquer un capteur de température et d’humidité connecté à un réseau Wifi qui présentera ces résultats sur une page web.
Voici les vidéos du tutorials qui supportes le texte :
https://www.youtube.com/playlist?list=PLyKgrwooCKT9jv_3O-LfhL22uCyQlDPzm

Matériel

Medium qxdehrovhxs7mychiqoj

Budget:

8 €

  • Un NodeMCU : Disponible ici
  • Un DHT22 (ou 11) :Disponible ici
  • Une résistance de 1K (facultative) : Disponible ici
  • Une platine d’essais et des fils : Disponible ici

    Etape 1 : Le composant central ESP8266

    Medium t5y53sfhfq127cu95kam


    La NodeMcu est une platine de développement autour du composant ESP8266. L’ESP8266 au-delà d’un composant de communication wifi est un microcontrôleur à part entière.
    Il possède 14 E/S digitales et une entrée analogique, la NodeMcu permet de s’en servir simplement en apport un liaison série via USB pour le programmé, une régulation de tension à 3,3V sur la liaison USB, un bouton pour flasher le circuit et un bouton reset.

    Etape 2 : Installation :


    Pour faire fonctionner le node, nous allons avoir besoins des éléments suivants :
    Un driver pour que la liaison USB/Série fonctionne
    Un outil de flash pour mettre la node à jour
    Un outil de gestion pour charger le code et passer des commandes à la NodeMcu
    Le GITHUB de la NodeMcu se trouve ici : https://github.com/nodemcu/
    Installer le divers qui se trouve ici :
    https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx
    Téléchager le dernier Firmware (pour le tuto pernez le en mode float):
    https://github.com/nodemcu/nodemcu-firmware/releases
    Télécharger et dezipper ESPlorer :
    http://esp8266.ru/esplorer/
    Télécharger l’outil de flash :
    https://github.com/nodemcu/nodemcu-flasher/tree/master/Win64/Release

    Etape 3 : Flasher le composant

    Medium gayz2rnrof1v1fdkhnfa


    Dans l’onglet config, mettez le chemin vers le firmware que vous avez télécharger, cocher la case.
    Appuyer sur le bouton flash de la NodeMcu (et rester appuyé), Dans l’onglet Opération appuyez sur flash et attendez la fin de l’opération (la barre bleue se remplit).
    Voilà notre composant est à jour, nous allons pouvoir le programmer

    Etape 4 : La connectique

    Medium xehkxpsehwbsk5kjkiyn


    Rien de difficile suivez le schéma

    Etape 5 : Le code :


    Le code du tuto se trouve ici : https://github.com/pihito/nodeMcuTutorial/blob/master/DHT.lua
    Si vous n’avez jamais fait de lua, je vous conseille la lecture de ce site :
    http://www.luteus.biz/Download/LoriotPro_Doc/LUA/LUA_Training_FR/Introduction_Programmation.html
    Et la sheet de synthèse :
    http://thomaslauer.com/download/luarefv51.pdf

    a.Connexion au wifi :
    Le code ci-dessous permet de se connecté au wifi, remarquez le 1 dans les paramètres de la fonction wifi.sta.config qui permet de connecter la node quand le wifi est à porté

    –fonction de connexion au WIFI en mode station
    function connect()
    wifi.setmode(wifi.STATION)
    wifi.sta.config(SSID, PASSWORD, 1)
    wait_for_wifi_conn ( )
    end

    b.Attendre que le wifi soit connecté avant de continuer
    Comme on ne connait la le temps de connection au wifi on réaliser un wathdog avec un timer pour suveiller que nous nous sommes connecté. Le timer utilise un callabck qui est ici réaliser à l’aide d’une fonction anonyme :
    function wait_for_wifi_conn ( )
    tmr.alarm (1, 1000, 1, function ( )
    if wifi.sta.getip ( ) == nil then
    print (“Waiting for Wifi connection”)
    else
    tmr.stop (1)
    print (“ESP8266 mode is: ” .. wifi.getmode ( ))
    print (“The module MAC address is: ” .. wifi.ap.getmac ( ))
    print (“Config done, IP is ” .. wifi.sta.getip ( ))
    …….
    end
    end)
    end
    Bien nous allons trarvailler cette fonction annonyme pour remplacer les « …. » par le lancement du serveur web.

    c.Lancer le serveur et intercepter les demandes de connexion
    Rien de plus simple, on a une fonction qui crée un serveur TCP puis on écoute le port 80 avec celui-ci (et le port 80 est le port standard du http hein). Dans la fonction d’écoute on passe le nom d’une fonction qui sera appelée en cas de connexion.
    –lancement du serveur web
    svr = net.createServer (net.TCP, 30)
    svr:listen (80, http_conn)
    d.Lire le capteur :
    La lecture se fait via l’objet dht inclus dans le firmware de base. La seule particularité ici est dû au langage LUA qui permet à la fonction dht.read de retourner plusieurs paramètres en une seule fois.

    –lecture du capteur de température
    –pin : numéro de la patte ou est branche le capteur
    –temp,humi temperature et humidite
    function readDht(pin)
    status,temp,humi,temp_decimial,humi_decimial = dht.read(pin)
    if( status == dht.OK ) then
    print(“DHT Temperature:”..temp..”;”..”Humidite”..humi)
    elseif( status == dht.ERROR_CHECKSUM ) then
    print( “DHT Checksum error.” );
    elseif( status == dht.ERROR_TIMEOUT ) then
    print( “DHT Time out.” );
    end
    return temp,humi
    end

    e.Traiter les clients :
    C’est la fonction http_comm que j’ai créé qui se charge du traitement, elle prend une connexion, affiche l’entête http dans la console, envoie une réponse, une fois envoyé ferme la connexion. Tous cela utilise des callbacks avec des fonctions anonymes d’où l’intérêt de bien indenter le code.
    — fonction de prise en charge des clients web, renvoie la pages HTML
    function http_conn(sock)
    sock:on(“receive”,function(sock,payload)
    print(payload) — for debugging only
    –generates HTML web site
    temp,humi =readDht(PIN)
    sock:send(……)
    sock:on(“sent”,function(sock) sock:close() end)
    end)
    end
    f.Envoyer la purée HTML
    Il ne reste plus qu’à envoyer le HTML dans la fonction send, c’est du HTML standard. La seule particularité est la syntaxe ‘..variable..’ au milieu du code qui réalise une concaténation de la string et d’une variable avec l’opérateur ..
    Je vous laisse regarder le code HTML dans le GitHub.

    Et voilà….

    Vous aimez ce tutoriel ?


    Ipxav

    07 juil. 2016 à 10:25

    Salut Seb, j'ai refait le montage ça marche nickel. Sur ton schéma il y a un petit bug sur le GND qui est mal cablé sur le schéma. Par contre quand je débranche le nodemcu du pc et que je le branche sur une alim de téléphone ça ne se connecte pas sur le wifi :S.

    Merci pour le tuto en tout cas 🙂

    Fred Thx

    07 juil. 2016 à 10:26

    Salut Sébastien,

    Merci pour le tuto. Je l'ai suivi et ça fonctionne bien (mon capteur est un DTH11).

    Pour répondre à Ipxav, pour que le script lua démarre tout seul, il faut le nommer init.lua. Comme ça sans l'ordi, juste avec une alimentation 5V, ça fonctionne très bien.

    Ipxav

    07 juil. 2016 à 10:26

    nickel merci beaucoup fred 🙂 je teste ça ce soir !

    Fred Thx

    07 juil. 2016 à 10:26

    Un peu mieux : tu le script dth.lua et tu créé un autre script init.lua ( aussi) dans lequel tu a juste mis : . C'est plus jolie comme solution!

    Ipxav

    07 juil. 2016 à 10:26

    Super ça fonctionne merci !


    Recevez une fois par mois les meilleurs tutoriels Technologie dans votre boîte mail






    “Lille Makers”

    Lille Makers


    S'inscrire:



    En cliquant sur s'inscire, vous acceptez de respecter les conditions générales d'utilisation de Oui Are Makers.

    • Vues: 7091
    • J'aime: 6