ESP8266 dónde comenzar o primera experiencia

En este artículo quiero compartir mi experiencia de qué hacer cuando los chales ESP8266 caen por primera vez en mis manos. Inmediatamente haga una reserva de que recoger tales piezas de hierro, así como la programación, es mi pasatiempo por mi dinero y en mi tiempo libre de mi actividad principal. Por lo tanto, trate el grado de crítica de este material con cierto descuento.

¿Por qué decidí escribir esto? Es simple: maté 3 semanas para averiguar por dónde empezar y cómo funciona. Además, intentaré recopilar un pequeño catálogo de enlaces para trabajar con ESP8266. Espero que esta información le ahorre al menos una fracción del tiempo.

imagen

¡Entonces comencemos!

Pedí 3 opciones de tablero para mí en un famoso sitio chino:

  1. Tablero de prueba de desarrollo inalámbrico serie WIFI ESP8266 basado en ESP-12 (en adelante “Tablero amarillo”) ($ 3.12)
  2. ESP8266 ESP-07 junto con la placa adaptadora para ESP8266 (en adelante ESP-07) ($ 2.30)
  3. LoLin V3 NodeMcu Lua basado en ESP-12 (en adelante denominado "Lolin") ($ 3.12)

Las razones por las que tomé tal zoológico:

  1. La placa amarilla ya tiene LED incorporados que puede parpadear de inmediato, para obtener energía, puede usar no fabulosos 3.3V, que de alguna manera necesita, sino 3 baterías AA o conectando 4.5V (lo cual hice).
  2. LoLing me sobornó por el hecho de que está conectado mediante un cable micro USB y no necesita ningún convertidor UART; está integrado de inmediato basado en el chip CH340 chino, para el que puede encontrar fácilmente los controladores en win7x64 y win10x64 (mis casos), y, nuevamente alimentado por un adaptador normal con salida USB, en lugar de un sofisticado 3.3V.
  3. ESP-07 . - , , . Adapter Plate — 20 , .

Para empezar, verificando los módulos.

En todas las instrucciones de inicio, escriben que si conectó la alimentación y apareció la red WiFi AI-THINKER xxxxxxx, entonces el dispositivo está funcionando. Sucedió con mis dispositivos: todos crearon una red WiFi a la que podía conectarse. ¡Hurra! Ganado! Estaba encantado, pero temprano.

Para empezar, decidí experimentar con el tablero amarillo. El vendedor con el mejor indicador de calificación de precio en la descripción del producto solo tenía imágenes. Y ni una palabra de descripción. En los recursos en idioma ruso había referencias a estos tableros, pero no encontré detalles al respecto. En algunos vendedores, vi estas instrucciones:

Instrucción de tablero amarillo
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 . . , .

La inconsistencia fue que mi red AI-THINKER xxxxxxxxxx no solicitó una contraseña, sino que inmediatamente el teléfono se conectó a ella. Y el punto en blanco de la aplicación no "vio" el ESP después de conectarse. El LED RGB se iluminó en azul con un puente instalado o verde sin él.

imagen

Supuse que quizás los chinos estaban soldando, estaban soldando, pero se olvidaron de destellar (o destellaron torcidamente). Por lo tanto, decidí coserme. Para el firmware usé ESP8266 Flasher. Y luego apareció una segunda sorpresa: ningún programa reconoció la placa, no respondió a los comandos, el firmware no se inundó. Conectado a través de Arduino y a través del convertidor UART, nada. Las otras dos placas ya habían sido actualizadas y parpadeaban con un LED, pero aquí estaba sordo. Hasta que supuse llamar a los contactos.

En esta placa se muestran por separado tres contactos para firmware: TX, RX, GND. Entonces resultó que TX fue criado en el RX del ESP-12, respectivamente, RX - en el TX. Es decir solo era necesario intercambiar dos cables: conectamos un convertidor UART de acuerdo con el esquema:

TX-TX
RX-RX
GND-GND
o Arduino:
TX-RX
RX-TX
GND-GND

Después de la apertura, el módulo cobró vida, se encontró el original firmware para LED parpadeantes (AI-THINKER-IOT-2014-10-17 165528.bin) y todavía se actualiza con el mismo ESP8266 Flasher. La contraseña para el punto de acceso apareció, y la aplicación vio inmediatamente la tarjeta amarilla. La única advertencia: para flashear es necesario instalar un puente, para todos los demás casos para eliminar. Y no olvide reiniciar el dispositivo después de flashear.

ESP8266 ESP-07 con placa adaptadora


Instrucciones para conectar ESP-07 (ESP-12) a través de un convertidor UART:

imagen

  • Rojo - potencia 3.3v;
  • Negro - GND;
  • Amarillo - en el lado ESP8266 - RX, en el lado USB-TTL - TX;
  • Verde - en el lado ESP8266 - TX, en el lado USB-TTL - RX;
  • Naranja: CH_PD (CHIP ENABLE): siempre se debe subir al poder;
  • Azul - GPIO0 - está conectado a través del interruptor a tierra para habilitar el modo de parpadeo del módulo. Para el inicio habitual del módulo GPIO0, puede dejarlo desconectado;
  • Gris - GPIO15 (MTDO, HSPICS) este pin debe tirarse al suelo;
  • Si se conecta a Arduino, entonces RX-RX y TX-TX.

Usando un soldador, se combinaron el ESP-07 y el adaptador. Recomiendo el adaptador porque facilita aún más la conexión mediante un método sin soldadura usando una placa de pruebas y cables. En este caso, utilicé un convertidor DC-DC reductor de China para obtener energía. Los sensores DS18B20 estaban disponibles y se decidió conectarlos.

No quería instalar HomesSmart de inmediato y la elección recayó en ese ejemplo . No volveré a escribir el circuito y el código, son casi lo mismo. No funcionó de inmediato, pero con Google y una pandereta, los datos de Monitoreo de las personas comenzaron y volaron.

Descargué el script a través de ESplorer .

Estaba en Arduino
image

Se convirtió en ESP8266
image

Estoy esperando el compacto módulo de fuente de alimentación 220AC - 3.3DC para optimizar la cantidad de cables.

LoLin V3 NodeMcu (Lolin)


Se aconsejó a esta placa que flasheara el firmware de NodeMcu inmediatamente, lo cual se realizó a través del programa de flasheo NodeMcu. El diseñador mismo ensambla el firmware, lo que le permite incluir solo los más necesarios.

Además, se suponía que debía conectar y controlar un relé de 2 canales y controlar dos apliques en el dormitorio. Aquí quiero detenerme en una cosa. La versión china de dicho relé tiene un puente JD-VCC - VCC - GND. Por defecto, se instala en los pines JD-VCC - VCC.

imagen

Por lo tanto, el puente nunca se puede instalar en VCC - GND - ¡organice un cortocircuito! Estos tres contactos se utilizan para proporcionar energía adicional al relé, en los casos en que el control puede no ser suficiente para operar el relé. La presencia de un puente indica que la energía proviene de los contactos de "control".

El script se usó de la siguiente manera:

Texto del guión
#================= 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)

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


No pude volver a encontrar el enlace a la fuente. Pero el esquema es simple: a Lolin conectamos el relé 1 y el relé 2 a las salidas D3 y D4 ( led1 = 3 led2 = 4 ). Luego vamos a la dirección IP emitida por nuestro enrutador y vemos la página:

imagen

Para mi gran pesar, todavía no he descubierto cómo aportar belleza, por ejemplo, para conectar un archivo de estilo CSS. La pregunta está en el uso de archivos individuales cuando se muestra la página, y no en la configuración del estilo.

Realmente espero que esta información sea útil al menos para una persona. Y no juzgues estrictamente por el primer artículo.

Referencias


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


All Articles