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

Dział poświęcony zasilaniu, układom off-grid, panelom solarnym, akumulatorom, oraz urządzeniom do nadzoru (watchdogi, restartery, itp)
bikeman
Site Admin
Posty: 67
Rejestracja: pt gru 15, 2023 9:13 pm
Lokalizacja: SQ6B, QTH Wrocław

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

Post 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ć :)
Jacek
Posty: 10
Rejestracja: sob gru 16, 2023 12:48 pm

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

Post autor: Jacek »

Tu schemat połączeń watchdoga i lory heltec V3
Załączniki
watchdogSchematic(3).jpg
watchdogSchematic(3).jpg (95.33 KiB) Przejrzano 547 razy
saper83
Posty: 3
Rejestracja: ndz lut 16, 2025 1:27 pm

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

Post 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
bikeman
Site Admin
Posty: 67
Rejestracja: pt gru 15, 2023 9:13 pm
Lokalizacja: SQ6B, QTH Wrocław

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

Post autor: bikeman »

Czy dodałeś bibliotekę LowPower do Arduino IDE?

Jest dostępna w kompilatorze lub na githubie https://github.com/LowPowerLab/LowPower
saper83
Posty: 3
Rejestracja: ndz lut 16, 2025 1:27 pm

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

Post autor: saper83 »

Po dodaniu biblioteki zadziałało. Dzięki
bikeman
Site Admin
Posty: 67
Rejestracja: pt gru 15, 2023 9:13 pm
Lokalizacja: SQ6B, QTH Wrocław

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

Post autor: bikeman »

Pamiętaj tylko o ustawieniu modelu płytki, czyli 3V3 8MHz. Jeśli skompilujesz dla 5V 16MHz, rozjadą się czasy timera.
saper83
Posty: 3
Rejestracja: ndz lut 16, 2025 1:27 pm

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

Post 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.
ODPOWIEDZ