ESP8266: O guia básico de Hardware

Desde o inicio das minhas publicações a respeito do ESP em Dezembro de 2014, sempre senti falta de um guia de hardware, já que a maioria das pessoas que me procuram tem certa dificuldade com a parte do hardware. Como os módulos veem em formato para que sejam soldados em placas, e não são compatíveis com o padrão de 2,54mm das barras de pinos e protoboards, sempre há a necessidade de uma solda, digamos, um pouco mais complexa para alguns.

Este guia será de grande ajuda para aqueles que não tem muita experiencia com eletrônica, e também servirá de para aqueles que nunca utilizaram o ESP, como em projetos de TCC ou afins.

Não vou abordar questões de firmware, tais como a programação ou mesmo a atualização de firmware. Isso será um novo guia, focado em firmware.

Para quem tem o Inglês afiado, pode baixar uma literatura complementar neste link.

Historia do ESP8266

O chip ESP8266 foi desenvolvido pela Espressif Systems para atender a um mercado em forte expansão, o mercado de IoT, e foi lançado no mercado em meados de Agosto de 2014.

Já os módulos, são, na grande maioria dos modelos, fabricados pela AI-Thinker.

Desde o lançamento do primeiro modelo, o ESP-01, com um preço de cerca de $3, ele foi ganhando cada vez mais espaço entre os makers e fãs de Arduino, já que é possível programar direto no módulo sem a necessidade de um micro adicional, diferente de como vemos no caso do Arduino e seus shields WiFi.

Anatomia do chip ESP8266EX

O chip desenvolvido pela Espressif, o ESP8266EX, possui 32 pinos (QFN32 – 5x5mm) mais GND central, com uma CPU de 32bits, 16 GPIOs, PWM, ADC de 10bits, SPI, I2C, SDIO, I2S e IR Remote Control.

ESP8266EX Layout

Pinagem do ESP8266EX

A MCU (Micro Controller Unit) utilizada no ESP8266EX é a Tensilica L106 de 32bits e clock de 80MHz, podendo chegar a 160Mhz. A memória RAM é de aproximadamente 50KB.

A alimentação do CHIP é de 3.3v, com um limite inferior de 3.0v e superior de 3,6v.

A temperatura de operação pode variar de -40°C até 125°C.

De acordo com o fabricante, todos os pinos de IO digitais, possuem um circuito de proteção (snap-back) de tensão de até 6v e de inversão de polaridade.

Gerenciamento de energia

O ESP possui 5 estados no gerenciamento de energia:

  • OFF, onde o pino CH_PD está em GND e o RTC é desabilitado.
  • DEEP_SLEEP, onde o RTC está ativo e o resto do chip está desligado.
  • SLEEP, onde o RTC está ativo e o cristal está desabilitado. Qualquer evento de WAKEUP irá colocar o chip em modo ativo.
  • WAKEUP, onde o cristal está ativo e o chip entra em operação normal.
  • ON, o cristal de alta velocidade está ativo.

Pinagem dos módulos

Abaixo seguem as pinagens dos módulos mais utilizados no momento, os ESP-01, 03, 07 e 12.

ESP-01

Pinagem do ESP-01

Onde:

  1. GND
  2. GPIO2
  3. GPIO0
  4. RX
  5. TX
  6. CH_PD
  7. RESET
  8. VCC
ESP-03

Pinagem do ESP-03

O pino ANTENA é para aqueles que querem colocar uma antena externa ao módulo ESP-03.

A pinagem do ESP-07 é idêntica ao ESP-12. O que difere os módulos é a parte da antena, que no ESP-07 é de cerâmica e possui o conector para antena externa. No ESP-12 a antena é de trilha.

esp_pinout_07_12

Pinagem do ESP-07 e ESP-12

Importante: Para os módulos com GPIO15, devemos aterrar o pino para que o ESP inicie com a leitura da memória flash externa. Caso não seja aterrado, o módulo irá tentar iniciar de outra forma e não irá funcionar corretamente.

Ligando o módulo ESP-01 ao FTDI

CUIDADO!!! Os módulos ESP8266 trabalham com a tensão de 3.3v e consomem cerca de 300mA, ou seja, dependendo da capacidade do regulador, o módulo pode não funcionar adequadamente.

Abaixo um modelo de ligação para conversores USB-Serial que não possuem a opção de seleção de 3.3v ou 5v.

Modelo de ligação do ESP e FTDI

Modelo de ligação do ESP e FTDI

Note que o divisor resistivo, para baixar de 5v para, aproximadamente 3.3v só é necessário no TX do adaptador, que será conectado no RX do ESP. O TX do ESP não precisa do conversor, já que o FTDI aceita os 3.3v do ESP.

Dica: Use um capacitor de 10uF na linha de alimentação 3.3v do ESP para “segurar” flutuações nos picos.

Outro ponto importante é sempre usar um resistor de 10kR para pull-up e pull-down. Veja este artigo (em Inglês) a respeito dos resistores de pull-up e pull-down.

Mapa das GPIOs e funções secundárias

Abaixo, segue a tabela com o mapa das GPIOs e as funções de cada uma:

Mapa das GPIOs

Mapa das GPIOs

CUIDADO!!! As portas GPIOs NÃO são tolerantes a 5V! Ao ligar em algum sensor ou micro controlador com tensão de 5V, pode até funcionar por um momento, mas irá danificar ou queimar o módulo após um tempo.

Qualquer GPIO, com exceção da GPIO16, pode ser utilizada com PWM.

As GPIOs fornecem uma corrente máxima de 12mA. Se precisar de mais corrente terá que adicionar um circuito com transistor, MOSFET ou outro componente para servir de driver de corrente.

Abaixo seguem alguns exemplos de circuitos de botões com modos pull-up e modo pull-down:

 

Circuito de pull-down, quando o estado original é HIGH (3.3v) e quando acionado vai para LOW (aterrado).

pullUp

Circuito de pull-down

Circuito de pull-up, quando o estado original é LOW (aterrado) e quando acionado vai para HIGH (em 3.3v).

pullDown

Circuito de pull-up

Conversor Analogico-Digital (ADC)

O ESP possui um pino, o TOUT, que é um conversor analógico-digital de 10bits de resolução, o que significa que os valores da conversão variam de 0 a 1023.

O ADC do ESP, lê tensões que variam de 0 a 1v, o que significa que muito provavelmente um divisor resistivo será necessário para chegar a essa tensão.

UART (Universal Asynchronous Receiver Transmitter)

Existem 2 UART no ESP, UART0 e UART1. Teoricamente, a velocidade máxima que a UART pode atingir é de aproximadamente 4,5Mbps).

Por padrão, a UART0 exibe algumas informações no momento do BOOT, então algum “lixo” pode aparecer no terminal neste momento.

Nos módulos comerciais, apenas o TX da UART1 está disponibilizado, na GPIO2, que comumente é utilizado para fins de DEBUG.

SPI (Serial Peripheral Interface)

O ESP disponibiliza uma SPI que pode chegar a 80MHz. As GPIOs utilizadas para SPI estão listadas na tabela com o mapa das GPIOs.

I2C (Inter-integrated Circuit Interface)

O ESP também disponibiliza uma I2C nos pinos GPIO14 (SCL) e GPIO2 (SDA) podendo atingir 100kHz.

Espero que este guia lhe ajude!

Happy Hacking!