As a very senior member of this forum, I usually refrain myself from ranting in a subforum other than the bar/sport but this is going to change for the Arduino WiFi shield R3. It is an expensive piece of DIY hardware but has so much unfinished business that has made my time very miserable. I tried to work around its limitations but would like to warn any newcomers of these before you make your purchase. If you have experience that is very opposite of mine, please be sure to share.
(1) Here we go. The version control of this product is horrible! The Arduino WiFi shield is not just a shield. It contains at least two (if not 3) microcontrollers that run programs just like Arduino itself, but more complex. The operation of the shield depends on the operation of these firmwares AND your Arduino WiFi library. I found that there are many versions floating around, both firmware (coming with the product and updates) and library (Arduino IDE 1.5, and other places). One library that dates 1/19/13 works with my shield R3 out of the box but the library in Arduino IDE 1.5 fails to work. Then I had taken a chance at updating firmware 3 weeks ago (late April) that crippled one shield. It was able to connect to router but can't contact any servers while the other one without upgrading was. Then I encountered a major hurdle described in (2) but I will deb into it here. There is a hard limit on the size of string you can send with client.print, being around 90 bytes. Anything longer will not make it to the server or client at all. I contacted Arduino team and was told it was already resolved while back and I just had to flash firmware and use the "latest" library. OK, as of today (5/13) I went to github and was only to download the entire arduino master (no button for just wifi stuff). The download yields the firmwares and library. Again there is no version number or which dated library is compatible with which dated firmwares. I tested the new library with known working code and server. It was a go for the upgraded shield but no go with original R3 shield. Notice the situation has entirely flipped. What the heck?! Can someone maintain library version numbers and post readme on what version of lib works with what version firmware? I guess answer is NO.
(2) As I said, the client.print has a hard limit at 90 bytes. I sent 92 bytes and more per print and it simply doesn't appear on the other side regardless which role Arduino assume (server or client). I was told it was solved with the latest stuff but not. How can I trust them with this firmware/library if the problems they claimed to have been solved is still there?!
(3) Firmware upgrade is difficult even for me, a "veteran", and no description on what the indicator leds should do and length of time taken to do the antenna firmware. It just needs to be rewritten or videotaped for clarity.
(4) Sample code not working. Just search forum for "wifi shield not present", you see too many of those popping up, why? Sample code is not working. All sample codes does one time check on wifi shield presence and if not presents, hangs the program. I don't know how quickly the wifi shield boots up but I had a very hard time pinpoint the solution to this problem until I added delays such as:
// check for the presence of the shield:
unsigned long start=millis();
while (WiFi.status() == WL_NO_SHIELD)
{
if ((millis()-start)>30000)
{
Serial.println("WiFi shield not present");
// don't continue:
while(true);
}
delay(500);
}
Shaky original code:
// check for the presence of the shield:
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
// don't continue:
while(true);
}
Maybe this problem is solved by "latest" updates but it was never mentioned anywhere that you may want to wait up on the shield. It normally takes a bit time to boot up from power cycle but maybe quicker from reset.
I have heard good things about other wifi products but thought I should stick with Arduino team due to their support and forum support. My while Arduino WiFi R3 experience is making me flip. Maybe the Team is hitting hard walls trying to maintain too many things? Maybe 3 microcontroller (arduino+2 on wifi shield) is the theoretical limit of open source hardware/software since three things and the result not working implies too many possible errors to solve as open source lacks paid technical support and enough competition?!