Connection entre arduino et ESP8266 programer avec esplorer

Portrait de Azerty228961

Bonjour

J'aurais énormément besoin de votre aide pour mon projet. J'aimerais commander a distance avec une application App Inventor le chauffage de ma maison et 3 prises connectées tout en récupérant des données tel que la température et l'humidité.

J'ai réussi grâce au très bon tuto d'U=RI  (https://www.youtube.com/watch?v=i2IUDaC1n4k )  a commander 2 LEDs avec un ESP8266 et le logiciel esplorer. L'ESP8266 est programmer grâce au code que je vous fournis ci-dessous.

Tout fonctionne parfaitement même si je suis en 4G sauf que j'ai besoin de 4 sortie digital (et que l'ESP en a 2) et surtout que ce soit une arduino qui les récupéré car les données seront envoyé ensuite via des modules radio NRF24L01 aux prises. Et il me faudrait aussi un moyen d'envoyer 2 données (température et humidité) jusqu'au téléphone. 

Je pensais utiliser une liaison série entre les deux carte mais je ne connais absolument pas le langage de programmation de l'ESP et je ne sais pas comment m'y prendre...

Merci d'avance pour vos réponses

Code de l'ESP :

wifi.setmode(wifi.STATION)
wifi.sta.config ("BTH*******","3937******") -- Réseau Wifi et Clé  
print(wifi.sta.getip()) -- Affiche l'IP attribuée à l'ESP8266

-- Initialisation des broches GPIO0 et GPIO2
gpio.mode(3, gpio.OUTPUT)
gpio.mode(4, gpio.OUTPUT)
gpio.write(3, gpio.LOW);
gpio.write(4, gpio.LOW);

-- Création du serveur web
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
    conn:on("receive", function(client,request)
    
    -- Création d'un buffer permettant "d'écouter" l'URL
        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
        local _on,_off = "",""
        
        -- Si l'URL contient "GPIO0ON" alors GPIO0 à 3.3V
        if(_GET.pin == "GPIO0ON")then
              _on = " selected=true";
              gpio.write(3, gpio.HIGH);
              print("GPIO0ON")
              
        -- Si l'URL contient "GPIO0FF" alors GPIO0 à 0V      
        elseif(_GET.pin == "GPIO0OFF")then
              _off = " selected=\"true\"";
              gpio.write(3, gpio.LOW);
              print("GPIO0OFF")
              
        -- Si l'URL contient "GPIO2ON" alors GPIO0 à 3.3V
        elseif(_GET.pin == "GPIO2ON")then
              _off = " selected=\"true\"";
              gpio.write(4, gpio.HIGH);
              print("GPIO2ON")
              
        -- Si l'URL contient "GPIO2ON" alors GPIO0 à 0V
        elseif(_GET.pin == "GPIO2OFF")then
              _off = " selected=\"true\"";
              gpio.write(4, gpio.LOW);
              print("GPIO2OFF")
        end        
        client:send(buf);
        client:close();
        collectgarbage();
    end)
end)

Portrait de Azerty228961

J'ai précisé que j'ai suivi le tuto d'U=RI et ce code provient de la vidéo mise en lien 

Portrait de Nathan Garnier

Et sinon pourquoi pas passé par une wemos et programmer avec l'IDE arduino avec le petit tuto que nous a fait Brossden ...

Portrait de Azerty228961

Je l'ai justement vu et envisage grandement de m'en servir 

Merci beaucoup 

Portrait de Nathan Garnier

Et bien bonne chance et tu verra c'est top.

Non plus sérieusement si tu gère bien avec la wemos tu devrai avoir assez de pin pour tout faire sans passer par une arduino.

Portrait de Azerty228961

Il le subsiste une interrogation et pas des moindre :

Comment le câbler  ?

Utiliser un FTDI ou une arduino ?

PS: Je parle de la sulution de brossden 

Portrait de Azerty228961

N'est il pas possible d'utiliser le même principe mais avec un eps8266 car j en possède déjà et ça menbeterais d'acheter autre chose : )