OTA

Programação do ESP8266 via OTA com wifi 55

O módulo ESP8266 é outro divisor de águas que veio para ficar. Barato, prático, útil, esse microcontrolador com WiFi integrado pode ser programado pela sua SDK nativa, usando LUA e até mesmo com Arduino IDE. E agora, uma funcionalidade extremamente útil será apresentada: a gravação via WiFi, também chamada de OTA  (Over-The-Air) ou FOTA (Firmware Over-The-Air).

Gravação ESP8266 usando OTA

Gravação Over-The-Air (OTA)

Com o advento de dispositivos com comunicação sem-fio incorporada, seja Bluetooth, WiFi, GSM e até mesmo outros tipos, os fabricantes começaram a disponibilizar formas de programar o dispositivo por meio da comunicação sem-fio.

E qual o motivo de tanto “alarde” em prol dessa funcionalidade? É porque isso torna extremamente prático a atualização remota de equipamentos em campo. Pensa comigo: Você acabou de programar um sensor e colocou ele no forro da sua casa, monitorando o nível da caixa d’água, por exemplo. E de repente você lembrou que um parâmetro está errado e precisa ser corrigido… Sem atualização remota, você teria que subir no forro, desmontar o equipamento, ligar no seu computador, programar e remontar tudo.

Com atualização remota, se o equipamento está conectado (via WiFi, por exemplo), você é capaz de acessá-lo e reprogramá-lo! Dessa forma, não será necessário seu deslocamento nem o desmonte do equipamento para isso.

E olha que eu citei um exemplo bem simples, mas isso é usado por gente séria no mercado. Quer saber quem usa? A Tesla, por exemplo! Aquela grande fabricante de carros elétricos dos EUA. A atualização dos sistemas de seus veículos é feita remotamente por meio de GSM com conexões 3G/4G (depende do plano e do modelo do veículo).

Tendo por base um humilde NodeMCU com ESP8266, você pode remotamente atualizar o firmware do seu robô móvel do TCC, pode remotamente atualizar o firmware do sistema de domótica, controle de irrigação, monitoramento de caixas d’água, tangues, etc que está implementando, desde que o módulo esteja em uma mesma rede de acesso que seu computador.

Na MakerHero há uma outra plaquinha que é programada via WiFi por padrão, desde que a rede WiFi tenha conexão com a Internet – é a Particle Photon.

Neste exemplo, vou tratar do NodeMCU ESP8266 com Arduino IDE, tendo por base um cenário de rede WiFi com acesso local, ou seja, você e o NodeMCU estão numa mesma rede WiFi.

Setup Necessário

É de extrema importância que você tenha o Arduino instalado. De preferência, instale a última versão, que no momento de escrita desse artigo é a versão 1.8.2, e está disponível no site Arduino.cc.

Depois, faça a configuração do Arduino IDE para suportar o desenvolvimento com ESP8266  – Você pode fazer essa configuração tendo por base esse tutorial escrito no Blog MakerHero.

Para fazer uso da funcionalidade de gravação via WiFi, é necessário ter o Python 2.7.x instalado na sua máquina. Você pode baixar o instalador no site https://www.python.org/downloads ou  https://www.python.org/downloads/release/python-2710 para já ir na sessão de downloads da sequência 2.7.10. Tendo por base máquinas Windows, baixe o arquivo Windows x86-64 MSI Installer para máquinas 64-bits, ou Windows x86 MSI Installer para máquinas 32-bits.

Instalação do Python 2.7.x

Após baixar o instalador do Python 2.7.x adequado, abra o executável baixado para efetivamente instalar o Python e toda sua infraestrutura no Windows. O processo de instalação é simples, é o famoso “próximo->próximo->próximo”, mas é preciso atentar para dois pontos importantes do processo de instalação:

1 – Na primeira janela de opções, marque a opção de instalar o programa para todos os usuários

Python Setup
Figura 1 – Instalação do Python para todos os usuários.

2 – Logo depois, marque a opção para adicionar o python.exe ao PATH de sistema do Windows

Python Setup
Figura 2 – Adicionar Python ao PATH do Windows.

Feito isso, tudo OK para prosseguirmos!

Não adianta pular essa parte. Sem o Python, o plugin de ESP8266 para o Arduino não conseguirá fazer as chamadas para gravação remota, ok?

Gravação via OTA – A Base

O âmago da coisa é SEMPRE (e eu repito: SEMPRE) gravar os sketchs – nome bonito para “programa com Arduino” – com a estrutura do exemplo BasicOTA fornecido com o plugin de ESP8266 para o Arduino IDE.

As versões mais recentes do plugin ESP8266 passaram a vir com suporte para gravação remota via WiFi, sendo esse suporte (muito bem) exemplificado no sketch BasicOTA.

Se você já instalou o Arduino IDE, já configurou o suporte para ESP8266 e já instalou o Python na sua máquina, abra o programa Arduino IDE e selecione a placa NodeMCU 1.0 na opção “Boards”, para habilitar a listagem de exemplos para ESP8266.

IDE Arduino
Figura 3 – Arduino IDE – Seleção da placa NodeMCU 1.0 – ESP-12E.

Configure adequadamente a opção Port de acordo com a porta serial COM atribuída ao seu módulo NodeMCU no Windows.

Assim, veja então na Figura 4 como abrir esse exemplo.

Basic OTA
Figura 4 – Arduino IDE – Seleção do Exemplo BasicOTA.

Eu tomei a liberdade de usar esse Sketch como base, e fiz algumas modificações com comentários em português. Veja o código desse exemplo abaixo, com meus comentários:

#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

const char* ssid = "NOME DA SUA REDE WIFI";
const char* password = "SENHA DA SUA REDE WIFI";

void setup() {
  Serial.begin(115200);
  Serial.println("Iniciando...");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Conexao falhou! Reiniciando...");
    delay(5000);
    ESP.restart();
  }

  // Porta padrao do ESP8266 para OTA eh 8266 - Voce pode mudar ser quiser, mas deixe indicado!
  // ArduinoOTA.setPort(8266);

  // O Hostname padrao eh esp8266-[ChipID], mas voce pode mudar com essa funcao
  // ArduinoOTA.setHostname("nome_do_meu_esp8266");

  // Nenhuma senha eh pedida, mas voce pode dar mais seguranca pedindo uma senha pra gravar
  // ArduinoOTA.setPassword((const char *)"123");

  ArduinoOTA.onStart([]() {
    Serial.println("Inicio...");
  });
  ArduinoOTA.onEnd([]() {
    Serial.println("nFim!");
  });
  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
    Serial.printf("Progresso: %u%%r", (progress / (total / 100)));
  });
  ArduinoOTA.onError([](ota_error_t error) {
    Serial.printf("Erro [%u]: ", error);
    if (error == OTA_AUTH_ERROR) Serial.println("Autenticacao Falhou");
    else if (error == OTA_BEGIN_ERROR) Serial.println("Falha no Inicio");
    else if (error == OTA_CONNECT_ERROR) Serial.println("Falha na Conexao");
    else if (error == OTA_RECEIVE_ERROR) Serial.println("Falha na Recepcao");
    else if (error == OTA_END_ERROR) Serial.println("Falha no Fim");
  });
  ArduinoOTA.begin();
  Serial.println("Pronto");
  Serial.print("Endereco IP: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  ArduinoOTA.handle();
}

A biblioteca ESP8266WiFi.h cuida das chamadas para acesso à rede WiFi, propriamente. Já uma boa parte das chamadas diz respeito à ArduinoOTA.h, que cuida das chamadas para tratar o recebimento de código e autogravação via WiFi.

No início do código há 2 variáveis que armazenam o nome e senha da sua rede WiFi, ssid e password, respectivamente.

Na rotina void setup() é configurada a Serial (como forma de você acompanhar pela Serial se tudo está correndo bem ou não), o módulo é colocado no modo Station (ele se conecta à uma rede WiFi), e é começado todo um processo para configuração da gravação via OTA.

Como disse, tomei a liberdade de comentar algumas partes do código original em inglês para português.

Essa estrutura-base é o que vai permitir seu ESP8266 ser conectado à rede WiFi e ficar disponível, quando requisitado, para receber e auto-gravar o programa recebido via WiFi com o Arduino IDE. Sem essa estrutura, o Arduino IDE não irá localizar o módulo ESP8266, e a programação sem-fio não funcionará.

Gravando o primeiro firmware para OTA

Como seu NodeMCU ESP8266 ainda não está preparado para gravação via WiFi, é preciso prepará-lo, certo? Dessa forma, conecte o NodeMCU via USB ao seu computador. Configure seu Arduino IDE para placa NodeMCU V1.0 e selecione a porta serial atribuída ao NodeMCU pelo Windows. No meu caso, como mostrado no canto inferior direito da Figura 5, minha NodeMCU ficou com a porta COM3 no Windows.

NodeMCU Conectado

No código-exemplo de BasicOTA, coloque nos campos ssid e password as informações para acesso à sua rede WiFi, e coloque o Arduino IDE para compilar e gravar o código no NodeMCU, via USB (afinal de contas, ele ainda não tem a estrutura para gravação via WiFi!). Para efeitos de segurança e privacidade, como manda a boa educação, não deixei esses dados à mostra 🙂

Gravação BasicOTA
Figura 5 – Processo de gravação do BasicOTA no Arduino IDE.

Terminado o processo de gravação, tenha uma janela do Terminal Serial do Arduino aberta – é só clicar no ícone da Lupa no Arduino IDE, no canto superior direito – para ver o resultado (positivo ou não…) do processo de conexão do módulo à rede WiFi. Caso não apareça nada, aperte o botão Reset do NodeMCU para reiniciar o módulo e forçar a aparição das mensagens. Veja no meu caso como apareceu:

arduino_console_ip
Figura 6 – Endereço IP do módulo na Rede.

Se correu tudo bem, o Arduino IDE agora é capaz de ver o endereço IP do NodeMCU ESP8266 pela rede. Não sei se isso é geral, mas comigo é preciso fechar o Arduino IDE e abrir o programa novamente, para que o endereço IP da placa apareça na listagem de Portas. Bom… Feito isso, veja como agora, na opção “Tools->Port” (Ou Ferramentas->Porta), e agora veja que além das portas Seriais, aparece também o módulo e seu endereço IP, na parte Network ports!

arduino_nodemcu_ip
Figura 7 – NodeMCU agora consta como elemento de rede para gravação!

Porém… Esse código por si só não faz nada. Só deixa o módulo esperando algum comando de gravação remota.

Gravação via OTA – Exemplo

Sem tirar a estrutura-base do exemplo que começamos, principalmente no que tange às configurações que estão em setup(), mantenha a chamada ArduinoOTA.handle() no início da rotina loop().

Essa chamada ArduinoOTA.handle() é quem lida com as requisições para gravação de firmware remotamente. Ou seja, seu novo programa além de funcionar com a sua lógica específica (controle de relé, monitoramento de sensor, exibição de dados em display, etc!), ficará “atento” à requisições de gravações remotas.

Além da estrutura lógica do OTA, também é preciso manter as configurações de Rede WiFi (ssid e password) para que o módulo seja conectado na rede WiFi, ok?

Vejam abaixo como fica um programa com o esqueleto do BasicOTA, mas agora com uma lógica para controle de um LED conectado na GPIO 2, por exemplo:

#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

const char* ssid = "Minha_rede_WiFi";
const char* password = "Senha_da_minha_rede_wifi";

void setup() {
  //Colocamos o sinal D4 (GPIO02) do NodeMCU como saida 
  pinMode(D4, OUTPUT);
  Serial.begin(115200);
  Serial.println("Iniciando...");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Conexao falhou! Reiniciando...");
    delay(5000);
    ESP.restart();
  }

  ArduinoOTA.onStart([]() {
    Serial.println("Inicio...");
  });
  ArduinoOTA.onEnd([]() {
    Serial.println("nFim!");
  });
  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
    Serial.printf("Progresso: %u%%r", (progress / (total / 100)));
  });
  ArduinoOTA.onError([](ota_error_t error) {
    Serial.printf("Erro [%u]: ", error);
    if (error == OTA_AUTH_ERROR) Serial.println("Autenticacao Falhou");
    else if (error == OTA_BEGIN_ERROR) Serial.println("Falha no Inicio");
    else if (error == OTA_CONNECT_ERROR) Serial.println("Falha na Conexao");
    else if (error == OTA_RECEIVE_ERROR) Serial.println("Falha na Recepcao");
    else if (error == OTA_END_ERROR) Serial.println("Falha no Fim");
  });
  ArduinoOTA.begin();
  Serial.println("Pronto");
  Serial.print("Endereco IP: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  // Mantenha esse trecho no inicio do laço "loop" - verifica requisicoes OTA
  ArduinoOTA.handle();
  digitalWrite(D4, HIGH); // Aciona sinal 2
  delay(2000); // Espera por 2 segundos
  digitalWrite(D4, LOW); // Apaga sinal 2
  delay(2000);  // Espera por 2 segundos
}

Apenas para dar uma noção da montagem, conectei um LED vermelho no sinal D4 (GPIO02) do NodeMCU, conforme mostrado no seguinte esquemático de Fritzing:

Circuito NodeMCU
Figura 8 – Esquemático de Ligação com NodeMCU.

Para testar esse programa em execução no Arduino IDE, coloque o código com a estrutura mostrada acima (lembrando de substituir a parte de ssid/senha com os dados para acesso à sua rede WiFi), e selecione agora o módulo pelo seu endereço IP em Ferramentas->Portas (Tools->Ports) do Arduino IDE. Mande o Arduino compilar e gravar o código.

Lembra que tivemos que instalar o Python para realizar a gravação remota? Observe que após o Arduino IDE compilar o código e começar o processo de gravação, irá aparecer uma janela do Windows pedindo autorização para o Python acessar recursos da Rede. Autorize marcando as duas caixas de opções, para que tudo corra bem.

python_authorize
Figura 9 – Autorização do Python para acesso à rede em Windows.

Por fim, acompanhe o resultado. Veja que agora a gravação ocorrerá via WiFi – Observe a minha seleção no canto inferior direito do Arduino IDE, veja que o “Port” é o endereço IP do módulo NodeMCU!

arduino_fota_ok
Figura 10 – NodeMCU programado com Arduino IDE via WiFi!

Pelo fato de você ter gravado seu programa com a estrutura do OTA, será possível, assim, novamente gravar o ESP8266 via WiFi usando o Arduino, e assim sucessivamente, mantendo a estrutura!

Gostou? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

55 Comentários

  1. Boa tarde, quero agradecer ao André pelo tutorial. Sou iniciante e faz umas duas semanas estava tentando fazer a programação OTA, tão logo li o tutorial consegui, meu erro estava em baixar o OTA e depois baixar a sketch remotamente o qual era baixado, porém ao tentar baixar outro a IDE dava não respondendo. Lendo o tutorial é que percebi que o sketch tem que estar dentro do OTA, ou seja, um sketch único. (Não houve necessidade de baixar o PHYTON ). Muito obrigado.

    1. Muito obrigado pelo feedback positivo!

  2. Boa noite.

    Eu segui todo o passo a passo até a parte que deveria aparecer a porta de rede no Arduino IDE. Não aparece de jeito nenhum. Eu consigo pingar o IP do ESP no Prompt normalmente. Então ele conectou ao roteador. Porém não aparece porta nenhuma de rede. Já instalei a versão 2.7.10 e 2.7.13 do Phyton e nada. Windows 10. Alguma solução? Ficarei muito agradecido.

    1. Eu consegui resolver. Foi só reiniciar o roteador e pronto. Já apareceu na porta de rede da IDE.

      1. Olá Cássio!

        Ótimo que tenha conseguido resolver. Provavelmente se comentário vai ajudar outras pessoas 😉

        Abraço!
        Rosana – Equipe MakerHero

  3. Simplesmente animal….é o que eu procurava.

    Vou testar e desde já, estou muito feliz

    1. Olá Flávio!

      Ficamos felizes em poder ajudar!

      Abraço!
      Rosana – Equipe MakerHero

  4. Parabéns André, agradeço por esse belo artigo, essa semana chega meu esp12e e já vou seguir todas essas dicas. Fazer atualizações via Wi-Fi amplia muito as possibilidades e nossos projetos vão a outro patamar. Li do início ao fim e todos os comentários, observei que existem alguns que tiveram dificuldades, estou empolgado e confiante… Forte abraço…

    1. Marcio,

      É isso aí, cara! Bola pra frente que os projetos saem!

      Abraços!
      Diogo – Equipe MakerHero

  5. Muito bom mesmo. Parabéns pelo posto. Vai me ajudar bastante.

    1. Muito obrigado pelo feedback positivo!

  6. Excelente.
    Um passo a passo que não deixou nenhuma dúvida.
    Parabéns.
    Minha próxima meta é enviar arquivos para um servidor (via GSM , usando SimCard M2M…).
    Espero encontrar uma ajuda do mesmo nível que encontrei com você.
    Abraço.

  7. olá 🙂

    Bom trabalho!

    Como faço para “limpar” as portas de rede no arduino? estou a trabalhar com o painlessmesh e os IP´s dos ESP estao sempre a alterar. Fecho e volto a abrir o codigo e apaga as portas de rede, mas existe forma de manter isso sempre atualizado?

    Obrigado!!

  8. Olá! Boa tarde!
    No meu caso, reiniciei a IDE depois de seguir o passo a passo deste tutorial, mas não aparece na lista de portas a porta network. O que pode estar acontecendo?

  9. Oi André, excelente tutorial.
    Como seria para fazer uma atualização a partir de uma rede remota, ou seja, não na mesma rede; obrigado

  10. Olá André; primeiramente, obrigado pelo bom tutorial mas, vc esqueceu de mencionar alguma coisa que, para um iniciante, como eu, não é tão fácil entender! A gente vai aprendendo!
    Por exemplo, quando vai-se gravar novamente o sketch através do endereço IP gerado pelo ESP, é preciso remover o cabo USB da placa ESP e então, carregar o sketch via WiFi.
    Outrossim, no upload do sketch, a IDE do Arduino pode mostrar uma mensagem de erro e, então, tem-se que refazer o procedimento de upload do programa. Obrigado

  11. Boa tarde André.
    Parabens pelo artigo.
    Fiz tudo como indicado só que minhas versões de Python e Arduino IDE são mais recentes.
    Apareceu o endereço IP do meu ESP8266 e mandei fazer transferencia por ele.
    Apareceu a seguinte mensagem na IDE:
    Uploading………..
    21:20:01 [ERROR]: Error Uploading
    21:20:01 [ERROR]: Error Uploading

    Qualquer coisa estou a disposição. Obrigado

    1. Sobre o ultimo assunto: Estou utilizando um ESP8266 01 somente alimentado pelos 3,3 volts e conectado a minha rede wifi(como ficaria em situação normal no local de controle). No lugar do Modemcu10(Esp-12 module) como sugerido no tutorial usei o Generic Esp8266 module.
      Apareceu em FERRAMENTAS e PORTAS o endereço IP do meu ESP ontem.
      Hoje já não aparece mais.
      Seria possivel fazer um tutorial voltado para o ESP8266 01 simples ?
      Abraço

      1. Olá Olinto,

        Acho que esse tutorial aqui não serve para o ESP8266 ESP-01.
        Mas sua sugestão está anotada!

        Abraço!
        Rosana – Equipe MakerHero

  12. Eu copiei exatamente o seu exemplo, acrescentei meu SSID e SENHA, carregou sem erro para o ESP8266, apareceu no Monitor Serial, “Pronto e o IP”, mas mesmo fechando o Arduino IDE e abrindo novamente, não aparece nenhuma Network Port.
    Alguma sugestão?

    1. Oi, consegui resolver utilizando outra máquina, só vou ter que identificar qual o problema daquela máquina inicial que está impedindo.
      Obrigado.

      1. Olá Eduardo,

        Se conseguir resolver o problema na outra máquina, conte aqui como fez. Pode ser o problema de outras pessoas também.

        Abraço!
        Rosana – Equipe MakerHero

        1. Oi Rosana, acho que inicialmente tinha sido alguma displicência de algum detalhe. Agora eu já consigo ver a porta ip para configurá-la, mas quando tento enviar aparece “[ERRO]: No Answer”. Vou tentar a mensagem detalhada da execução e continuo fazendo uns testes. Pode deixar que se resolver comento aqui.
          Obrigado.

          1. Olá Eduardo, estou com o mesmo problema, o esp32 conectou normalmente com ip válido, mas o arduino ide não mostra as portas de rede. Conseguiu alguma solução para isso? Grato.

  13. Boa Tarde, excelente trabalho, está me ajudando muito com meu projeto, parabéns.
    Há alguma maneira de acessar remotamente o ESP ?
    Pergunto isso pois no meu caso ele está recebendo dados de sensores, e gostaria de ver as variáveis.
    Através de um terminal remoto ou pelo próprio endereço.

    1. Olá Luis,

      Acredito que esse post pode te ajudar: https://www.makerhero.com/blog/planta-iot-com-esp8266-nodemcu/.
      Boa sorte no seu projeto!

      Rosana – Equipe MakerHero

  14. Excelente e esclarecedor post sobre esta importante funcionalidade OTA presente no nodemuc.

  15. Boa noite parabens mt bom ..
    Será q vc consegue me dar uma ajuda como fzr este projeto funcionar pelo smartphone por rede externa 4G ?
    Ja liberei a porta no roteador e no fiewall do windows fiz o teste de porta ela está aberta não consigo acessar por rede externa só aciona no smartphone conectado pelo wiffi!
    Obrigado…

  16. EU utilizo o esp como Acess Point, eu conseguiria utilizar o OTA com a própria rede do esp ou necessito conectar a uma rede wifi externa?

  17. Obrigado por compartilhar! Muito bem explicado. Parabéns!

  18. Excelente trabalho. Parabéns.
    Creio que também funciona com o ESP8266-1, correto?
    Abs;

  19. Cumprimentos Dr. André (merecidamente!)
    Achei muito interessante essa matéria, apesar de ser um pouquinho complicado, no que diz respeito à programação (pra mim).
    Assim, tenho uma questão: Tenho um Sketch para Relógio e Data com Matriz de LED e ESP8266 Nodemcu (já instalado e funcionando) mas, o código para o ESP8266 é simples, digo, não é com esse sistema OTA, portanto, como posso transformá-lo dessa forma (OTA), para quando eu quiser fazer uma atualização ou alteração remota do código, se é que eu entendi dessa forma?
    PS. Se vc quiser, posso lhe enviar o Sketch mencionado.
    Muito obrigado

  20. Esta solução tem que está na mesma rede, ok?
    Se possivel traga a solução para um acesso de qualquer lugar da internet.

  21. Ola, boa noite.
    Fiz todo o passo a passo, porem o IP nao aparece. Apenas a frase : Conexao falhou! Reiniciando…
    Poderia me informar o motivo?

  22. boa noite tenho esp8266 e 12 fiz CONFORME ESCRITO E APARECEU ISSO “Connection Failed! Rebooting…”.

  23. Olá, parabéns pelo artigo, montei tudo e funcionou perfeitamente com a placa de desenvolvimento, mas quando uso apenas o ESP-01 ou ESP-07 sem placa de desenvolvimento, não consigo efetuar o update via OTA neles, consigo pela serial perfeitamente, mas via wifi da erro. Poderia me ajudar, obrigado!

  24. Muito obrigado, deu certo. Grande abraço.

  25. Boa noite,
    Ótimo artigo André! porém o Arduino IDE não encontrou meu endereço IP na lista de portas. Mesmo reiniciando o programa 2x.

    O programa compilou e enviou normal, assim como mostrou que esta conectado em um IP específico.

    Você tem mais alguma ideia do que possa ser? utilizo o WIndows 10.

    1. Estou com o mesmo problema, conseguiu resolver?

    2. Conseguiu resolver? Também estou com este problema.

      1. Eu consegui resolver. Foi só reiniciar o roteador e pronto. Já apareceu na porta de rede da IDE.

  26. É possivel colocar ip fixo? É possível fazer leitura? ex. char rcv = client.read();
    Obrigado!

  27. ótimo trabalho..parabéns… eu consigo ter as informações de varias plantas em uma só conta? um só twitter?

  28. Eu consigo realizar esta gravação utilizando apenas o ESP8266 sem nodeMCU?
    Teria alguma grande alteração no tutorial?

    1. Tambem quero saber. Só o ESP8266 alimentado e conecatado na rede local WiFi teria o acesso para transferir o sketch ???

  29. Ótimo artigo, parabéns André. Só queria confirmar a seguinte dúvida que apareceu aí no meio:

    “(…) Não sei se isso é geral, mas comigo é preciso fechar o Arduino IDE e abrir o programa novamente”

    Tive que fazer a mesma coisa aqui, e estou utilizando o Arduino IDE no macOS Sierra.

    Essa frase sua me fez poupar vários muitos de dor de cabeça… 😀

  30. Ótimo artigo! porem estou tentando carregar meu esp 8266 12e com ftdi 232RL mas na hora de compilar e carregar da falha com a mensagem:
    “error: espcom_upload_mem failed”

    Alguém pode me socorrer por favor!!

  31. É possível fazer isso com o arduino wifi D1R2 ??

  32. Olá André,

    Você fez os testes usando windows 10?

    Obrigado.

    Abs,

    Carlos

  33. Bom dia excelente trabalho. Como faco para ligar por exemplo um led atravez de uma rede externa? Acesso remoto

  34. Bom dia excelente trabalho. Como faco para ligar por exemplo um led atravez de uma rede externa?

    1. Olha, através de uma rede externa aí é bom você ver alguma abordagem como uso de MQTT!

  35. SHOW, vou testar ainda hoje. PARABÉNS André.

    1. Muito obrigado!