Recents in Beach


Receba o meu conteúdo GRATUITAMENTE


ESP32 e ESP8266: Programação no Ar



É possível programar um ESP pelo ar? Sim. Essa é a resposta. E o que isso significa? Que você não vai mais gravar o microcontrolador pelo cabo USB, mas, sim, através de WiFi. Essa possibilidade é legal por facilitar a nossa vida, pois permite que façamos a atualização de software de um dispositivo que está fixado em um telhado, por exemplo, sem precisar retirá-lo do lugar.
Então, neste artigo e no vídeo abaixo vou tratar de um exemplo básico de programação OTA (Over The Air) no ESP32 e mostro também como adaptar o mesmo projeto para o ESP8266 com uma pequena mudança no código. Esse nosso programa foi desenvolvido na linguagem C do Arduino IDE.


Recursos usados


2 Leds
2 Resistores de 220 ohm
ESP32
Protoboard


Código OTA

Organização do código e códigos obrigatórios


É preciso que você tenha um pedaço do código dentro do Setup, além de um grupo de funções que chamei de OTA, e mais um pedacinho de código dentro do Loop. Isso porque, quando você grava pelo ar, você tem que colocar um código dentro do ESP que permite que esse dispositivo passe a se comunicar pela rede IP com a IDE do Arduino. Então, ao invés de você escolher uma COM serial (porta de comunicação) você vai escolher um IP.
Esse código, portanto, precisa estar dentro do ESP. A parte que trato aqui exibe primeiramente três funções que devem obrigatoriamente estar dentro do Setup. Na sequência coloco outras quatro funções envolvendo OTA que fazem parte do código fonte vindo pelo ar.

Setup – ESP32


Nesta parte do código eu trago os defines. O código OTA traz pedaços que você precisa colocar dentro do seu programa e, aqui, trato de algumas partes obrigatórias. Nesta etapa também trabalhamos os Leds, sendo que o vermelho vai confirmar quando o dispositivo for atualizado pelo ar, por exemplo.

#include <WiFi.h> //lib para configuração do Wifi
#include <ArduinoOTA.h> //lib do ArduinoOTA 
#include <ESPmDNS.h> //lib necessária para comunicação network
#include <WiFiUdp.h> //lib necessária para comunicação network

#define ledVerde 23 //este led sinaliza que o ESP foi conectado
//#define ledVermelho 22 //este led é usado como exemplo de atualização

const char* ssid = "robotica"; //nome da rede
const char* password = "12345678"; //senha da rede

void setup()
{
  //define pino como saída
  pinMode(ledVerde,OUTPUT);
  
  //define pino como saída
  //código da atualização  
  //pinMode(ledVermelho,OUTPUT);

  //inicia serial com 115200 bits por segundo
  Serial.begin(115200);
  
  Serial.println("Booting");

  //define wifi como station (estação)
  WiFi.mode(WIFI_STA);

  //inicializa wifi
  WiFi.begin(ssid, password);


Setup – ESP8266


Exibo aqui as partes do código fonte do ESP32 que devem ser modificadas para aplicação no ESP8266. Lembro, no entanto, que deixo as duas versões disponíveis para download ao fim deste artigo.

#include <ESP8266WiFi.h> //lib do wifi para o ESP8266
#include <ESP8266WiFiMulti.h> //lib do wifi para o ESP8266
#include <ArduinoOTA.h> //lib do ArduinoOTA

#define ledVerde 23 //este led sinaliza que o ESP foi conectado
//#define ledVermelho 22 //este led é usado como exemplo de atualização

ESP8266WiFiMulti wifiMulti;

const char* ssid = "robotica"; //nome da rede
const char* password = "12345678"; //senha da rede

void setup()
{
   //define pino como saída
   pinMode(ledVerde,OUTPUT);
   
   //define pino como saída
   //código da atualização 
   //pinMode(ledVermelho,OUTPUT);
   
   //inicia serial com 115200 bits por segundo
   Serial.begin(115200);
   
   Serial.println("Booting");   
   
   wifiMulti.addAP(ssid, password); 
   
   Serial.println("Connecting ...");
   
   while (wifiMulti.run() != WL_CONNECTED)
   {       
       delay(250);
       Serial.print('.');
   }

Continuação - Setup ESP32

Prosseguimos aqui com o código fonte do OTA com definições que são padrão.

//enquanto o wifi não for conectado aguarda
  while (WiFi.waitForConnectResult() != WL_CONNECTED) 
  {
    //caso falha da conexão, reinicia esp
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }

  // A porta fica default como 3232
  // ArduinoOTA.setPort(3232);

  // Define o hostname (opcional)
  ArduinoOTA.setHostname("myesp32");

  // Define a senha (opcional)
  ArduinoOTA.setPassword("password123");

  // É possível definir uma criptografia hash md5 para a senha usando a função "setPasswordHash"
  // Exemplo de MD5 para senha "admin" = 21232f297a57a5a743894a0e4a801fc3
  // ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");

Setup – Configuração da instância ArduinoOTA

Fiz algumas alterações no código fonte original para facilitar a leitura, as quais podem ser bem percebidas nesta etapa.

//define o que será executado quando o ArduinoOTA iniciar
  ArduinoOTA.onStart( startOTA ); //startOTA é uma função criada para simplificar o código 

  //define o que será executado quando o ArduinoOTA terminar
  ArduinoOTA.onEnd( endOTA ); //endOTA é uma função criada para simplificar o código 

  //define o que será executado quando o ArduinoOTA estiver gravando
  ArduinoOTA.onProgress( progressOTA ); //progressOTA é uma função criada para simplificar o código 

  //define o que será executado quando o ArduinoOTA encontrar um erro
  ArduinoOTA.onError( errorOTA );//errorOTA é uma função criada para simplificar o código 
  
  //inicializa ArduinoOTA
  ArduinoOTA.begin();

  //exibe pronto e o ip utilizado pelo ESP
  Serial.println("Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  
  digitalWrite(ledVerde,HIGH);
}


Funções de exibição dos estágios de upload (start, progress e end)

Trago novamente todas as funções comentadas.

//funções de exibição dos estágios de upload (start, progress, end e error) do ArduinoOTA
void startOTA()
{
   String type;
   
   //caso a atualização esteja sendo gravada na memória flash externa, então informa "flash"
    if (ArduinoOTA.getCommand() == U_FLASH)
      type = "flash";
    else  //caso a atualização seja feita pela memória interna (file system), então informa "filesystem"
      type = "filesystem"; // U_SPIFFS

    //exibe mensagem junto ao tipo de gravação
    Serial.println("Start updating " + type);

    digitalWrite(ledVerde,HIGH);
    delay(300);
    digitalWrite(ledVerde,LOW);
    delay(300);
    digitalWrite(ledVerde,HIGH);
    delay(300);
    digitalWrite(ledVerde,LOW);
    delay(300);
}

//exibe mensagem
void endOTA()
{
  Serial.println("\nEnd");
}

//exibe progresso em porcentagem
void progressOTA(unsigned int progress, unsigned int total)
{
   Serial.printf("Progress: %u%%\r", (progress / (total / 100))); 
}


Funções de exibição dos estágios de upload (error)

O mesmo fiz nesta parte do código que trata de possível erro.

//caso aconteça algum erro, exibe especificamente o tipo do erro
void errorOTA(ota_error_t error)
{  
      Serial.printf("Error[%u]: ", error);
      
      if (error == OTA_AUTH_ERROR) 
        Serial.println("Auth Failed");
      else
      if (error == OTA_BEGIN_ERROR)
        Serial.println("Begin Failed");
      else 
      if (error == OTA_CONNECT_ERROR)
        Serial.println("Connect Failed");
      else
      if (error == OTA_RECEIVE_ERROR) 
        Serial.println("Receive Failed");
      else 
      if (error == OTA_END_ERROR)
        Serial.println("End Failed");
}

Loop

Por fim, exibo aqui o nosso programa.

void loop() 
{
  //Handle é descritor que referencia variáveis no bloco de memória
  //Ele é usado como um "guia" para que o ESP possa se comunicar com o computador pela rede
  ArduinoOTA.handle();

  //código de atualização    
  /*
  digitalWrite(ledVermelho,HIGH);
  delay(1000);
  digitalWrite(ledVermelho,LOW);
  delay(1000);  
  */
}

Seleção de porta de rede no Arduino IDE

Após a primeira gravação feita pela porta Serial, deve-se selecionar a porta de rede conforme a figura abaixo. Para isso é fundamental que o computador esteja conectado na mesma rede que o ESP.


Montagem do ESP32


Na nossa montagem colocamos dois resistores e dois Leds. O projeto é bastante simples e basta seguir a imagem para reproduzi-lo. No nosso exemplo, o Led verde indica que o ESP está conectado, enquanto o Led vermelho é usado para visualizar a atualização feita pelo OTA, como pode ser visto no vídeo, na nossa demonstração.


Faça o download dos arquivos:



Postar um comentário

66 Comentários

  1. E tanto OTA que me senti um idi no meio de tudo isso!
    Sou inscrito e sempre dou meu like.

    ResponderExcluir
  2. Bom dia Fernando, muito bom seu trabalho, parabéns.
    Vc poderia disponibilizar o link da library ESP8266WiFiMulti.h.
    Eu não estou achando e não faz parte do repositório do Arduino.
    Gostaria de testar o seu código OTA.
    Obrigado.

    ResponderExcluir
    Respostas
    1. Bom dia Roberto.

      A biblioteca ESP8266WifiMulti.h é baixada junto ao módulo do ESP8266. Siga estes passos para baixar:
      1. Vá em Arquivo->Preferências;
      2. Em "URLs Adicionais para Gerenciadores de Placas" adicione o link http://arduino.esp8266.com/stable/package_esp8266com_index.json e clique em OK;
      3. Vá em Ferramentas->Placa->Gerenciador de Placas
      4. Procure por "esp8266", selecione o pacote encontrado como "esp8266 by ESP8266 Community" e clique em Instalar.

      Para mais detalhes veja em "Introdução ao ESP8266" (https://www.youtube.com/watch?v=QXB5WHH9GOE&t=997s), aos 16:50 ensino como baixar o módulo.

      Para evitar possíveis problemas de compilação sugiro que baixe novamente o código ESP8266_OTA.ino pois ele foi atualizado aqui no meu blog!

      Um abraço!

      Excluir
  3. Boa tarde Fernando. Tentei usar o seu código OTA ESP32, apresentou o seguinte erro [1432], pode me ajudar? que erro é esse?

    ResponderExcluir
    Respostas
    1. Este comentário foi removido pelo autor.

      Excluir
    2. Boa tarde, Roberto!
      A biblioteca ESP8266WifiMulti.h é instalada junto ao módulo do ESP8266. Verifique se este módulo está instalado. O correto seria instalar este módulo na Arduino IDE.

      Excluir
  4. Bom dia, Fernando.
    Realmente o modulo ESP8266 não estava instalado "corretamente", reinstalei o modulo esp-8266, última versão e a biblioteca foi instalado também.
    Porém ao tentar compilar o código ESP8266_OTA, aparece este erro:
    ESP8266_OTA:54: error: invalid use of void expression

    ESP8266_OTA:57: error: 'progress' was not declared in this scope

    ESP8266_OTA:57: error: 'total' was not declared in this scope

    ESP8266_OTA:57: error: expected primary-expression before ')' token

    ESP8266_OTA:57: error: expected ';' before ')' token

    ESP8266_OTA:60: error: 'error' was not declared in this scope

    ESP8266_OTA:60: error: expected primary-expression before ')' token

    ESP8266_OTA:60: error: expected ';' before ')' token

    exit status 1
    invalid use of void expression

    Pode me ajudar?
    Desde já muito obrigado.

    ResponderExcluir
    Respostas
    1. Olá Roberto.
      O código do ESP8266 estava com erros de sintaxe nas funções OTA, já atualizei e ele está compilando sem erros agora.
      Obrigado pelo comentário!

      Excluir
  5. Oi Fernando.
    Muito obrigado pela resposta e correção do código.
    Está funcionando perfeitamente com a placa ESP8266.
    Agora eu consigo fazer upload via OTA do sketch.
    Excelente trabalho o que vc faz.
    Parabéns.

    ResponderExcluir
  6. Oi Fernando.
    Tentei usar o seu código OTA ESP32, ele compila sem qualquer erro pela IDE Arduino, última versão.
    Mas, quando tento repassar o código via OTA para a placa ele apresentou o seguinte erro [1432], pode me ajudar? que erro é esse?

    obrigado.

    ResponderExcluir
  7. Este comentário foi removido por um administrador do blog.

    ResponderExcluir
    Respostas
    1. Após gravar o código OTA pela primeira vez (usando a porta serial) no ESP a rede deve aparecer na IDE automaticamente. Lembrando que o seu computador e o ESP devem estar na mesma rede. Tente também resetar o ESP após a primeira gravação.

      Excluir
  8. Oi Fernando. Fiz conforme sua orientação, apos repassar o código OTA para o ESP:
    resetei o ESP32; Conectei na mesma rede wifi do computador (desliguei o cabo de rede);
    Até desativei meu antivirús. Mas não deu certo, os mesmos erros, veja as mensagens.
    Sending invitation to 192.168.1.6
    Authenticating...OK
    12:35:55 [ERROR]: No response from device
    Sending invitation to 192.168.1.6 ......
    Authenticating...OK
    12:36:15 [ERROR]: No response from device
    Sending invitation to 192.168.1.6 ......
    Authenticating...OK
    12:36:35 [ERROR]: No response from device
    Sending invitation to 192.168.1.6
    Authenticating...OK
    Uploading...................................................................................................................................................................................................................................................................................................................................................................

    12:36:58 [ERROR]: 1432
    Sending invitation to 192.168.1.6
    Authenticating...OK
    Uploading...................................................................................................................................................................................................................................................................................................................................................................

    12:37:10 [ERROR]: 1432
    Sending invitation to 192.168.1.6
    Authenticating...OK
    Uploading...................................................................................................................................................................................................................................................................................................................................................................

    12:37:24 [ERROR]: 1432
    Sending invitation to 192.168.1.6
    Authenticating...OK
    Uploading...................................................................................................................................................................................................................................................................................................................................................................

    12:37:41 [ERROR]: 14321432

    ResponderExcluir
    Respostas
    1. Este erro "No response from device" geralmente ocorre quando o computador não está na mesma rede que o ESP.
      Já verificou se pode ser este o problema?
      Se não, abra o prompt de comando (cmd) e digite "ping 192.168.1.6" e veja se seu computador obtém resposta do ESP.

      Excluir
    2. "No response from device"

      No meu caso, desliguei temporariamente a firewall do windows (windows7). A partir daí o upload do esp8266 e esp 32 funcionaram 100%.

      Excluir
  9. Olá! Adorei o post e tudo, perfeito! Mas tenho uma duvida, e se eu não quiser utilizar um IP Local, quiser utilizar um IP remoto pela internet? por TCP ou HTTP? O que vc recomenda? Obrigado e parabens!

    ResponderExcluir
  10. Olá Fernando... estou adorando suas aulas e experimentos.
    , muito obrigado pela dedicação do seu tempo.
    Eu tentei baixar a ino da OTA do seu blog mas quando tento abri diz que o arquivo está em formato desconhecido ou danificado.
    Você pode me ajudar?
    muito obrigado

    ResponderExcluir
    Respostas
    1. Olá, Gilbert.
      Testamos o link aqui e está ok. Pode tentar denovo?
      O arquivo está em .rar!

      Excluir
  11. Olá, Fernando.
    Baixa o arquivo normal, o problema esta na hora de abrir.
    Mas de qualquer forma obrigado. Deve ser problema do meu pc.
    Mas gostei muito do seu suporte, responde muito rápido.
    Um grande abraço. Sou seu fã

    ResponderExcluir
  12. Ola Fernando, teria como disponibilizar o INO. Infelizmente o link esta com erro.

    ResponderExcluir
    Respostas
    1. Olá, Drielly. Desculpe. Fizemos umas atualizações ontem nos links e este ficou com erro. Pode tentar novamente, por favor? Atualizamos agora msm. Obrigado. Abraço

      Excluir
    2. Boa tarde Fernando.
      O arquivo ESP32eESP8266CodigoOTA.rar baixa entretanto não abre. Mensagem de formato invalido ou corrompido.
      Obrigado e super abraço!

      Excluir
    3. Olá, José Antonio.
      Substituímos o arquivo para ver se melhora. Pode tentar novamente, por favor?
      Se não der certo, me avise aqui, que lhe enviaremos por e-mail.
      Abraço

      Excluir
  13. Ola, bom dia.
    Programação no Ar para ESP32, na transferencia ocorre esse erro.
    Sera que vc pode me ajudar.

    esptool: error: argument --baud/-b: invalid arg_auto_int value: '{upload.speed}'

    ResponderExcluir
  14. DÚVIDAS???

    Seu ESP32 ou ESP8266 não aparece listado nas portas COM da Arduino IDE? Tente baixar o driver USB to UART seguindo os links abaixo de acordo com a versão do seu Windows:

    Para o Windows 10
    https://www.silabs.com/documents/public/software/CP210x_Universal_Windows_Driver.zip

    Para o Windows 7/8/8.1
    https://www.silabs.com/documents/public/software/CP210x_Windows_Drivers.zip

    Para o Windows XP/Server 2003/Vista
    https://www.silabs.com/documents/public/software/CP210x_VCP_Windows.zip

    Ou acesse esta página e procure o instalador:
    https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

    Feito isso, o ESP8266 e ESP32 deve aparecer nas portas COM normalmente.

    Abraço!

    ResponderExcluir
  15. Ola, Boa noite Fernando! Primeiramente gostaria de te agradecer imensamente suas aulas estão me ajudando muito em meu projeto para a faculdade. Gostaria de ter o pdf dessa aula mas o link esta quebrado. Tem como consertar?

    ResponderExcluir
  16. Excelente trabalho!
    Ficaria perfeito se pudesse integrar está solução com o Wi-Fi manager! É possível o Wi-Fi manager entrar caso não consiga acessar o Wi-fi?

    ResponderExcluir
  17. Muito boa sua didática, agora segundo entendi , montamos nossas aplicações com esse código e poderemos ter mais flexibilidade em cada projeto em relação a atualização !

    ResponderExcluir
  18. Oi Fernando!
    O endereço do arquivo PDF está errado: http://74.117.156.195/verify.php?arquivo=ESP32eESP8266Programa%C3%A7%C3%A3oOTA.pdf
    O correto deve ser: http://download.fernandok.com/ESP32eESP8266Programa%C3%A7%C3%A3oOTA.pdf

    Parabéns pelo trabalho!

    ResponderExcluir
  19. Ola Fernando, muito bons e didáticos seus artigos e videos, parabens !
    Tenho o ESP-12 já funcionando pelo OTA, mas senti falta das informações usando o monitor serial, que só funciona conectado via USB/FTDI. Existe alguma maneira de usar o monitor serial através do OTA / Wi-Fi ? Sei que o monitor serial funciona através de porta serial , mas tem alguma saída para isso ? A mensagem que obtenho na IDE do Arduino quando tento abrir o monitor serial é : "Serial monitor is not supported on network ports such as 0.0.0.0 for the null in this release". Grato.

    ResponderExcluir
    Respostas
    1. Alessandro, a interface do Arduino permite somente uma conexão por vez, e como o Monitor serial esta dentro você não conseguirá mesmo acessar ao mesmo tempo. Sugestão, monitore sua serial com outro SFT, por exemplo eu utilizo o Hércules: https://www.hw-group.com/software/hercules-setup-utility

      Excluir
  20. Bom dia Fernando não estou conseguindo baixar o arquivo em pdf.

    ResponderExcluir
  21. ola Fernando tenho uma duvida uma vez que eu gravei com o CÓDIGO OTA EU SEMPRE VOU PRECISAR DE COLOCA ESSE CÓDIGO EX: COLOQUEI ESSE CÓDIGO AI O OTA VOU FAZER OUTRO PROJETO COM ESP8266 PRECISO COLOCAR AS PRINCIPAIS COISAS QUE ESTA NO OTA?

    ResponderExcluir
  22. Boa tarde Fernando, se eu tiver varias placas com programação pelo ar, tem como eu deixar o ip estático? se não como eu vou saber que cada nodemcu não será programada errado? Se eu colocar um rede e usuário diferente resolve o problema?

    ResponderExcluir
  23. Pessoal no meu teste aqui, o ide pede a senha eu digito, mas sempre da errado. Alguém poderia me dizer o que pode ser?

    ResponderExcluir


  24. Boa tarde Professor, tentei instalar porém fica dando este erro, o que faço?

    C:\Users\TIA Portal V13\Documents\Arduino\ota_fernado_k\ota_fernado_k.ino:3:66: fatal error: ESPmDNS.h: No such file or directory

    #include //lib necessária para comunicação network

    ^

    compilation terminated.

    exit status 1
    Erro compilando para a placa NodeMCU 0.9 (ESP-12 Module)

    ResponderExcluir
  25. Olá Prof. Fernando! Muito boa a matéria mas, não consegui entender de primeira; é meio difícil pra mim, a questão das partes do código que devem ser adicionados em um código simples. Por exemplo, eu tenho um sketch de um Relógio (MatrixClock) com 887 linhas que, se vc me permitisse, eu lhe enviaria para vc adicionar o OTA nesse sketch pra mim ter uma melhor ideia mas, para mim enviar o sketch por aqui, é muito grande não? Obrigado

    ResponderExcluir
  26. Fernando, a porta da rede não está aparecendo no meu, como proceder?

    ResponderExcluir
    Respostas
    1. Olá! Você conseguiu sanar o problema? Estou com o mesmo e não consegui encontrar a solução.

      Excluir
    2. Usei outro computador e nele funcionou normalmente. Verifiquei o IDE a fim de identificar a causa e não encontrei. Para resolver removi completamente a IDE do Arduíno e instalei novamente. Problema solucionado.

      Excluir
  27. Tudo bem meu Chará sou Fernando donati estou iniciando na área de reparo e reprogramação de módulos de gerenciamento eletrónicos de motores diesel minha maior dificuldade são os valores dos equipamentos pra simulação dos ecu agora com o esp32 tenho como editar as formas de ondas pra simular vários sensores e suas explicações sobre a programacao são excelente apesar de eu não saber muito sobre o assunto com a sua ajuda vai dar certo

    ResponderExcluir
  28. Ótimo post.
    Estou com o seguinte erro:
    11:13:04 [ERROR]: Bad Answer: ERR: ERROR[4]: Not Enough Space

    a porta serial
    selecionada não existe ou sua placa não está conectada

    ResponderExcluir
  29. Boa noite Fernando, você já configurou o Esp8266 alguma vez para atualizar automaticamente a partir de um site ou servidor na web? Gostaria poder configurar meus Esps remotamente, sem estar na mesma rede.

    ResponderExcluir
  30. Bom dia Fernando tudo bom ?
    No meu caso consseguir fazer o upload do firmware no meu esp32 utilizando a porta serial com sucesso, mas quando eu vou selecionar a porta de rede, ela nao aparece pra mim, o ip foi atribuindo ao esp, estou na mesma rede, ja reiniciei a ide arduino, reiniciei o computador, o ip atribuido esta pingando sem problemas, mas ah porta de rede nao abre.. Podeeria me ajudar ?

    ResponderExcluir
  31. Bom dia Fernando! Tudo bem?
    Gostei muito do seu artigo, estou em um projeto onde tenho que fazer atualização OTA mas utilizando o IDF do ESP32, poderia me dar um dica de onde buscar ? Obrigado

    ResponderExcluir
  32. Olá Fernando.
    Muito boa e didática essa sua abordagem sobre OTA.
    Veja a possibilidade de fazer uma abordagem sobre "Como atualizar os ESP8266 e ESP8266 somente enviando o executável, sem utilizar a IDE do Arduino".

    ResponderExcluir
  33. Boa tarde, Fernando.
    Primeiramente parabéns pelos seus artigos e seus vídeos. Sua didática simples e competente está me fazendo gostar muito do ESP. Gostaria de saber se existe alguma maneira de subir os programas no ESP, sem usa a ide do arduino. Pergunto isso, porque precisamos preservar os nossos fontes, para o caso de ter que mandar alguém fazer upload nas placas.
    Obrigado por seus ensinamentos.
    Abcs.

    ResponderExcluir
  34. Apenas o Código OTA ja Utiliza 56% da memoria do ESP32,
    Não consigo por o Programa por Telegram pois falta Memoria.
    como fazer nesse caso onde não tem espaço?

    (Mensagem que aparece ao clicar em Verificar no Arduino IDE "Só com o Código OTA")

    "O sketch usa 734358 bytes (56%) de espaço de armazenamento para programas. O máximo são 1310720 bytes.
    Variáveis globais usam 43216 bytes (13%) de memória dinâmica, deixando 284464 bytes para variáveis locais. O máximo são 327680 bytes."

    ResponderExcluir
  35. Olá Fernando, excelente tutorial; sou inscrito em seu canal e, tenho duas questões:
    1) Para qualquer sketch com esp8266 ou esp32 que se pretenda atualizar via OTA, são os arquivos que vc menciona no tutorial, que devem ser adicionados no código Arduino?

    2) Quando se quer gravar (atualizar) via OTA, vc diz: é fundamental que o computador esteja conectado na mesma rede que o ESP. OK; isso quer dizer que: se eu gravo um sketch pela primeira vez, devo colocar o SSID e a Senha do Roteador ao qual o ESP esteja conectado, ou seja, depende do local? Obrigado

    ResponderExcluir
  36. Prezado Fernando, criei um projeto no VS Code, para tentar compilar e mandar pro ESP8266, mas algumas funções não estão declaradas na lib arduinoOTA que baixei. Você poderia me dizer em qual site está essa lib que usou no projeto ? Obrigado.

    ResponderExcluir
  37. Perfeito, professor!
    Comigo deu tudo certo!
    Eu tinha um projeto de leitura do volume da caixa d'água com ESP8266. Tive que subir muitas vezes no telhado para atualizar via serial rsrsrs... com o OTA não serei mais feito de OTArio. :D

    ResponderExcluir
  38. Fernando boa noite, coloquei o projeto ota na minha nodemcu8266 porém no IDE não aparece na verdade na IDE nem aparece a opção por rede somente porta serial tem algo que pode ser feito ja atualizei IDE ja testei o projeto basico do IDE ja coloquei o seu, fiz de tudo e não aparece ela de jeito nenhum, estou na mesma rede, desliguei firewall, dei um ping funciona tudo ok, na placa uso NodeMCU 1.0 mais ja tentei varios o 0.9 entre outros nenhum aparece a porta de rede nem o titulo do menu vazio aparece. Poderia me dar uma luz

    ResponderExcluir
    Respostas
    1. O meu também está com esse mesmo problema? Como resolver?

      Excluir
    2. Alessandro Antoniolli17 de junho de 2020 às 14:40

      Tente instalar o python 2.7.x (caso ainda não tenha instalado), após instalar, reinicie o computador.

      Excluir
  39. Ola Fernando
    Parabens, excelente tutorial, gostaria de saber se tem alguma forma de efetuar esse upload por um webserver atraves do codigo compilado, no esp8266 eu tenho um que funciona muito bem, nao sendo necessario sequer a IDE, basta um computador com o arquivo salvo e acessar a pagina e efetuar o upload.
    Voce tem algum assim para disponibilizar?
    grato e obrigado pelos conhecimentos.

    ResponderExcluir
  40. Boa noite Fernando, tudo bom?

    Segui todo o procedimento, mas obtive o seguinte erro:

    Sending invitation to 192.168.0.10 ..........
    22:45:24 [ERROR]: No response from the ESP

    poderia me ajudar??

    ResponderExcluir
    Respostas
    1. Eu tive o mesmo problema, resolvi comentando parte do código .onStart existe o primeiro IF que pega a informação ArduinoOTA.getCommand() "vai saber de onde ele pega esta informação", eu tirei este IF deixando apenas o carregamento da variável no caso type = "sketch";

      .onStart([]() {
      String type;
      // if (ArduinoOTA.getCommand() == U_FLASH)
      type = "sketch";
      // else // U_SPIFFS
      // type = "filesystem";

      Excluir
  41. Olá Fernando.
    Posso carregar o Wifimaneger com o OTA, tipo, é possível ter esses 2 recursos rodando? pois se acaso trocar o roteador facilita a reprogramação;

    ResponderExcluir
  42. Este comentário foi removido pelo autor.

    ResponderExcluir
  43. Este comentário foi removido pelo autor.

    ResponderExcluir
    Respostas
    1. Marcisio, funcionou para você o WiFiManager o o OTA?
      Estou justamente no ponto de aplicar o OTA em um ESP32 que já roda o WiFiManager.

      Excluir
    2. Acabei de implementar, ficou show.
      Fernando K, obrigado mais uma vez por tanto selecionado conteúdo.

      Excluir
  44. Fiz todo o procedimento, inclusive instalei o arquivo para usb, o programa compila, identifica o IP, mas a porta na IDE do Arduino, não aparece a opção do esp32, alguém sabe como resolve?

    ResponderExcluir
  45. Este comentário foi removido pelo autor.

    ResponderExcluir
  46. Oi Fernando, parabéns pelo trabalho, sou seu seguidor há bastante tempo no youtubr. Eu estou tentando desenvolver um projeto aqui usando a ESP01 - vc sabe se ela suporta OTA? Eu estou tentando seguir o tutorial e não consigo concluir a gravação quando o chip está desconectado. Procurei alguma coisa na internet sobre isso e parece que há uma limitação no tamanho da memória disponível nessa placa. Você sabe se é isso mesmo? Obrigado!

    ResponderExcluir