Hardware reboot circuit?

I've had a Arduino project running for a few months now and a few times its just crashed after a few days, or sometimes a few weeks. I've tried using wdt on it but it hasn't really helped. I think the arduino is still running but the ethernet module is dying / losing connectivity

I was thinking of using another arduino, or maybe even a 555 timer to power cycle the arduino after few days. Removing the 5V from the Arduino and ethernet module for a few seconds and letting it startup again.

Any simple circuits I can use for this? Has anyone done something similar?

Would be interested to hear from people that have arduinos running 24x7x365 - how stable are they? Are they supposed to run for months on end without restarting?

Would be interested to hear from people that have arduinos running 24x7x365 - how stable are they? Are they supposed to run for months on end without restarting?

The uno board itself is capable of running 24/7/365, I have a 5x5x5 328p based LED cube running for several years now non stop except for a few home power outages. Now your network shield and it's software libraries may be whole other matter.

Lefty

Wow - running that long.

Guess I'll just do some more debugging to try and find out why its crashing.

Going to try get the Arduino to syslog debug messages to my linux server and hopefully it will show where it falls over with enough debug logging.

GregM:
Guess I’ll just do some more debugging to try and find out why its crashing.

Going to try get the Arduino to syslog debug messages to my linux server and hopefully it will show where it falls over with enough debug logging.

Posting your code might be helpful. Often, when things go crash after some variable length of time, it’s due to a memory problem, fragmentation, overwriting a variable, etc.

Are you by any chance using Strings? (the object, not the char array). They will tend to fragment memory.

One thing well worth checking in the size of char arrays, if you are using any, to ensure they are big enough for the data plus a terminal NULL, and that you are not trying to write into any kind of array with the size. ie. you don’t want to write into

int foo[5];

with something like:

for (i = 0; i <= 5; i++) {
foo = whatever;
}