PIR + InCan v3.3 + New Arduino SuplaDevice

tomkowski
Posty: 109
Rejestracja: wt paź 09, 2018 7:16 pm
Lokalizacja: Orzesze

ndz mar 15, 2020 2:24 pm

Cześć ponownie,
Korzystając ze sporej ilości czasu postanowiłem podomykać pewne suplowe tematy i przy okazji trochę się pouczyć.
Temat już kiedyś poruszałem (viewtopic.php?p=42112#p42112). Niestety rozwiązanie nie działało do końca jak powinno co było strasznie irytujące.

Mam moduł InCan V.3.3 kupiony swego czasu od Espablo.
Schemat:
Obrazek

W grupie "Input Sensor" Button-1 usunąłem kondensator C5 i w jego miejsce wlutowałem R10 (uzyskując Pull-Down na GPIO14).
Na wejście "Button-1" wpięty PIR (gdy aktywny wystawia 3,3V na wyjściu).

Do tego kod jak poniżej (wklejam jedynie część dla Button-1 i Relay-1). Drugi przekaźnik wyzwalany z przycisku, temperatura, wejścia NO działają poprawnie.

Kod: Zaznacz cały

Supla::Control::Relay relay_1(5, true);
Supla::Control::Button button_1(14);

  button_1.willTrigger(relay_1, Supla::Control::Button::ON_CHANGE, Supla::Control::Relay::TOGGLE);
  button_1.setSwNoiseFilterDelay(20);
Zgodnie z moim rozumowaniem podanie stanu wysokiego z PIR na GPIO14 powinno załączyć przekaźnik. Dzieje się tak jedynie gdy przed podłączeniem zasilania do modułu ODŁĄCZĘ wyjście PIR. Po uruchomieniu modułu podłączam sygnał z PIR i wszystko działa jak należy.

Gdy podłączam zasilanie do modułu, a PIR jest podłączony (po podaniu zasilania od razu wystawia on na wyjściu stan wysoki), logika wejścia jakby się odwraca. Przekaźnik załącza się na samym początku i pozostaje w takim stanie aż do wykrycia ruchu przez czujnik. Wówczas wyzwolenie wejścia PIR'em WYŁĄCZA przekaźnik :/

Tak jakby wysoki stan wejścia podczas uruchamiania modułu zaburzał jego pracę.
Czy możecie podpowiedzieć jak to ogarnąć? Czy można w jakiś sposób "wymusić" niski stan na wejściu przez określony czas.
Oczywiście mogę zamontować dodatkowy switch , który będzie trzeba kliknąć po np. każdym zaniku zasilania. No ale to już mało ma wspólnego z automatyzacją :lol:

Stosuję PIR Robotdyn, który utrzymuje stan wysoki na wyjściu przez zadany czas od momentu ostatniego wzbudzenia. Sam czujnik działa poprawnie. Układ zasilam obecnie z USB poprzez CP2102.
Awatar użytkownika
klew
Posty: 670
Rejestracja: czw cze 27, 2019 12:16 pm

ndz mar 15, 2020 3:15 pm

Z tego co zrozumiałem, to problem jest tylko z tym, że na początku pojawia się stan wysoki na GPIO14 i przez to, przekaźnik zmiania stan i potem kolejne "toggle" powodują, że działa on odwrotnie, tak?

Jeśli tak, to możesz dać dwie akcje "willTrigger" jedną na "ON_PRESS -> TURN_ON", a drugą na "ON_RELEASE -> TURN_OFF".
Wtedy przy stanie wysokim będzie ON, a przy niskim OFF.
Na początku, po włączeniu zasilania, może być na chwilę "ON" przez czas wysokiego GPIO14
tomkowski
Posty: 109
Rejestracja: wt paź 09, 2018 7:16 pm
Lokalizacja: Orzesze

ndz mar 15, 2020 8:25 pm

Dzięki. Tak zrobiłem. Na stole działa idealnie. W puszce - zobaczymy. Zamontowałem i będę obserwował.

Jeszcze raz dzięki za pomoc i za nową bibliotekę :)
ODPOWIEDZ