Translate

quarta-feira, 20 de janeiro de 2016

Programando ESP8266 ESP-01 ESP-12 com Arduino IDE via CP2102


Este ensaio demorou para sair. Estava temendo não dar certo por muitas razões. Muita informação, mas devido aos vários modelos, as informações são desencontradas, se contradizem, etc. Garimpei muitos sites até filtrar os mais confiáveis.
O site base é este: https://github.com/esp8266/Arduino onde se encontra o projeto e código fonte para habilitação do IDE Arduino para manipulação dos programas para ESP8266.
A pinagem retirei do site http://makezine.com/2015/04/01/installing-building-arduino-sketch-5-microcontroller/  pois, devido à utilizar o modelo ESP-01, os conectores são dispostos diferentes do ESP-12 que utilizo. 
Como utilizo um breakboard para conversão da pinagem e embuti um LM1117 para fornecer 3.3v para o componente, deve-se checar a maneira que é feita a alimentação, fazendo um drop-down de 5v para 3.3v ou enviando os 5v direto para o pino certo, pois corre-se o risco de fazer o drop-down de 3.3v para uma tensão menor ainda (eu fiz isso).
Outro aviso é que o processo de compilação é muito mais demorado do que quando utilizamos um Arduino UNO. Seja paciente. -> Descobri que alguns "windows" dão problema ao compilar, mesmo sendo a mesma máquina reformatada. Não encontrei a causa ainda, mas quando dá o problema, a compilação demora mais de 4 minutos enquanto compilando em uma instalação do windows estável demora alguns segundos (20 para mim, quando foi rápido).
Utilizei o Arduino 1.6.7. Recomendam que não se utilize o 1.6.6, pois tem problemas com drivers seriais (eu tive problemas com o CP2102).

CP2102:
  • utilizo uma genérica, bem básica que só precisa ligar o 5v, GND, TX e RX;
  • ao plugar na USB pela primeira vez, o driver é instalado (utilizo o Windows 7 no momento);
  • no Gerenciador de Dispositivos deve ficar como: 



Configurando o Arduino IDE 1.6.7:
  • escolher Arquivo/Preferências;
  • no campo "URLs adicionais de Gerenciadores de Placas" preencher com http://arduino.esp8266.com/stable/package_esp8266com_index.json  e "OK";
  • escolher menu Ferramentas/Placa xxxx/Gerenciador de Placas;
  • procurar o item ESP8266;
  • selecionar a última versão e "Instalar"; aguardar pois foram mais de 150 MB;
  • escolher menu Ferramentas/Placa xxxx/ Generic ESP8266 Module;
  • verificar a velocidade (Upload Speed); a original de fábrica é 115200;
  • verificar também a Porta - deve bater com o mostrado no Gerenciador de Dispositivos, acima;

Esquema eletrônico:
  • Pinagem:
    CP2102ESP8266
    VCC 5v
    (converter para 3.3v !!!)
    CH_PD (EN) + VCC
    GNDGND + GPIO0
    TXORXD
    RXITXD
ESP8266 ESP-12
CP2102
Esquema montado


Fazendo Upload e Executando
  • Utilizei o exemplo Blink do ESP8266 (não é o mesmo do Arduino); 
  • Selecione Arquivo/Exemplos/ESP8266/Blink;
  • Com os componentes conectados, carregar o programa pelo menu Sketch/Carregar;
  • Lembrando novamente que o processo de carga demora muito mais que no Arduino UNO;

Infelizmente este exemplo não utiliza a principal funcionalidade do ESP8266 que é a conexão wifi. Próximo passo!

Mais algumas dicas: tentei trabalhar com o nodemcu LUA, mas foi muito complicado pela bagunça que os programas fizeram na velocidade da serial. jogou a velocidade a 230400 e depois a 74880, velocidade que nem estão na lista da IDE arduino. Retornando à postagem anterior, fiz a tentativa e erro com as velocidades até achar em que se encontrava (9600) e use um comando AT+ para alterar a velocidade para 115200 novamente. Lembrar que o esquema acima não permite comunicação serial com o ESP8266, devendo ser alterado para o esquema do post anterior.

CH340G

Uma observação para erros de carregamento: em um ESP-12F, tive que manter o botão flash apertado durante todo o carregamento que, assim, foi bem sucedido. Este módulo utiliza o adaptador USB-Serial CH340G agregado numa breakboard que contém os botões FLASH e RST embutidos. Deixei uma garra jacaré apertando o botão durante a carga, pois o dedo fica dolorido de tanto apertar esse botão desconfortável. Fica a dica.


Alguma coisa deu errada quando tentei repetir com a versão 1.8.5 do Arduino IDE.

Consegui corrigir, mas vai a receita de bolo, pois pode ser devido a ter utilizado um modelo diferente de CP2102.
Vários posts da Internet dão errado ou exigem vários componentes. Baseei no mais simplificado que foi em um FTDI x ESP-12, apenas invertendo RX e TX no esquema, isto é, liguei TX com TX e RX com RX, do esquema abaixo (clique para ir para a página original)

 Esquema original

Para isso, usei um carregador de celular de 5,5 V derrubando para 3,3 V com um AMS1117, alimentando o GND e o 3.3 do esquema.

Uma curiosidade é que, em muitas vezes, o primeiro upload falhou e o segundo deu certo. Outra é que o circuito funciona sem precisar tirar ou mudar qualquer conexão, neste caso.


CP2102ESP8266
GNDGND + GPIO0 + GPIO15
TXDTXD
RXDRXD


FONTE (pós AMS1117)ESP8266
VCC 3.3vVCC + CH_PD + GPIO02
GNDGND 

No Arduino IDE, a configuração foi:

Arduino 1.6.7


Arduino 1.8.5

Resultado para o exemplo Blink do ESP8266:


Prototipagem