ESP8266 com Arduino

Depois do meu primeiro artigo apresentando o módulo ESP8266, muitos me questionaram quando sairia um post tratando exclusivamente da interface deste módulo com Arduino. Pois bem, mãos à obra, vamos ao post de ESP8266 com Arduino!

 

Com ênfase para o módulo ESP-01, que se destaca pelo fato de ser projetado para operar como ponte Serial-WiFi ou como um simples controle de IO, será então demonstrado um passo a passo de configuração e uso junto com a placa Arduino Mega 2560.

 

 

Download e instalação da biblioteca

 

Para os amantes de Arduino de plantão, nada melhor do que uma biblioteca na mão para fazer uso do módulo, não? Até pouco tempo atrás, a melhor biblioteca era a ITEADLIB Arduino ESP8266, mas que foi descontinuada pela sua sucessora, a WeeESP8266, também feita e mantida pelo pessoal da ITEAD e que está disponível no GitHub.

 

Ao acessar a página da biblioteca ITEADLIB Arduino WeeESP8266, basta clicar no botão "Download ZIP", tal como mostrado na Figura 1 adiante:

 

Download da biblioteca WeeESP8266
Figura 1 - Download da biblioteca WeeESP8266

 

Após isso, será dado início ao download do arquivo "ITEADLIB_Arduino_WeeESP8266-master.zip", que contém os códigos da biblioteca que iremos utilizar, além de alguns bons exemplos para servir de base.

 

Caso você tenha curiosidade para olhar mais adiante na página do GitHub da WeeESP8266, há uma boa definição de todas as funções disponíveis, que realizam todas as funções agregadas na biblioteca. Além disso, também há detalhes sobre como utilizar a biblioteca com Arduino UNO ou MEGA, e demais informações. Todavia, vou fornecer aqui uma síntese (em português) destes detalhes, com um simples exemplo de utilização.

 

Concluído o download do arquivo "ITEADLIB_Arduino_WeeESP8266-master.zip", há duas formas possíveis de proceder. A primeira, é descompactar o diretório compactado pelo arquivo na pasta libraries, do diretório do Arduino IDE, e abrir novamente o programa Arduino IDE. Outra forma, possível desde a versão do Arduino IDE 1.0.5, é adicionar bibliotecas diretamente pela interface do Arduino IDE. Como a minha versão de Arduino é a 1.6.3 (a mais atual na data do presente artigo), irei proceder com a segunda forma, que é adicionar biblioteca diretamente pelo Arduino IDE. Lembro que, dependendo de onde o Arduino estiver instalado é necessário possuir permissões de administrador para realizar modificações na máquina, ok?

 

Para adicionar uma biblioteca nova no Arduino, primeiramente inicie o programa Arduino IDE, e vá na opção Sketch do Menu superior. Nesta opção, vá em Import Library... e logo depois em Add Library..., conforme exibido na figura 2:

 

Adição de nova biblioteca no Arduino 1.6.3
Figura 2 - Adição de nova biblioteca no Arduino 1.6.3

  

Nesta última opção, será aberta uma janela para seleção do arquivo ZIP que contém a biblioteca a ser adicionada. Navegue até o diretório em que você colocou ou baixou o arquivo da biblioteca WeeESP8266, selecione este arquivo e clique em "Open" na janela em questão. No meu exemplo, selecionei o arquivo no diretório Downloads coforme exibido na figura 3 a seguir:

 

Adição de biblioteca em formato ZIP no Arduino IDE
Figura 3 - Adição de biblioteca em formato ZIP no Arduino IDE

 

Feito isso, pronto! A biblioteca WeeESP8266 está agora adicionada ao seu Arduino IDE e pode ser usada em futuros projetos. Agora... Vamos colocar a mão em fios!

 

 

Conexão do ESP8266 com Arduino

 

O módulo ESP8266 é projetado para operar em níveis de tensão de 3,3V. Ou seja, se ele receber níveis de tensão acima deste, poderá ser danificado!

 

Alguns podem levantar a seguinte questão: "Ah, mas e aquele sinal de 3,3V do Arduino?!" 
Esse sinal é apenas para alimentação elétrica. Os sinais de PWM, comunicação, digital, e todos os outros do Arduino operam na casa de 5V. Aí que está o problema, em se tratando da interface com módulos e periféricos que operam em 3,3V!

 

A maioria dos Arduinos comercializados trabalha com lógica de 5V, o que torna perigoso o seu contato direto e sem preparo com o módulo ESP8266. Então... O que fazer? Para conectar as placas exibidas na figura 4:

 

Como conectar um Arduino de 5V em um ESP8266 de 3.3V?
Figura 4 - Como conectar um Arduino de 5V em um ESP8266 de 3.3V?

 

Mas, não fique triste, há várias soluções! A primeira e mais barata, mas não 100% confiável, é usar um divisor de tensão, usando um resistor de 10Kohm e outro de 20Kohm. O site iot-playground informa em detalhes sobre o preparo de interface do Arduino em lógica de 5V para o ESP8266, que opera em 3,3V. A figura 5 exibe um modelo de divisor de tensão a ser empregado para os sinais que saem do Arduino rumo ao ESP8266. No caso, é um exemplo de divisor que trabalha o sinal do TX do Arduino, para o sinal RX do módulo. Qual a maior desvantagem dessa solução? É que para cada sinal de entrada no ESP8266 deve receber até no máximo 3.3V, ou seja, você terá que fazer um divisor deste tipo para cada sinal que sair do Arduino para entrar no módulo.

 

Divisor de Tensão
Figura 5 - Divisor de tensão de 5V para 3,3V [1]

 

 

Outra solução, mais confiável, é usar um buffer não-inversor, como por exemplo o CD4050 exibido na figura 6:

 

cd4050
Figura 6 - Buffer não-inversor CD4050 [2]

 

 

A vantagem de usar o buffer CD4050 é que é um CI barato, fácil de encontrar, e fácil de utilizar. Basta alimentar o circuito com 3,3V, como por exemplo aquele 3,3V fornecido pelo Arduino, e as entradas de 5V que ele receber serão então transformadas em 3,3V nas suas respectivas saídas. Para mais detalhes, consulte o datasheet do CD4050. Além disso, usando um único buffer você consegue trabalhar com 6 entradas passíveis de serem modificadas de 5V para 3,3V!

 

Lembrem-se que o problema é do lado do ESP8266! Não é problema algum o Arduino receber sinais em 3,3V, por exemplo. 

 

 

Pinagem do ESP8266

 

Feito isso, devemos também nos ater à pinagem e características de operação do ESP8266, lembrando do meu post apresentando o módulo ESP8266. A figura 7 exibe a pinagem do módulo ESP8266, modelo ESP-01:

 

Pinagem do ESP01
Figura 7 - Pinagem do ESP01 [3]

 

 

  • Vcc: Tensão de alimentação 3,3V. Módulo consome até 300 mA;
  • GND: Sinal de Terra GND;
  • Tx: Sinal de Tx do módulo, a ser conectado no Rx do microcontrolador (Sinal em 3,3V);
  • Rx: Sinal de Rx do módulo, a ser conectado no Tx do microcontrolador (Cuidado! Sinal em 3,3V!);
  • RST: Sinal de Reset/Restart acionado em nível baixo (GND);
  • CH_PD: Sinal de habilitação do chip (chip enable), usado para gravação de firmware ou atualização. Deve ser mantido em nível ALTO para operação normal;
  • GPIO0: Pode ser controlado pelo firmware, e deve ser colocado em nível baixo (GND) para modo update, ou em nível alto para operação normal;
  • GPIO2: I/O que pode ser controlada pelo firmware;
  • LED: Quando está ligado, fica aceso em cor Vermelha, e aciona a cor Azul para indicar atividade. Pisca uma vez para indicar momento de boot.

 

 

Ligação do ESP8266 no Arduino

 

Com base na pinagem mostrada, mostro um exemplo do que temos que fazer, em se tratando do uso conjunto de um Arduino UNO/MEGA ou equivalente, para o ESP8266: 

  • VCC: Ligado no sinal de 3,3V do Arduino;
  • GND: Ligado no gnd do Arduino;
  • Tx: Ligado no RX1 do Arduino Mega, ou em um sinal de Serial via Software no UNO;
  • Rx: Ligado na saída 2 do CD4050 - Entrada de sinal, só pode receber 3,3V;
  • CH_PD: ligado na saída 4 do CD4050 - Entrada de sinal, só pode receber 3,3V;
  • RST: ligado na saída 6 do CD4050 - Entrada de sinal, só pode receber 3,3V;
  • GPIO0: ligado na saída 15 do CD4050  - Entrada de sinal, só pode receber 3,3V.

 

Já com relação ao Arduino, irei usar o Arduino Mega2560 R3, pelo fato de o mesmo possuir várias interfaces Seriais nativas. No meu Arduino, fiz a seguinte relação de conexões: 

  • ESP8266 Tx --> Ligado no RX1 do Arduino Mega - Cor amarela no esquemático;
  • Sinal Tx1 do Arduino Mega - Entrada 3 do CD4050 - Ajuste de 5V para 3,3V - Cor verde no esquemático;
  • Sinal 44 do Arduino Mega - Entrada 5 do CD4050 - Controle do CH_PD do ESP8266 - Cor cinza no esquemático;
  • Sinal 46 do Arduino Mega - Entrada 7 do CD4050 - Controle de RST do ESP8266 - Cor "marrom" no esquemático;
  • Sinal 48 do Arduino Mega - Entrada 14 do CD4050 - Controle do status do GPIO0 do ESP8266 - Cor "azul" no esquemático.

 

Para demonstrar as conexões realizadas, a figura 8 exibe o esquemático de ligações montado no Fritzing,:

 

Esquemático de Ligação com Arduino Mega 2560 + CD4050 e ESP8266
Figura 8 - Esquemático de Ligação com Arduino Mega 2560 + CD4050 e ESP8266

 

 

Agora que a biblioteca está importada e o circuito está montado, é hora de codificar!

 

 

Está vivo?

 

Antes de tudo, é de suma importância verificar se as conexões foram devidamente realizadas, se há comunicação serial entre o ESP8266 e o Arduino Mega2560. Para tal, com base na montagem feita pelo esquemático da Figura 8, segue o código abaixo em que, carregado no Arduino, irá transformá-lo em uma "Ponte Serial", ou seja, ele irá apenas encaminhar sinais da serial entre o ESP8266 e, no caso, o computador. E como o Arduino está controlando os sinais CH_PD, RST e GPIO0, os mesmos devem ser incluídos no código e acionados em HIGH para o devido funcionamento do módulo.

 

 

Após gravar o código, foi aberto o "Serial Monitor" do Arduino IDE, e a velocidade de comunicação foi setada em 9600 baud. Com isso, o módulo já forneceu um retorno, informando versão de firmware como "0.9.2.4", e respondeu "OK" a um comando "AT" enviado pela serial, indicando então que está tudo ok, como mostrado na Figura 9 adiante:

 

Comunicação serial
Figura 9 - Comunicação serial com sucesso!

 

 

Seu módulo funcionou com este teste? Caso negativo, pode ser que seu módulo tenha vindo de fábrica com um firmware que opere com serial em velocidade de 115200 baud. Neste caso, basta mudar ambas as velocidades do código, a saber, Serial e da Serial1, para 115200, e lembre-se de alterar também a velocidade do "Serial Monitor" para 115200 baud, uma opção que está no canto inferior direito da janela. E caso não tenha operado nem com 9600 baud nem com 115200 baud, que são as velocidades mais comuns destes módulos, aí seu problema pode ser outro!

 

 

Considerações da Biblioteca weeESP8266

 

Esta biblioteca é muito versátil, e pode considerar o uso de duas vertentes de firmwares do ESP8266, e também pode considerar o uso de Serial via Software ou via Hardware. Entretanto, essas modificações são realizadas no arquivo de cabeçalho da biblioteca "ESP8266.h". Se você instalou a biblioteca usando o Arduino IDE, a biblioteca está em "Meus Documentos" -> "Arduino" -> "libraries" -> "ITEADLIB_Arduino_WeeESP8266-master". E neste diretório você encontrará o arquivo "ESP8266.h", podendo proceder com demais modificações necessárias, conforme apresentado no repositório da ESP8266, para alterar o uso da Serial e o Firmware a ser controlado.

 

 

Codificação do primeiro exemplo 

 

Com tudo em ordem, vamos colocar para rodar o exemplo de um servidor de conexão TCP usando o módulo ESP8266.

 

Poupando demais detalhes, o código está bem comentado em cada parte, e recomendo uma leitura para a compreensão das rotinas e funções.

 

Novamente, como o Arduino está controlando os sinais CH_PD, RST e GPIO0, os mesmos devem ser incluídos no código e acionados em HIGH para o devido funcionamento do módulo!

 

 

Correção: Cuidado com o envio da sequência "!!!" durante a transmissão de mensagens via Serial com o Arduino Mega, operando em velocidade de 115200 baud. O envio dessa sequência faz o Arduino Mega entrar no modo console do bootloader, o que está documentado aqui. Agradecimentos ao usuário Ed Waldo, que destacou o problema nos comentários deste post.

 

Como o módulo ESP8266 foi configurado como servidor TCP, ele ficará aguardando conexões TCP! Desta forma, a maneira mais indicada para fazer um teste para ver se está tudo OK é usar um programa como o Putty, que é capaz de fazer conexões TCP em formato "raw", que permite a transmissão direta de dados pelo console terminal.

 

Com isso, após gravar o código apresentado anteriormente no Arduino Mega2560, configurado para conectar na rede WiFi aqui de casa, é possível ver que tudo correu certo. Começando pelo modo Station e AP, passando pela conexão na minha rede WiFi privada, pela atribuição de IPs, setup de múltiplas conexões e de servidor TCP, como mostrado na Figura 10:

 

Módulo ESP8266 configurado com Arduino
Figura 10 - Módulo ESP8266 configurado com Arduino

 

 

Como também pode ser visto na Figura 10, há 2 endereços IP fornecidos pelo módulo, neste exemplo: 

  • 192.168.4.1 - Endereço IP do módulo como AP;
  • 192.168.1.21 - Endereço IP do módulo conectado em minha rede privada WiFi.

 

Qual o motivo de aparecer 2 endereços IP? É porque setamos o módulo como Station e como AP! Assim, ele tanto acessa uma rede WiFi - Modo Station, como também fornece sinal de WiFi - Modo AP, com todas as suas atribuições, como SSID, senha, etc. Como não foi definido nenhum parâmetro para o seu modo AP, ele usa uma atribuição automática e sem senha, e a partir de então fica disponível ao alcance de dispositivos próximos, tal como mostrado na Figura 11:

 

Nome do AP
Figura 11 - Nome do AP criado pelo módulo ESP8266

 

 

Neste exemplo, irei conectar ao módulo por meio da minha rede WiFi local, e  para testar o projeto usando o Putty, basta abrir o programa, selecionar o tipo de conexão como "Raw", colocar o IP atribuído ao módulo, que no meu caso foi 192.168.1.21, e a porta correspondente à conexão,  8090 neste exemplo, e clicar em "Open", como mostrado na Figura 12:

 

Configuração do Putty para acesso ao ESP8266 via TCP
Figura 12 - Configuração do Putty para acesso ao ESP8266 via TCP

 

 

Após isso, será aberta uma janela em branco (ou preto, no caso), sem nada à mostra. Vamos digitar um exemplo, "Vai Embarcados!!!", e apertar ENTER, como mostrado na Figura 13:

 

Console do Putty
Figura 13 - Console do Putty com conexão TCP

 

 

Após pressionar ENTER, o que será que aconteceu com o módulo? Vamos conferir na Figura 14:

 

Resultado
Figura 14 - Resultado da operação com Putty via TCP

 

 

Olha só! Recebeu "Vai Embarcados!!!" 

 

Não estranhem se a janela do Putty fechar. Foi colocado no código para encerrar a conexão TCP ao término do processo. Caso queira mudar o comportamento do programa, basta remover a parte de encerramento da conexão TCP e ver o que acontece!

 

Então... Pronto! Este foi um simples exemplo de configuração e funcionamento do ESP8266 com Arduino.

 

Sejam curiosos, vasculhem o GitHub do weeESP8266, vejam as rotinas implementadas em "ESP8266.h", brinquem! E até a próxima.

 

 

Referências

 

[1] Divisor de tensão de 5V para 3,3V

[2] Buffer não-inversor CD4050

[3] Electrodragon ESP8266

Graduado em Engenharia de Computação com ênfase em Sistemas Embarcados pela USP, campus São Carlos, possui MBA em gestão de TI pela UNIFRAN e Mestrado em Ciências pela EESC-USP. Atua como Analista de Tecnologia para Sistemas Embarcados na Padtec S/A, sendo também professor de pós-graduação e instrutor de cursos na área de sistemas embarcados. Como hobby, gosta de programar tudo que pode ser programado, escovando bits sempre ao lado de um bom café. Gosta de compartilhar seu conhecimento por meio de palestras, e publicando artigos como colaborador dos sites Embarcados e FilipeFlop.
  • Pingback: ESP8266 com Arduino | Yet Another Technology Blog()

  • Cesar Gritti

    usa uma interface php ou um programa em vb, todas as duas opções são fáceis de serem implementadas ja usei as duas.

    • É. Diretamente não é possível.
      Você precisará implementar uma interface via PHP/Python/Asp, etc, pra lidar com requisições GET ou POST e assim fazer as inserções no Banco de Dados!

  • Cesar Gritti

    Tem como usar a IDE para gravar os programas, porem cuidado! O esp vem um programa de fabrica com todas as funcionalidades, se vc gravar um outro programa as funcionalidades vão parar de funcionar.

    • Alexandre Magno

      Na Internet há projetos Arduino para "gravador de firmware"; um Arduino gravando o firmware de outro, a partir da IDE. Eu estou querendo saber se existe o mesmo conceito ESP8266. Você teria link para um projeto de "gravador de firmware" para ESP8266? Falo de um Arduino (ou um primeiro ESP8266) gravando firmware em um ESP8266.

  • pedrohss

    Galera preciso de uma ajuda de alguem que já tenha experiência com o módulo wifi esp8266.
    Comprei recentimente o Modelo: ESP-01 e ele não responde de maneira alguma os comandos AT e as funções da biblioteca WeeESP8266.
    Já testei vários códigos diferentes, com o arduino mega fazendo divisores de tenção pros sinais e com o arduino Due tb.
    Já alterei a velocidade da serial de 9600 e para 115200.
    Já fiz o Upgrade de firmware do módulo.
    Nada resolveu. Aguem tem ideia do que mais pode ser feito?
    Agradeço desde já.

    • Olá Pedro.
      Muuuuuuuuuito estranho!
      Ainda sem solução?
      Verificou como estão os sinais RST, GPIO0 e CH_PD?
      Testou com um conversor serial USB-TTL direto?

  • Cristian Richo

    Excelente, muchas gracias desde Argentina

  • Eu utilizei o não inversor para fazer a ligação, mas no final não consigo fazer o upload do sketck, no debug da IDE dá estas informações:

    Sketch uses 224,153 bytes (51%) of program storage space. Maximum is 434,160 bytes.
    Global variables use 31,704 bytes (38%) of dynamic memory, leaving 50,216 bytes for local variables. Maximum is 81,920 bytes.
    C:UsersrootAppDataLocalArduino15packagesesp8266toolsesptool.4.9/esptool.exe -vv -cd ck -cb 115200 -cp COM4 -ca 0x00000 -cf C:UsersrootAppDataLocalTempbuild1837343288b84c339c9474faef4eacff.tmp/firstConnection.ino.bin
    esptool v0.4.9 - (c) 2014 Ch. Klippel
    setting board to ck
    setting baudrate from 115200 to 115200
    setting port from COM1 to COM4
    setting address from 0x00000000 to 0x00000000
    espcomm_upload_file
    espcomm_upload_mem
    setting serial port timeouts to 1000 ms
    opening bootloader
    resetting board
    trying to connect
    flush start
    setting serial port timeouts to 1 ms
    setting serial port timeouts to 1000 ms
    flush complete
    espcomm_send_command: sending command header
    espcomm_send_command: sending command payload
    read 0, requested 1
    trying to connect
    flush start
    setting serial port timeouts to 1 ms
    setting serial port timeouts to 1000 ms
    flush complete
    espcomm_send_command: sending command header
    espcomm_send_command: sending command payload
    read 0, requested 1
    trying to connect
    flush start
    setting serial port timeouts to 1 ms
    setting serial port timeouts to 1000 ms
    flush complete
    espcomm_send_command: sending command header
    espcomm_send_command: sending command payload
    read 0, requested 1
    resetting board
    trying to connect
    flush start
    setting serial port timeouts to 1 ms
    setting serial port timeouts to 1000 ms
    flush complete
    espcomm_send_command: sending command header
    espcomm_send_command: sending command payload
    read 0, requested 1
    trying to connect
    flush start
    setting serial port timeouts to 1 ms
    setting serial port timeouts to 1000 ms
    flush complete
    espcomm_send_command: sending command header
    espcomm_send_command: sending command payload
    read 0, requested 1
    trying to connect
    flush start
    setting serial port timeouts to 1 ms
    setting serial port timeouts to 1000 ms
    flush complete
    espcomm_send_command: sending command header
    espcomm_send_command: sending command payload
    read 0, requested 1
    resetting board
    trying to connect
    flush start
    setting serial port timeouts to 1 ms
    setting serial port timeouts to 1000 ms
    flush complete
    espcomm_send_command: sending command header
    espcomm_send_command: sending command payload
    read 0, requested 1
    trying to connect
    flush start
    setting serial port timeouts to 1 ms
    setting serial port timeouts to 1000 ms
    flush complete
    espcomm_send_command: sending command header
    espcomm_send_command: sending command payload
    read 0, requested 1
    trying to connect
    flush start
    setting serial port timeouts to 1 ms
    setting serial port timeouts to 1000 ms
    flush complete
    espcomm_send_command: sending command header
    espcomm_send_command: sending command payload
    read 0, requested 1
    warning: espcomm_sync failed
    error: espcomm_open failed
    error: espcomm_upload_mem failed

    O que pode ser?

  • Fabiano

    Parabéns pelo tutorial, bastante detalhado.
    No meu caso estou com um NodeMCU. Qual seria a diferença entre as conexões do esp utilizado no tutorial? Tentei montar um esquema alternativo, mas não encontrei o terminal ch_pd do NodeMCU...

    • Olha, no NodeMCU a conexão com Internet é direta.
      Recomendaria você mesmo montar um esquema de mensagens entre Arduino e NodeMCU.
      A coisa fica até mais chique!

  • eduardo gonçalves

    Boa noite, André.

    Estou fazendo um sistema de detecção de gás, e preciso que o quando o sensor detecte o gás ele mande um sinal para o Arduíno que faça com que o modulo esp8266 envie uma mensagem de alerta via wi-fi para um dispositivo androide.
    pode me ajudar quanto a isso.? e é necessário algum aplicativo?

    Grato e no aguardo!

    • É bom você dar uma estudada em protocolos TCP e UDP na parte do Android.
      Tem umas bibliotecas que facilitam o envio de mensagens pelo ESP8266.

      • eduardo gonçalves

        Saberia me dizer quais bibliotecas? ou alguma sugestão de algum site ou video que possa me ajudar ?

        muito obrigado por me responder 😀

  • Qual Arduino você está usando, é o Mega mesmo?

  • Acho que ele reprogramou o ESP-01 via Serial UART diretamente.
    Certamente ele atualizou o firmware de comandos AT!

  • O colega ali em cima teve o mesmo problema que você.
    Está ligando TX1 -> Rx ESP e RX1 Arduino no TX do ESP?

  • Eita, não tenho ideia não!
    Conseguiu resolver o problema ou ainda persiste?

    • Neto Marin

      Acabei desistindo e mudei a arquitetura do projeto.
      Estou usando uma NodeMCU agora.

  • Pode usar sim, mas depois de ligar o módulo!

  • Eita, o seu módulo tinha esse problema aí?

    • Giovanni Bauermeister

      André, hoje pesquisando sobre os ESP8266 econtrei a seguinte frase nesse link http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family

      Note: Some batches of this module ship with LED Current limiting resistors of the wrong value (47Ohm vs 4.7KOhm). This usually results in the power LED vanishing in a puff of smoke.

      Então está ai a explicação pq de alguns módulos esquentarem e o LED até queimar.

  • O Artigo foi feito com base no Arduino Mega!
    O Pro Mini não tem mais de 1 Serial.
    Você terá que adaptar o código para usar a SoftwareSerial, ok?

  • Uhm. Infelizmente não vou poder te ajudar nisso.

  • Você quer usar o Arduino como intermediário? Talvez até seja possível.
    Ou você queria gravar o programa no Arduino, e do Arduino passar pro ESP8266?

  • Antonio Sousa

    Ola bom dia !! estou tentando carregar o codigo e esta me retornando a msg

    Arduino: 1.6.12 (Windows 7), Placa:"Arduino/Genuino Uno"

    Teste_Wifi:12: error: 'Serial1' was not declared in this scope

    ESP8266 wifi(Serial1);

    ^

    exit status 1
    'Serial1' was not declared in this scope

    Este relatório teria mais informações com
    "Mostrar a saida detalhada durante a compilação"
    opção pode ser ativada em "Arquivo -> Preferências"

    Saberia me dizer que erro é esse !! sou novato estou começando com arduino

    desde ja agradeço

    att

    Antonio

    • Uhm... Qual o Arduino que você está usando?
      O Serial1 está presente em Arduino Mega, mas não no UNO.

  • Benito Graciano

    Boa noite,
    Parabéns pelo material, o mais claro que encontrei até o momento.
    Estou recebendo os erros no Monitor Serial:

    Iniciando Setup.
    Versao de Firmware ESP8266:
    Erro em setar Station e AP.
    Falha na conexao AP.
    Erro ao setar multiplas conexoes.
    Erro ao iniciar servidor.
    Setup finalizado!

    Estranho que ao usar o Putty, informar COM3, que é a do Arduino, velocidade 115200, conexão Serial são apresentadas as seguintes linhas:

    Iniciando Setup.
    Versao de Firmware ESP8266:
    Erro em setar Station e AP.
    Falha na conexao AP.
    Erro ao setar multiplas conexoes.
    Erro ao iniciar servidor.
    Setup finalizado!

    Ou seja, encontra o ESP8266, mas não comunica.

    Alguma dica?

    Obrigado!

    • Benito Graciano

      Amigo, consegui!
      Abri o "Arduino" -> "libraries" -> "ITEADLIB_Arduino_WeeESP8266-master" -> "ESP8266.h e alterei todas as velocidades de 9600 para 115200.
      Obrigado!

      • Valmor Mello

        Tive o mesmo problema e o seu post resolveu inteiramente o meu problema. Obrigado e parabens!

  • Valmor Mello

    Pergunto ao autor da publicação (André Curvello) e também aos demais participantes dos comentários, se é possível alterar o código ".ino" para utilizar o TouchOSC e comandar o acendimento de um led (contato seco ou com atenuação gradual no acendimento) por exemplo. Caso contrario, solicito sugestões ou indicação de algum tutorial na net que trate do assunto.

    • Você quer é controlar um LED com PWM?
      Recomendo usar a interface do Arduino IDE pra programar o ESP8266, que aí você pode usar recursos de PWM pra controlar sinais GPIO.

  • HERTZ

    Muito bom.
    André, é possível programar um ESP8266 para receber informação de outros três ESP8266, como se tivesse 3 sensores enviando seus estados lógicos para o ESP receptor, sendo que o receptor reagisse aos dados de forma a escrever em 3 GPIO.. como se fosse uma ponte... 3 entradas (3 ESP transmissor) e 3 saidas (1 ESP receptor) ?
    Obrigado e Parabéns pelo Artigo.

  • Fabio Giesen Ludke

    Boa noite!

    Estou seguindo todos os passos que falou na postagem. Mas não estou conseguindo obter sucesso na verificação da comunicação do primeiro código. Aparece vários caracteres ilegíveis e "ready", mas ele não retorna "AT" e "OK". O que pode ser?

    Obrigado.

  • Horácio Ghisleni Fernandez

    Não sei exatamente o que estou fazendo de errado, preciso de ajuda, ao rodar exemplos da biblioteca ITEADlib apresenta sempre o mesmo erro: 'wifi' was not declared in this scope
    Alguém com o mesmo problema? poderiam me auxiliar?