Co do samego programu to co racja to racja. Można było wykorzystać licznik, który dałby większą dokładność, ale to nie było istotą problemu.
Koledze chodziło o skorzystanie z timera w celu zmniejszenia poboru prądu przez to twoje urządzenie. Mikrokontroler powinien cały czas spać, bo nic nie robi, do tego powinien chodzić na jakimś niskim zegarze. Timer powinien obudzić go i wykonać reset.
Z tego co się domyślam, to zasilanie jest z USB routera, więc ciąg dalszy programu nie ma większego sensu, bo twój układ resetuje się razem routerem.
Powiedz mi jeszcze dlaczego resetujesz go co ok 1h?
Code:
(...)
delay(3 * 24 * 60 * 1000);
(...)
Według super skomplikowanych obliczeń masz:
3 * 24 * 60 *1000 ms -> 3 * 24 * 60 s -> 3 * 24 min -> 72 min
Co do samego programu to co racja to racja. Można było wykorzystać licznik, który dałby większą dokładność, ale to nie było istotą problemu.
Koledze chodziło o skorzystanie z timera w celu zmniejszenia poboru prądu przez to twoje urządzenie. Mikrokontroler powinien cały czas spać, bo nic nie robi, do tego powinien chodzić na jakimś niskim zegarze. Timer powinien obudzić go i wykonać reset.
Tak, oczywiście. Oszczędzanie energii to jedno. Uważam, że w projekcie typu miganie diodą nie ma takiej potrzeby. Natomiast jeśli chodzi o dokładność to miałem na myśli o sposób w jaki jest realizowana sama funkcja delay().
_Arecki_ wrote:
Powiedz mi jeszcze dlaczego resetujesz go co ok 1h?
Code:
(...)
delay(3 * 24 * 60 * 1000);
(...)
Według super skomplikowanych obliczeń masz:
3 * 24 * 60 *1000 ms -> 3 * 24 * 60 s -> 3 * 24 min -> 72 min
Dzięki za spostrzeżenie. Oryginalnie miałem to zapisane w formie pętli odliczającej dni, gdyż przekroczony zostałby zakres -- tak też poprawiłem pierwszą wiadomość.
_Arecki_ wrote:
Z tego co się domyślam, to zasilanie jest z USB routera, więc ciąg dalszy programu nie ma większego sensu, bo twój układ resetuje się razem routerem.
Układ nie jest zasilany z portu routera, a nawet jeśli by był to i tak przypuszczam, że pełniłby swoją rolę. Natomiast czas braku zasilania był by jednak krótszy.
Problem samego resetowania routera rozwiązałem już zupełnie inaczej. Niedługo postaram się opisać szczegóły. Po części kolega JacekCz ma rację
JacekCz wrote:
proponuję dla większej pewności reseter do resetera resetującego router. Ale ten poniżej STM32 nie będzie chodził. I reseter do lutownicy którą kolega tę prowizorkę będzie utrwalał, tu już wymagany jest raspebry
Tak, jak obiecywałem problem został rozwiązany trochę inaczej niż za pomocą "zewnętrznej elektroniki". Do rebootu routera wykorzystałem swój skrypt w Pythonie, który monitoruje sieć, a jeśli zostanie zauważony brak Internetu wykonuje on restart routera za pomocą jego weboowego interfejsu. Skrypt chodzi cały czas na Raspberry Pi, które pełni jeszcze kilka innych funkcji i jest podpięte do sieci lokalnej.
Szczegóły opisu, jak taki skrypt został stworzy znajdują się na moim blogu: Link.