ESPHOME esp32 z MCP23017

Na MCP dalem zasilanie 3.3 z ESP i do reset tez podalem bezpisrednio z ESP 3.3

Z ESP dalem GND na piny MPC AO,A1,A2 oraz GND

Zobacz schemat swojego modułu - piny adresu masz ściągnięte do masy rezystorami z drabinki (pulldowny mają), więc nie musisz tego modyfikować.

A ten przewód którym symulujesz działanie to masz na stałe podłączony do GND i dotykasz nim pinu wejścia?
Czy może odwrotnie - trzymasz ręką przewód idący do wejścia, a stykasz go z masą…

Jakkolwiek dla mnie ten objaw wygląda na jakieś problemy z zasilaniem, zrób te zdjęcia żebyśmy widzieli pełną konstrukcję

1 polubienie

14:57:09	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:18	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:18	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:23	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:23	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:23	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:24	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:24	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:24	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:26	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:28	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:28	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:28	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:28	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:28	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:28	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF
14:57:28	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> ON
14:57:28	[D]	[binary_sensor:047]	
'MCP23017 Pin B6' >> OFF

są jakieś zakłócenia bo nic nie dotykając zmienia się samo

ten podłączony kabelek do B6 zbiera zakłócenia odłączyłem i się uspokoiło.
No ale musi byc jakoś podłączony :slight_smile:

próbuję wgrać Twój cały kod ale jest taki komunikat:

INFO ESPHome 2026.1.3
INFO Reading configuration /config/esphome/garaz.yaml...
ERROR Error while reading config: Invalid YAML syntax:

while scanning for the next token
found character '\t' that cannot start any token
  in "/config/esphome/garaz.yaml", line 53, column 1

Jeśli nie wklejasz do kompletu calutkiego YAMLa, który próbujesz kompilować, to nic nikomu nie powie, że jakiś błąd dotyczy 53 linii…
@isom1266 nie dał kompletnego YAMLa tylko kilka istotnych sekcji (ale on tu nie szuka pomocy).

BTW
Zdiagnozowałeś już problem - są nim zakłócenia, zrób ten układ porządnie stosując jako masę odniesienia najkrótsze połączenie z masą płytki MCU, a nie takiego długiego pająka

1 polubienie

Niestety ESPHome nie obsługuje trybu input_pullup dla wewnętrznych rezystorów MCP… musisz dodać pomiędzy wejście a VCC tezystor 1-10k. Taki pullup jak dla i2c.
Jeśli planujesz podłaczać długie przewody to dobrze zrobić to przez transoptor.

Polutowalem wszystko na możliwie najkrótszych kabelkach.
Nawet nie dawalem rezystorow pullup i działa ok
Dziekuję

1 polubienie

Temat wróci w docelowim układzie… i będziesz musiał dodać np. moduł optoizolatora🙂
p.s. prostuje - MCP23017 obsługuje pullup

# Individual inputs
binary_sensor:
  - platform: gpio
    name: "MCP23017 Pin B7"
    pin:
      mcp23xxx: mcp23017_hub
      # Use pin B7
      number: 15
      # One of INPUT or INPUT_PULLUP
      mode:
        input: true
        pullup: true
      inverted: false
2 polubienia

@RobinI30
Twój przykład powyżej z powodu tego, że Microchip się przyznał do błędu konstrukcyjnego (który wykryto po >13 latach produkcji układu, ale NIE zmodyfikowano jego konstrukcji nigdy), jest wadliwy (tak, wiem, że opiera się wprost na dokumentacji ESPHome, ale jeśli mi sił wystarczy zmodyfikuję tę dokumentację by nie wprowadzała w błąd, bo niestety przeoczyłem to gdy niedawno aktualizowałem w niej linki do datasheetów, swoją drogą liczyłem na użytkowników tego sprzętu, że kiedyś pozgłaszają stosowne issue, ale widać jako najmniej zainteresowany sam muszę “poruszać tą łopatą” za innych)


biblioteki wykorzystywane w ESPHome, Arduino i paru innych projektach co gorsza opierały się (a wręcz nadal się opierają) na dokumentacji sprzed 2022 roku i umożliwiają błędną konfigurację (narażoną na występowanie błędu) używającą PA7 lub PB7 jako wejścia.
Biuletyn z erratą dałem na samym początku wątku w 2 poście…

PS też mi się zdawało (wiele postów temu, ale skasowałem wadliwe trześci od razu), że nie można wykorzystywać wbudowanych pullupów w MCP23017, a jednak takie ograniczenie dotyczy w tej serii modeli chyba tylko MCP23016 (tzn. ten model jest uproszczony konstrukcyjnie).

1 polubienie