Objetivo
Acessar o modo de programação do ESP-01 utilizando um módulo conversor USB/Serial, nesse tutorial será ensinado:
Como realizar a programação do ESP-01 através do Conversor USB/ Serial FT232RI-FTDI
Como realizar a programação do ESP-01 através do Conversor USB/ Serial-UART-CP2102
Como realizar a programação do ESP-01 através do Conversor USB/Serial-UART-CP2102-MicroUSB
Como realizar a programação do ESP-01 através do Conversor USB/Serial para ESP-01
Além de ser apresentado o exemplo blink de LED piscante para todos os casos, incluindo esquema de ligação.
Introdução
O ESP-01 funciona através do chip microcontrolador conectado a sua placa, esse chip é o ESP8266, o mesmo torna possível a comunicação com a internet através de sinais de rádio Wi-fi. O componente em questão possui memória e processamento que possibilitam a integração por meio dos seus GIOs (GPIO0 e GPIO2). Além dessas características, os chips ESP8266 consomem pouca energia 3,3 Volts e cerca de 80-170 mA, funcionando em três modos de baixa corrente: sono leve (0,5 mA), sono moderno (15 mA) e sono profundo (10mA), sua corrente de pico é de 300mA.
O ESP-01 apresenta dois modos de inicialização distintos, sendo eles: Modo Normal e Modo de Programação. Para carregar um programa devemos iniciá-lo no Modo de Programação, substituindo o firmware anterior por um novo, para isso é necessário o uso de um Conversor USB/Serial, podendo ser utilizado qualquer um dos modelos presentes em nossa loja.
Figura 1-ESP-01
Lista de Materiais
Para concluir as atividades presentes nesse post, tenha em mãos os seguintes componentes:
01-Módulo WiFi ESP8266 -ESP-01
01-Modulo Conversor USB / Serial, podendo ser:
--Conversor USB/Serial FT232RI-FTDI
--Conversor USB/ Serial-UART-CP2102
--Conversor USB/Serial-UART-CP2102-MicroUSB
--Conversor USB/Serial para ESP-01
01-Cabos USB
01-Protoboard
01-LED (Diodo Emissor de Luz)
Você pode adquiri-los clicando em cada componente ou acessando o nosso site: https://www.curtocircuito.com.br/
Modos de Inicialização
Como mencionado em Introdução, o ESP-01 pode ser iniciado no Modo Programação ou no Modo Normal, durante a inicialização os pinos GPIO0 e GPIO2 são vistos como entrada (input) e seus níveis de tensão servem como indicativo para qual modo o ESP-01 deve inicializar, sendo que são naturalmente alto (H) por estarem internamente conectados com um resistor pull-up.
Conexão
O chip ESP8266 possui uma UART que é utilizada para comunicação serial TTL, por essa razão é necessário que seja utilizado um Conversor USB/Serial (TTL) de 3,3V, sendo que conversor deve fornecer no mínimo 300mA, devendo ser mencionado que qualquer um dos conversores citados no post e presentes no site se adequam aos parâmetros exigidos.
Para atividade é necessário consultar a indicação de pinos do ESP01, já que as informações não vêm demarcadas no componente.
Figura 2- Pinagem do ESP-01
Modo Programação do ESP-01 utilizando o Conversor USB/Serial FT232RI-FTDI
A placa FTDI é baseada no chip FT232RL que funciona como um conversor USB para serial TTL, permitindo a interface de dispositivos TTL para USB. o FTDI pode operar com tensão de 3,3 e 5V, sendo que para o nosso caso iremos trabalhar com 3,3V, então precisaremos colocar o jumper da própria placa nos 3,3V, dessa forma:
Figura 3- Jumper FTDI
Baixando o Driver da FTDI para Conversor USB/Serial FT232RI-FTDI
Ao conectar o cabo USB na FTDI e em seguida conectar a mesma no computador pela primeira vez, o port não é identificado na IDE do Arduino, ficando da seguinte forma:
Figura 4- Conectando a FTDI pela primeira vez
Para que haja a comunicação com o PC, é necessário que seja instalado o Driver da FTDI no computador, esse Driver pode ser encontrado no site do fabricante através do link:
https://www.ftdichip.com/Drivers/VCP.htm
Ao entrar no site devemos clicar em setup executable para baixar em zip a versão executável do driver em questão.
Figura 5- Passo 1 para baixar o driver da FTDI
Quando o arquivo já estiver baixado, é necessário abrir a pasta do zip e fazer a instalação clicando duas vezes no arquivo presente na pasta:
Figura 6- Passo 2 para baixar o driver da FTDI
Em seguida o computador irá abrir uma janela perguntando se o driver do FTDI pode fazer as modificações no dispositivo, ao permitir uma nova janela será aberta, clique em Extract como mostra a seguir:
Figura 7- Passo 3 para baixar o driver da FTDI
Seguidamente clique em Avançar:
Figura 8- Passo 4 para baixar o driver da FTDI
Selecione a opção Eu aceito este contrato e clique novamente em Avançar:
Figura 9- Passo 5 para baixar o driver da FTDI
Por fim, clique em Concluir:
Figura 10 -Passo 6 para baixar o driver da FTDI
Feito esse processo o driver do FTDI já estará instalando e o Port disponível na IDE do Arduino, lembrando que a numeração do port pode variar de componente para componente.
Figura 11- Port identificada no Arduino
Depois de instalarmos o driver, ainda teremos que baixar a placa que usaremos para desenvolvimento do nosso projeto.
Vá na IDE do Arduino e clique em Arquivo>> Preferências
Figura 12- Passo 1: Baixando a placa
Feito isso, uma janela semelhante a que se segue será aberta.
Em URLS Adicionais para Gerenciadores de Placas devemos dar dois cliques no ícone de janela indicado pela seta na demonstração.
Figura 13- Passo 2: Baixando a placa
Em seguida, devemos copiar e colar essa URL referente ao pacote de placas necessário:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Atentando-se ao fato de que se você já tiver outra URL adicionada, como o caso do exemplo, pressione ENTER e adicione na linha seguinte, sem apagar as anteriores.
Figura 14-Passo 3: Baixando a placa
Adicionada a URL, clique em OK em ambas as janelas abertas.
Figura 15-Passo 4: Baixando a placa
Depois abra Ferramentas>>Placa: Nome do modelo de placa utilizado pela última vez>> Gerenciador de placas...
Figura 16-Passo 5: Baixando a placa
Ao abrir a janela, pesquise por “esp8266” e clique em Instalar para baixar a última versão do pacote de placas.
Figura 17-Passo 6: Baixando a placa
Ao término do download, a placa já estará disponível para ser utilizada, para o caso iremos utilizar a Generic ESP8266 Module.
Figura 18-Passo 7: Baixando a placa
Ao selecionar a placa e o port/porta disponível (lembrando que a FTDI precisa estar conectada com o PC para aparecer o port), as nossas configurações iniciais já estarão feitas, com isso, você já pode programar sua FTDI da sua forma, a seguir eu ensinarei como criar um modelo básico de blink (LED piscante) para o ESP-01 em conjunto com o FTDI.
Protótipo para Conversor UBS/Serial FT232RI-FTDI e ESP-01
Primeiramente realizamos as ligações como mostrado na tabela e no protótipo a seguir, lembrando que pode ser necessário que você consulte a Figura 2- Pinagem do ESP-01novamente.
Figura 19- Conexão do FTDI com o ESP-01 no Modo Programação
Programação do ESP-01
Realizadas as configurações iniciais e ligações dos componentes, abriremos o exemplo Blink da nossa IDE do Arduino em Arquivos>>Exemplos>>01. Basics>>Blink
Figura 20- Blink
Ao abrir o Blink, mude todos os LED_BUILTIN para 2, como demonstrado a seguir.
Figura 21- Programação 1
Figura 22- Programação 2
Caso prefira copiar o código, selecione o texto abaixo e cole na sua IDE:
/* Blink com FTDI e ESP-01 Tutorial da Curto Circuito Site: https://www.curtocircuito.com.br/ */
void setup()
{
pinMode(2, OUTPUT);
}
void loop()
{
digitalWrite(2, HIGH); /* LED Liga */
delay(1000); /* Espera 1 segundo */
digitalWrite(2, LOW); /* LED Desliga */
delay(1000); /* Espera 1 segundo */
}
Realizado o código, clicamos na seta de carregar o programa para compilar o nosso sketch.
Figura 23- Carregando o programa
Aguarde até aparecer a seguinte mensagem:
Figura 24- Carregado
Isso significa que o seu programa já está salvo no chip do microcontrolador.
Modo Normal do ESP-01 com o Conversor USB/Serial FT232RI-FTDI
Agora vamos trabalhar com o ESP-01 no Modo Normal, para isso, desconecte o FTDI do seu computador e realize as seguintes alterações:
- Desconecte GPIO0 do GND
- Conecte o GPIO2 em série com o resistor para acionamento do LED
- Conecte novamente a USB
Figura 25- Conexão do FTDI com o ESP-01 no Modo Normal
Modo Programação do ESP-01 utilizando o Conversor USB/Serial- UART-CP2102
O Conversor em questão é um componente composto por um chip CP2102, possuí saída de 3,3V ou 5V, no nosso caso iremos utilizar 3,3V para conexão com ESP-01, além disso, o componente conta com porta USB para conexão direta com o computador. Sua função é converter USB para Serial TTL.
Figura 26- Conversor USB/Serial-UART-CP2102
Para início da nossa programação iremos baixar o pacote de placas ESP8266 na IDE do Arduino, siga tutorial acima Baixando a placa ESP8266 se necessário.
Instalado o pacote de placas ESP8266, selecione Placa:”Generic ESP8266 Module” entrando em Ferramentas>>Placa: Nome da última placa utilizada>> Generic ESP8266 Module, em seguida conecte o seu módulo ao USB do PC e selecione a Porta em Ferramentas>> Porta>>COM Nº , a COM só ficará disponível no momento da conexão do módulo, vale relembrar que o número da COM pode variar de modelo para modelo.
Figura 27-Pré-configurações do Conversor UART-CP2102
Terminando isso, podemos partir para as ligações do circuito, lembrando que talvez seja necessário conferir as pinagens do ESP-01 em Figura 2- Pinagem do ESP-01, pois o componente não apresenta inscrições em seu corpo.
Protótipo para Conversor UBS/Serial-UART-CP2102 e ESP-01
Para realizar a comunicação entre o Conversor e o ESP-01 devemos fazer a seguinte ligação presente na tabela e no protótipo, lembrando que essa ligação está configurada para ativar o Modo Programação do ESP-01, em seguida iremos alterá-la.
Figura 28- Conexão do CP2102 com o ESP-01 no Modo Programação
Realizadas as pré-configurações e conexões do ESP-01 com o CP2102, siga o ensinado em Programação do ESP-01para conferir o código e todo o processo para carregar o programa, o processo e o programa serão exatamente iguais.
Modo Normal do ESP-01 com o Conversor USB/Serial-UART-CP2102
Finalizado o carregamento, vamos trabalhar com o ESP-01 no Modo Normal, para isso, desconecte o CP2102 do seu computador e realize as seguintes alterações:
- Desconecte GPIO0 do GND
- Conecte o GPIO2 em série com o resistor para acionamento do LED
- Conecte novamente a USB
Figura 29- Conexão do CP2102 com o ESP-01 no Modo Normal
Modo Programação do ESP-01 utilizando o Conversor USB/Serial- UART-CP2102- Micro USB
O Conversor USB/Serial-UART-CP2102-Micro USB funciona de forma similar ao Conversor USB/Serial-UART-CP2102, a diferença se encontra no tamanho entre ambos, o conversor desse tópico é bem mais reduzido, além de possuir um pino a mais em comparação ao outro modelo.
Figura 30- Conversor USB/Serial-UART-CP2102-Micro USB
Para início da programação é necessário baixar o pacote de placas ESP8266 na IDE do Arduino, siga tópico acima Baixando a placa ESP8266 para tutorial desse processo.
Depois de instalar o pacote de placas ESP8266, configure a Porta e a Placa de acordo com o modelo utilizado, nesse caso a placa será a Generic ESP 8266 Module, caso você não saiba fazer essa pré-configuração, leia o tópico Modo Programação do ESP-01 utilizando o Conversor USB/Serial- UART-CP2102que está disponível logo acima, as configurações de ambos os módulos são exatamente iguais.
Feita as pré-configurações, podemos partir para as ligações do circuito, consulte as pinagens do ESP-01 em Figura 2- Pinagem do ESP-01, pois o componente não apresenta inscrições.
Protótipo para Conversor UBS/Serial-UART-CP2102- Micro USB e ESP-01
Para fazer o modelo proposto é necessário realizar a ligação presente na tabela e no protótipo a seguir, ressaltando que posteriormente essa ligação será alterada, pois o aterramento do GPIO0 funciona apenas para ativar o Modo de Programação.
Figura 31- Conexão do CP2102 Micro USB com o ESP-01 no Modo Programação
Feitas as pré-configurações e conexões do ESP-01 com o CP2102 Micro USB, siga o ensinado em Programação do ESP-01para conferir o código e todo o processo para carregar o programa que serão exatamente iguais.
Modo Normal do ESP-01 com o Conversor USB/Serial-UART-CP2102-Micro USB
Ao finalizar o carregamento, vamos trabalhar com o ESP-01 no Modo Normal, para isso, desconecte o CP2102 do seu computador e realize as seguintes alterações:
- Desconecte GPIO0 do GND
- Conecte o GPIO2 em série com o resistor para acionamento do LED
- Conecte novamente a USB
Figura 32-Conexão do CP2102 Micro USB com o ESP-01 no Modo Normal
Modo Programação do ESP-01 utilizando o Conversor USB/Serial para ESP-01
O Conversor USB/Serial para ESP-01 é um adaptador para o ESP-01, sua função é converter a comunicação USB para Serial TTL, de forma a possibilitar a conexão da placa ESP-01 com o computador, assim como os outros mencionados anteriormente.
A vantagem do Conversor em questão é a sua conexão direta com o ESP-01, possibilitando que o projeto fique com poucos cabos e mais sucinto.
Figura 33- Conversor USB/Serial para ESP-01
Figura 34- Conversor USB/Serial conectado ao ESP-01
No entanto, para ativar o Modo de Programação é necessário que sejam realizadas alterações na placa, já que ao conectar diretamente com o ESP-01, O GPIO0 e o GPIO2 do ESP-01 ficam em nível lógico alto, acionando automaticamente o Modo Normal de inicialização, como relembrado na tabela abaixo:
Para trabalhar com conexão direta entre as placas, é necessário que seja soldada uma chave seletora entre o GPIO0 e o GND da ESP-01, da seguinte forma:
Figura 35- Modificações no ESP-01
Dessa forma, ao fechar contato o GPIO0 ficará em nível lógico baixo, conectado ao GND e inicializando no Modo Programação. Ao abrir a chave o GPIO0 ficará em nível lógico alto, devido ao resistor pull-up presente, dessa forma, inicializando o Modo Normal.
Para nosso exemplo não conectamos o ESP-01 diretamente ao Conversor, pois utilizamos o GPIO2 para acionar o LED, de forma análoga aos exemplos anteriores.
Driver CH340G para Conversor USB/Serial
Ao conectar o Conversor USB/Serial conectado ao ESP-01 no computador pela primeira vez, pode ser que a placa não seja reconhecida, pois para isso é necessário ter o Driver CH340G instalado no computador, caso o USB não seja reconhecido, ao acessar o seu Painel de Controle >> Gerenciador de Dispositivos, ele não estará disponível, ficando da seguinte forma:
Figura 36- Sem o Driver CH340G
Entre “Mouse e outros dispositivos apontadores” e “processadores” deve aparecer “Portas COM e LPT”, caso não apareça, é necessário que você baixe o Driver mencionado, que se encontra no seguinte link:
https://www.arduined.eu/ch340g-converter-windows-7-driver-download/
Finalizado o Download, abra o arquivo .zip:
Clique em CH341SER
Figura 37- Passo 1:Instalando Driver CH341SER
Em seguida clique em SETUP.EXE
Figura 38- Passo 2:Instalando Driver CH341SER
Então será perguntado se o aplicativo pode fazer alterações em seu computador, aceitando isso, o Driver será instalado e aberto:
Clique em INSTALL para instalar o Driver, em caso de erro, clique primeiro em UNINSTALL e em seguida em INSTALL novamente.
Figura 39- Passo 3:Instalando Driver CH341SER
Ao finalizar a instalação, desconecte sua placa e conecte novamente, seguidamente acesse o Gerenciador de Dispositivos e confira se a porta da sua placa foi detectada, deve estar assim:
Figura 40- Passo 3:Instalando Driver CH341SER
Lembrando que a COM pode mudar de modelo para modelo, no meu caso é COM4.
Para dar início a programação é necessário ter o pacote de placas ESP8266 na IDE do Arduino, caso você não tenha esse pacote, siga o tópico acima Baixando a placa ESP8266 para tutorial desse processo.
De posse do pacote de placas ESP8266, configure a Porta e a Placa de acordo com o modelo utilizado, nesse caso a placa será a Generic ESP 8266 Module, caso você não saiba fazer essa pré-configuração, leia o tópico acima Modo Programação do ESP-01 utilizando o Conversor USB/Serial- UART-CP2102, as configurações de ambos os módulos são exatamente iguais.
Feita as pré-configurações, podemos partir para as ligações do circuito, consulte as pinagens do ESP-01 em Figura 2- Pinagem do ESP-01, pois o componente não apresenta inscrições em seu corpo.
Protótipo do Conversor UBS/Serial para ESP-01
Para fazer o exemplo proposto é necessário realizar a ligação de forma indicada na tabela e no protótipo a seguir, ressaltando que posteriormente essa ligação será alterada, pois o aterramento do GPIO0 funciona apenas para ativar o Modo de Programação.
Obs: Paralelo indica que serão ligados como se ambos estivessem conectados de forma sobreposta, com o ESP-01 acima do Conversor.
Figura 41- Conexão do Conversor com o ESP-01 no Modo Programação
Feitas as pré-configurações e conexões do ESP-01 com o Conversor, siga o ensinado em Programação do ESP-01para conferir o código e todo o processo para carregar o programa. O programa utilizado não sofrerá nenhuma alteração.
Modo Normal do ESP-01 com o Conversor USB/Serial
Ao finalizar o carregamento, vamos trabalhar com o ESP-01 no Modo Normal, para isso, desconecte o Conversor do seu computador e realize as seguintes alterações:
- Desconecte GPIO0 do ESP-01 do GND
- Conecte o GPIO2 do ESP-01 em série com o resistor para acionamento do LED
- Conecte novamente a USB
Figura 42- Conexão do Conversor com o ESP-01 no Modo Normal
Considerações finais
Mediante análise dos principais Conversores USB/Serial disponíveis no mercado, pode-se inferir que todos cumprem bem suas funções, ficando a critério do projetista definir qual é o melhor para o seu projeto e para a sua forma de trabalho, apesar de alguns exigirem a instalação de um Driver para reconhecimento da USB, isso não se torna um empecilho no que se refere a facilidade de trabalho e a qualidade dos mesmos.
Conheça o nosso site http://curtocircuito.com.br/e confira todos os componentes utilizados nos exemplos, não esqueça de deixar seu feedback aqui nos comentários.
Abraços, Equipe Curto Circuito :)
Esse Conversor USB/Serial, mostrado na Figura 33, serve também para programar o ESP12-E? Se sim, o procedimento é o mesmo como para o ESP-01?
Obrigado
Infelizmente ainda não temos um tutorial sobre a gravação do ESP12-E, anotaremos a ideia para um artigo posterior. É possível sim utilizar o conversor da Figura 33 para essa gravação, a configuração será um pouco diferente e um pouco mais complexa, você pode realizar essa gravação de um jeito mais prático, utilizando um gravador próprio de módulo ESP8266, você pode procurar por " Burn Board ESP8266" ou "Placa de Desenvolvimento ESP8266".