Meshtastic watchdog/restarter na mikrokontrolerze ATmega328p (Arduino Pro Mini)
: sob sie 03, 2024 1:55 pm
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:
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ć
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");
}

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ć
