I'm using an Arduino Uno with an ethernet shield to periodically send some data to a web server. The arduino is powered with a battery and I've noticed that the ethernet shield consumes a lot of energy. I was wondering if there is a way to shutdown the ethernet shield or maybe just the W5100 chip. The samples are transmitted every 10/15 minutes so delays in powering up & down the ethernet shield are not an issue.
The w5100 does not support that function. The w5200 is reported to have more advanced functions like that, and supports a power-down mode. The basic library code for that IC is working. I'm using it on a w5100 to test compatibility. http://arduino.cc/forum/index.php/topic,102312.0.html
Thanks, I like the idea to physically disconnect a pin and then to control it with a transistor. However, I do not know which pin I should intercept. Is it just the +5V?
I think that is it. The shield does its own 5v-to-3.3v conversion. You can always try it manually. Bend the +5v pin on the ethernet shield so it does not insert into the Uno. Then use a jumper wire with a switch between the shield and Uno to simulate turning the power on and off.
It may take a few seconds for the ethernet shield to initialize. You will need to run Ethernet.begin() again after powerup.
The schematic I checked is missing a trace. The shield uses both the +5v and 3.3v pins. You will need to switch both.
And I found a little surprise, even for me. +5v also comes through the ICSP connector pin 2. You will need to bend that pin clear of the socket. You should be able to power the shield through the +5v pin alone*.
*edit: I mean without controlling the ICSP 5v pin.