Konfiguracja MCP23017 na RPI4 w HASS OS

Witam grupowiczów, mam problem z konfiguracją/podłączeniem MCP23017. Wydaje mi się że wykonałem wszystko zgodnie z opisami ale niestety nie uzyskałem oczekiwanego rezultatu. A teraz po kolei jakie działania wykonałem:

Sprzęt:

  1. Raspberry PI4 - Zestaw justPi z Raspberry Pi 4B WiFi 4GB RAM + 32GB microSD + akcesoria - obudowa z dwoma wentylatorami Botland - Sklep dla robotyków

  2. IO PI Plus MCP23017 - IO Pi Plus MCP23017 - ekspander do Raspberry Pi - 32 pinów I/O Botland - Sklep dla robotyków

System:
Home Assistans OS zainstalowany zgodnie z tym opisem - Raspberry Pi - Home Assistant (home-assistant.io)

Konfiguracja MCP23017 zgodnie z MCP23017 I/O Expander - Home Assistant (home-assistant.io)

W configuration.yaml dodany wpis

binary_sensor:
  - platform: mcp23017
    i2c_address: 0x20
    pins:
      0: PIR11
      1: PIR12
      2: PIR13

W narzędziach deweloperskich sensory pokazują cały czas stan ON

Podłączyłem przycisk pod Bus 1 pin 2 (2 - oznaczenie na płytce więc w HA będzie to pewnie pin 1) ale niestety brak reakcji. (oczywiście pod przycisk podałem 3.3v)
Może ktoś pomoże :slight_smile:

Edit:
W supervisor sprzęt mam:

Czy że jest dwa razy jest OK?

Masz non stop on bo domyślnie w integracji HA jest pull-up. Gdy naciskasz przycisk “podajesz” napięcie, czyli dokładnie to samo co robi pull-up, a więc nic się nie zmienia. Podaj pod przycisk masę i powinno się zmieniać.

@wileu niestety to nie to. A czy na na pinach GPIO2 (SDA) i GPIO3 (SCL) powinno być napięcie 3.3v ?

Koniecznie, bo SDA (pin3 rpi) i SCL (pin5 rpi) muszą być podciągnięte rezystorami pod źródło zasilania.

Zmień w yaml na 0x21, bo chyba BUS1 to U2 a w dokumentacji to ma 0x21

No to niestety u mnie multimeter wskazuje 0 :frowning: .

Domyślnie skonfigurowany jest Bus 1 (pierwsze 16 pinów) 0x20 a Bus 2 (drugie 16 pinów) 0x21

IO Pi Plus - 32 Channel Port Expander for the Raspberry Pi (abelectronics.co.uk)

Faktycznie BUS1 czyli U2 ma 0x20. W każdym razie zrób fotkę jak podłączyłeś wszystko i wrzuć. Jak wrócę to zerknę. Może w międzyczasię ktoś coś dojrzy.

@wileu proszę bardzo moja małą manufaktura :slight_smile:

Nie podłączyłeś napięcia pod układ.

Trochę nie rozumie :mask: Myślisz o 5V

No tak. MCP23017 żeby móc pracować potrzebuje prądu. Gdyby był wpięty w RPi4 brałby z pinów (2) i (4) 5V.

No i jeszcze z pinu 1 3.3 do konwertera poziomów logicznych i z pinu 6 masę

Podłączyłem pin 1 (3.3v) pin 2 (5v) pin 4 (5v) i pin 6 (ground). Niestety dalej mam cały czas wszystkie sensory on.

Przycisk podłącz pod masę.

Tego już próbowałem :slight_smile: niestety nic nie daje.

Ciśnij fotkę z góry.

Najlepiej jak mogłem

Omiń przycisk i dotykaj końcówka kabelka wychodzącego z BUS1 bezpośrednio do GND na płytce z MCP i zobacz czy się zmienia stan w HA. Tak jak pisałem na początku układ domyślnie wewnątrz podaje na swoje piny za pomocą rezystorów napięcie, więc przycisk z napięciem na piny nic nie zmienia. Cały czas będzie stan wysoki czyli jak kto woli on, true, 1. Musisz tykać masy żeby ściągnąć linię do stanu niskiego off, false, 0.

Niestety zetknięcie pomarańczowego z GND na MCP nie pomaga. Ale teraz zrozumiałem na pinach jest napięcie więc stan wysoki. Po zetknięciu z masą powinno przechodzić w stan niski.

Reading a button input using a Raspberry Pi (abelectronics.co.uk)

Edit:
Już ogarnąłem problem leżał w opcji “scan_interval” domyślne ustawienie to 15 s dlatego przyciśniecie nie zmieniało stanu (szkoda że minimalne ustawienie to 1 sekunda przydało by się 500ms). A dla odwrócenia stanu używamy “invert_logic”

wpis w configuration.yaml

binary_sensor:
  - platform: mcp23017
    i2c_address: 0x20
    scan_interval: 1
    invert_logic: true
    pins:
      0: PIR11