Mais Entradas e Saídas Disponíveis ESP32

Tempo de leitura: 4 minutes
  • Vamos usar o PCF8575 com ESP32.
  • Veremos o diagrama de conexão.
  • Vamos verificar se é o mesmo programa do Arduino UNO.

Material Requerido.

Um ESP32
A PCF8575
Um módulo de 16 relés

 

Mais Pinos Para ESP32

A falta de pinos é uma constante quando fazemos projetos com Arduino UNO, que geralmente são facilmente remediados se formos para um Arduino MEGA, mas a falta de WIFI ou Bluetooth deste último, e sua baixa velocidade de clock, nos levou a quase todos de nós a usar o ESP32 com mais frequência como base de nossos projetos.

E se a falta de pinos era frequente com o Arduino UNO, no caso do ESP32 é dramático porque ficaremos sem entradas e saídas com muito mais facilidade, devido à falta de pinos IO disponíveis neste microcontrolador.

É por isso que parece interessante fazer uma sessão para falar sobre como usar o PCF8575 para expandir o número de pinos disponíveis e para isso vamos usar o mesmo circuito que usamos na última sessão onde o conectamos ao Arduino UNO.

 

Diagrama de conexão PCF8575 com ESP32

A coisa não está perdida. Basta conectar os pinos I2C do PCF8575 aos correspondentes do ESP32:

TensãoTerraSCLSDA
PCF8575VccGNDSCLSDA
ESP323VGND2221

Como você pode ver, as conexões são triviais, mas há alguns problemas pelos quais valeu a pena fazer a montagem:

  • O PCF8575 funciona em 3,3 V e 5 V, facilitando a conexão de tudo. Note que estou alimentando os relés e o PCF8575 em 5V (Através da saída 5V do ESP32), e ainda as saídas I2C que atacam o multiplexador são 3.3V; Isso significa que podemos usar sinais 3.3 de forma intercambiável com um chip alimentado a 5V sem problemas.
  • Em segundo lugar, alimentar um pacote de relés consome seu próprio e deve calcular corretamente a fonte de alimentação do que conectamos. Por exemplo, se eu passar a saída USB 2.0 do meu PC para alimentar o ESP32, a potência máxima que podemos fornecer é de 0,5 Amperes e com isso os relés não comutam.
  • O motivo é que excitar a bobina de um relé tem alto consumo e se somarmos o consumo do ESP32, que não é um dos baixos, juntos eles ultrapassam 0,5 amperes do USB. No meu caso vou usar uma 2ª fonte externa, tipo carregador de celular para alimentar o ESP32 e o restante do circuito.
  • Lembre-se sempre de calcular corretamente a alimentação de seus circuitos ou poderá encontrar problemas e cheiro de queimado. Em princípio, os relés que estou usando devem consumir cerca de 65-70 mA cada, mais meio amp para o ESP32 e o circuito do módulo do relé, para sobrar. Se em algum momento eu for ativar todos os relés simultaneamente, devo fornecer um total de:

16 x 70mA + 500mA = 1620mA

O programa é o mesmo da última sessão:

#include "PCF8575.h"
PCF8575 EXT(0x20);
int pause = 400;

void setup()
{  
   Serial.begin(115200);
   EXT.begin();

   for (int i=0; i<16; i++)
        EXT.pinMode(i, OUTPUT);
}

void loop() 
{  
   for (int i=0; i<16; i++)
      { 
        Serial.println(i);
        EXT.digitalWrite(i, LOW);
        delay (pause);
        EXT.digitalWrite(i, HIGH);
        delay (pause);
      }
}

 

Usando Vários PCF8575 Simultaneamente

Ok, podemos adicionar 16 entradas/saídas ao meu ESP32 e se eu ainda precisar de mais?

Bem, na verdade você pode combinar 8 para gerar um total de 8x 16 = 128 pinos adicionais, apenas modificando o endereço I2C deles. Se você olhar para a parte inferior do Breakout, verá algo assim:

Existem 3 colunas rotuladas A0, A1, A2 que são os 3 bits que podemos usar para alterar o endereço do chip do endereço base (0x20). Em princípio, como nenhum deles está conectado, ele entende que o endereço é a base 0x20.

No entanto, podemos usar esses 3 pinos para criar um número de 0 a 7 para adicionar ao endereço base. Por exemplo, se eu conecto A0 ao VDD (este pino valerá 1) com o ferro de solda conecto A1 ao VDD (vale também 1) e deixo A2 livre ou conecto ao GND, o resultado será

Ou seja, o endereço final será a soma de 0x20 Hex + 3 = 0x23 hex como resultado, e através deste procedimento podemos alterar o endereço de outros 7 chips PCF8575 para obter os endereços 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26 e 0x27. Desta forma podemos conectar até 8 unidades do PCF8575 ao mesmo barramento I2C, permitindo até 128 entradas e saídas adicionais.

E se eu sou tão especial que ainda preciso de mais de 128 pinos… O quê? Bem, isso… esse será o tema dos próximos capítulos.