Szklane kule kiepsko działają, może używasz PA7 lub PB7 jako wejścia?
Może za słabe pullupy na magistrali?
(problem z zasilaniem też jest prawdopodobny)
Prawdopodobnie nikt nie zgłosił issue do komponentu mcp23017 w ESPHome
(a nieaktualną dokumentację tych wypustów Microchipa w ESPHome zauważyłem przypadkiem przy okazji innego wątku na ten temat i chyba dopiero jakoś w grudniu została wprowadzona poprawka linków do not katalogowych do dokumentacji komponentów mcp230xx; jakkolwiek skoro nie mam sprzętu z MCP23017 to nie będę zgłaszał issue do samego komponentu, bo nawet nie mam jak tego sprawdzić).
Na innych pinach taki sam błąd
Napisales że slabe pullupy na magistrali
Czy pullup na magistrali nie jest domyslny?
Jesli to jak właczyć programowo bo na esp32 chyba się da?
Akurat pechowo zacząłeś konstruować zaczynając od nieczytania dokumentacji… taki zbieg okoliczności, bo o tych PA7/PB7 jest na 1 stronie datasheeta wręcz w pierwszych linijkach.
Programowo wewnętrzny pullup oczywiście się da i włączyć i wyłączyć (zakładam, że skoro cokolwiek działa to używasz piny które w ogóle mają pullup - jeśli wziąłeś jakieś domyślne w danym MCU dla I2C to mają).
taki przykład rozbudowanej jawnej konfiguracji tu aktywowane są wbudowane pullupy (tylko nie wprowadzaj takich zmian póki nie wrzucisz swojego YAMLa - normalnie domyślne opcje nie wymagają jawnej deklaracji)
Ale jeśli jest za słaby (a konstrukcyjnie w ESP32 wbudowane pullupy są słabsze niż w ESP8266) to daj rezystory, a wyłącz pullupy wbudowane w MCU (“programowe”).
Przy okazji twojego wątku w sprawie PA7/PB7 skrobnąłem komentarz w jakimś pokrewnym issue, gdzie widziałem programistów ESPHome, więc już wiem, że problemy mogą wynikać też z innych przyczyn (jakaś aktualizacja mniej więcej sprzed pół roku była źródłem problemów i issue jest nadal otwarte, nie kopalem po innych issues jakoś intensywnie, bo mnie to nie dotyczy = u mnie wszystko działa, nawet tam gdzie magistralę I2C wykorzystuję bardzo intensywnie, ale to jest nie na MCU ESP, jakkolwiek nie używam akurat MCP23017 wcale… ani z ESP ani z innymi MCU więc nie sprawdzę organoleptycznie).
A tak ogólnie to podstawowe przyczyny problemów z I2C to wadliwe zasilanie (brak kondensatorów odsprzęgających, niestabilne lub za niskie napięcie), za długie przewody magistrali (o zbyt dużej pojemności), wybrana za wysoka częstotliwość szyny.
Niby jest, ale daj kompletny YAML to zobaczę co tam masz.
Zrób też jakieś fotki sprzętu, może coś się komuś rzuci w oko.
To NIE jest kompletny YAML - chcę całkowicie kompletny, bo zamierzałem wrzucić u siebie i to skompilować (ale już czas chyba minął nie mam więcej wolnego)
ten 1uF kondensatora na zasilaniu to takie sobie rozwiązanie (szczególnie że przewody nie są przylutowane)
Jak zwykle zgryźliwie skomentuję fragmentaryczność - tym razem zdjęć - nie wywnioskujemy z tego czy MCU masz 5cm od ekspandera, czy 5m…
@angler twój kod jest prawidłowy, jednak użyto w przypadku tego konkretnie MCU strapping pin, więc jest to dyskusyjne czy jest OK czy nie
YAML przed kompilacją jest parsowany i są w nim wykonywane podstawienia do takiej wersji jakby tam było wszystko podane jawnie i akurat definicja magistrali zostaje sparsowana z
kodu od @muchac35
Uważam, że “z palcem w tyłku” można podnieść częstotliwość magistrali do 100kHz (lub nawet 400kHz, ale im wyższa częstotliwość tym mocniejsze pullupy muszą być, więc te 100kHz brzmi rozsądnie - moje ulepy działają na 400kHz, ale używam modułów w których każdy producent dorzucił swoje) , ba MCP23017 jest w stanie pracować też z zegarem 1.7MHz (ale tu to bym tak nie szarżował, bo sam MCU raczej nie da rady z takim zegarem).
Tak odnośnie wartości samych pullpuów to zarówno 10k jak i 8k2 to moim zdaniem by się nadawały do logiki 5V, spokojnie można zostawić włączone pullupy MCU (w zasadzie dla logiki 3V3 nie widzę problemu w zejściu z rezystancją wypadkową do około 2k, najniższa dopuszczalna to bodajże 1k2)
TU UWAGA - sugeruję piny które zaproponował @isom1266 (albo jakieś inne nie mające żadnych ograniczeń, bo akurat GPIO5 dla ESP32 ma)
@isom1266
Rezystory 4.7 polaczylem pomiedzy 3.3v a gpio21 i drugi pomiędzy 3.3v a gpio22
Obecnie do B6 jest połączony 10cm kabelek ktorym recznie stykam z GND i testuje w ten sposób.
@RobinI30
Moduł esp32 zasilałem z usb komputera ale teraz z ładowarki od telefonu 5V
Bo docelowo chciałbym wlasnie zasilać to zasilaczem od telefonu.
Z Teojego kodu wgralem tulko część odpowiadajacą za konfigurację i2c konfigurację pinow pozostawilem moją tzn mam tylko konfugurację 2 pinow AO i B6
@muchac35 kod różni się również w części odpowiedzialnej za wejścia.
MCP powinieneś zasilić z 3,3 V dostępnego na esp32
Rezystory 4,7 mogą być, ale bez nich też powinno być ok.
Taki efekt mam na identycznym module ( patrz na czasy w logach)
Tak na przyszlość @muchac35 nie pisz posta pod postem jest opcja znaczenia użytkownika przy pomocy @ tak to tylko zaśmiecasz w temacie możesz także edytować post.