Tutorial Módulo Wireless ESP8266 com Arduino

Tutorial Módulo Wireless ESP8266 com Arduino

Com o Módulo Wireless ESP8266 você pode conectar o seu Arduino nas redes wireless 802.11 b/g/n, enviando e recebendo dados nos modos AP (Access Point/Ponto de acesso) e STA (Station), e neste tutorial vamos mostrar como configurar esse módulo como web server, enviando dados para um browser.

Módulo Wireless ESP8266

Esse módulo se comunica com o microcontrolador utilizando interface serial e seu firmware pode ser atualizado, se necessário. Possui ainda 2 pinos GPIO (General Purpose Input Output, ou Entrada e Saída de uso geral), permitindo que o módulo seja programado diretamente e a GPIO acionada sem a necessidade de uso de um microcontrolador.

Outras características do Módulo Wireless ESP8266:

  • Conexão à redes padrão 802.11 B/G/N
  • Alcance aproximado: 91 metros
  • Tensão de operação : 3.3 VDC
  • Comunicação serial: pinos TX e RX
  • Modos de operação : Cliente, Access Point, Cliente+Access Point
  • Modos de segurança wireless : OPEN/WEP/WPA_PSK/WPA2_PSK/WPA_WPA2_PSK.
  • Suporta comunicação TCP e UDP, com até 5 conexões simultâneas

O módulo possui antena embutida e um conector de 8 pinos, além dos leds indicadores de funcionamento (vermelho) e comunicação (azul):

Módulo ESP8266 - Pinos

Atenção para o nível de sinal utilizado pelo módulo, que é de 3.3V, assim o pino RX (Recepção serial) não pode ser ligado diretamente ao Arduino. Você pode montar um divisor de tensão com dois resistores, utilizando o calculador deste link.

Ligação do módulo ESP8266 ao Arduino

Na ligação do ESP8266 com o Arduino usamos um resistor de 1K entre o Vcc (3.3V) e o pino CH_PD (Chip Enable). Para o divisor de tensão, utilizamos 2 resistores de 10K, o que diminuiu a tensão do nível de sinal para um valor suficiente para os testes. Os dois push-buttons do circuito serão utilizados para enviar informações à uma página web, utilizando um web server. Os resistores utilizados nos botões também são de 10K.

Circuito Arduino e módulo ESP8266

Recomendamos a utilização de uma fonte externa para alimentação do módulo, pois dependendo da situação ele pode exigir até 300mA de corrente, e o limite do Arduino é de 50mA.

Programa web server ESP8266

Antes de carregarmos o programa do web server, vamos alterar a velocidade de comunicação (baud rate) do módulo, que por padrão está setada em 115200 (firmware versão 0.9.5). Nessa velocidade, a biblioteca Software Serial não foi capaz de realizar a comunicação adequadamente, por isso alteramos a velocidade para 19200, utilizando o programa abaixo.

Na linha 17 colocamos a velocidade padrão (115200), e na linha 25 setamos a nova velocidade (19200):

// Programa: Versao firmware modulo ESP8266 e
//           mudanca de baud rate
// Autor : FILIPEFLOP

#include <SoftwareSerial.h>

//RX pino 2, TX pino 3
SoftwareSerial esp8266(2, 3);

#define DEBUG true

void setup()
{
  Serial.begin(9600);
  // Configure na linha abaixo a velocidade inicial do
  // modulo ESP8266
  esp8266.begin(115200);
  sendData("AT+RST\r\n", 2000, DEBUG);
  delay(1000);
  Serial.println("Versao de firmware");
  delay(3000);
  sendData("AT+GMR\r\n", 2000, DEBUG); // rst
  // Configure na linha abaixo a velocidade desejada para a
  // comunicacao do modulo ESP8266 (9600, 19200, 38400, etc)
  sendData("AT+CIOBAUD=19200\r\n", 2000, DEBUG);
  Serial.println("** Final **");
}

void loop() {}

String sendData(String command, const int timeout, boolean debug)
{
  // Envio dos comandos AT para o modulo
  String response = "";
  esp8266.print(command);
  long int time = millis();
  while ( (time + timeout) > millis())
  {
    while (esp8266.available())
    {
      // The esp has data so display its output to the serial window
      char c = esp8266.read(); // read the next character.
      response += c;
    }
  }
  if (debug)
  {
    Serial.print(response);
  }
  return response;
}

Nesse programa, é mostrado no serial monitor a versão de firmware do módulo e também se os comandos foram processados com sucesso:

Serial_monitor_Baud_Rate

No programa vamos utilizar a biblioteca SoftwareSerial para efetuar a comunicação com o módulo usando os pinos 2 (RX) e 3 (TX). Assim, podemos utilizar o serial monitor para acompanhar o envio dos comandos ao módulo. Na linha 18 do programa, substitua as informações de SSID (nome da rede wireless) e SENHA pelas informações da rede à qual o módulo irá se conectar.

// Programa: Web Server com modulo ESP8266
// Alteracoes e adaptacoes: FILIPEFLOP

#include <SoftwareSerial.h>

//RX pino 2, TX pino 3
SoftwareSerial esp8266(2, 3);

#define DEBUG true

void setup()
{
  Serial.begin(9600);
  esp8266.begin(19200);

  sendData("AT+RST\r\n", 2000, DEBUG); // rst
  // Conecta a rede wireless
  sendData("AT+CWJAP=\"SSID\",\"SENHA\"\r\n", 2000, DEBUG);
  delay(3000);
  sendData("AT+CWMODE=1\r\n", 1000, DEBUG);
  // Mostra o endereco IP
  sendData("AT+CIFSR\r\n", 1000, DEBUG);
  // Configura para multiplas conexoes
  sendData("AT+CIPMUX=1\r\n", 1000, DEBUG);
  // Inicia o web server na porta 80
  sendData("AT+CIPSERVER=1,80\r\n", 1000, DEBUG);
}

void loop()
{
  // Verifica se o ESP8266 esta enviando dados
  if (esp8266.available())
  {
    if (esp8266.find("+IPD,"))
    {
      delay(300);
      int connectionId = esp8266.read() - 48;

      String webpage = "<head><meta http-equiv=""refresh"" content=""3"">";
      webpage += "</head><h1><u>ESP8266 - Web Server</u></h1><h2>Porta";
      webpage += "Digital 8: ";
      int a = digitalRead(8);
      webpage += a;
      webpage += "<h2>Porta Digital 9: ";
      int b = digitalRead(9);
      webpage += b;
      webpage += "</h2>";

      String cipSend = "AT+CIPSEND=";
      cipSend += connectionId;
      cipSend += ",";
      cipSend += webpage.length();
      cipSend += "\r\n";

      sendData(cipSend, 1000, DEBUG);
      sendData(webpage, 1000, DEBUG);

      String closeCommand = "AT+CIPCLOSE=";
      closeCommand += connectionId; // append connection id
      closeCommand += "\r\n";

      sendData(closeCommand, 3000, DEBUG);
    }
  }
}

String sendData(String command, const int timeout, boolean debug)
{
  // Envio dos comandos AT para o modulo
  String response = "";
  esp8266.print(command);
  long int time = millis();
  while ( (time + timeout) > millis())
  {
    while (esp8266.available())
    {
      // The esp has data so display its output to the serial window
      char c = esp8266.read(); // read the next character.
      response += c;
    }
  }
  if (debug)
  {
    Serial.print(response);
  }
  return response;
}

Acompanhe no serial monitor as informações de conexão ao access point (AP) e também o endereço IP obtido pela placa.

Serial Monitor

Para testar o funcionamento do circuito, abra um browser (Chrome, Firexox, etc) e digite na barra de endereços o endereço IP que foi mostrado no passo anterior, no nosso caso, 192.168.0.27:

ESP8266 - Browser

Acione os botões do circuito para que as informações correspondentes sejam enviadas ao browser. Devido à taxa de atualização, as informações podem demorar alguns segundos para aparecer na tela. Abaixo, temos uma imagem do circuito que utilizamos para montar este post:

Circuito montado

Gostou? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no final do artigo) e visite nossa loja FILIPEFLOP!

8
Tutorial Módulo Wireless ESP8266 com Arduino
303 votos, 4.72 classificação média (94% pontuação)

Formado em Ciência da Computação pela Universidade de Mogi das Cruzes, atualmente responsável pelo departamento técnico da FILIPEFLOP.

Compartilhe este Post

273 Comentários

  1. Clarice Gonçalves Barreto - 21 de fevereiro de 2017

    Boa tarde,
    estou com um projeto para me informar alguns dados de sensor, ja realizei o sistema do sensor porem ele so aparece no serial monitor gostaria de ajuda para enviar essa informação para web via Esp8266 minha dificuldade está em fazer um codigo para o mesmo. e como extra se puder me ajudar a fazer com que os dados fiquem armazenado eu ficarei muito grata.

    Fico no aguardo da sua ajuda.

  2. Charles França de sousa - 16 de fevereiro de 2017

    Ola bom dia eu queria sabe um nome de uma peça que um colega meu comprou no seu site foi um sensor de umidade do solo Higrômetro, porem eu quero fazer a documentação do projeto i ele tem uma peça antes da lamina, segue a baixo o exemplo na imagem se vç soube vç pode me responde por favor. a imagen nao vai como comentário mas deixo aqui o link do endereço http://www.filipeflop.com/pd-aa99a-sensor-de-umidade-do-solo-higrometro.html.

  3. ВалокДербент - 11 de fevereiro de 2017

    RE:Tutorial Modulo Wireless ESP8266 com Arduino | Blog FILIPEFLOP Валок Салфорд Заозёрный

  4. jefferson dias - 30 de janeiro de 2017

    ola, comprei tanto o modulo esp01 quanto o adaptador agora preciso que um cliente programado em desktop receba as leituras que esta sendo feito pelo arduino mais não estou conseguindo alguem pode me ajudar?

  5. William - 26 de janeiro de 2017

    Estou com o problema que vi com muitos aconteceu, Versao de firmware e vai direto para ** Final ** sem mostrar nenhuma informação.

    Alguma solução? Já alterei os limites de baud rate, já coloquei uma fonte externa. Obs: Estou usando o mega 2560, o adaptador para o ESP8266.

  6. Bruno - 10 de janeiro de 2017

    Ola. Gostaria de saber como enviar uma mensagem da Serial do arduino para um app do android usando o esp8622? Alguem tem um programa parecido?

  7. João Paulo - 10 de janeiro de 2017

    Prezados,

    Estou com dificuldades para montar os comando de comunicação do arduino com o esp8266-01, gostaria de saber como faço para entender mais sobre esse tipo de comando: sendData(“xxxxx\r\n”, 1000, DEBUG)

    • JAGoris - 10 de janeiro de 2017

      João Paulo, o comando que voce se refere é na realidade uma função que é criada dentro do programa.
      Veja por exemplo no programa que altera a velocidade, logo abaixo do “void loop() {}” é criada a função de enviar comandos AT para o esp: “sendData (String command, const int timeout, boolean debug)”.
      Quando voce chama a função como em “sendData(“AT+RST\r\n”, 2000, DEBUG) significa que:
      AT+RST\r\n ira passar para a variavel da função “command” (uma string);
      2000 irá para a variavel “timeout” (uma variavel do tipo contante e inteira);
      DEBUG irá para a variavel “debug” (booleana 0 ou1);

      Dentro da função criada tem as rotinas para enviar os comandos AT para o ESP (command) aguardar o tempo de resposta (timeout) e pelo envio da palavra DEBUG (debug) informar se o comando foi bem sucedido.
      Procure ler algum livro sobre programação em “C” para se informar com mais profundidade.

  8. Sandro José Garani - 14 de dezembro de 2016

    Bom dia,

    Já adquiri dois módulos e ambos com o mesmo problema, não há resposta dos comandos enviados para o módulo.
    Estou utilizando o Arduino Mega, vi nos comentários que em outros Arduinos há caso de colocar uma fonte extra e outro de mudar os pinos.
    Alguém conseguiu fazer funcionar na placa Arduino Mega depois de ter o problema de comunicação com o módulo?
    Atenciosamente,

    • JAGoris - 14 de dezembro de 2016

      Sandro, sugiro fazer uma visita ao site http://randomnerdtutorials.com/tutorials/. La tem varias sugestões e tutoriais, inclusive um tutorial sobre os problemas que estes módulos apresentam.
      Para não ter problemas adquira o modelo ESP8266-12E é um pouco mais caro mas funciona perfeitamente.
      No site indicado acima, você pode fazer perguntas em português, porque o gajo é um português e mora em Portugal e o nome dele é Rui Santos.

    • selega - 2 de janeiro de 2017

      Boa tarde,

      Amigo, já tentou programar direto no ESP?
      Pois enfrentei problemas para fazer o arduino comunicar com o módulo, no meu caso esp07. Depois que programei direto no módulo, funcionou perfeitamente!
      Não sei qual o seu módulo, mas o ESP07 tem que colocar o REST, CH_PD em 3,3Vcc e o GPIO015 com um resistor para o GND, usei todos de 10K.
      Tenho um ESP01 funcionando a um bom tempo, mas o código foi carregado direto nele!!!

  9. Leonardo Brozinga Viglino - 1 de dezembro de 2016

    Ola meu caro amigo, corrija me se eu estiver enganado, mas pela ligacao voce esta conectando os 5V do arduino direto no VCC do ESP ? Ele nao e so 3,3V?

  10. claudinei - 26 de novembro de 2016

    Boa tarde pessoal.
    Como eu faço para enviar as leituras de um sensor acs712 para um servidor web utilizando o esp8266-1.
    Estou usando o modulo sem o arduino, e consegui fazer um teste de acender e apagar um led atraves de uma pagina web.
    Na programação qual pino devo colocar como leitura?

  11. Professor Roceli - 16 de novembro de 2016

    atualmente a FILIPEFLOP está comercializando a ESP8266 ESP-05. Eu pergunto: preciso utilizar alguma biblioteca? e qual seria as alterações em relação a este post?

  12. Luiz Gustavo - 16 de novembro de 2016

    Olá,

    Fiz tudo de acordo com o tutorial, mas infelizmente não obtive sucesso utilizando o arduino nano, na serial só printa ” Versáo do Firmeware e Final”. Já verifiquei todas as conexões, as mesmas estão todas corretas. Alguém pode me ajudar. Desde já agradeço.

    • Eliel Rogerio Faccion - 7 de dezembro de 2016

      Bom dia! Eu tive o mesmo problema. Acabei descobrindo que minha fonte não era suficiente para o consumo do ESP8266. Adicionei uma fonte na protoboard e o problema foi resolvido. O ESP8266 consome até 300ma em alguns momentos, portanto o Arduino não consegue suprir sua necessidade.

  13. Jonathan Sansalone - 30 de outubro de 2016

    Boa tarde, eu adquiri o módulo + adaptador e estou tentando comunicar com um Arduino Pro Mini 5V, mas não estou tendo sucesso. O mesmo código e montagem funciona perfeitamente no Arduino Uno. Podem me ajudar?

  14. Fabricio - 29 de outubro de 2016

    Boa tarde,

    Muito bom o post.

    Teria alguma coisa parecida porém utilizando o ESP8266 para PIC ?
    Existem bibliotecas para isso ?

    Obrigado

  15. Leonardo Mata - 23 de outubro de 2016

    esta dando erro nesse linha,

    sendData(webpage, 1000, DEBUG);

    podem me ajudar?

  16. Maildo Lopes Pinto - 22 de outubro de 2016

    Olá pessoal,
    Pra quem ta tendo problema com o ESP, eu estava e pelo visto agora ele ta funcionando normalmente, as mudanças foram as seguintes:

    1-Vá em Libraries do arduino e na pasta ESP8226, abram o arquivo ESP8266.h e mudem a linha 50 para “ESP8266(SoftwareSerial &uart, uint32_t baud = 19200);” sem as aspas.

    2-Em relacão a montagem na protoboard, eu mudei os resistores do RX do esp para dois de 1K, só assim que funcionou pra mim, com os dois de 10k não tava dando muito certo e nem com um divisor de tensão para 3.3V, com 10k e 20k.

    Espero ter ajudado alguém, pois foi uma luta pra esse bixinho funcionar aqui, ele ainda fica meio instável, mas agora pelo menos já conecta no WIFI :D

    • João Paulo - 14 de novembro de 2016

      OLá…na libraries do meu arduino não tem a pasta ESP8226…como faço para adicioná-la …ja troquei os resistores para 2 de 1k como vc disse mas na janela serial monitor continua a aparecer caracteres estranhos…vc pode me ajudar? desde já agradeço

    • neto - 19 de novembro de 2016

      oi ja estou tentando fazer esse modulo funcionar a alguns meses tentei diversos jeitos ,mas ate agora sem sucesso posso conversa com vc por email ou whats? queria pedir umas dicas estou usando esse modulo no meu tcc

  17. Lucas Marçal - 19 de outubro de 2016

    Iai novamente pessoal.
    Seguinte depois de muitos teste (testei até com o FTDI) continua com o mesmo problema com caracteres desconhecidos e percebi que isso ocorre quando o CH_PD está no VCC se ele estiver desligado não manda nada.
    E se eu mandar um comando tipo AT ele mostra AT no monitor.
    PF ME AJUDEM

    • Tiago - 24 de outubro de 2016

      Olá. Estive tentando fazer um ESP-12E rodar, e de tantos problemas, fiquei meio expertise nele.

      Bom, recomendo – primeiro – que você faça as ligações de alta utilizando um resistor (com exceção do próprio Vcc). Em segundo lugar, o CH_PD precisa mesmo ficar em alta, assim como o Reset. Por fim, o BaudRate padrão do meu ESP era 19200.

      Para testes, não precisei de uma fonte externa, mas para montar um WebServer, o ESP vai precisar de uma.

      Bom trabalho.

      Att,

      • JAGoris - 24 de outubro de 2016

        Tiago, Gostaria de saber que tipo de ESP8266 que está usando. Pergunto, porque eu uso já ha bastante tempo o modelo ESP826612E da DEVKIT V2 e nunca encontrei qualquer problema para programa-lo, pois utiliza a mesma IDE do Arduino porem sem o Arduino. É do tipo “stand alone” e comporta-se como um arduino. Usa os mesmos comandos que se usa para programar um arduino, porem tem bibliotecas próprias disponíveis largamente na nuvem. Deixa de sofrer e compre um destes!!! hihihi

      • ThiagoGm - 11 de novembro de 2016

        Olá Tiago, estou com um pouco de dificuldades de rodar o Esp 12e com o arduino uno ´´Arduino uno + esp 12e“ , tu poderia me dizer qual ligações que tenho que fazer?

        Muito Obrigado!

        • Tiago - 14 de novembro de 2016

          Olá, Thiago. Bom… as ligações do 12E são um pouco diferentes, pois ele tem mais pinos.

          A pinagem pra rodar o código que já está embarcado (Flash Mode) é a seguinte:

          Vcc > 3.3v (!)
          RST > 3.3v
          CH_EN > 3.3v
          GND > GND
          GPIO15 > GND
          GPIO0 > 3.3v
          GPIO2 > 3.3v
          TX (esp) → RX (Arduino)
          RX (esp) → TX (Arduino) *

          (!) É altamente IMPRESCINDÍVEL que você forneça uma boa alimentação a 3.3v ao ESP. Sugiro que consiga uma alimentação externa de 5V/1A, e use um regulador de tensão (step-down) pra 3.3V. Caso o ESP não obtenha energia o suficiente, podem ocorrer ruídos na comunicação serial, ou mesmo ele não conseguir obter IP e ficar reiniciando.

          * – O ESP funciona com 3.3V, e é intolerante a sinais de 5v. Você vai precisar dropar a saída do sinal digital do Arduino para 3.3v, pois ela é 5V. Você pode tentar com divisor de tensão, mas o ideal seria uma conversão via circuito integrado.

          Por fim, a velocidade padrão para a comunicação do ESP com o Arduino, comigo, foi 19,2kbps (baudrate de 19200).

          Feito tudo isso, abra o monitor serial e reinicie o ESP (desligando a alimentação e depois religando-a). Deve aparecer uma mensagem de boot. Aí você pode programá-lo por comandos AT. Mas é aí onde mora o problema… ainda estou com problemas em programar o ESP via comandos AT… (mas é algo lógico, e não mais de hardware).

          De todo modo… boa sorte.

          • ThiagoGm - 16 de novembro de 2016

            Olá Tiago,

            Bem ,fiz tudo ali como solicitado , mas meu retorno é de apenas ´´sujeira“ não importa a baudrate que eu coloque.

            Eu estou tentando criar um WebServer pelo arduino uno, e gostaria que o ESP 12E apenas fizesse o meio de conexão do arduino, mas estou começando a pensar que isso não é possível através desse modelo.

            Configurando ele pela IDE do arduino ´´ou seja, direto na memória dele,sem o auxilio de nenhum arduino“, ele fica 100%.

            Pra parte do TX do arduino para o RX do 12E, já usei divisor de tensão e também o 4050BE, e obtenho o mesmo resultado.

            Já não sei mais qual configuração devo usar para fazer o que preciso, tens alguma dica ?

            Muito Obrigado!

  18. Geraldo - 17 de outubro de 2016

    Boa noite,

    Gostaria de saber como deixar o IP fixo do ESP8266… Já usei a função AT+CIPSTA_DEF e aparece sempre ERROR :/

  19. Vinicius da Silva Almeida - 14 de outubro de 2016

    Pessoal boa tarde!

    Estou desenvolvendo uma aplicação na qual faz a leitura de um cartão RFID e envia os dados para um webserver utilizando o modulo esp8266-01. A leitura do cartão e o enviado de dados está funcionando normalmente , mas quando vou fazer uma segunda leitura a pagina não alimenta e fica aparecendo a seguinte informação no monitor serial (abaixo), e para fazer uma nova leitura preciso reiniciar o arduino, será que alguém pode me ajudar obter uma solução…

    desde já agradeço
    Vinicius Almeida

    OK
    UID da tag: 50 7C 1B 2B,405:GET / HTTP/1.1
    HAT+CIPSEND=0,120

    OK
    > <•…‘âU ‹
    ©WW'®³²h c¹Ñ•šòz«…‘ùDADOS DE ACESSO Cartão: 50 7C 1B 2B
    SEND OK
    AT+CIPCLOSE=0

    +IPD,1,347:GET /favicon.ico HTTP/1.1
    Host: 192.168.0.105
    Connection: keep-alive
    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36
    Accept: */*
    DNT: 1
    Referer: htt://92.68..105
    Acep-Enodig: zip defate sdh
    ccet-Lnguge:en-U,enq=08,p-BRq=0.,ptq=04

    0,LOSD

    OK UID da tag: 86 A5 1A 2B,463:GET / HTTP/1.1
    Host: 192.168AT+CIPSEND=0,120
    busy p…
    DADOS DE ACESSO Cartão: 86 A5 1A 2BAT+CIPCLOSE=0
    busy p…

    • JAGoris - 15 de outubro de 2016

      Vinicius, pela sua descrição isto esta parecendo falha na alimentação no ESP. Confira se esta sendo alimentado com 3,3 volts e sem mau contatos, e como sugestão recomendo usar uma fonte externa para o ESP, não esquecendo de interligar os GNDs de ambas placas. Uma fonte de 3,3 Volts e 500 mA atende esta placa.

  20. Tiago - 10 de outubro de 2016

    Olá.

    Gostaria de saber se usando o ESP é possível executar comandos “get” via http para, por exemplo, passar algum parâmetro via web.

    Obrigado.

  21. Geraldo - 1 de outubro de 2016

    Boa noite pessoal, preciso da ajuda de vocês

    Gostaria de saber como ficaria esse experimento http://blog.filipeflop.com/arduino/medidor-de-energia-eletrica-com-arduino.html com o ESP8266…. Estou tentando, mas até agora sem sucesso

  22. Leonardo Baptistella - 1 de outubro de 2016

    olá o meu na hora de configurar o servidor ele da o seguinte erro

    “qXÑzBC! ÂI!³ÿ ÐS!=Ñnä ÐS!}ÑFä Ð!HÕòIÔ!1¤(ÙÃÖaK)t+ a0Ør’÷
    Ai-Thinker Technology Co.,Ltd.

    ready
    ÿAT+CIPMUX=1

    OK
    ÿÿÿAT+CIPSERVER=1,80

    OK
    ÿ

  23. Henrique Rosa - 28 de setembro de 2016

    Onde está a lib “SoftwareSerial.h”?

    Obrigado!

    • JAGoris - 29 de setembro de 2016

      Caro Henrique, esta library bem como qualquer outra usada no arduino você encontra na internet, bastando digitar no brownser o nome dela. O site do arduino.cc tem quase todas. Na IDE do arduino. clique em Ajuda e lá irá encontrar um caminho direto…

  24. Lucas Marçal - 27 de setembro de 2016

    Boa tarde.
    Eu estava testando esse projeto, mas deu um tipo de erro que eu não entendi.
    Quando faço as ligações carrego o programa, não mostra nada no meu serial monitor.
    Não fala se a conexão foi efetuada, não mostra a versão e nem as respostas (ok e ready).
    Por favor se souber me ajuda.

    • JAGoris - 19 de outubro de 2016

      Lucas, se estiver usando a biblioteca SoftwareSerial, verifique logo no inicio do sketch (veja abaixo) são determinados os pinos que a nova serial irá usar. No exemplo, esta sendo criada uma nova serial no ESP chamada <> que ira utilizar os pinos 2 e 3 para RX e TX respectivamente.

      #include

      //RX pino 2, TX pino 3
      SoftwareSerial esp8266(2, 3);

      • JAGoris - 19 de outubro de 2016

        Só para complementar, a serial chamada esp8266 é para o arduino se comunicar com o modulo ESP pelos pinos 2 e 3 e a serial da linha Serial.begin(9600) abre a porta dos pinos 0 e 1 no arduino que são default para o terminal interno do arduino. Alias pode-se utilizar qualquer software terminal para isto, bastando abri-las na porta em que o arduino esta conectado.

  25. Isael - 26 de setembro de 2016

    Bom dia amigo eu busquei varios exemplo baseado em comando AT e nao consegui nada ate que passei a utilizar a linguagem LUA NODEMCU, muito mais facil de progrramar. Facam o teste.

  26. Luiz Inácio - 16 de setembro de 2016

    Comprei 5 módulos para utilização no meu projeto, no entanto, não estou conseguindo utilizar nenhum dos módulos.
    Estes não realizam a conexão com o arduino. Já vi todos os tutorias disponíveis pelo blog de vocês e não tive nenhuma solução.
    Quando inserido o código para comunicação com o arduino disponibilizado aqui, simplesmente aparece no terminal: MÓDULO INDISPONÍVEL.
    Quando utilizado junto ao Terminate para atualização do firmware, o módulo não emite nenhuma resposta aos comandos inseridos.

    O que fazer quando não há nenhuma resposta do módulo?

  27. Marcelo - 10 de setembro de 2016

    Adilson, tudo bem?
    Parabéns pelo post!
    Estou com duas duvidas, a primeira reparei que a atualização do Browser só funciona com o terminal aberto, eu preciso alterar algo no exemplo? Eu fiz um telnet e tem conexão na porta 80, só não achei a explicação para não atualizar no Browser.
    Tem como diminuir essa taxa de atualização?
    Estou usando o esp8266 com firmware 0.9.2.2 e tive que alterar o esp8266.begin() para 9600 funcionar, existe algum problema?
    ABs!

    • Adilson Thomsen - 12 de setembro de 2016

      Boa tarde Marcelo,

      Tudo bem? Eu realmente não vi esse problema (ainda). Você testou com outro browser ? Quanto à taxa de atualização, mude o content=”3″ para content=”1″, por exemplo, na linha 39 do programa.

      Sem problemas quanto à taxa de atualização. Alguns módulos funcionam com 9600, outros com 19200, 57600, etc.

      Abraço e obrigado!

      Adilson – Equipe FILIPEFLOP

  28. TUANE LISBOA SILVA PAIXÃO - 24 de agosto de 2016

    Olá, comprei o adptador do esp8266.
    1- Não encontro a montagem , tenho duvidas, vi aki algumas duvidas parecidas ( Sugiro que faça um post ! ) Pela quantidade de post.
    2- Gostaria de saber se existe a possibilidade , de enviar os comandos do arduino para o browser , utilizando o esp8266? E como poderia funcionar!
    3- E se existe a possibilidade de gerenciar todas as portas do arduino, utilizando o esp8266, somente como wifi. Como se possível?

  29. André - 9 de agosto de 2016

    Olá Adilson, parabéns pelo post, fiquei com uma duvida caso eu use o adaptador (http://www.filipeflop.com/pd-349a15-adaptador-para-modulo-wifi-esp8266-esp-01.html) do esp8266, a estrutura do código muda? Obrigado

    • Gustavo de Paula - 14 de agosto de 2016

      Comprei o adaptador e tenho a mesma dúvida!

      • André - 15 de agosto de 2016

        Gustavo consegui resolver aqui, ligue o adaptador da seguinte maneira:
        adaptador –> Arduino Mega
        GND –> GND
        VCC –> 5V
        TX –> RX (19)
        RX –> TX (18)

        No meu caso eu ainda fiz algumas adaptações na programação, como o arduíno mega possuí diversas conexões seriais nativa, acabei usando uma delas (https://www.arduino.cc/en/Reference/Serial).

        Na programação substituí esp8266 para Serial1. E na segunda programação que ele faz a conexão e exibe a página aumentei o delay de 3000 para 9000 na linha 19.

        Espero ter ajudado. Abraços

    • Adilson Thomsen - 17 de agosto de 2016

      Boa tarde André,

      Obrigado! Neste caso, basta ligar diretamente o adaptador no Arduino. Usando os exemplos do post, você vai ligar o RX do adaptador no pino 3 do Arduino, o TX no pino 2, o Vcc e o GND. Você não vai precisar dos resistores.

      Abraço!

      Adilson – Equipe FILIPEFLOP

      • Alvanir - 1 de novembro de 2016

        Olá estou tentando ligar o módulo através do adaptador no arduino Mega 2560, mas não estou conseguindo. Estou seguindo os mesmos passos desse tutorial, mas sem sucesso, poderia me ajudar. Obrigado abraço

      • Marcelo Galvão - 24 de janeiro de 2017

        Pois então com o Adpatador a ligação esta correta e o teste roda mas não mostra nada no Serial Monitor que deveria vir via sendData(…., DEBUG), será a configuração no router D-Link? ou precisa de outro código pra usar com o adptador?

        abçs.

        Marcelo

  30. Gabriela Samagaio - 16 de julho de 2016

    Boa tarde,

    Consegui, executar os códigos para testar a comunicação do modulo, como o do reset.
    Contudo, quando este correr este código ele realiza-se os dois primeiros passas correctamente, mas não consegue gerar nenhum IP, mesmo que alterando alterando no código o nome da minha rede e colocando a palavra pass.
    Como posso resolver esta situação? pode ter haver com o facto de estar ligado à rede do telemóvel?

  31. Junior - 11 de julho de 2016

    NO esp8266 é possível fazer código que solicite os dados para usuário da rede que o dispositivo irá conectar?

  32. Manoel - 11 de julho de 2016

    Boa tarde,

    Gostaria de saber se vocês podem me ajudar, estou tentando desenvolver um sistema de controle remoto utilizando dois ESP01, onde um é o servidor e o outro o cliente, neste sistema o controle (cliente) terá três botoes que acionaram, no servidor, nove relés.
    Seguem os códigos do que fiz até agora.

    Servidor:

    #include
    #define DEBUG true
    SoftwareSerial esp8266(2, 3);
    const int RST = 4;
    const int sentido1 = 19;
    const int sentido2 = 18;
    const int sentido3 = 17;
    const int sentido4 = 16;
    const int sentido5 = 15;
    const int sentido6 = 14;

    void setup() {
    Serial.begin(9600);
    esp8266.begin(19200);
    pinMode(RST, OUTPUT);
    pinMode(sentido1, OUTPUT);
    pinMode(sentido2, OUTPUT);
    pinMode(sentido3, OUTPUT);
    pinMode(sentido4, OUTPUT);
    pinMode(sentido5, OUTPUT);
    pinMode(sentido6, OUTPUT);
    digitalWrite(RST, LOW);
    delay(300);
    digitalWrite(RST, HIGH);
    sendData(“AT+RST\r\n”, 2000, DEBUG);
    sendData(“AT+CWMODE=2\r\n”, 1000, DEBUG);
    sendData(“AT+CIPMUX=1\r\n”, 1000, DEBUG);
    sendData(“AT+CIPSERVER=1,80\r\n”, 1000, DEBUG);
    sendData(“AT+CIFSR\r\n”, 1000, DEBUG);
    sendData(“AT+CWSAP=\”fravi\”,\”planticenter\”,1,3\r\n”, 1000, DEBUG);
    sendData(“AT+CIPSTO=60\r\n”, 1000, DEBUG);
    }

    void loop() {
    if (esp8266.available()) {
    if (esp8266.find(“+IPD,”)) {
    delay(100);
    int connectionId = esp8266.read() – 48;
    esp8266.find(“pin=”);
    int pinNumber = (esp8266.read() – 48) * 10;
    pinNumber += (esp8266.read() – 48);
    //Controle do motor 1
    if (pinNumber == 99) {
    digitalWrite(sentido1, HIGH);
    delay(1550);
    digitalWrite(sentido1, LOW);
    }
    if (pinNumber == 96) {
    digitalWrite(sentido2, HIGH);
    delay(1550);
    digitalWrite(sentido2, LOW);
    }
    //Controle do motor 2
    if (pinNumber == 98) {
    digitalWrite(sentido3, HIGH);
    delay(1550);
    digitalWrite(sentido3, LOW);
    }
    if (pinNumber == 95) {
    digitalWrite(sentido4, HIGH);
    delay(1550);
    digitalWrite(sentido4, LOW);
    }
    //Controle do motor 3
    if (pinNumber == 97) {
    digitalWrite(sentido5, HIGH);
    delay(1550);
    digitalWrite(sentido5, LOW);
    }
    if (pinNumber == 94) {
    digitalWrite(sentido6, HIGH);
    delay(1550);
    digitalWrite(sentido6, LOW);
    }
    String closeCommand = “AT+CIPCLOSE=”;
    closeCommand += connectionId;
    closeCommand += “\r\n”;
    sendData(closeCommand, 100, DEBUG);
    }
    }
    }

    String sendData(String command, const int timeout, boolean debug) {
    String response = “”;
    esp8266.print(command);
    long int time = millis();
    while ( (time + timeout) > millis()) {
    while (esp8266.available()) {
    char c = esp8266.read();
    response += c;
    }
    }
    if (debug) {
    Serial.print(response);
    }
    return response;
    }

    Cliente:

    #include
    #define DEBUG true
    SoftwareSerial esp8266(2, 3);
    const int RST = 4;
    const int botao1 = 14;
    const int botao2 = 15;
    const int botao3 = 16;
    const int led1 = 17;
    const int led2 = 18;
    const int led3 = 19;
    int estadoLed1 = LOW;
    int estadoLed2 = LOW;
    int estadoLed3 = LOW;
    int estadoBotao1;
    int estadoBotao2;
    int estadoBotao3;
    int ultimoEstadoBotao1 = LOW;
    int ultimoEstadoBotao2 = LOW;
    int ultimoEstadoBotao3 = LOW;
    long lastDebounceTime1 = 0;
    long lastDebounceTime2 = 0;
    long lastDebounceTime3 = 0;
    long debounceDelay1 = 50;
    long debounceDelay2 = 50;
    long debounceDelay3 = 50;

    void setup() {
    Serial.begin(9600);
    esp8266.begin(19200);
    pinMode(botao1, INPUT);
    pinMode(botao2, INPUT);
    pinMode(botao3, INPUT);
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    digitalWrite(led1, estadoLed1);
    digitalWrite(led2, estadoLed2);
    digitalWrite(led3, estadoLed3);
    pinMode(RST, OUTPUT);
    digitalWrite(RST, LOW);
    delay(300);
    digitalWrite(RST, HIGH);
    sendData(“AT+RST\r\n”, 2000, DEBUG);
    sendData(“AT+CWMODE=1\r\n”, 1000, DEBUG);
    sendData(“AT+CIPMUX=0\r\n”, 1000, DEBUG);
    sendData(“AT+CIFSR\r\n”, 1000, DEBUG);
    sendData(“AT+CWJAP=\”fravi\”,\”planticenter\”\r\n”, 4000, DEBUG);
    sendData(“AT+CIPSTATUS=?\r\n”, 1000, DEBUG);
    }

    void loop() {
    int leitura1 = digitalRead(botao1);
    if (leitura1 != ultimoEstadoBotao1) {
    lastDebounceTime1 = millis();
    }
    if ((millis() – lastDebounceTime1) > debounceDelay1) {
    if (leitura1 != estadoBotao1) {
    estadoBotao1 = leitura1;
    if (estadoBotao1 == HIGH) {
    estadoLed1 = !estadoLed1;
    }
    }
    }
    digitalWrite(led1, estadoLed1);
    ultimoEstadoBotao1 = leitura1;
    int leitura2 = digitalRead(botao2);
    if (leitura2 != ultimoEstadoBotao2) {
    lastDebounceTime2 = millis();
    }
    if ((millis() – lastDebounceTime2) > debounceDelay2) {
    if (leitura2 != estadoBotao2) {
    estadoBotao2 = leitura2;
    if (estadoBotao2 == HIGH) {
    estadoLed2 = !estadoLed2;
    }
    }
    }
    digitalWrite(led2, estadoLed2);
    ultimoEstadoBotao2 = leitura2;
    int leitura3 = digitalRead(botao3);
    if (leitura3 != ultimoEstadoBotao3) {
    lastDebounceTime3 = millis();
    }
    if ((millis() – lastDebounceTime3) > debounceDelay3) {
    if (leitura3 != estadoBotao3) {
    estadoBotao3 = leitura3;
    if (estadoBotao3 == HIGH) {
    estadoLed3 = !estadoLed3;
    }
    }
    }
    digitalWrite(led3, estadoLed3);
    ultimoEstadoBotao3 = leitura3;
    if (esp8266.available()) {
    if (esp8266.find(“+IPD,”)) {
    delay(100);
    if (estadoLed1 == HIGH) {
    esp8266.println(“pin=99″);
    }
    else {
    esp8266.println(“pin=96″);
    }
    if (estadoLed2 == HIGH) {
    esp8266.println(“pin=98″);
    }
    else {
    esp8266.println(“pin=95″);
    }
    if (estadoLed3 == HIGH) {
    esp8266.println(“pin=97″);
    }
    else {
    esp8266.println(“pin=94″);
    }
    sendData(“AT+CIPCLOSE=\r\n”, 100, DEBUG);
    }
    }
    }

    String sendData(String command, const int timeout, boolean debug) {
    String response = “”;
    esp8266.print(command);
    long int time = millis();
    while ( (time + timeout) > millis()) {
    while (esp8266.available())
    {
    char c = esp8266.read();
    response += c;
    }
    }
    if (debug) {
    Serial.print(response);
    }
    return response;
    }

    Agradeço desde já.

  33. Filipe - 10 de julho de 2016

    Boa noite!

    Como ficaria o código para acender e apagar acender um led com o ESP8266 ?

    Comprei o módulo, porém estou com dificuldades em seu uso.

    Atenciosamente

  34. Alex - 7 de julho de 2016

    Excelente post! Rotinas muito criativas e bem elaboradas! Agora é só colocar em prática.

    Obrigado!

  35. Edilson Maia Favero - 5 de julho de 2016

    Felipe tem algum tutorial no seu blog sobre o módulo mais moderno o ESP8266MOD da AI-THINKER?
    Vi em alguns sites americanos que o chamam de ESP12, mas estou com muita dificuldade de encontrar algo eficaz para liga-lo corretamente ao arduino. Tentei seguir um tutorial seu para o antigo ESP8266, mas não funciona.

  36. Manoel - 4 de julho de 2016

    Bom dia,

    Você saberia me dizer como realizar a conexão wireless entre dois módulos ESP01, sendo que cada um está conectado em seu respectivo Arduino Uno? A ideia é montar um controle remoto de 3 botões em um dos conjuntos (Arduino Uno + ESP01) e acionar assim 9 relés que estão no outro conjunto.

    Obrigado.

  37. Thiago Paz - 3 de julho de 2016

    Adilson,

    Muito bom o tutorial. Me ajudou bastante.

    Poderia montar também um tutorial fazendo com que os valores do sensor “Hc-sr04″ fossem acessíveis via browser (navegador) através do “ESP8266″?

    Já li aqui no blog seu tutorial sobre o “”Hc-sr04″ e ficaria muito bom se fizesse um mix entre os dois tutoriais… ESP8266 e Hc-sr04.

    Obrigado.

  38. Igor - 1 de julho de 2016

    Estou com duvidas quanto a capacidade desse modulo, com ele consigo aplicar esse projeto? http://blog.filipeflop.com/arduino/automacao-residencial-com-arduino-acenda-lampadas-pela-internet.html
    Devido a pagina web ser mais robusta…

  39. jjose rodolfo durante - 30 de junho de 2016

    Você tem montagem com o ESP8266-201?

  40. ELIZA PIOLLI DE OLIVEIRA PRADO - 18 de junho de 2016

    quando fui tentar conectar na minha rede, apareceu isso:
    AT+RST

    OK
    “qXÑzÂC! ™±[!ÿ ÐS!=Ñnä ÐS!}ÑFä Ð!HÕòIÔ!1¤(ÙÃÖeK)t+a0Ø aŸÉr’÷
    Ai-Thinker Technology Co.,Ltd.

    ready
    AT+CWJAP=”Ping Pong”,”Teletubies”

    WIFI DISCONNECT
    AT+CWMODE=1

    busy p…
    AT+CIFSR

    busy p…
    AT+CIPMUX=1

    busy p…
    AT+CIPSERVER=1,80

    busy p…

  41. Matheus - 6 de junho de 2016

    Boa tarde, comprei o arduino uno e ESP-O1 e os estou usando pela primeira vez. Fiz toda a prototipagem corretamente e colei o código do primeiro teste (teste da versão do firmware) na IDE do Arduino, sem alterá-lo, mas não está funcionando. No monitor serial aparece apenas as linhas:
    Versão do Firmware
    ** Final **

    O que fiz de errado?

  42. Isael - 4 de junho de 2016

    Boa noite amigo fiz o test do ping e ele redpondeu que esta tudo ok, mais continuo sem consegui conecta pela web.
    Agora to com uma duvida eu fiz o test da da porta 80 e o resultado é de que esta fechado isso impede na conecxao do esp8266?

  43. Isael - 31 de maio de 2016

    Bom dia amigo,
    Nao fiz o teste do ping não como faço para ver isso?

    • Adilson Thomsen - 31 de maio de 2016

      Bom dia Isael,

      Se estiver usando Windows, abra uma janela de comando (CMD), e digite o comando PING seguido do seu endereço IP. Se o endereço IP do ESP8266 for 192.168.1.10, por exemplo, digite:

      ping 192.168.1.10

      Se a comunicação estiver ok, o comando deve responder com algo como

      Reply from 192.168.1.10: bytes=32 time=2ms TTL=64

      Se a comunicação não estiver ok, o comando responde algo como

      Reply from 192.168.1.10: Destination host unreachable.

      Neste caso, peço que reveja as informações de SSID, senha, etc.

      Abraço!

      Adilson – Equipe FILIPEFLOP

    • Assis - 4 de junho de 2016

      Ola amigos comprei um arduino e um módulo ESP8266 , por favor mim ajude em um link ou esquema como ligar o modulo com fonte independente ao arduino.

      Ate consegui fazer a fonte de 3.3v

      No arduino tem esta tensão mais é de 50 miliamperes

      Mim ajude por favor ja caiu a medade dos meus cabelos.

      Ja queimei um uno, preciso de um esquema com fonte independente.

      Obrigado

  44. isael - 30 de maio de 2016

    pessoal mim ajudem faco a instalação toda correta e programação mais porem quando abro o navegador chrome e digito o IP aparece a mensagem (Não é possível acessar esse site). porque isso ta acontecendo?

  45. Ricardo - 21 de maio de 2016

    A placa esp8266 precisa de ter uma firmware instalada ? se sim, como eu instalo ?

  46. hugo leonardo barbosa - 18 de maio de 2016

    com essa placa posso mandar quantos comandos eu quiser desde de quantas i/o tem no arduino posso colocar mais comando ?

  47. Vinícius Jean Ferreira - 15 de maio de 2016

    Cara, rodei teu tutorial no ESP8266 12 e ele funcionou bem, minha dúvida é a seguinte: eu tô mandando uma string pra porta 80 e visualizo ela no Chrome tranquilamente, mas quando eu uso outra porta e faço um cliente TCP/IP em LabVIEW, as requisições são simplesmente ignoradas pelo ESP. O Led acende quando eu tento iniciar a requisição e no Timeout, mas não envia dado algum. Tu tem como me ajudar a resolver? Valeu!

  48. Bruno Aguiar - 11 de maio de 2016

    O link da imagem que mostra a ligação parece estar fora do ar, mando abrir a página e ele não carrega a imagem.

  49. Humberto Leone - 4 de maio de 2016

    Boa noite! Estou tentando usar o conversor USB CH340 para programar o ESP8266 e estou obtendo o seguinte erro:

    warning: espcomm_sync failed
    error: espcomm_open failed
    error: espcomm_upload_mem failed

    As ligações que fiz foram:

    ESP UART
    RX -> TX
    TX -> RX
    VCC -> VCC
    GND -> GND
    Coloquei o Reset com um resistor de 1k no Vcc e utilizo apenas para dar o reset quando o módulo usb induz a reiniciar o esp.

    Se puder me ajudar eu ficarei muito grato, parabéns pelo site!
    Desde já obrigado.

  50. Francisco Assis - 2 de maio de 2016

    comprei uno e um driver de reles e wifi shield ESP8266 , detalhes não sei programa mim ajude

  51. Willian - 2 de maio de 2016

    Bom dia!
    Posso utilizar o ESP8266 NodeMCU em vez do ESP8266 que você utilizou?
    Teria que mudar algo na programação do arduino?
    Teria que programar algo no ESP8266 NodeMCU?
    Muito Obrigado e parabéns pelo blog!

  52. José - 29 de abril de 2016

    Eu consigo mudar a variável pela página da internet? exemplo mudar o pino 8 para ligado ou desligado

  53. Flávia - 19 de abril de 2016

    Olá! Consegui fazer funcionar certinho com o arduino nano. Como eu faço para editar o HTML? consegui alterar cor, tamanho do texto etc.. preciso subir uma imagem e o scr não está dando. Outra coisa, muitas vezes ele fica dando busy quando vai conectar, existe alguma forma de mudar isso?

    • Adilson Thomsen - 22 de abril de 2016

      Bom dia Flávia,

      Você pode colocar os comandos HTML diretamente no programa, adicionando mais linhas como essa:

      webpage += “insira o HTML aqui”;

      coloque o comando que você quer entre aspas, conforme o exemplo acima. Quanto ao busy, isso também aconteceu nos nossos testes. Tente usar uma fonte de alimentação externa para alimentar o ESP8266 e verifique se a conexão fica mais estável.

      Abraço!

      Adilson – Equipe FILIPEFLOP

  54. José Eduardo M.Rodrigues - 12 de abril de 2016

    Adilson,
    Qual a versão da IDE do Arduino deve ser usada

  55. Alexandre Fernandes - 21 de março de 2016

    Esse modulo precisa de endereço de mac?

  56. Mateus Diel - 21 de março de 2016

    Oi, pessoal, to com uma dúvida, tem como eu criar botões na pagina do webServer dele?
    Tipo, atribuir funções aos botoes, e quando clicar nos botões da pagina ele fazer alguma coisa…
    Tem algum código de exemplo?
    Obrigado, gosto muito deste blog, sempre tem coisas legais e intuitivas!

  57. KRUPPA - 13 de março de 2016

    Pessoal, poderiam me ajudar?

    Estou me aventurando neste mundo agora.
    Recentemente fiz uma bela de uma compra aqui no site, e agora estou tentando começar a mexer com a comunicação do meu Arduino Mega 2560 com wifi (esp8266).

    Bom, realizei a conectorização apresentada neste tutorial, com exceção dos botoes, mas quando eu faço o upload do sketch do teste de comunicação, o MONITOR só me apresenta…

    Versao de firmware
    ** Final **

    , mais nada.
    reparo que quando faço o upload, o led de comunicação do esp pisca, mais depois quando envio um comando qualquer, o meu arduino pisca o RX, mas não acontece nada com o ESP, e não responde nada no monitor.

    Alguém poderia me ajudar?

    • Lucas - 3 de abril de 2016

      Boa noite amigo,
      aconteceu a mesma coisa comigo, mudei a velocidade de comunicação da porta ( linha 14 e linha 25 “1º exemplo”) para 9600 e funcionou. Pode ser a por causa da versão do firmware.
      Espero ter ajudado.
      Abraço!

  58. Antonio Carlos - 12 de março de 2016

    Boa noite pessoal!
    Passei o dia quebrando a cabeça com essa “plaquinha”, enfim consegui fazer funcionar no Uno =D!
    Primeiramente, tive que ajustar o circuito da seguinte forma:
    VCC – alimentado externamente ao arduino com uma fonte 5v + regulador de tensão 3.3v
    GND – ligado a fonte externa + gnd do arduino
    TX – ligado ao pin 2 do arduino
    RX – ligado ao pin 3 do arduino através do divisor de tensão ( utilizei resistores 1K e 2K )
    CH_PD – ligado ao pin 4 do arduino através de outro divisor de tensão ( resistores 1K e 2K )

    Adaptei o código da forma abaixo, assim posso enviar os comandos AT para o ESP8266 e testar.
    Esse link tem uma lista dos comandos que pode utilizar: https://cdn.sparkfun.com/assets/learn_tutorials/4/0/3/4A-ESP8266__AT_Instruction_Set__EN_v0.30.pdf

    No serial monitor, caso não esteja, mude a opção “No line ending” para “both NL & CR” e a opção do baud para 19200, então:
    Digite SP2 para comunicação com o ESP8266 pela port 115200
    Depois AT+UART=19200,8,1,0,0 para alterar o baud para 19200
    Digite SP1 para alterar a comunicação pela port 19200
    Digite AT para confirmar se está OK

    #include

    /*
    RX pino 2
    TX pino 3
    */
    SoftwareSerial esp8266(2, 3);

    #define DEBUG true
    #define CH_PD 4

    void setup()
    {
    pinMode(CH_PD,OUTPUT);
    digitalWrite(CH_PD,HIGH);

    Serial.begin(19200);
    }

    void loop() {
    if (Serial.available()) {
    String s = Serial.readString();
    /*
    alternando a port com ESP8266
    qdo enviar SP1 pelo serial monitor alterna a comunicação para 19200
    qdo enviar SP2 pelo serial monitor alterna a comunicação para 115200
    */
    if(s == “SP1\r\n”){
    Serial.println(“setport 19200″);
    esp8266.begin(19200);
    }else if(s == “SP2\r\n”){
    Serial.println(“setport 115200″);
    esp8266.begin(115200);
    }else{
    sendData(s, 1000, DEBUG);
    }
    }
    }

    String sendData(String command, const int timeout, boolean debug)
    {
    Serial.println(“Enviando :” + command);

    String response = “”;
    esp8266.print(command);
    long int time = millis();
    while ( (time + timeout) > millis())
    {
    while (esp8266.available())
    {
    char c = esp8266.read();
    response += c;
    }
    }
    if (debug)
    {
    Serial.print(response);
    }
    return response;
    }

    Espero que isso ajude quem passou algumas horas quebrando a cabeça sem sucesso.

    • Douglas Menegon Cordeiro - 10 de abril de 2016

      Teria como montar um diagrama e compartilhar com outras pessoas como foi feita as ligações? Estou procurando qual módulo wi-fi comprar e preciso ter tudo dimensionado e projetado antes de comprar e acabar queimando tudo!

  59. Anderson Ricardo - 26 de fevereiro de 2016

    bom dia amigos, primeiramente gostaria de agardecer pelo post, me ajudou bastante, e segundo gostaria de deixar algumas informaçoes, porem peço que tomem cuidado antes de fazer oq for decrito aqui.

    1 contrariando oque muitos postaram, nao precisa de uma fonte externa para o esp8266, utilizei ele normalmente na saida 3,3v do arduino, mais saliento que meu projeto nao consome muito, caso seu projeto necessita de muito processamento oriento a utilizar fonte externa, outra coisa, tbm utilizei meu modulo esp8266 na saida 5v do arduino e ele nao queimou, entao caso seja apenas para algum tipo de teste pode utilizar a saida 5v do arduino com um resistor na faixa de 22ohm ou um cooler junto caso nao tenha o resistor pois na saida 5v ele aquece mais doq o normal sem o resistor porem sem queima-lo, mais para o projeto final utilizem uma fonte da mesma tensao nominal do modulo pois como eu falei foram apenas testes.

    2 nao precisam de uma placa FTDI para atualizar a firmware, consegui atualizar a minha que era AT version:0.21.0.0
    SDK version:0.9.5 e atualizei para

    AT version:0.30.0.0
    SDK version:1.2.0

    utilizei a segunda parte deste post apenas acrescenando a linha AT+CIUPDATE apos a conexao com a rede wifi , ficando assim o comando :
    para esse comando utilizei a baund de 115200 porem apos atualizaçao ele so funcionara com 19200

    sendData(“AT+RST\r\n”, 2000, DEBUG); // rst
    // Conecta a rede wireless
    sendData(“AT+CWJAP=\”SSID\”,\”SENHA\”\r\n”, 2000, DEBUG);
    delay(3000);
    sendData(“AT+CIUPDATE”, 2000 DEBUG);
    sendData(“AT+CWMODE=1\r\n”, 1000, DEBUG);

    rodei esse esquema 2 vezes e pronto ,atualizado, lembrando que a rede wifi tem q ter acesso a internet para atualizar

    explicando porq nao precisa da FTDI:
    os problemas relatados no post, principalmente sobre nao aparecer os caracteres corretamente se da apenas pela comunicacao serial instavel, porem esp8266 conecta normalmente na rede wifi, sendo assim jogando o comando acima ele conecta normalmente na rede e atualiza, mesmo nao mostrando no monitor serial as informaçoes corretas, apos atualizar apenas troque a baund para 19200, pois nessa velocidade o esp8266 fica mais estavel com a nova firmware.

    espero que essas informaçoes os ajudem a resolver seus problemas assim como resolveu o meu.

  60. ANDERSON - 24 de fevereiro de 2016

    boa tarde, gostaria de uma ajuda, fiz a ligaçao corretamente e no serial mostra todas as informaçoes corretas porem o ip nao aparece, o campo apos “IP:” fica em branco, aguem sabe me dizer porque isso ocorre?

  61. Alvaro - 20 de fevereiro de 2016

    Olá,
    estou tendo um problema no serial monitor
    na etapa de alterar o baudrate do esp8266.
    aparece somente caracteres estranhos.
    Isso pode ser pq não atualizei o firmware ou problema no esp8266?

  62. Emerson - 8 de fevereiro de 2016

    Boa noite, gostaria de sua ajuda para obter essa programação para o Arduino DUE. Grato desde ja.

  63. Ricardo - 25 de janeiro de 2016

    Pelo esquema de ligação do tutorial eu não consegui. Então encontrei esse esquema de ligação: http://cdn.instructables.com/FC5/FW5J/IGHOIQAH/FC5FW5JIGHOIQAH.LARGE.jpg
    As únicas mudanças que fiz foram remover os resistores e ligar o RX (fio verde) diretamente no pino digital 3. Também liguei o TX (fio azul) no pino digital 2. Utilizei um arduino UNO. Funcionou bem com os sketches apresentados nesse tutorial.
    Não consegui fazer funcionar utilizando fontes externas. Tentei duas pilhas com o positivo passando por um diodo IN4007 e o negativo junto com o GND do arduino. O módulo não responde. Se ligar as pilhas direto no módulo o LED azul fica ligado direto e também não acontece a conexão com o módulo ESP8266.
    Obrigado pelo tutorial equipe FelipeFlop.

  64. Renato Ramiro - 21 de janeiro de 2016

    Tem alguma chance de ter algum tutorial falando sobre o Esp8266 ESP12 com arduino? Abraço!

  65. Jefferson Henrique - 21 de janeiro de 2016

    Pessoal,
    Estou fazendo um projeto com o ESP8266, porém queria utilizá-lo para transferir/enviar um arquivo do cartão SD, conectado ao arduino por meio do módulo de cartão SD vendido na FILIPEFLOP, para o meu computador via wifi. Alguém poderia me dizer se isso é possível ou não?
    Desde já, agradeço.

  66. Eudardo Morais - 19 de janeiro de 2016

    Gostaria de parabenizar o vosso trabalho. Os tutoriais estão muito bons. Esse, em particular, foi o meu preferido. Funcionou do início ao fim com apenas algumas adaptações para o meu projeto.
    Muito obrigado!

  67. Thiago Emanuel - 18 de janeiro de 2016

    Prezados, estou querendo utilizar esse sistema para fazer uma triangulação e obter as coordenadas de uma objeto, é possível com esse módulo, alguém já fez algo semelhante e poderia me ajudar?

  68. Carlos - 15 de janeiro de 2016

    Bom dia!

    Preciso de um help? Gostaria de usar esse projeto, mas para a ligar reles !
    Já tem algum tutorial?

    Obrigado!

  69. jose rodolfo durante - 12 de janeiro de 2016

    O esp8266 ( como mulher) é dificil mas quando conseguimos ……….
    Enfim: não tenho conseguido nada e pergunto:
    Como elimino os resistores e uso o conversor 5 para 3,3 (já tenho).

  70. Jonathas Almeida - 5 de janeiro de 2016

    Olá, estou desenvolvento um projeto, onde vou ter um robô feito com arduino e um programa em nuvem… Minha idéia é manter o processador do arduino apenas para fazer a movimentação do robô, interpretar sensores e realizar a comunicação via wireless com a nuvem. Pretendo deixa toda a “inteligencia” do robô ser processada na nuvem e enviando os comandos para o arduino. Para realizar a comunação entre o robô e a nuvem, pretendo usar uma comunicação Wifi, só que estou na dúvida qual seria a melhor opção, o Shield WiFi CC3000 ou se o Módulo WiFi – ESP8266.

    Pesquisando em tutoriais vi que os dois podem realizar as funções de enviar e receber comando via Wifi, porém queria saber qual a mais recomentada e se poderia da informações sobre alcance de sinal e velocidade de comunicação…

    Desde já, grato.

  71. Mariana - 31 de dezembro de 2015

    Boa tarde,
    o LED AZUL do meu ESP8266 comprado no site filipeflop FICA SEMPRE ACESO, sempre junto com o vermelho. Sendo assim, não consigo me comunicar com ele.
    Tô usando um arduino UNO, segui esse tutorial exatamente igual, já segui vários outros, tentei tudo quanto é BAUD rate, ligando os GPios e RST no vcc, deixando flutuando, trocando RX com TX, sempre testando no serial monitor e nada. O máximo que consegui de resposta foi um pouco de lixo. Estou usando uma fonte externa, dessas pra protoboard que tem a opção de 3.3V. Comprei tudo no site filipflop, tô aprendendo bastante, mas esse módulo eu não consegui fazer funcionar de jeito nenhum, já gastei muitas horas com pesquisas, vídeos e tutoriais. Se alguém puder dar uma sugestão do que pode ser ou enfrentou um problema parecido, por favor, dê uma luz!! *-* Ah, já tentei também atualizar o firmware com o esp8266_flasher e aconexão com o módulo sempre falha.

    • Caio - 5 de janeiro de 2016

      Oi, Mariana, tudo bem?
      Já tentou ligar o ESP8266 direto numa pilha (tipo colocar pilhas em série e fornecer uma fonte de aproximadamente 3.3V e cuidado para não exceder estes 3.3V, se não você vai queimar seu módulo que nem eu queimei o meu primeiro -.- )?

      Sério, o que me deixa pasmado nesses tutoriais de internet é essa negligência (só complica a vida de quem não conhece direito o ESP, eu mesmo aprendi depois de muitas horas perdidas, pois decidi ver teoricamente o que poderia estar havendo a nível de sistema digital e de circuitos elétricos, cogitei até que poderia haver interferências eletromagnéticas no circuito, deixando tudo instável), só comentando de maneira bem superficial as consequências de se alimentar o bichinho no arduino.

      Sério, eu li no datasheet e, aparentemente, até para se comunicar com o arduino o espzinho tem dificuldade se não foi alimentado com uma pilha por exemplo. A atualização do firmware é desnecessária em muitos casos, por isso o pessoal nem comenta isso direito, é mais para quem quer programar em LUA direto no ESP.

      Tenta lá, depois vê se deu certo. Devo lembrar que o fato de você ter “apertado” o reset do espzinho, talvez você tenha que instalar um firmware agora (que é mó rolê e eu sugiro que faça que nem um tutorial que tem no youtube) =[

      • Caio - 5 de janeiro de 2016

        Outra coisa, só de você ligar o ESP e colocar 3.3V no chip enable (CH_PD), já aparece um wifi cujo nome eh algo do tipo “ESP_98529F” ou “AI_THINKER + algum número”.
        Quando eu estava alimentando ele só com o arduíno, as vezes aparecia uma rede “AI_THINKER + algum número” no wifi do meu computador, assim como a de outros vizinhos, mas dava um tempinho e logo sumia.
        Aparecia como uma rede insegura (sinalzinho de alerta amarelo do lado do sinal de wifi)

        O LED Azul fica acedo quando o pino RX do ESP recebe um high, provavelmente se ele só ficava aceso, ele estava recebendo só um high do arduino.
        Tanto é que quando o ESP começa a se comunicar em binário com o arduino ou outro carinha eletrônico, ele fica pistando (“HIGH LOW HIGH HIGH LOW …”) por exemplo.

      • Caio - 5 de janeiro de 2016

        Esqueci de dizer que, quando você liga o ESP (3V3 no Vin e GND no GND hehe) e joga 3.3V no chip enable (CH_PD) (veja bem, só bastam 3 conexões) já aparece o WiFi (ou a rede, interprete como quiser) do ESP8266 no conexões WiFi do seu celular ou computador. O Nome será algo do tipo “ESP + algum número”, segundo alguns relatos, ou “AI_THINKER + algum número”, que foi o que eu vi.
        Aparece como uma rede insegura (pois não tem senha nem nada).

        Quando eu fazia isto com o ESP8266 ligado no arduino, as vezes, aparecia o “AI_THINKER + algum número”, por alguns segundos, mas logo caía.

        O LED Azul significa que o RX do ESP8266 está em HIGH. Quando o ESP se comunica em binário com o arduíno ou com qualquer outro carinha eletrônico, este LED fica “piscando de maneira meio aleatória”. Isto, em nível digital, é nada mais nada menos que uma sequências de HIGH e de LOW, tipo : “0001101010101011101…” que significa alguma espécie de comando a ser executado, alguma informação recebida, etc.

    • Caio - 5 de janeiro de 2016

      Esqueci de dizer que, quando você liga o ESP (3V3 no Vin e GND no GND hehe) e joga 3.3V no chip enable (CH_PD) (veja bem, só bastam 3 conexões) já aparece o WiFi (ou a rede, interprete como quiser) do ESP8266 no conexões WiFi do seu celular ou computador. O Nome será algo do tipo “ESP + algum número”, segundo alguns relatos, ou “AI_THINKER + algum número”, que foi o que eu vi.
      Aparece como uma rede insegura (pois não tem senha nem nada).

      Quando eu fazia isto com o ESP8266 ligado no arduino, as vezes, aparecia o “AI_THINKER + algum número”, por alguns segundos, mas logo caía.

      O LED Azul significa que o RX do ESP8266 está em HIGH. Quando o ESP se comunica em binário com o arduíno ou com qualquer outro carinha eletrônico, este LED fica “piscando de maneira meio aleatória”. Isto, em nível digital, é nada mais nada menos que uma sequências de HIGH e de LOW, tipo : “0001101010101011101…” que significa alguma espécie de comando a ser executado, alguma informação recebida, etc.

    • Caio Al - 5 de janeiro de 2016

      OBS: retificando o que eu falei. Se você colocou numa fonte externa de protoboard cuja a alimentação está sendo feita via tomada de casa por uma fonte cuja entrada é 100/240 VAC e cuja saída é 9~12VDC, então o ESPzinho pelo menos irá aparecer como rede caso esteja em HIGH o pino chip enable.

      Esqueci de dizer que, quando você liga o ESP (3V3 no Vin e GND no GND hehe) e joga 3.3V no chip enable (CH_PD) (veja bem, só bastam 3 conexões) já aparece o WiFi (ou a rede, interprete como quiser) do ESP8266 no conexões WiFi do seu celular ou computador. O Nome será algo do tipo “ESP + algum número”, segundo alguns relatos, ou “AI_THINKER + algum número”, que foi o que eu vi.
      Aparece como uma rede insegura (pois não tem senha nem nada).

      Quando eu fazia isto com o ESP8266 ligado no arduino, as vezes, aparecia o “AI_THINKER + algum número”, por alguns segundos, mas logo caía.

      O LED Azul significa que o RX do ESP8266 está em HIGH. Quando o ESP se comunica em binário com o arduíno ou com qualquer outro carinha eletrônico, este LED fica “piscando de maneira meio aleatória”. Isto, em nível digital, é nada mais nada menos que uma sequências de HIGH e de LOW, tipo : “0001101010101011101…” que significa alguma espécie de comando a ser executado, alguma informação recebida, etc.

  72. Caio - 28 de dezembro de 2015

    Oi.
    Primeiro, parabéns aos que conseguiram fazer as comunicações funcionarem.
    Segundo, eu não consigo sair da primeira fase, esta é a mensagem:
    ” Versao de firmware
    ** Final ** ”

    O Led azul somente fica mais brilhoso no momento em que abro o Monitor Serial. Depois, a intensidade do brilho diminui e ele constante (sinônimo de que não está processando) e depois imprimisse ** Final **.

    Circuito:
    -> Idêntico ao esquema mostrado, só difere no fato de não se ter o circuitinho dos push buttons (completamente desnecessários à primeira etapa).
    -> O nível lógico TX (arduino) para RX (ESP8266) segue a regra de 3: 5 (volts) / 3.28 (volts), segundo meu divisor de tensão.

    Supondo que o algoritmo e o circuito estejam certos, creio que a única variável que estaria com problemas seria o baud rate, entretanto, eu já coloquei todas as possíveis taxas de baud e eles (arduino e esp8266) não se comunicam de fato.

    Não sei mais o que pode estar dando errado, o circuito já foi revisado e refeito 3 vezes de duas maneiras diferentes de encaixe.

    Se alguém tiver algum palpite, por favor, comente e me fomente alguma ideia.

    Abraços

    • Caio - 28 de dezembro de 2015

      Obs: há fonte externa e eu já verifiquei os ruídos do circuito, não sendo suficientemente prejudiciais segundo minha intuição.

    • Vanderlei - 28 de dezembro de 2015

      Já experimentou deixar o monitor serial em 9600? Pra mim funciona assim, apesar eu não conseguir enviar os comandos AT. Mas o Arduíno consegue e toda a comunicação acontece normalmente. Outra dica é interligar os gnd’s do Arduíno e do Esp8266.

      • Caio - 28 de dezembro de 2015

        Pode ter certeza, eu já testei praticamente todas as possíveis combinações de bauds (só algumas combinações muito pouco prováveis eu não tentei).

        Aparentemente não há comunicação alguma de fato, o ESP8266 simplesmente está ligado.

        A fonte externa está plugada diretamente no arduino, consequentemente o GND é o mesmo para ambos.

        Creio que o problema tem haver com o firmware, mas as informações sobre isso na internet são nimiamente truncadas, então, estou verificando se realmente terei de apelar para essas informações.

        Obrigado pela resposta e abraço!

        • Caio - 28 de dezembro de 2015

          Ao ver o vídeo de uns ESP8266 funcionando junto do arduíno, pude perceber que há alguma coisa errada com o meu, pois o LED azul do meu nunca apaga, sempre fica acesa, ao passo que o led azul deveria acender apenas se recebesse um comando.

          Obs: achei umas fontes que ensinam tudo sobre o esp8266, só falta eu aprender tudo agora hahaha

          • Vanderlei - 28 de dezembro de 2015

            Amigo, este problema de luz azul direto acesa eu também tive e se não me engano era o Arduíno deixando o TX ou RX em high. Já tentou mandar a programação para o Arduíno com o ESP desconectado?

    • Vanderlei - 28 de dezembro de 2015

      Amigo, estou com um aqui na bancada agora e vou te passar como está o meu ESP neste momento:
      Trecho inicial do meu código:
      void setup()
      {
      Serial.begin(9600);
      esp8266.begin(19200);
      //…
      sendData(“AT+CIPSERVER=1,8099\r\n”, 1000, DEBUG);
      }

      Só não me lembro quais os valores eu mandei no primeiro código para ajustar a velocidade.

      Pinos:
      3 do Arduíno no pino 3 do CD4050 e 2 do CD 4050 no RX do ESP
      2 do Arduíno direto no TX do ESP
      CH_PD do ESP com resistor em série de 1K no +3,3
      CD 4050 Alimentado pelos 3,3 do Arduíno.

      Ao abrir o Monitor serial em 9600, automaticamente Esp manda as informações e o Arduíno começa a conversar com ele.

      • Alciomar Alves - 29 de dezembro de 2015

        Olá, estou acompanhando vocês e tbm estou com problemas com o meu esp!
        Estou com o msm problema do nosso amigo Caio e como ele tbm montei o circuito da msm maneira q está nest post, porém aparece a msg:
        ” Versao de firmware
        ** Final ** ”
        E não consigo fazer a comunicação, e acompanhando vcs surgiu a duvida: o q é e p/ q serve esse CD4050?
        Desde já agradeço.
        Abraço

        • Caio - 5 de janeiro de 2016

          Cara, isto indica falta de comunicação entre o ESP8266 e o Arduino e inúmeros podem ser os motivos.

          Se você está montando o circuito igual o indicado pelo esquema do tutorial. Sugiro que coloque o ESP8266 direto numa fonte externa, por exemplo, em uma pilha de 3.3V. Ela vai fornecer a amperagem necessária para o ESP conseguir se comunicar com o Arduino de maneira formidável, sem instabilidades que prejudicam completamente a troca de informações entre eles.

          Vale ressalvar que tanto o ESP8266 quanto o Arduino precisaram de um mesmo GND. Como fazer isto? Simples joga o GND do Arduíno no polo NEGATIVO da pilha. Tome um certo cuidado ao fazer isso (não deixe um pino solto bater no polo positivo, por exemplo, você queima teu arduino se a pilha estiver carregada – ddp máxima da pilha – e você acidentalmente colocar um GND do arduino no polo positivo da pilha, estando outro GND no polo negativo). A pilha é um potencial flutuante cuja a ddp tende a ser fixa para um determinado período de tempo (obviamente o decrescimento dela segue as equações de Nernst, i.e, exponencial decrescente, semelhante ao de um capacitor cuja constante de tempo seja relativamente elevada).

          Na dúvida, olha o que eu respondi para a Mariana.

          Eu acho que com isto, pelo menos, ver o sinal do ESP no seu reconhecedor de redes wifi você vai ver. Isto é um bom sinal e indica que ele está funcionando plenamente caso está rede fique constante. A partir daí eu creio que dará tudo certo para ti.
          Abraços!

  73. Vanderlei - 26 de dezembro de 2015

    Excelente!!! Achei que nada funcionava com este ESP-01 até eu transferir estes códigos. Estou usando uma fonte 3,3v à parte e um CD4050 para converter o sinal de TX do Arduino. Tudo funcionando redondo. Desafio agora é fazer ao contrário: mudar o estado das saídas através do browser.
    Parabéns ao autor.

  74. Victor de O. Rodrigues - 22 de dezembro de 2015

    Olá, Excelente trabalho com o post, muito bom mesmo, e bastante didático!!! Estou tentando reproduzir o post e estou tendo problema no segundo código disponibilizado: Basicamente, este código só executa o reset do esp8266, não sendo executado nenhum dos comandos em seguida! No monitor Serial aparece:

    AT+RST
    AT+RST

    OK
    WIFI DISCONNECT
    bBÖ†øRcjþ2…c�FÊÉ¥SNÂI�ë”B„n”jˆBĘýþZÿV
    Ai-Thinker Technology Co. Ltd.

    invalid
    WIFI CONNECTED
    WIFI GOT IP
    AT+CWMODE=1
    AT+CIFSR
    AT+CIPMUX=1
    AT+CIPSERVER=1,80

    Obs.: Coloquei um eco no monitor serial para tentar verificar onde o problema ocorria :)

    Note que não há resposta depois dos comandos de CWMODE em diante

    Qualquer ajuda será muito bem-vinda!!

    • FILIPEFLOP - 22 de dezembro de 2015

      Boa tarde Victor,

      Obrigado. Tente alimentar o ESP8266 com uma fonte externa. Alimentando pelo Arduino, fica bem instável a conexão.

      Abraço

      Adilson – Equipe FILIPEFLOP

      • Victor Rodrigues - 22 de dezembro de 2015

        Olá! Já estou alimentando por fonte externa e tomando todos os cuidados possíveis.
        Note que usando o sketch bare minimum e ligando ele no arduino consigo fazer todo o processo manualmente pela Serial… Meu problema está quando passo pra este sketch e só a partir do segundo comando.
        Amanhã vou tentar modificar o sketch para não usar a SoftwareSerial e somente a serial comum pra tentar reduzir as possibilidades (tenho a impressão que o problema está no softwareserial).
        Se tiver alguma ideia deixa aí que farei o teste ;)

  75. Developer - 19 de dezembro de 2015

    Olá a todos.

    Como eu posso fazer para criar duas paginas web dentro do ESP9266, onde a primeira exibi um HELO WORLd e quando eu clico em uma link vai para aoutra pagina com o status do botão ?

  76. Fabio - 19 de dezembro de 2015

    Olá pessoal,

    Estou realizando uns testes aqui e o meu ESP-01 está funcionando ok nas portas 2 e 3 (8 e 9… e etc) do UNO porém não consigo comunicar usando as portas 0 e 1 que são o RX e o TX, alguém poderia me explicar o motivo?

    Grato,
    Fabio

    • Anselmo Adams - 20 de dezembro de 2015

      Fábio,

      As portas 0 e 1 são da interface serial do ATMega328p – o que não é uma softserial :)

      De qualquer forma, ao conectar o UNO via USB, essas portas serão usadas para comunicação com o computador, o que provavelmente irá confundir o hardware se tentar usá-las para testar o módulo wifi.

      Se for usá-las para comunicar-se com o módulo, deve alterar o código para não usar SoftSerial e sim a Serial (já que os pinos 0 e 1 são uma serial física).

  77. Denis - 9 de dezembro de 2015

    Oi queria saber se consigo colocar botões no modulo, tipo uns 30 botões, e quando eu apertasse algum destes botões, enviaria a informação para o Arduíno?
    Para fazer um controle nem por ir ou RF.. Mais por WiFi, entende?

  78. rafael matos - 3 de dezembro de 2015

    Olá pessoal, consigo fazer a comunicação com o esp8266 através do wifi do celular direto?Sem uso do roteador?

  79. Zarley Almeida - 1 de dezembro de 2015

    Boa tarde Adilson!
    Minha dúvida é o seguinte:
    Na minha casa eu tenho uma rede wifi do meu provedor de internet. Quero ligar o módulo ESP8266 no meu arduino, e quero que o módulo se conecte com a minha rede wifi para que eu possa enviar comandos do meu celular que estará conectado a rede wifi de minha casa para ativar os comandos que eu programar no arduino.
    Ou seja… CELULAR – WIFI DA CASA – ESP8266 – ARDUÍNO.

    Isso é possível? Se sim, pode me dar algumas instruções?
    Att, Zarley Almeida.

    • Williams - 4 de dezembro de 2015

      É possível sim. Até onde eu sei só existe uma maneira de fazer isso deste jeito que você quer. Criar um site para guardar uma variável e o ESP acessar este site de tempos em tempos para verificar esta variável. Depois você terá que criar um sisteminha em PHP ou qualquer outra tecnologia para, através do celular, modificar esta variável. No lado do arduino, para o ESP ler esta variável, você fará isso com os comandos AT. https://room-15.github.io/blog/2015/03/26/esp8266-at-command-reference/ . Conecte o ESP com a rede de sua casa: AT+CWLAP = nome, senha ; conecte o ESP com o site que se encontra a variável: AT+CIPSTART; e depois você pega essa variável com o AT+CIPSEND=GET variavel.txt HTTP/1.1\r\nHost: seuSite.com.br\r\n\r\n ; Então de minuto em minuto, ou o tempo que você quiser, você roda novamente este comando AT+CIPSEND para ver se a variável sofreu modificações.

      Esse é o único jeito que conheço, e se você achar outra maneira de fazer, por favor me fale que também me interessa.

      Valeu

    • Leonardo - 7 de dezembro de 2015

      Para esse seu caso, o Blynk cai como uma luva: http://www.blynk.cc/
      Simples, rápido e funcional.

  80. Rui Valim Junior - 24 de novembro de 2015

    Quando vamos verificar a versão de firmware ele só retorna =

    Versao de firmware
    ** Final **

    O que pode ser?

    • FILIPEFLOP - 25 de novembro de 2015

      Boa tarde Rui,

      A velocidade de comunicação está correta ?

      Adilson – Equipe FILIPEFLOP

    • Israel - 14 de dezembro de 2015

      Comigo está acontecendo o mesmo, você conseguiu?Pode me dar alguma dica?

      • Thiago Paim - 14 de dezembro de 2015

        Aconteceu isto comigo também, pode ser problema de velocidade (baud rate), ou o mais provável é a alimentação.

        Utilizei uma fonte externa (carregador de celular), e um regulador de tensão de 5 para 3,3v, para evitar ruido (caracteres aleatórios na serial) coloquei um capacitor eletrolítico de 1000uF por 16v na alimentação, liguei o GND do arduino com o GND do esp e o da fonte e na segunda parte do código retirei o comando de reset (AT+RST), pois o esp volta o BAUD RATE para 115200 quando é reiniciado, o resto é como está no tutorial.

        Qualquer dúvida posta que vamos tentar lhe ajudar.

        P.S: Atualmente uso meu esp-01 em conjunto com um módulo relé para ligar e desligar a lampada do meu quarto através do android (Sem uso do arduino), mas precisei atualizar a firmware para nodemcu.

  81. Rodolfo (jose rodolfo durante - 12 de novembro de 2015

    Posso fazer toda a montagem desse sensacional post usando meu ESP 8266 esp 12 ligando somente
    os terminais equivalentes? No meu aparece RXD, TXD, VCC que devem ser RX, TX, e 3,3V. GND existe.
    Mas CH-PD não existe. Você saberia qual o equivalente?

  82. Lenilson Amaral Barreto - 24 de outubro de 2015

    Informação é a base de tudo.
    eu fiz um trabalho com BLUETOOTH e tive problemas com a comunicação serial, a solução foi “melhorar” a alimentação do módulo, como reguladores de 3,3v são difíceis no interior, eu usei um LM317 para conseguir esta tensão, e um capacitor de alto valor bem próximo dos pinos de alimentação, creio que o ESP8266 deve ter o mesmo comportamento.

  83. Anderson - 23 de outubro de 2015

    entao eu liguei o CHIP ENABLE (CH_PD) com um resistor de 1k no vcc ,usei uma fonte de 3.0 volts por fora e fiz uma ligaçao de terra com fonte e arduino , a velocidade do monitor serial deixei em 9600.
    agora nao entendi isso q vc faloou (quando usava o GPIO_0 em GND) no caso eu nao liguei em lugar nenhum fiz o divisor de tensao com 2 resistor de 10k conforme seu post. e o tx do esp8266 liguei no pino 2 do arduino e o rx no pino 3 …. as ligaçoes estao igual, teria alguma sugestao do que posso fazer ???? e o firmware dele nao sei qual q é que esta instalado , dsd ja agradeço pela ajuda … mto obrigadooo

    • Thiago Paim - 23 de outubro de 2015

      O GPIO_0 em GND é para atualização de firmware, por que ele modifica o boot quando o esp é energizado, se NÃO for atualizar o firmware deixe ele em vcc (se não for ligado em nada ele fica “flutuando”, as vezes pode atrapalhar na comunicação).
      Essa fonte de 3v fornece até quando de corrente? o led vermelho e azul acende no esp?
      pode ser problema de conexão dos fios jumper mesmo, revise se a ligação está correta.

      • Anderson - 23 de outubro de 2015

        refiz toda ligaçao e acrescentei o O GPIO_0 ligado no vcc com um resistor de 1k no vcc testei com multimetro e ele apresenta 3 volts sem estar ligado no vcc .
        minha fonte é ate 2 amper .
        o led vermelho esta aceso sim q informa se esta ligado o azul q é de transmissao pisca so qndo ligo a fonte.
        oque apareceu dessa vez foi àààà Versao de firmware
        àà àà à ** Final **

        revisei tudo de novo a ligaçao e permanece a pane eu nao coloquei os botoes ainda nao e o programa a q estou usando é // Programa: Versao firmware modulo ESP8266 e
        // mudanca de baud rate

        • Thiago Paim - 23 de outubro de 2015

          mas dessa vez retornou “lixo”, o que indica que houve comunicação, mas também houve ruido, tive esse problema também, resolvi colocando um capacitor de 1000uF por 16v na linha de alimentação da fonte.

          • Anderson - 23 de outubro de 2015

            é acho que nao vou conseguir comunicar o arduino com essa placa nao :/ coloquei o capacitor e nada tbm agora so da a mensagem sem aqueles AaA . Versao de firmware
            ** Final **
            sera que eu preciso mexer na versao dele ? pois nao sei ql versao q é .
            teria alguma dica pra saber ql versao q é ???
            ou alguma outra coisa q eu possa fazer pq ta foda ja pesquisei em mtos lugares mais nada de conseguir …

  84. Anderson - 23 de outubro de 2015

    boa tarde estava olhando essa postagem e tenho um esp8266 ai segui conforme o site só que qndo abro o serial monitor so aparece escrito Versao de firmware e dps de algum tempo *final* , pq nao aparece como aqui no site ???

    • Thiago Paim - 23 de outubro de 2015

      Boa tarde Anderson, comigo acontecia isso quando o esp não estava com o CHIP ENABLE (CH_PD) em vcc (que é 3,3v), ou quando usava o GPIO_0 em GND, resumindo, o arduino não esta conseguindo estabelecer nenhum tipo de retorno, verifique também a velocidade do monitor serial, 115200 ou 9600.

  85. Túlio - 20 de outubro de 2015

    Olá!
    Não posso conectar este modulo diretamente aos 5V do arduino, porém existe saída 3,3V no arduino UNO, pode ser usada diretamente sem divisor de tensão, certo?

    Abraço

    • Thiago Paim - 20 de outubro de 2015

      Olá Túlio, na verdade não é muito indicado que faça isso, pois o arduino fornece no máximo 40-50mA, e o esp em alguns casos precisa de 300mA. Use uma fonte externa. Eu uso um carregador de celular que fornece até 600mA conectado a um regulador de tensão de 3,3v 1A.

      • Tulio - 21 de outubro de 2015

        Entendi, vou me aprofundar a respeito.
        Quais casos por exemplo ele utiliza uma corrente desta?
        Pois estou fazendo experiencias basicas, nao sei como um modulo wifi utilizaria tanta corrente.

      • Tulio - 21 de outubro de 2015

        Ah, se pudesse me dar uma luz com o esquema com a fonte externa!

        Obrigado pela atençao!

      • Marcus Fabio - 19 de novembro de 2015

        Realmente, em relação as saídas digitais, o Atmega 328 soporta no máximo essa faixa de corrente em cada IO. Mas acho que o colega acima se referia ao ponto de 3.3V que vem disponível no Arduino, o que pode perfeitamente ser usada para alimentar um harware externo como esse módulo WIFI (claro, respeitando os 500mA se estiver usando o cabo USB como fonte, ou a especificação de corrente máxima de uma fonte DC externa).

        Abraço

        • JAGORIS - 22 de novembro de 2015

          Para deixar bem claro, a saida de 3,3V na placa do arduino fornece somente uma corrente MAXIMA de 50 mA, portanto se for usar mais do que isto, e´obrigatorio o uso de fonte externa.

          • Marcus Fabio - 1 de dezembro de 2015

            Fui analisar o circuito do Arduino Uno Rev 3, para entender melhor como funciona a parte de alimentação da placa. A saída de 3.3V do Arduino é referente ao regulador de tensão LP2985, que fornece até 150mA, conectado na saída do regulador de 5V NCP1175, o qual fornece até 1A (e nesse caso restrito a uma fonte externa de 12V). Todos esses dados podem ser obtidos no datasheet de cada componente. A entrada USB fornece (pela especificação do protocolo 2.0) até 500mA, e ela também pode alimentar o regulador de 3.3V (através do FET FDN304, que atua para selecionar a entrada USB como fonte quando o comparador LM358 detecta ausência de fonte externa). Resumindo, a saída de 3.3V fornece até 150mA, que é alimentada pelo regulador de 5V (ou pela entrada USB de 500mA), sendo que este regulador de 5V é alimentado por uma fonte DC externa (através do plug ou pela entrada Vin no soquete) e fornece até 1A para toda a placa.

            Além disso, as condições impostas para definir a corrente máxima no datasheet do ESP8266 são de “pior” caso (no qual o chip consome até 295mA): 90% de duty cycle, transmissão contínua e potência máxima de saída a 1Mbps (e imagino que a maioria aqui não está projetando algo que utilize essa alta taxa de dados). Enfim, se os amigos que compraram esse módulo estão tendo dificuldades para alimentá-lo através do ponto de 3.3V do Arduino, NÃO é porque este fornece no máximo 50mA, tendo em vista os dados fornecidos pelo fabricante do LP2985, que informa capacidade de até 150mA deste regulador de tensão. O mais provável é que o módulo ESP8266 esteja, em determinados momentos, exigindo corrente acima de 150mA, o que extrapola o limite do regulador LP2985, ocasionando mal funcionamento do sistema. Nesse caso, é necessário usar uma fonte externa de 3.3V com capacidade maior de corrente, alimentando o módulo diretamente.

            Por fim, sei que o artigo e alguns amigos aqui estão informando esta corrente de 50mA, porque é o que consta no site do Arduino. MAS tenho duas possíveis explicações para o site estar (equivocadamente) usando valor:

            1. “Margem” de segurança: os reguladores da placa não possuem dissipadores de calor, o que prejudica o funcionamento dos componentes, tendo em vista que as características de funcionamento variam bastante em temperaturas elevadas (que resulta de correntes próximas do limites de operação). Para mim é um motivoinconsistente, pois 50mA não é sequer 50% da capacidade que o regulador LP2985 suporta (que é de 150mA).
            2. Arduino Duemilanove (ainda tenho essa “relíquea”): para mim é motivo mais provável por colocarem 50mA como corrente máxima. Neste projeto não havia regulador de 3.3V na placa, apenas um de 5V (que era o MC33269). Fica a pergunta, quem fornecia o ponto de 3.3V? A resposta: o CI FT232RL. Este conversor USB-Serial possui uma saída de 3.3V, que era utilizado como ponto de alimentação. Olhando o datasheet do FT232RL, encontramos o valor máximo de corrente que ele pode fornecer: 50mA! Parece coincidência, mas prefiro achar que foi apenas um pequeno equívoco que cometeram no site do Arduino, ao manterem a especificação do antigo projeto de 2009, esquecendo de atualizar para o novo modelo que possui um regulador de 3.3V com maior capacidade de corrente.

            Além de tudo que mencionei (se toda minha explicação não foi convincente), basta eu dizer que eu tenho um módulo bluetooth Promi-ESD02 que opera em 3.3V/75mA, e funciona perfeitamente usando o ponto de 3.3V da placa, o que contraria o site do Arduino e o artigo desta página quanto a máxima corrente, que definitivamente NÃO é 50mA.

            Abraços!

  86. Lukas Ribeiro - 19 de outubro de 2015

    Olá amigo filipeflop, amigo eu gostaria de comprar este módulo ESP8266, porem ainda estou com um pé atrás se ele vai ser capaz de realizar oque eu preciso, que seria o seguinte:
    Estou utilizando um EasyVR 2.0 para a automação de uma residencia, eu fiz um app no android para
    mandar os audios via wifi (pelo roteador) pois bem, sabem me dizer se o ESP8266 é capaz de realizar este
    trabalho?

    Obrigado

  87. Divino Ferreira - 16 de outubro de 2015

    Boa Tarde,

    Estou tendo algum problema semelhante com o dos amigos que postaram acima.
    Trata-se do seguinte erro ao abrir o Serial Monitor:

    AT+RST

    OK
    “qXÑzÂC!É1±ÿ)ÓCCa*ó “I!a5 )‘I™Ca5 Jr0IN ‘K!ÑCÊ !“÷þ•r_H(¥µThinker Technology Co. Ltd.

    ready
    AT+CWJAP=”ZEUS”,”NEX25101978″

    AT+CWMODE=1

    busy p…
    AT+CIFSR

    busy p…
    AT+CIPMUX=1

    busy p…
    AT+CIPSERVER=1,80

    busy p…

    • Thiago Paim - 17 de outubro de 2015

      Olá, tive alguns problemas também, NÃO UTILIZE A SAIDA 3,3V DO ARDUINO, POIS O ESP CONSOME MAIS CORRENTE DO QUE O REGULADOR DO ARDUINO PODE FORNECER. Utilizei uma fonte externa (carregador de celular), e um regulador de tensão de 5 para 3,3v, para evitar ruido (caracteres aleatórios na serial) coloquei um capacitor eletrolítico de 1000uF por 16v na alimentação, liguei o GND do arduino com o GND do esp e o da fonte e na segunda parte do código retirei o comando de reset (AT+RST), pois o esp volta o BAUD RATE para 115200 quando é reiniciado, o resto é como está no tutorial.

      • Thiago Paim - 17 de outubro de 2015

        e também tive esse problema do “busy p…”, integrei os dois códigos de forma que pudesse fazer o upload de uma única vez (por que ele volta o baud rate para 115200 quando é reiniciado), quando acontece esse problema do “busy p…” eu reinicio o esp e ele funciona.

  88. luiz eduardo - 30 de setembro de 2015

    Olá equipe filipeflop, recentemente comprei um módulo ESP8266 de voces, porém assim como muitos estou tendo problemas com os comandos AT , é possivel que seja um problema de firmware , ou as placas que vocês vendem ai ja veem com o firmware atualizado ? Acredito que possa ser um problema com a velocidade da porta serial , tem alguma recomendação ?

  89. Guilherme - 24 de setembro de 2015

    Boa tarde, gostaria de saber se o módulo esp8266 possibilita conexão através de DNS (domain name system), ou apenas com endereço de ip?
    Grato.

  90. Lucas Dal Ponte Feliciano - 19 de setembro de 2015

    Olá, uma duvida com relação a comunicação SPI, como é realizada? Você já possui algum tutorial sobre?

    Grato

  91. Fábio Nakano - 12 de setembro de 2015

    Olá!
    Parabéns pelos serviços, muito bons e eficientes!
    Recebi os ESP8266 ontem. Vi que muita gente está com dificuldade para por para funcionar. Avancei um pouco – consegui verificar que o ESP está funcionando.
    Para isso conectei o ESP ao módulo FTDI e enviei/recebi informação usando o monitor serial da IDE. Baseei-me nas orientações de http://rancidbacon.com/files/kiwicon8/ESP8266_WiFi_Module_Quick_Start_Guide_v_1.0.4.pdf e fiz algumas melhorias.

    Ligações:
    1-) colocar o jumper do FTDI para 3.3V (IMPORTANTE!!!)
    2-) Tx do FTDI com Tx do ESP
    3-) Rx do FTDI com Rx do ESP
    4-) CH_PD do ESP com pull up (4k7) para Vcc do ESP
    5-) GND do FTDI no GND do ESP
    6-) *Vcc (5V) do FTDI num regulador de tensão 3.3V, saída do regulador no Vcc do ESP

    * quando liguei o ESP direto no 3.3V do FTDI e conectei o FTDI na USB ficava conectando e desconectando. Interpretei que o ESP puxava mais corrente que o regulador do FTDI podia fornecer, então o conjunto desligava inteiro, religava e desligava, em um loop. Por isso montei o regulador de tensão, que resolveu o problema.

    Configurações:
    1-) Abrir o monitor serial do Arduino IDE;
    2-) Ajustar baud rate para 115200;
    3-) Ajustar “line ending” para “both NL & CR”

    Texto apresentado no monitor serial (meus comandos estão marcados com >>

    Ai-Thinker Technology Co. Ltd.
    ready

    >>ATat

    ERROR

    >>AT

    OK

    >>AT+RST

    OK
    ets Jan 8 2013,rst cause:4, boot mode:(3,7)
    wdt reset
    load 0x40100000, len 816, room 16
    tail 0
    chksum 0x8d
    load 0x3ffe8000, len 788, room 8
    tail 12
    chksum 0xcf
    ho 0 tail 12 room 4
    load 0x3ffe8314, len 288, room 12
    tail 4
    chksum 0xcf
    csum 0xcf
    2nd boot version : 1.2
    SPI Speed : 40MHz
    SPI Mode : QIO
    SPI Flash Size : 4Mbit
    jump to run user1
    rŽÑ
    Ai-Thinker Technology Co. Ltd.
    ready

    >>AT+GMR

    AT version:0.21.0.0
    SDK version:0.9.5
    OK

    >> AT+CWJAP=””,””

    ERROR

    >> AT+CWJAP=”,”

    ERROR

    >> AT+CWJAP=””,””

    ERROR

    >> AT+CWJAP?

    No AP
    OK

    >>AT+CWLAP

    ERROR

  92. Mabson - 11 de setembro de 2015

    Bom dia,

    Parabéns, excelente post, gostaria de saber se com este módulo é possivel criar um app em android para enviar comandos ao ARDUINO de ascender LEDS, RELES, Servos etc. ?

    Abraço.

    Mabson Vinicius

  93. Amaral - 11 de setembro de 2015

    Rapaz é extraordinário esse site, parabéns!!!
    eu como todo principiante estou com algumas duvidas mas hj só vou perguntar uma blza rs..

    qual a diferença entre esse projeto e o do (COMO COMUNICAR COM O ARDUINO ETHERNET SHIELD W5100)??? ambos estão no site…
    pra simplificar minha duvida vou dizer o que estou querendo, ja tenho o arduino UNO e preciso agora me comunicar usando meu celular android, sendo q ja tenho o shield bluetooth v1.3 mas não serve pois só funciona com versões do bluettoth 2.0 e meu celular e a maioria hj em dia é 4.0 certo?! estressei com esses bluettoth, tem q ter um pra cada tipo de celular rs.

    então qual seria a melhor solução o wireless ou o ethernet?
    “esse wireless poderá ser conectado de uma rede por exemplo criada a partir do roteador wifi do meu celular q usa dados móveis ou apenas do ip da rede local???”
    seja qual for a melhor opção no seu ponto de vista vou comprar aki, pois o preço é justo e tbem vou comprar o rtc DS3231 para programar tarefas se tiver disponível e ai virá as próximas perguntas blza. rs.

    forte abraço e sucesso!
    aguardo seu retorno…

    • FILIPEFLOP - 11 de setembro de 2015

      Bom dia,

      A utilização da solução via wireless ou ethernet vai depender do seu projeto. O W5100 é um shield simples de usar, e utiliza a biblioteca nativa da IDE do Arduino. O ESP8266 vai exigir um pouco mais de esforço na parte de programação, e a tendência é que o programa fique um pouco mais pesado, já que algumas funções de rede são programadas na própria biblioteca.

      Abraço e obrigado!

      Adilson – Equipe FILIPEFLOP

      • Amaral - 11 de setembro de 2015

        ok, acho q entendi..!
        vou ficar com o W5100 então pra facilitar rs..

        pelo q percebi não tem muito segredo com toda a explicação mas qquer duvida te procuro Adilson.

        qto ao DS3231 vi uma postagem aki msmo dizendo q ele seria mais estável q as versões anteriores, é vdd???

        bom, vou esperar chegar o W5100 pra concluir a primeira fase do meu projeto e depois vou adquirir o DS3231 e nesse vou precisar de ajuda blza rs.

        muito obrigado pela ajuda amigo! forte Abraço e sucesso!!!

        • FILIPEFLOP - 14 de setembro de 2015

          Bom dia Amaral,

          Realmente o DS3231 é mais estável do que o DS1307. Pelo que eu pesquisei, ele é menos sensível às oscilações de temperatura, que fazem com que os outros modelos atrasem alguns segundos.

          Abraço!

          Adilson – Equipe FILIPEFLOP

  94. Thiago - 10 de setembro de 2015

    Adilson,

    Se eu ligar uma fonte 12v 1A no jack do arduino vai suprir a necessidade de 300mA do módulo? Ou devo ligar a fonte direto no módulo?

    Obrigado

  95. João Guilherme Reiser de Melo - 8 de setembro de 2015

    Alguém por acaso sabe se esse módulo consegue se conectar a uma rede Ethernet já existente, com servidor próprio?

  96. Edmilson - 2 de setembro de 2015

    Gostaria de saber mais sobre esses modulos

  97. Eder - 30 de agosto de 2015

    Olá,
    Gostaria de saber se tem como comunicar dois arduinos com este modulo.
    Se sim onde encontro material ?

  98. Luiz - 16 de agosto de 2015

    Olá Filipe, queria parabenizar pelo post, mais estou com um problema. Comprei o módulo em sua loja e segui seu tutorial a risca porém não obtive resultados positivos.
    Fazendo o upload do primeiro código aparece isto no serial monitor:

    ets Jan 8 2013,rst c`use:4, boov mode:(3,7)

    wdt reset
    load 0x40000000, len 816, room 16
    tail 0
    chksum 0x8d
    load 0x3ffe8000, l8tail 12
    u 8aco2 dSMusl�Versao de firmware

    ets Jan 8 2013,rst cX]®Y’ ½½Ñ�j½‘•éBšbºJj

    wdt reset
    lo
    ets Jan 8 3013,rst cause:4, boot mode:(3,7)

    wdt reset

    load 0x40100000, len 817, room 16
    tail 0
    chksum 0x8d
    load 0x3fge8000, lrtail 13

    t02 I 4 sl�**Final**

    Não retornando a versão de Firmaware nem nada parecido como o seu tutorial, mas como apareceu o **Final** continuei o tutorial e fiz o upload do código seguinte obtendo :

    “qXÑzÂC!É1±ÿ)ÓCCa *ó “
    I!a5 )“I™Ca5 Jr0IN ‘K!ÑCÊ !‘ ÷þ•r_H(¥µThinker Technology Co. Ltd.

    ready
    qXÑzÂC!Ë1³ÿ)ÓCCa*ó “I!c5 )“K™Ca7 Jr0KH ‘K!ÑCÊ”qXÑzÂC!É1±ÿ)ÓCCa *ó “
    I!a5 )“I™Ca5 Jr0IN ‘K!ÑCÊ !‘ ÷þ•r_H(¥µThinker Technology Co. Ltd.

    ready

    Não cosegui fazer nada com este módulo. O quê eu faço ?

  99. Jonas - 7 de agosto de 2015

    Ola Adilson atravez deste modulo wireless e posivel encaminhar as posiçoes do giroscopio para o labview e matlab. Utilizando o arduino Leonardo?

    grato
    Jonas

  100. jagoris - 30 de julho de 2015

    Para duvidas deste componente, sugiro que deem uma olhada em http://RandomNerdTutorials.com/esp8266-web-server
    e tambem no livro feito pelo autor.

  101. Roger - 29 de julho de 2015

    Alguém tem algum exemplo de código para acionar as portas do UNO através desse Módulo?
    Já tentei de muitas formas mais até agora sem sucesso.

  102. Marcus - 29 de julho de 2015

    Boa tarde, tenho uma duvida sobre esse módulo. quero fazer um sistema com relé, sensor de toque e uma comunicação. pensei nesse módulo, mas gostaria de saber se posso fazer isso utilizando apenas ele ou se preciso usar o arduino junto. Valeu.

    • FILIPEFLOP - 7 de agosto de 2015

      Boa tarde Marcus,

      Você pode fazer isso só com o sensor, já que ele possui portas de comunicação (GPIO), mas você terá que construir algum circuito auxiliar.

      Abraço

      Adilson – Equipe FILIPEFLOP

  103. Ricardo Cardoso Felipe - 28 de julho de 2015

    Infelizmente não consegui fazer funcionar o módulo ESP, não da resposta nenhuma no monitor serial, porém acende o led azul indicando que está recebendo algum dado, segui tudo que está neste tutorial bem como no site arduino e cia. Tem mais algum teste pra fazer ou meu módulo veio com defeito?

    Atenciosamente,

    Ricardo Cardoso Felipe

  104. Rafael dos Santos Gomes - 27 de julho de 2015

    Olá, belo tutorial estão de parabéns, porém me deparei com o problema citado pelo Gabriel que ocorre n primeiro programa quando se testa a versão do firmware. Apareceu para mim o seguinte:
    —————————————
    à àà Versao de firmware
    à à à à ** Final **
    —————————————
    Acredito que seja a versão do firmware que é diferente.
    Procurei na internet e vi alguns tutoriais sobre a atualização, mas todos utilizam placa FTDI. A pergunta então é como atualizar o firmware? Posso atualizar o firmware do 8266 sem a ter uma placa FTDI a disposição ou terei que comprar uma?

    Obrigado. :)

  105. Helder - 23 de julho de 2015

    Estou tendo problemas com esta programação:
    O numero do IP não aparece, e aparece esta informação no lugar:

    ready
    AT+CWJAP=”REDE_Helder”,”123456″
    AT+CWMODE=1
    busy p…
    AT+CIFSR
    busy p…
    AT+CIPSERVER=1,80
    busy p…

    Tenho que fazer alguma configuração no meu Roteador?

  106. Caroline Silva - 19 de julho de 2015

    não funcionou, perguntei para o grupo do arduino brasil e estavam tendo problemas com esse tipo de módulo.

  107. Mario Souza - 16 de julho de 2015

    Alguem tem as ligações e programa do Wifi ESP8266MOD(12) ?
    Grato

  108. Breno - 14 de julho de 2015

    Prezados,
    Acredito que estou tendo dificuldades de fazer funcionar o sistema abordado neste artigo, pois a alimentação do notebook não está sendo suficiente para o arduino+wireless.. Como faço para ligar a fonte externa no módulo wireless, conforme comentado no artigo?

  109. Igor - 9 de julho de 2015

    Boa noite

    adorei o tutorial! Tenho apenas duas dúvidas referente a esse produto:

    -Como esse módulo se comportaria com outros iguais se conectando na mesma rede? Geraria algum tipo de conflito ou algum tipo de sobrecarga na comunicação? Ou várias unidades podem funcionar paralelas sem acarretar problema ou perda de velocidade?
    -A taxa de transferência dele é mesmo de 19200, identica a comunicação bluetooth ? Pergunto pois tenho uma aplicação que utiliza transmissão bluettooth porem gostaria de mudar pra rede wifi para possibilitar varias conexões simultaneas. Meu unico medo é que a minha atual aplicação necessita de respostas ‘em tempo real’ (ou próximo disso). Queria saber se é possível com algum tipo de aplicação chegar nesse cenário;

    Obrigado

    • FILIPEFLOP - 10 de julho de 2015

      Boa tarde Igor,

      Pelo tipo de ligação do módulo (comunicação serial), é possível utilizar mais de um ao mesmo tempo no Arduino, mas não temos informações sobre conflitos e/ou sobrecarga.

      Quanto à taxa de transferência, ela é configurável, e aqui conseguimos utilizar em 19200 e 115200.

      Abraço

      Adilson – Equipe FILIPEFLOP

  110. Fabio Oliveira - 8 de julho de 2015

    É possível conectar esse módulo wireless em uma rede no roteador?

  111. Gabriel - 8 de julho de 2015

    Olá Filipe, queria parabenizar ´pelo post, mais estou com um problema, preciso urgentemente fazer comunicação entre arduino mega + esp8266, porém estou tentando usar seu codigo e não aparece nem a versão para mim, aparece apenas :
    Versão de firmawe
    ** Final **

  112. Andreas Schutz - 2 de julho de 2015

    Pessoal, a página não está carregando as imagens (ERRO 404).

    obrigado

  113. teste - 27 de junho de 2015

    [code]
    /*
    SensorNode –> Canal ThingSpeak via Ethernet

    Autor: Pedro Cândido do Nascimento Filho
    Email: pedrocnf@gmail.com
    Criado em Junho de 2015

    O client ThingSpeak eh projetado para que o Arduino, através da
    placa Ethernet possa atualizar um canal de gráficos com dados
    analógicos, lidos através do API ThingSpeak usando HTTP POST.
    O Arduino usa DHCP e DNS para uma simples configuração de rede.
    O código também utiliza um recurso de computação autonômica, que
    é uma função que reseta o Arduino caso a comunicação seja interrompida,
    implementeando o preceito de Auto-Cura. Este procedimento garante
    que o Arduino pode ser recuperar caso depois de desligado de forma
    intencional e não intencional.
    O monitor serial permite acompanhar todo o processo.
    */

    //BIBLIOTECAS USADAS NO CODIGO
    #include //BIBLIOTECA DE PROTOCOLOS DE REDE E INTERNET
    #include //BIBLIOTECA DE COMUNICAÇÃO COM O SHIELD ETHERNET
    #include “DHT.h” //BIBLIOTECA DO SENSOR DE TEMPERATURA E HUMIDADE

    //CONFIGURACOES DO SENSOR DE HUMIDADE E PRESSAO
    #define DHTPIN A2 // pino que estamos conectando o sensor DHT-11
    #define DHTTYPE DHT11 // definindo o modelo do sensor como DHT 11
    DHT dht(DHTPIN, DHTTYPE);

    //CONFIGURACOES DA REDE
    byte mac[] = {0x56, 0x48, 0x6B, 0x21, 0x57, 0x76 }; // Endereço MAC gerado manualmente (56-48-6B-21-57-76)

    //CONFIGURACOES DO THINGSPEAK
    char thingSpeakAddress[] = “api.thingspeak.com”;
    String writeAPIKey = “MBCS6S5IHPOF84FW”; //API KEY DO CANAL UTILIZADO
    const int updateThingSpeakInterval = 16 * 1000; // Time interval in milliseconds to update ThingSpeak (number of seconds * 1000 = interval)
    char thingspeak_data[128]; //variável que guarda os dados que serão enviados

    //CONFIGURACOES DE VARIAVEIS
    long lastConnectionTime = 0;
    boolean lastConnected = false;
    int failedCounter = 0;
    int LedVerde = 2;
    int LedVerm = 3;

    //INICIALIZAÇÃO DO CLIENTE ETHERNET
    EthernetClient client;

    //FUNÇÃO DE CONFIGURAÇÕES
    void setup()
    {
    Serial.begin(9600); //INICIO DA PORTA SERIAL
    Serial.println(“SENSOR DHT-11: ON-LINE!”); //MSG DE FUNCIONAMENTO DO SENSOR
    dht.begin();//INICIO DO SENSOR
    startEthernet(); //INICIO DA FUNCAO ETHERNET
    pinMode(LedVerde, OUTPUT);
    pinMode(LedVerm, OUTPUT);
    }

    //FUNCAO DE RECURSIVIDADE
    void loop()
    {

    char dht_temp[6];//cria variavel do tipo char que vai armazenar valores de temperatura do dht
    char dht_umid[6];//cria variavel do tipo char que vai armazenar valores de umidade do dht
    float h = dht.readHumidity();//faz leitura de umidade e armazena na variavel h do tipo float
    float t = dht.readTemperature();//faz leitura de temperatura e armazena na variavel t do tipo float

    if (isnan(t) || isnan(h)) {//verifica se existiu leitura de temperatura e umidade
    Serial.println(“Falha ao ler sensor DHT”);//exibe mensagem em caso de erro na leitura
    } else {
    dtostrf(h, 1, 2, dht_umid); //copiando float umidade para char dht_umid
    dtostrf(t, 1, 2, dht_temp); //copiando float temperatura para char dht_temp
    }

    //salva na variavel char thingspeak_data variaveis que serão enviadas para o servidor thingspeak no formato field1=xx(valor umidade)&field2=xx(valor temperatura)
    sprintf(thingspeak_data, “field1=%s&field2=%s”, dht_umid, dht_temp);

    //IMPRIME ATUALIZACAO NO MONITOR SERIAL
    if (client.available())
    {
    char c = client.read();
    Serial.print(c);
    }

    //DESCONECTAR DO THINGSPEAK
    if (!client.connected() && lastConnected)
    {
    Serial.println(“…desconectdo”);
    Serial.println();
    client.stop();
    }

    // ATUALIZACAO DO THINGSPEAK
    if (!client.connected() && (millis() – lastConnectionTime > updateThingSpeakInterval))
    {
    updateThingSpeak(thingspeak_data); // envia variavel thingspeak_data para a função updateThingSpeak
    Serial.println(thingspeak_data);// exibe via serial os dados enviados de temperatura e umidade

    }

    // CHECA SE O ARDUINO PRECISA SER RESETADO >>> FUNCAO AUTONÔMICA
    if (failedCounter > 3 ) {
    startEthernet();
    }

    lastConnected = client.connected();
    }

    //FUNCAO DO CABECALHO HTTP POST DO THINGSPEAK
    void updateThingSpeak(String tsData)
    {
    if (client.connect(thingSpeakAddress, 80))
    {
    client.print(“POST /update HTTP/1.1\n”);
    client.print(“Host: api.thingspeak.com\n”);
    client.print(“Connection: close\n”);
    client.print(“X-THINGSPEAKAPIKEY: ” + writeAPIKey + “\n”);
    client.print(“Content-Type: application/x-www-form-urlencoded\n”);
    client.print(“Content-Length: “);
    client.print(tsData.length());
    client.print(“\n\n”);
    client.print(tsData);
    lastConnectionTime = millis();
    if (client.connected())
    {
    Serial.println(“Connecting to ThingSpeak…”);
    Serial.println();
    failedCounter = 0;
    digitalWrite(2,HIGH);
    delay(5000);
    digitalWrite(2,LOW);
    }
    else
    {
    failedCounter++;
    Serial.println(“Connection to ThingSpeak failed (” + String(failedCounter, DEC) + “)”);
    Serial.println();

    }
    }
    else
    {
    failedCounter++;
    Serial.println(“Falha de conexao ao ThingSpeak(” + String(failedCounter, DEC) + “)”);
    Serial.println();
    lastConnectionTime = millis();
    digitalWrite(3,HIGH);
    delay(5000);
    digitalWrite(3,LOW);
    }
    }

    //FUNCAO DE CONEXAO ETHERNET
    void startEthernet()
    {
    client.stop();
    Serial.println(“Conectando o Arduino a rede…”);
    Serial.println();
    delay(1000);

    // CONEXAO USANDO DHCP
    if (Ethernet.begin(mac) == 0)
    {
    digitalWrite (2,LOW);
    Serial.println(“Falha do DHCP, reinicie o Arduino para tentar novamente”);
    }
    else
    {
    Serial.println(“Arduino conectado a rede usando DHCP”);
    Serial.println();
    }
    delay(1000);
    }

    [/code]

  114. Alexandre - 25 de junho de 2015

    Boa noite,

    Primeiro, gostaria de parabenizá-lo pelo post tão bem explicado.
    No meu caso, meu ESP8266 deve estar com um firmware diferente do seu usado.
    Poderia, por favor, nos ensinar um modo para atualizar para funcionar junto com o arduino?

    Muito obrigado!

  115. Carlos Alexandre - 23 de junho de 2015

    Parabéns, mais um post excelente!

Deixe uma resposta