ESP8266 por onde começar ou primeira experiência

Neste artigo, quero compartilhar minha experiência sobre o que fazer quando o xale ESP8266 cair pela primeira vez em minhas mãos. Imediatamente, faça uma reserva que pegar esses pedaços de ferro, assim como programar, é meu hobby para o meu dinheiro e o tempo livre da minha atividade principal. Portanto, trate o grau de crítica deste material com um certo desconto.

Por que eu decidi escrever isso? É simples: matei três semanas para descobrir por onde começar e como funciona. Além disso, tentarei coletar um pequeno catálogo de links para trabalhar com o ESP8266. Espero que esta informação poupe pelo menos uma fração do tempo.

imagem

Então, vamos começar!

Encomendei 3 opções de prancha para mim em um famoso site chinês:

  1. Placa de teste de desenvolvimento sem fio serial WIFI ESP8266 baseada no ESP-12 (a seguir "placa amarela") (US $ 3,12)
  2. ESP8266 ESP-07, juntamente com a placa adaptadora do ESP8266 (daqui em diante ESP-07) (US $ 2,30)
  3. LoLin V3 NodeMcu Lua baseado em ESP-12 (a seguir designado "Lolin") (US $ 3,12)

As razões pelas quais eu levei esse zoológico:

  1. A placa amarela já possui LEDs embutidos que você pode piscar imediatamente, para obter energia, você pode usar não fabulosos 3,3V, que você precisa obter de alguma forma, mas 3 pilhas AA ou conectando 4,5V (o que eu fiz).
  2. LoLing me subornou pelo fato de estar conectado usando um cabo micro USB e ela não precisar de nenhum conversor UART - ele é incorporado imediatamente com base no chip chinês CH340, para o qual você pode encontrar facilmente drivers em win7x64 e win10x64 (meus casos) e, novamente alimentado por um adaptador comum com uma saída USB, em vez de um sofisticado 3.3V.
  3. ESP-07 . - , , . Adapter Plate — 20 , .

Para começar - verificando os módulos.

Em todas as instruções de inicialização, eles escrevem que, se você conectou a alimentação e a rede WiFi AI-THINKER xxxxxxx apareceu, o dispositivo está funcionando. Aconteceu com meus dispositivos - todos eles criaram uma rede WiFi à qual você pode se conectar. Viva! Ganhou! Fiquei encantado, mas cedo.

Para começar, decidi experimentar o Quadro Amarelo. O vendedor com o melhor indicador de classificação de preço na descrição do produto tinha apenas fotos. E nem uma palavra de descrição. Nos recursos em russo, havia referências a esses painéis, mas não encontrei detalhes sobre isso. Em alguns vendedores, vi esta instrução:

Instrução do Quadro Amarelo
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 . . , .

A inconsistência foi que minha rede AI-THINKER xxxxxxxxxx não solicitou uma senha, mas imediatamente o telefone conectado a ela. E o ponto de aplicação em branco não "viu" o ESP após a conexão. O LED RGB estava aceso em azul com um jumper instalado ou verde sem ele.

imagem

Imaginei que talvez os chineses estivessem soldando - eles estavam soldando, mas se esqueceram de piscar (ou piscaram torto). Por isso, decidi me costurar. Para o firmware, usei o ESP8266 Flasher. E então surgiu uma segunda surpresa: nenhum programa reconheceu o quadro, não respondeu aos comandos, o firmware não inundou. Conectado através do Arduino e através do conversor UART - nada. As outras duas placas já haviam sido refletidas e piscadas com um LED, mas aqui estava surdo. Até que adivinhei ligar para os contatos.

Três contatos para firmware são exibidos separadamente nesta placa: TX, RX, GND. Portanto, o TX foi criado no RX do próprio ESP-12, respectivamente, RX - no TX. I.e. bastava trocar dois fios: conectamos um conversor UART de acordo com o esquema:

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

Após a abertura, o módulo ganhou vida, o original foi encontrado firmware para LEDs intermitentes (AI-THINKER-IOT-2014-10-17 165528.bin) e ainda pisca com o mesmo pisca-pisca ESP8266. A senha do ponto de acesso apareceu e o aplicativo viu imediatamente o cartão amarelo. A única ressalva: para piscar, é necessário instalar um jumper, para remover todos os outros casos. E não se esqueça de reiniciar o dispositivo depois de piscar.

ESP8266 ESP-07 com placa adaptadora


Instruções para conectar o ESP-07 (ESP-12) através de um conversor UART:

imagem

  • Vermelho - poder 3.3v;
  • Preto - GND;
  • Amarelo - no lado ESP8266 - RX, no lado USB-TTL - TX;
  • Verde - no lado ESP8266 - TX, no lado USB-TTL - RX;
  • Laranja - CH_PD (CHIP ENABLE) - sempre deve ser puxado para cima para poder;
  • O azul - GPIO0 - é conectado através do comutador ao terra para ativar o modo de piscar do módulo. Para o início normal do módulo GPIO0, você pode deixá-lo desconectado;
  • Cinza - GPIO15 (MTDO, HSPICS) este pino deve ser puxado para o chão;
  • Se você se conectar ao Arduino, então RX-RX e TX-TX.

Usando um ferro de solda, o ESP-07 e o adaptador foram combinados. Eu recomendo o adaptador, pois facilita ainda mais a conexão pelo método sem solda, usando uma tábua de pão e fios. Nesse caso, usei um conversor DC-DC da China para energia. Os sensores DS18B20 estavam disponíveis e foi decidido conectá-los.

Eu não queria instalar o HomesSmart imediatamente e a escolha recaiu nesse exemplo . Não vou digitar novamente o circuito e o código - eles são quase os mesmos. Não funcionou imediatamente, mas com o Google e um pandeiro os dados do People's Monitoring foram inicializados e voaram.

Eu baixei o script através do ESplorer .

Foi no Arduino
image

Tornou-se em ESP8266
image

Estou esperando o módulo de fonte de alimentação compacto 220AC - 3.3DC para otimizar o número de fios.

LoLin V3 NodeMcu (Lolin)


Esta placa foi aconselhada a atualizar o firmware do NodeMcu imediatamente, o que foi feito através do programa pisca-pisca do NodeMcu. O firmware em si é montado pelo designer, o que permite incluir apenas o mais necessário.

Além disso, era suposto conectar e controlar um relé de 2 canais e controlar duas arandelas no quarto. Aqui eu quero me debruçar sobre uma coisa. A versão chinesa desse relé possui um jumper JD-VCC - VCC - GND. Por padrão, ele é instalado nos pinos JD-VCC - VCC.

imagem

Portanto, o jumper nunca pode ser instalado no VCC - GND - organize um curto-circuito! Esses três contatos são usados ​​para fornecer energia adicional ao relé, nos casos em que o controle pode não ser suficiente para operar o relé. A presença de um jumper indica que a energia vem dos contatos de "controle".

O script foi usado da seguinte maneira:

Texto do 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)

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


Não foi possível encontrar novamente o link para a fonte. Mas o esquema é simples: para Lolin, conectamos o relé 1 e o relé 2 às saídas D3 e D4 ( led1 = 3 led2 = 4 ). Depois vamos ao endereço IP emitido pelo roteador e vemos a página:

imagem

Para meu grande pesar, ainda não descobri como trazer beleza, por exemplo, para conectar um arquivo no estilo CSS. A questão está no uso de arquivos individuais ao exibir a página e não na definição do estilo.

Eu realmente espero que esta informação seja útil para pelo menos uma pessoa. E não julgue estritamente pelo primeiro artigo.

Referências


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


All Articles