Strona 1 z 1

Meshtastic watchdog/restarter na mikrokontrolerze ATmega328p (Arduino Pro Mini)

: sob sie 03, 2024 1:55 pm
autor: bikeman
Nody Meshtastic, do których nie mamy dostępu muszą być co jakiś czas resetowane. Watchdog badający sygnały na GPIO układu jest skuteczny, ale też nie zawsze się sprawdzi. Dużo prostszym rozwiązaniem jest cykliczny restarter noda, np co 4-8h. Aby oszczędzać prąd, układ jest cały czas w uśpieniu, pobierając minimalny prąd kilka mikroamperów. Podłączenie jest bardzo proste, GPIO02 ATMega328P podłączamy do pinu EN/RST czipa ESP32 lub innego noda (t-Beam, Heltec itp).

Poniższy kod jest wsadem do restartera NODa modularnego BM-NODE >>> viewtopic.php?t=16

Mikrokontroler programujemy za pomocą dowolnego programatora, np Arduine IDE następującym kodem:

Kod: Zaznacz cały

#include "LowPower.h"                                    

int h=8; // hours
int m=0; // minutes

int sleepTime = (h*3600)+(m*60);

void setup()
{
  
  Serial.begin(9600);                                    
  pinMode(2, OUTPUT);
  digitalWrite(2, HIGH);
}

void loop() 
{
    Serial.println("Reset 2s on GPIO2"); // pin 5
    digitalWrite(2, LOW); // reset
    delay(2000); 
    digitalWrite(2, HIGH); // koniec resetu
    Serial.print("Sleep for ");
    Serial.print(sleepTime);
    Serial.println("s");
    delay(100);
    gosleep();                   
}

void gosleep()
{
    for(int i=1; i<=int(sleepTime/8);i++)
    LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);          //przełącz mikrokontroler w tryb Power-down na 8 sekund,
                                                             //wyłączając ADC i BoD
    Serial.print("Wake up after ");
    Serial.print(sleepTime);
    Serial.println("s");
}
Podłączamy zasilanie do mikrokontrolera i działa :)

Rozbudowując ten kod można oczywiście restartować tylko jak się nod zawiesi, tylko ze czasami potrafi się zawiesić w taki sposób, że sygnały na pinach są prawidłowe i wtedy klapa...

PS. Jesli wymagane jest uzupełnienie, coś niejasne? pisać :)

Re: Watchdog/restarter na mikrokontrolerze ATmega328p (Arduino Pro Mini)

: czw paź 24, 2024 11:22 am
autor: Jacek
Tu schemat połączeń watchdoga i lory heltec V3

Re: Meshtastic watchdog/restarter na mikrokontrolerze ATmega328p (Arduino Pro Mini)

: ndz mar 09, 2025 9:03 pm
autor: saper83
hej,
mam taki problem przy wgrywaniu, potrzebna jest jakaś dodatkowa biblioteka?:

C:\Users\Michal\AppData\Local\Temp\.arduinoIDE-unsaved202529-11024-l8iv5h.wdsw\sketch_mar9c\sketch_mar9c.ino:1:10: fatal error: LowPower.h: No such file or directory
#include "LowPower.h"
^~~~~~~~~~~~
compilation terminated.
exit status 1

Compilation error: LowPower.h: No such file or directory

Re: Meshtastic watchdog/restarter na mikrokontrolerze ATmega328p (Arduino Pro Mini)

: ndz mar 09, 2025 10:24 pm
autor: bikeman
Czy dodałeś bibliotekę LowPower do Arduino IDE?

Jest dostępna w kompilatorze lub na githubie https://github.com/LowPowerLab/LowPower

Re: Meshtastic watchdog/restarter na mikrokontrolerze ATmega328p (Arduino Pro Mini)

: pn mar 10, 2025 4:36 pm
autor: saper83
Po dodaniu biblioteki zadziałało. Dzięki

Re: Meshtastic watchdog/restarter na mikrokontrolerze ATmega328p (Arduino Pro Mini)

: pn mar 10, 2025 5:31 pm
autor: bikeman
Pamiętaj tylko o ustawieniu modelu płytki, czyli 3V3 8MHz. Jeśli skompilujesz dla 5V 16MHz, rozjadą się czasy timera.

Re: Meshtastic watchdog/restarter na mikrokontrolerze ATmega328p (Arduino Pro Mini)

: sob mar 22, 2025 10:41 pm
autor: saper83
Dzięki, widzę ze ładnie działa, dziś udało mi się poskładać do obudowy. Jak będzie pogoda to wystawie na dach. Udało mi się przerobić i wydrukować fajną obudowę. Ładnie się zmieściło. Pozdrawiam.