esp deep sleep - sterowanie dodatkowym zasilaniem zewnętrznym

Awatar użytkownika
Hrumque
Posty: 275
Rejestracja: pn cze 27, 2022 10:11 am
Lokalizacja: Opole

Jeśli ktoś używa DeepSleep na ESP (np na wemos D1, zwarte D0 do RST w celu wybudzania) i ma jeszcze jakieś zewnęrzne cokolwiek - to pewnie zauważył, że "co z tego że uśpię ESP, jak zewnętrzny hardware nadal jest zasilany" (choćby - głupi pull-up od 1Wire DS18b20 - nadal wisi i pobiera prąd)

Cokolwiek używamy poza ESP - lubi sobie ciągnąć jakies mA. Choćby rezystorami pull-up
Ja rozwiązałem to tak, że mosfet-p robi za klucz zasilania z baterii, jego bramka jest zwierana do masy przez tranzystor npn, a ten znów - sterowany z GPIO ESP.

Obrazek
(na schemacie brak jeszcze rezystora między GPIO esp, a bazą tranzystora T1, jakieś 10k spokojnie wystarcza)

Gdy esp wystartuje, to ma ustawiony "przekaźnik" na tym GPIO (z zapamiętanym trybem po przywróceniu, który zawsze jest ON, aktywny stanem wysokim) - załącza tranzystor, który dopiero załącza zasilanie dla "external hardware". Działa, ale trzeba dodać dodatkowy kanał (potem można go wyłączyć w cloud, no ale - jest, i pamiętać by nadać mu stan odpowiedni - jak coś gdzieś zagrzebiemy i przełączymy - to nie ma zasilania dla sprzętu). Po drugie - taki klucz załącza się dopiero chwilę po starcie, gdy już esp wystartuje w pełni. Tak więc zasilanie na wyświetlacze OLED, sensory, DS18b20 - pojawia się po chwili od startu - a podczas samego startu np nie wykrywa urządzeń na i2c, i wali błędami... Po pewnym czasie łapie i zaczyna działać - no ale... (nie mam pewności - czy wszystkie urządzenia i2c tak "w locie" się prawidłowo zinicjalizują?). Zwłaszcza jak się używa i2c expanderów ...

Jakby wprost w kodzie ustawić (jeśli jest w GUI aktywny DeepSleep) "użyj GPIO nr do sterowania zasilaniem sprzętu zewnęrznego:" (i tu wybór gpio) i wpisać w procedurze startowej ESP - by od razu, na początku inicjalizacji załączał to gpio - byłoby chyba bardziej elegancko.
ODPOWIEDZ

Wróć do „supla-dev”