Aqui vão algumas recomendações para resolver o seu problema com o MCP23017 e o ESP32 rodando ESPHome:
Veja se você está usando pinos I²C livres e não “boot-strap” do módulo:
Evite usar GPIO0, GPIO2, GPIO12, GPIO15 etc., pois esses pinos têm funções internas de seleção de boot.
Use, por exemplo, SDA = GPIO21 e SCL = GPIO22 no ESP32-WROOM-32E.
(baseado em guidance da knowledge base: evite boot-strapped pins quando possível)
Garanta pull-ups e desacoplamento adequados:
Coloque dois 4.7k Resistor (um em SDA, outro em SCL) na tensão de 3.3 V.
Acrescente também um 0.1 µF Capacitor próximo ao pino EN do ESP32 para melhorar imunidade a ruídos.
(conforme recomendação da knowledge base: pull-ups de 4.7 kΩ e C_EN = 0.1 µF)
No YAML do ESPHome, defina o barramento e insira um delay antes de iniciar o MCP23017:
Yaml
i2c:sda: GPIO21
scl: GPIO22
scan:True# opcional, ajuda no debug# opcional: para dar tempo de estabilizaçãoon_boot:then:-delay: 2s
mcp23017:-id: expander
address:0x20# ajuste conforme o A0/A1/A2# seus pinos e configurações…
Verifique o hardware do MCP23017:
VDD em 3.3 V, VSS em GND.
RESET puxado para 3.3 V (por resistor interno ou externo).
Endereço I²C configurado corretamente via A0/A1/A2.
Teste o scan do I²C separadamente:
Programe ESPHome apenas com o bloco i2c: e scan: True.
Abra o console e valide se o 0x20 aparece na lista de dispositivos encontrados.
Wirelessly connects nets on schematic. Used to organize schematics and separate functional blocks. To wirelessly connect net portals, give them same designator. #portal
General Purpose Thick Film Standard Power
and High-Power Chip Resistor
47 kOhms ±5% 0.125W, 1/8W Chip Resistor 0805 (2012 Metric) Automotive AEC-Q200 Thick Film
Features:
- RMCF – standard power ratings
- RMCP – high power ratings
- Nickel barrier terminations standard
- Power derating from 100% at 70ºC to zero at +155ºC
- RoHS compliant, REACH compliant, and halogen free
- AEC-Q200 compliant