Expansores de I/O para ESP32, Arduino e outras placas
MCP23017, PCF8574, 74HC595 e 74HC165 para ampliar entradas e saídas.
Quando a quantidade de botoeiras, sensores, relés ou sinalizações cresce, expansores e registradores ajudam a organizar o projeto. No TechRib você pode estudar MCP23017, PCF8574, 74HC595 e 74HC165 junto de ESP32, Arduino e outras interfaces do circuito.

Por que usar expansores de I/O?
Microcontroladores possuem uma quantidade limitada de GPIOs. Em projetos pequenos isso raramente é um problema, mas uma automação com muitas botoeiras, sensores, relés, sinalizações ou canais independentes pode consumir rapidamente os pinos disponíveis.
Expansores resolvem esse problema de maneiras diferentes. Dispositivos I²C como MCP23017 e PCF8574 compartilham um barramento de comunicação. Registradores como 74HC595 e 74HC165 usam sinais seriais para transportar vários estados de saída ou entrada.
O ganho não é apenas quantidade de pontos. Uma boa arquitetura de expansão também facilita organização, manutenção, identificação dos sinais e crescimento futuro do projeto.
Escolher o expansor certo depende do número de pontos, velocidade necessária, tipo de sinal, distância, alimentação e forma como a aplicação precisa reagir.
MCP23017, PCF8574, 74HC595 e 74HC165: qual é o papel de cada um?
- MCP23017: expansor de 16 I/O por I²C, útil quando o projeto precisa de muitas entradas e saídas digitais configuráveis.
- PCF8574: expansor I²C de 8 I/O, comum em aplicações compactas e também em interfaces como displays e pequenos conjuntos de sinais.
- 74HC595: registrador de deslocamento usado para ampliar saídas digitais, permitindo comandar vários estados a partir de poucas linhas.
- 74HC165: registrador de deslocamento para leitura de múltiplas entradas digitais de forma serial.
- PC817: optoacoplador que pode ser usado como parte da interface de isolamento entre sinais de campo e a eletrônica de controle.
- ULN2803A: driver de múltiplos canais usado quando as saídas lógicas precisam acionar cargas que exigem mais corrente do que um GPIO pode fornecer diretamente.
Expansão, isolamento e acionamento são etapas diferentes.
Adicionar mais I/O não significa que o microcontrolador deve assumir diretamente a carga. Em muitos projetos, o expansor organiza os sinais, o optoacoplador ajuda no isolamento e um driver ou módulo de relé realiza o acionamento adequado. Visualizar essas etapas separadas deixa a arquitetura muito mais clara.

Referências e segurança
- Datasheets dos fabricantesConfira tensão de alimentação, níveis lógicos, corrente máxima, endereçamento e frequência de operação de cada CI.
- Especificação I²CProjetos com MCP23017 e PCF8574 dependem do comportamento correto do barramento, endereços e resistores de pull-up.
- NR-10Aplica-se quando o sistema é integrado a instalações e serviços com eletricidade.
- NR-12É relevante quando os sinais e saídas participam de máquinas e equipamentos.
- ABNT NBR 5410Deve ser considerada na parte da instalação elétrica de baixa tensão que alimenta e protege o sistema.
- ABNT NBR IEC 60204-1Referência para equipamento elétrico de máquinas em aplicações industriais.
Não use a corrente de um GPIO ou expansor como se fosse uma saída de potência. Dimensione interfaces e proteções conforme o dispositivo e a carga.
O que você pode estudar com expansores
O foco é entender a arquitetura completa: quantidade de pontos, protocolo, alimentação, interfaces e o que acontece depois que o sinal sai do expansor.
Expansão de 16 I/O com MCP23017 por I²C
Uso de mais de um expansor no mesmo projeto
Leitura e escrita de pontos digitais em PCF8574
Expansão de saídas com 74HC595
Expansão de entradas com 74HC165
Combinação de registradores para entradas e saídas
Isolamento de sinais com optoacopladores
Acionamento de relés e cargas através de drivers adequados
Projetos reais da biblioteca para abrir e estudar
Selecionamos quatro topologias que mostram duas estratégias diferentes de expansão: I²C com MCP23017 e registradores de deslocamento com 74HC165 e 74HC595.
ESP32 + 2× MCP23017 — 16 entradas + 16 saídas
Projeto com dois MCP23017 para ampliar entradas e saídas por I²C e organizar um conjunto maior de botoeiras, relés e cargas sem ocupar um GPIO para cada ponto.
Exemplo disponível: ESP32 — 16 Entradas + 16 Saídas com 2× MCP23017Arduino UNO + 2× MCP23017 — 16 entradas + 16 saídas
A mesma ideia de expansão aplicada ao Arduino UNO, mostrando como o barramento I²C pode reduzir a quantidade de pinos usados diretamente pela placa.
Exemplo disponível: Arduino UNO — 16 Entradas + 16 Saídas com 2× MCP23017ESP32 + 74HC165 + 74HC595 — 8 entradas + 8 relés
Exemplo combinando registrador de entrada e registrador de saída para ler botoeiras e comandar relés usando poucas linhas do microcontrolador.
Exemplo disponível: ESP32 — 8 Botoeiras + 8 Relés via 74HC165 + 74HC595Arduino UNO + 74HC165 + 74HC595 — 8 entradas + 8 relés
Projeto para visualizar como registradores de deslocamento ampliam entradas e saídas digitais e ajudam a estruturar painéis com muitos pontos de I/O.
Exemplo disponível: Arduino UNO — 8 Entradas + 8 Saídas com 74HC165 + 74HC595A área de microcontroladores reúne outros exemplos com ESP32, Arduino, Raspberry Pi Pico, sensores, relés, redes e automação.