aperçu du plan de la guitare

Lutherie-guitare.org

  • Accueil
  • Wiki
  • Forum
  • Bibliographie
  • Inscription
  • Connexion

Catégories populaires

  • Divers (5)
  • Fabrication (95)
    • Assemblage de la guitare (9)
    • Chevalet (8)
    • Eclisses (12)
      • Contre-éclisses (4)
    • Filets (12)
    • Finition (1)
    • Fond (11)
      • Assemblage (6)
      • Barrages (3)
    • Manche (28)
      • Assemblage (2)
      • Découpe (2)
      • Profilage du manche (4)
      • Talon (9)
      • Tête (9)
      • Touche (6)
    • Table d'harmonie (22)
      • Assemblage (2)
      • Barrage (11)
      • Rosace (6)
  • Gabarits et Plans (5)
  • Harpe (10)
  • Non classé (4)
  • Outillage (28)
    • Machines (13)
    • Outils à faire soi-même (26)
  • plans (12)
  • Publications/documents (9)
  • Trucs et astuces (6)

Rechercher sur ce site


Contact

    Votre nom (obligatoire)

    Votre email (obligatoire)

    Sujet

    Votre message

    Surveiller l’hygrométrie à distance de son atelier pour moins de 50 euros!


    Jan 31, 2016

    —

    par

    Etienne
    dans Divers

    Salut,

    Je vous avais parlé il y a quelques temps du Raspberry pi qui pouvait être utile en guise d’ordinateur dans son atelier (et ce d’autant plus depuis la sortie des Raspberry pi 2 et 3 qui sont suffisamment puissants pour naviguer confortablement en utilisant un navigateur moderne. Le logiciel Kodi, un mediacenter libre, permet en outre d’accéder à un nombre incalculable de radios à travers le monde, qu’elles soient hertziennes ou sur le Web : de quoi vous accompagner pendant vos longues heures à travailler sur votre guitare).

    Bref, l’intérêt est qu’on peut y ajouter par exemple une sonde DHT22 qui permet de contrôler l’hygrométrie de la pièce. Le raspberry consomme peu d’énergie et se passe de ventilation (donc pas de problème de poussière).

    Récemment, j’ai découvert une alternative plus légère – et moins chère – pour le contrôle de l’hygrométrie mais qui ne peut pas servir d’ordinateur par contre.

    Il existe une petite puce qui peut entre autres se connecter à votre réseau Wifi et envoyer les données de votre sonde que vous pourrez suivre sous forme de courbe dans un graph. En ce qui me concerne, j’ai branché une petite borne wifi dans l’atelier qui est alimentée en réseau par un boîtier CPL (réseau au travers des prises de courant 220 classiques). Avec cette petite puce, vous pourrez pourquoi pas envoyer une alerte lorsque l’humidité ambiante dépasse un certain seuil ou que la température et trop basse…

    Graph de suivi de la température et de l'humidité de l'atelier sur Thingspeak
    Graph de suivi de la température et de l’humidité de l’atelier sur Thingspeak

    Présentation

    Cette puce se nomme ESP8266 et elle a été intégrée sur une interface permettant de l’utiliser et de la programmer plus facilement grâce notamment à un firmware opensource : cette interface se nomme nodeMCUnodemcu

    Schéma

    Voici le schéma très simple que je vous propose de réaliser :

    schema pour le controle de l'hygrométrie avec node MCU et une sonde AM2302Matériel nécessaire

    Vous aurez donc besoin de :

    • Une sonde AM2302 (il s’agit d’une sonde DHT22 avec une résistance intégrée ce qui permet de la relier directement)
    • Une module node MCU que l’on peut trouver pour 5$ chez aliexpress
    • Une « Half-size breadboard » pour faire les branchements sera suffisante, disponible chez Adafruit.
    • Un peu de fil
    • Facultatif deux LEDs classiques qui permettront de contrôler que la sonde est bien fonctionnelle d’un coup d’oeil.

    Tout le matériel nécessaire peut être commandé chez Adafruit et Aliexpress (pour le nodeMCU).

    Nous pouvons commencer à programmer tout ça.

    Installation du pilote

    La première chose à faire est d’avoir un pilote qui reconnait le nodeMCU lorsqu’on le branche en USB. Le driver qui va bien peut être trouvé ici : https://www.silabs.com/. Il se peut que le module soit reconnu automatiquement, auquel cas il n’y a rien à faire. Sinon :

    sous windows

    Pour windows, la procédure d’installation est assez simple puisque le pilote est fourni avec un « installer » (lire installeur).

    Sous LINUX

    Pour ceux d’entre-vous qui utilisent linux, il faudra compiler le pilote, avec debian, par exemple (4.2.0-1-amd64 correspond à la version de mon noyau, à adapter donc) :

    make -f Makefile
    make install
    cp cp210x.ko /lib/modules/4.2.0-1-amd64/kernel/drivers/usb/serial/
    insmod /lib/modules/4.2.0-1-amd64/kernel/drivers/usb/serial/usbserial.ko 
    insmod cp210x.ko
    rmmod cp210x
    modprobe cp210x
    

    Faites dmesg |tail afin de vérifier que le nodeMCU est bien reconnu lorsque vous le connectez à l’ordinateur.

    Téléchargement d’un firmware adapté

    Il faut ensuite flasher le nodeMCU avec un firmware embarquant le module DHT.

    Le site de nodeMCU permet de demander un firmware avec les modules que l’on veut : http://nodemcu-build.com/index.php (n’oubliez pas de cocher le module DHT)

    Un peu plus tard, vous devriez recevoir le firmware par mail.

    Flashage du module

    Vérifiez que vous avez accès à votre module avec un programme comme putty ou screen sous linux (dans ce cas, sous debian : apt-get install screen).

    Votre module doit fonctionner avec les paramètres par défaut du programme en 9600 bauds. Choisissez par contre le bon port série. COMX sous Windows, /dev/ttyUSB0 sous linux.

    Branchez votre module, lancez putty sous windows ou screen sous linux (screen /dev/ttyUSB0 9600), appuyez sur le petit bouton reset du module. Screen ou putty devraient au moins pouvoir se connecter en 9600 sans retourner d’erreur (fenêtre noire). En appuyant sur reset, vous devriez voir du texte apparaître, dans mon cas, ça affichait un peu n’importe quoi, ce n’est qu’une fois après avoir flashé le module que j’ai pu afficher les caractères qu’il me renvoyait correctement.

    Sous linux (debian) :

    Un programme python est utilisé pour flasher votre module avec le firmware que vous avez reçu.

    apt-get install python python-serial git
    mkdir -p ~/Documents/nodeMCU
    cd ~/Documents/nodeMCU
    git clone https://github.com/themadinventor/esptool.git
    cd esptool
    python esptool.py --port /dev/ttyUSB0 write_flash 0x00000 firmware
    

    Sous Windows :

    NodeMCU propose sur son site un outil facile à installer et à utiliser pour flasher le module :

    https://github.com/nodemcu/nodemcu-flasher/

    Choisissez 32 ou x64 en fonction de la version de votre système d’exploitation.

    Inscription sur thingspeak

    Inscrivez vous sur thingspeak et créez votre chaîne (channel) :

    thingspeak-channel-settingsdans la partie API Keys, notez la clé perettant d’écrire dans votre chaîne.

    le programme – init.LUA

    Le programme que je vous propose (voir ci-dessous) permet d’une part de créer un petit serveur WEB sur le nodeMCU qui permet à travers une simple page Web d’interroger la sonde de température et d’humidité ; et d’autre part, d’envoyer à intervalle régulier les données sur le site thingspeak.com. Avant d’utiliser le programme, créez votre channel sur le site pour pouvoir y envoyer les données.

    Il est écrit en langage lua, un langage très simple et de très haut niveau. Voici quelques ressources intéressantes :

    https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/using-nodemcu-lua

    http://nodemcu.readthedocs.org/en/dev/

    Le programme que je vous propose est un peu redondant, mais c’est pour montrer quelques unes des possibilités que ce module offre.

    Voici le programme, enregistrez le sous le nom init.lua avant de l’envoyer au module. N’oubliez pas de modifier la clé thingspeak (key =) et les paramètres de votre WIFI, et éventuellement, l’adresse IP du serveur fournissant l’API de thingspeak.com (ici 184.106.153.149) que vous pouvez obtenir ici : lien vers l’IP statique de l’API

    Les leds sont branchées sur les GPIO 6 et 7, la sonde sur le GPIO 4. Changez ces valeurs si vos branchements ne correspondent pas.

    wifi.setmode(wifi.STATION)
    wifi.sta.config{ssid="NOM DE VORE WIFI",pwd="MA_CLE_WIFI"}
    led1 = 6
    led2 = 7
    DHT22 = 4
    key = "VOTRE CLE THINGSPEAK"
    gpio.mode(led1, gpio.OUTPUT)
    gpio.mode(led2, gpio.OUTPUT)
    gpio.write(led1, gpio.LOW);
    gpio.write(led2, gpio.LOW);
    srv=net.createServer(net.TCP,30)
    if srv then
      srv:listen(80,function(conn)
        conn:on("receive", function(conn,request)
            gpio.write(led1, gpio.LOW);
            gpio.write(led2, gpio.LOW);
            local buf = "";
            local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
            if(method == nil)then
                _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
            end
            local _GET = {}
            if (vars ~= nil)then
                for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
                    _GET[k] = v
                end
            end
            buf = buf.."<h1> ESP8266 Sonde de temperature connectee</h1>";
            buf = buf.."<p>Afficher les valeurs de temperature et d'humidite : <a href=\"\"><button>Actualiser</button></a></p>"
            local i=0
            status = 2
            while status ~= dht.OK and i < 30 do
                    tmr.delay(100000)
                    status,temp,humi,temp_decimial,humi_decimial = dht.read(DHT22)
                    if( status == dht.OK ) then
                            buf = buf.."<p>DHT Temperature:"..temp..";".."<br />Humidite : "..humi.."</p>"
                            print("DHT Temperature : "..temp..";".."Humidite : "..humi)
                            gpio.write(led2, gpio.HIGH)
                    end
                    i=i+1
            end
            if(i==30)then
                    gpio.write(led1, gpio.HIGH);
            end
            conn:send(buf);
            conn:on("sent",function(conn) conn:close() end)
            
        end)
      end)
    end
    
    function sendData()
            gpio.write(led1, gpio.LOW);
            gpio.write(led2, gpio.LOW);
            print("Envoi des donnees vers thingspeak.com")
            conn=net.createConnection(net.TCP, 0)
            conn:on("receive", function(conn, payload) print(payload) end)
            local i=0
            status = 2
            tmr.delay(1000000)
            while status ~= dht.OK and i < 30 do
                    status,temp,humi,temp_decimial,humi_decimial = dht.read(DHT22)
                    if( status == dht.OK ) then
                            gpio.write(led2, gpio.HIGH)
                    end
                    i=i+1
            end
            if(i==30)then
                    gpio.write(led1, gpio.HIGH);
            else
                    update_request = "GET /update?key="..key.."&field1="..temp.."&field2="..humi.."HTTP/1.1\r\n".."Host: api.thingspeak.com\r\n".."Accept: */*\r\n\r\n"
                    conn:on("connection", function(c)
                            conn:send(update_request)
                    end)
                    conn:connect(80,"184.106.153.149")
            end
            conn:on("sent",function(conn)
                      print("Closing connection")
                      conn:close()
            end)
    
            conn:on("disconnection", function(conn)
                          print("Deconnecte...")
            end)
    end
    sendData()
    -- affiche l'adresse IP du module sur le reseau local
    print(wifi.sta.getip())
    -- send data every X ms to thing speak
    tmr.alarm(2, 60000, 1, function()
                                 sendData()
                           end )

    Copie du programme sur le module

    Sous linux :

    cd ~/Documents/nodeMCU
    git clone https://github.com/4refr0nt/luatool.git

    Sous windows :

    Installez python 2.7.

    installez git et cloner le dépôt suivant :

    https://github.com/4refr0nt/luatool.git

    Ou alors, rendez vous à la page suivante : https://github.com/4refr0nt/luatool et cliquez sur download zip pour obtenir le programme.

    Luatool : pour quoi faire ?

    Luatool permet d’envoyer votre programme sur le module nodeMCU, et notamment le fichier init.lua qui est exécuté automatiquement au démarrage de ce dernier.

    Envoi du programme :

    Branchez votre module avec la prise USB.

    Voici la commande linux permettant d’envoyer votre programme sur le module (il faut parfois la lancer deux fois avant que ça fonctionne) :

    python luatool.py --port /dev/ttyUSB0 --src init.lua --dest init.lua --restart

    Connectez vous avec screen par exemple :

    screen /dev/ttyUSB0 9600

    Appuyez sur le bouton reset, et vérifiez à l’écran que tout à l’air de bien fonctionner et recueillir son adresse IP qui est affichée par le programme avec la ligneprint(wifi.sta.getip()). Si vous ne voyez que des caractères étranges, essayez d’autres valeurs de vitesse de connexion que 9600 avec putty ou screen (115200, 74880)

    A partir de là, le module peut fonctionner de manière autonome et être branché simplement avec un chargeur de téléphone portable.

    Une fois l’adresse ip récupérée, il suffit de se rendre à son adresse dans un navigateur Internet depuis un téléhphone, une tablette, un ordinateur connecté sur le réseau WIFI pour pouvoir interroger la sonde :

    http://192.168.0.10 par exemple.

    Vous devriez aussi voir les données arriver sur votre chaîne thingspeak en temps réel à intervale régulier (toutes les 60 secondes).

    Une redirection du port 80 sur votre routeur vers l’adresse IP locale de votre puce doit vous permettre facilement d’interroger votre sonde depuis n’importe où.

    Libre à vous de modifier le programme pour envoyer un mail en cas d’humidité trop haute ou que sais-je encore !

    Articles similaires


    1. Raspberry : un ordinateur idéal pour son atelier (de lutherie ou non)

    Commentaires

    4 réponses à “Surveiller l’hygrométrie à distance de son atelier pour moins de 50 euros!”

    1. Avatar de Hans
      Hans
      12 avril 2016

      Great tutorial. I just wanted to note the acutal ThingSpeak IP address incase you have an issue with this code in the future. The offical static IP for ThingSpeak is 184.106.153.149 found here (http://www.mathworks.com/help/thingspeak/channel-settings.html#endpoints).

      Répondre
      1. Avatar de Admin
        Admin
        12 avril 2016

        Hello,

        Thank you for this correction ! I update the post !

        Répondre
    2. Avatar de lucky
      lucky
      30 juin 2018

      PS : tu peux aussi utiliser un arduino nano 😉 il se programme en C, le logiciel est libre et dispo pour linux.
      Le rapsberry c’est bien pour une mesure de temps en temps

      Répondre
      1. Avatar de Etienne
        Etienne
        8 juillet 2018

        Merci pour l’info Lucky ! Bon mais là c’est pas un raspberry, c’est une NodeMCU 😉

        Répondre

    Laisser un commentaire Annuler la réponse

    Votre adresse e-mail 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 la façon dont les données de vos commentaires sont traitées.

    Lutherie-guitare.org

    Site amateur autour de la fabrication des guitares acoustiques – la guitare DIY !