ESP8266 par où commencer ou première expérience

Dans cet article, je veux partager mon expérience de ce qu'il faut faire lorsque les châles ESP8266 tombent entre mes mains pour la première fois. Faire immédiatement une réservation que la cueillette de tels morceaux de fer, ainsi que la programmation, est mon passe-temps pour mon argent et dans mon temps libre de mon activité principale. Par conséquent, veuillez traiter le degré de critique de ce matériel avec une certaine remise.

Pourquoi ai-je décidé d'écrire ceci? C'est simple: j'ai tué 3 semaines pour savoir par où commencer et comment ça marche. De plus, je vais essayer de collecter un petit catalogue de liens pour travailler avec ESP8266. J'espère que ces informations vous feront gagner au moins une fraction du temps.

image

Commençons donc!

J'ai commandé 3 options de carte pour moi sur un site chinois célèbre:

  1. ESP8266 WIFI Serial Wireless Dev Test Board basé sur ESP-12 (ci-après «Yellow Board») (3,12 $)
  2. ESP8266 ESP-07 avec plaque d'adaptation pour ESP8266 (ci-après ESP-07) (2,30 $)
  3. LoLin V3 NodeMcu Lua basé sur ESP-12 (ci-après dénommé "Lolin") (3,12 $)

Les raisons pour lesquelles j'ai pris un tel zoo:

  1. Le tableau jaune a déjà des LED intégrées que vous pouvez immédiatement clignoter; pour l'alimentation, vous pouvez utiliser non pas une fabuleuse 3,3 V, que vous devez en quelque sorte obtenir, mais 3 piles AA ou en connectant 4,5 V (ce que j'ai fait).
  2. LoLing m'a soudoyé par le fait qu'il est connecté à l'aide d'un câble micro USB et qu'elle n'a pas besoin de convertisseurs UART - il est immédiatement intégré à celui-ci sur la base de la puce chinoise CH340, pour laquelle vous pouvez facilement trouver des pilotes sur win7x64 et win10x64 (mes cas), et, encore une fois alimenté par un adaptateur ordinaire avec une sortie USB, plutôt qu'un 3,3V sophistiqué.
  3. ESP-07 . - , , . Adapter Plate — 20 , .

Pour commencer - vérifier les modules.

Dans toutes les instructions de démarrage, ils écrivent que si vous avez connecté l'alimentation et que le réseau WiFi AI-THINKER xxxxxxx est apparu, alors l'appareil fonctionne. C'est arrivé avec mes appareils - ils ont tous créé un réseau WiFi auquel vous pouvez vous connecter. Hourra! Gagné! J'étais ravi, mais tôt.

Pour commencer, j'ai décidé d'expérimenter avec le Yellow Board. Le vendeur avec le meilleur indicateur de prix dans la description du produit n'avait que des photos. Et pas un mot de description. Sur les ressources en russe, il y avait des références à ces tableaux, mais je n'ai pas trouvé de détails à ce sujet. Chez certains vendeurs, j'ai vu cette instruction:

Instruction du tableau jaune
1. Android phone installation IOT.APK, IOS client be released later
2. shorting cap connected to the power to enter the programming mode, enter the normal operating state removed
3. Replace the battery, mobile search network «AI-THINKER» router
4. join the router (the router module form) password is: ai-thinker
5. after the success can be added directly to the control module of the mobile phone.
6. Enter the home router «SSID» and «Password» in the «Configure Device», then click on the icon at the top of the router, wait a few moments after the jump to join the router, connect the phone router WiFi, again «discovered device» to achieve control in the LAN.

:

1. Wi-Fi ( 5.0 !) IOT.APK, IOS
2. , .
3. ( ) Wi-Fi «AI-THINKER»
4. «ai-thinker»
5. IOT . . , .

L'incohérence était que mon réseau AI-THINKER xxxxxxxxxx n'a pas demandé de mot de passe, mais immédiatement le téléphone s'y est connecté. Et le point blanc de l'application n'a pas "vu" l'ESP après la connexion. La LED RGB était allumée en bleu avec un cavalier installé ou en vert sans lui.

image

J'ai deviné que peut-être les Chinois soudaient - ils soudaient, mais ils ont oublié de flasher (ou ont flasqué de travers). J'ai donc décidé de me coudre. Pour le firmware, j'ai utilisé ESP8266 Flasher. Et puis une deuxième surprise est sortie: aucun programme n'a reconnu la carte, n'a pas répondu aux commandes, le firmware n'a pas inondé. Connecté via Arduino et via le convertisseur UART - rien. Les deux autres cartes ont déjà été reflasher et clignoter avec une LED, mais ici, c'est terne. Jusqu'à ce que je devine sonner les contacts.

Trois contacts pour le firmware sont affichés séparément sur cette carte: TX, RX, GND. Il s'est donc avéré que TX a été élevé sur le RX de l'ESP-12 lui-même, respectivement, RX - sur le TX. C'est-à-dire il fallait juste échanger deux fils: on connecte un convertisseur UART selon le schéma:

TX-TX
RX-RX
GND-GND
ou Arduino:
TX-RX
RX-TX
GND-GND

Après l'ouverture, le module a pris vie, l'original a été retrouvé firmware pour les LED clignotantes (AI-THINKER-IOT-2014-10-17 165528.bin) et est toujours flashé avec le même ESP8266 Flasher. Le mot de passe du point d'accès est apparu et l'application a immédiatement vu la carte jaune. La seule mise en garde: pour flasher, il est nécessaire d'installer un cavalier, pour tous les autres cas à retirer. Et n'oubliez pas de redémarrer l'appareil après avoir clignoté.

ESP8266 ESP-07 avec plaque d'adaptation


Instructions pour connecter ESP-07 (ESP-12) via un convertisseur UART:

image

  • Rouge - puissance 3,3 v;
  • Noir - GND;
  • Jaune - côté ESP8266 - RX, côté USB-TTL - TX;
  • Vert - côté ESP8266 - TX, côté USB-TTL - RX;
  • Orange - CH_PD (CHIP ENABLE) - doit toujours être mis sous tension;
  • Bleu - GPIO0 - est connecté via le commutateur à la terre pour activer le mode de clignotement du module. Pour le démarrage habituel du module GPIO0, vous pouvez le laisser non connecté;
  • Gris - GPIO15 (MTDO, HSPICS) cette broche doit être tirée au sol;
  • Si vous vous connectez à Arduino, puis RX-RX et TX-TX.

À l'aide d'un fer à souder, l'ESP-07 et l'adaptateur ont été combinés. Je recommande l'adaptateur car il facilite davantage la connexion par méthode sans soudure à l'aide d'une planche à pain et de fils. Dans ce cas, j'ai utilisé un convertisseur DC-DC abaisseur de Chine pour l'alimentation. Des capteurs DS18B20 étaient disponibles et il a été décidé de les connecter.

Je ne voulais pas installer HomesSmart tout de suite et le choix s'est porté sur un tel exemple . Je ne retaperai pas le circuit et le code - ils sont presque les mêmes. Cela n'a pas fonctionné tout de suite, mais avec Google et un tambourin, les données sur People’s Monitoring ont démarré et ont volé.

J'ai téléchargé le script via ESplorer .

C'était sur Arduino
image

Est devenu sur ESP8266
image

J'attends le module d'alimentation compact 220AC - 3.3DC pour optimiser le nombre de fils.

LoLin V3 NodeMcu (Lolin)


Il a été conseillé à cette carte de flasher le firmware NodeMcu immédiatement, ce qui a été fait via le programme de clignotement NodeMcu. Le firmware lui-même est assemblé par le concepteur, ce qui vous permet d'inclure uniquement les plus nécessaires.

De plus, il était censé connecter et contrôler un relais à 2 canaux et contrôler deux appliques dans la chambre. Ici, je veux m'attarder sur une chose. La version chinoise d'un tel relais a un cavalier JD-VCC - VCC - GND. Par défaut, il est installé sur les broches JD-VCC - VCC.

image

Ainsi, le cavalier ne peut jamais être installé sur VCC - GND - organisez un court-circuit! Ces trois contacts sont utilisés pour fournir une alimentation supplémentaire au relais, dans les cas où la commande peut ne pas être suffisante pour faire fonctionner le relais. La présence d'un cavalier indique que l'alimentation provient des contacts "de contrôle".

Le script a été utilisé comme suit:

Texte du script
#================= init.lua =================
--      
ssid,pass = "SSID","PASSWORD";

if (file.open('wificonf') == true)then
   ssid = string.gsub(file.readline(), "\n", "");
   pass = string.gsub(file.readline(), "\n", "");
   file.close();
end

wifi.setmode(wifi.STATION)
wifi.sta.config(ssid,pass)
wifi.sta.autoconnect(1);
print('IP:',wifi.sta.getip());
--print('MAC:',wifi.sta.getmac());

led1 = 3
led2 = 4
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
restart=0;

gpio.write(led1, gpio.HIGH);
gpio.write(led2, gpio.HIGH);


t=0
tmr.alarm(0,1000, 1, function() t=t+1 if t>999 then t=0 end end)

srv=net.createServer(net.TCP, 1000)
srv:listen(80,function(conn)
    conn:on("receive",function(client,request)
    --      _GET
            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
    --    
       --    <html><body>,      \
   --        \,  </body></html>
    conn:send('HTTP/1.1 200 OK\r\nConnection: keep-alive\r\nCache-Control: private, no-store\r\n\r\n\
   <!DOCTYPE HTML>\
<html>\
 <head>\
        <meta charset="UTF-8" />\
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> \
        <meta name="viewport" content="width=device-width, initial-scale=1.0"> \
        <title>My control</title>\
   </head><body>\
        <div class="container">\
            <section class="color-1">\
                <p>\
                    <a href=\"?pin=ON1\"><button class="btn btn-4 btn-4a">Back ON</button></a>\
                    <a href=\"?pin=ON2\"><button class="btn btn-4 btn-4a">Bra ON</button></a>\
                </p>\
                <p>\
                    <a href=\"?pin=OFF1\"><button class="btn btn-5 btn-5a">Back OFF</button></a>\
                    <a href=\"?pin=OFF2\"><button class="btn btn-5 btn-5a">Bra OFF</button></a>\
                </p>\
            </section>\
        </div>\
</body></html>')
    --  
    --    
        local _on,_off = "",""
        if(_GET.pin == "ON1")then
              gpio.write(led1, gpio.LOW);
        elseif(_GET.pin == "OFF1")then
              gpio.write(led1, gpio.HIGH);
        elseif(_GET.pin == "ON2")then
              gpio.write(led2, gpio.LOW);
        elseif(_GET.pin == "OFF2")then
              gpio.write(led2, gpio.HIGH);
        end
        
  
              
    conn:on("sent",function(conn) conn:close() end)
    collectgarbage();

    
    end)
    
end)

#========================================


Je n'ai pas pu retrouver le lien vers la source. Mais le schéma est simple: à Lolin on connecte le relais 1 et le relais 2 aux sorties D3 et D4 ( led1 = 3 led2 = 4 ). Ensuite, nous allons à l'adresse IP émise par notre routeur et voyons la page:

image

À mon grand regret, je n'ai pas encore compris comment apporter de la beauté, par exemple, pour connecter un fichier de style CSS. La question est dans l'utilisation de fichiers individuels lors de l'affichage de la page, et non dans la définition du style.

J'espère vraiment que ces informations seront utiles à au moins une personne. Et ne jugez pas strictement pour le premier article.

Les références


Source: https://habr.com/ru/post/fr394535/


All Articles