This is a watchdog script that uses a simple relay module and a enc28j60 ethernet module. It works wells but does hang up occasionally. The modem died first however, so ended up replacing the modem with a better version. However that 'better version' still croked under the australian heat, and thus an even simpler solution was found... using the 5v usb port of the modem, to power a dual 12v computer fan to cool the modem down (it's under-volting, but still pushes enough air to cool the modem down enough).

This script uses an Arduino that has a relay hooked to pin D2, and the enc28j60 module wired to it's respective SPI pins in the Arduino.

You'll need to install this lib first, as this code has ethercard as it's dependencies: Ethercard Github Repo . From that page, this is the recommended pinout.

PIN Connections (Using Arduino UNO):

VCC - 3.3V GND - GND SCK - Pin 13 SO - Pin 12 SI - Pin 11 CS - Pin 8 # Selectable with the ether.begin() function PIN Connections using an Arduino Mega

VCC - 3.3V GND - GND SCK - Pin 52 SO - Pin 50 SI - Pin 51 CS - Pin 53 # Selectable with the ether.begin() function # The default CS pin defaults to 8, so you have to set it on a mega: ether.begin(sizeof Ethernet::buffer, mymac, 53)

Ping Watchdog

This is a modification of the ping script to trip a relay for a modem, if cannot reach google.com within a certain amount of time. Ping.ino, extended by Brian Khuu

This ping google once a minute. If google responds then cancel a watchdog that is rigged to trip at a certain amount of minutes

Note: Learnt that the ethercard lib requires installation before it can work, it is not enough to place the file in the same sketch as this ping.ino file. When dealing with unsigned numbers of a large amount, must at least ensure all variables are of the same type. e.g. all 'immediate numbers' not in an unsigned variables are assumed to be signed, and cannot store much numbers.