Go Down

Topic: Long Term Reliability of WizNet Shield (Read 921 times) previous topic - next topic


I have been working on a sensor node that monitors power consumption, and some other environmental characteristics. I have some simple code that seems to work well, for a while. It then freezes up, and I am not exactly sure why.

I have research this issue around this forum, as well as on the internet and come up with a few possible scenarios.

1. WizNet chip is having issues > could connect a reset pin
2. My code is crap (very likely)
3. Arduino itself is freezing up (probably due to 2)

I am not exactly sure where to procede, but I have a few questions for any knowledgeable person:

Is it safe to call Ethernet.begin() repeatedly? If so, what condition should cause me to call it? Should there be a timeout first?

I am using the EthernetDHCP library (http://gkaindl.com/software/arduino-ethernet/dhcp), so I call EthernetDHCP.maintain() in my loop

Will that maintain the WizNet, as well as try to give me a nice IP address when my lease expires?

Also, I am trying to user yaler (yaler.org), to enable easy firewall penetration.

If anyone has experience with it, let me know. I am also uncertain about implementing it reliably.  


Ran Talbott

I have the "software reset pin" change installed.

I have a (re-)initialization routine that's called at startup and after a timeout.  It looks,  in part,  like this:
Code: [Select]
     digitalWrite(WIZNET_RESET_PIN, HIGH);
     digitalWrite(WIZNET_RESET_PIN, LOW);
     digitalWrite(WIZNET_RESET_PIN, HIGH);

     Ethernet.begin(mac, my_ip, gateway);

I haven't tried repeating Ethernet.begin without the Wiznet reset,  so I won't predict what will happen without it.



Hi Isaac,

we currently use about the following code to run a Web service on an Arduino / WIZnet Ethernet shield and make it accessible via Yaler:

Code: [Select]

#include <Ethernet.h>
#include <EthernetDHCP.h>

byte mac[] = ...
byte yalerIp[] = ...
const char yalerId[] = "my-arduino";


void setup() {
 EthernetDHCP.begin(mac); // calls Ethernet.begin()
 ... sensor setup ...

void loop() {
 Client client(yalerIp, 80);
 if (client.connected()) {
   sendYalerPostRequest(client, yalerId);
   int status = receiveYalerResponse(client);
   if (status == 101) {
     receiveBrowserRequest(client, ...);
     ... read sensor ...
     sendBrowserResponse(client, ...);
   } else {} // 204

With our DHCP server / office LAN, calling EthernetDHCP.maintain(); seems not to be necessary, as long as the DHCP server keeps running.




Here's a detailed write up of the Yaler Arduino Web LED demo including source code:


Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131