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:
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);
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ą
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.