A wifi shield you will recommend

I want to add a wifi shield onto Arduino board for extra freedom (and the Arduino to react based on something retrieved from the Internet and some sensors) (no concrete plan yet).

There are quite a number of wifi shields (some went out of business such as CuHead). A fairly new shield based on WiFly RN-171 appeared in seeedstudio, looks promising.

I'd like to buy a wifi shield soon that is not (too) difficult to program, probably low-power too.

Grateful if you can share with me your experience and recommendation. Many thanks.

-Frankie

maybe you can consider the idea of use a router with openwrt instead a shield..it's more cheaper and powerful than an arduino, and similar to pc with terminal interface only...
for example, this router http://www.dealextreme.com/p/tp-link-703n-ultra-mini-portable-3g-802-11b-g-n-150mbps-wifi-wireless-router-light-blue-white-102903

I am considering the Hydrogen:

https://diysandbox.com/our-products/arduino-shields/hydrogen

It uses the GainSpan module which can be an access point ans supports other advanced features. It uses the Arduino's UART, but I am pretty sure it can be made to use other pins for serial communication, so you can use SoftwareSerial if you like. I wish it could support SPI or I2C!

thanks to m_ri for the clever solution of using a cheap external wifi router. But it seems to the right time to buy a wifi shield.

the 'Hydrogen' shield is an interesting one.

For the use of RX/TX to talk in a wifi shield, is 'speed' the only drawback ? (when compared to SPI, IIC for example).

-Frankie.

Just found that all shields and breakout modules can be categorized by the chip:

  1. Microchip (many from China)
  2. GainSpan (GS1011 or earlier)
  3. Roving Networks (RN-171 or earlier)
  4. WIZnet (e.g. dfrobot)
  5. cannot figure out the chip on async_labs.

Apparently, GainSpan has great documentation in their website and it can support ad hoc wifi network.
Users please share your experience --
is ad hoc wifi supported by other chips?
(for GainSpan) if ad hoc wifi network is supported in Arduino's wifi libraries ?
if not, is it too wishful that it will be supported in near future?

-Frankie.

frtklau:
For the use of RX/TX to talk in a wifi shield, is 'speed' the only drawback ? (when compared to SPI, IIC for example).

I'm not sure that speed is much of a drawback. I would think that you could talk to it with speeds well in excess of 115,200, although there may be a software limitation in the Arduino library you might need to code around. Many Arduino's have just one UART, so if its talking to a shield, it can't be talking to your computer. SoftwareSerial, in my opinion, is not a very good way to do serial communications. Its a nice library and it works as well as possible, but serial communications like that really needs a UART.

"It's the interface that kills you" is a quote that I've read many years ago but never forgot.

There is no official Arduino WiFi library, because there is no official Arduino WiFi Shield. Obviously a WiFi library needs to support the WiFi chip
/module that is used that particular WiFi Shield. Make sure that you check if the library supports the functionality you want to use. Your nice, expensive WiFi shield (Hydrogen = $75 !) may end up collecting dust. Mine does :-/

I am using the router suggested on a post above in my project and that has a few very strong pros that - for my application - totally outweigh the cons. The killer pro is that because you are using a standard Arduino Ethernet Shield you have the full functionality not only of the Arduino Ethernet Library but also of the libraries that depend on the Ethernet Library.

For example the DHCP/Bonjour and ArdOSC libraries make use of some lower level functions of the Ethernet Library that directly "talk" to the WizNet 5100 chip (IIRC) that's the heart of the Ethernet shield. If a given WiFi Shield claims compatibility with the Ethernet Library it does not support these low level functions (the Hydrogen does not). You'd have to develop equivalent software routines for the WiFi chip that is on you WiFi shield.

The only drawback of that particular router is the Chinese-only interface for configuring it, but TP-Link also makes models for the US market that are in a similar price range and support the english language.

Headroom:
Your nice, expensive WiFi shield (Hydrogen = $75 !) may end up collecting dust. Mine does :-/

If you would like to sell it, just let me know!

I've classified the WiFi modules/shields into two categories: those with TCP/IP stack, and those without. Pros and cons:

  • WITH TCP/IP stack: If the TCP/IP stack is on the WiFi module, you typically communicate with the module through a serial port, using simple and well doccumented AT commands. This is a good thing, since it keeps your Arduino safe from wifi hangups, given available serial port on Arduino (software or hardware serial made no difference in my tests). Also, the TCP/IP stack on the WiFi module means it does not have to be loaded into the Arduino, therefore the uploaded code, not pulling a WiFi library along, takes much less memory. Good examples are WIZnet wifi modules and shields based on it, like those by SainSmart and dfrobot. Another module is RowingNetworks RN-131 and 171, and shields based on those, like WiFly; the Rowing Networks got last year acquired by Microchip, and only the time will tell if Microchip will keep supporting these modules.
    Some modules in this class also have SPI port and connecting this way circumvents the module's TCP/IP stack so you get all the advantages of high-speed communication and ability to mess up the reliability, like described in the next point :~
  • No TCP/IP stack on the WiFi module: means TCP/IP stack has to be provided to you in a form of an Arduino library (it seems that every WiFi module currently requires it's own library). Now you have a complete access to all aspects of the TCP/IP communication, for the expense of large memory demand on your arduino. Good examples are Microchip ZG2100 and MRF24WB0Mx modules and shields based on them, like AsyncLab WiShield and its clone Cu head. Here the problem is that Async labs closed the shop a few years ago and there is only a 3-years old library update by RuggedCircuits. In the meantine, module's manufacturer Microchip has updated the TCP/IP stack and is giving it out free, but there is non-trivial task of turning it into an Arduino library... These libraries have shown to be rather sensitive to timing issues, so adding anything to them without understanding the TCP/IP stack may make your WiFi shield's operation unreliable
  • Shields with WiFi module + microprocessor: Those your arduino sees like the first kind above, but they are actually the second. The good example is the "official" arduino WiFi shield, which is reported as reliable, but is often out of stock (right now, for example :)).

I personally prefer a communication module that communicates through UART, and those that have good industrial-strength tech support regarding the sensitive TCP/IP stack, so given the choice, I vote for the first kind.

Headroom:
There is no official Arduino WiFi library, because there is no official Arduino WiFi Shield. Obviously a WiFi library needs to support the WiFi chip /module that is used that particular WiFi Shield.

FYI http://store.arduino.cc/eu/index.php?main_page=product_info&cPath=11_5&products_id=237
WiFi - Arduino Reference
Don't have so no idea how good it is.

Riva:

Headroom:
There is no official Arduino WiFi library, because there is no official Arduino WiFi Shield. Obviously a WiFi library needs to support the WiFi chip /module that is used that particular WiFi Shield.

FYI http://store.arduino.cc/eu/index.php?main_page=product_info&cPath=11_5&products_id=237
WiFi - Arduino Reference
Don't have so no idea how good it is.

Riva, to be fair, when that was posted, there in fact was no official Arduino wifi shield. Its a fairly new product, although it was under development for a while.

Having looked at many of these, I have to say that the Gainspan module is by far the most impressive I have run across. I have been working on a project (on and off) that incorporates it, some memory and a uC into a shield. The GS module is extremely powerful, with a web server built in, the ability to address external memory to store web content and an extremely high speed UART plus an SPI port. Because it does all this, the uC I am adding can be fairly low end and is there primarily to facilitate SPI and/or I2C communication with the host (that is, the Arduino) and to process data it receives from the host to allow dynamic web content. I might use a low end ARM just because I can, but an AVR (like the 1284P) would be completely acceptable.

One thing that has stalled the project (I always over think everything) was the arrival of the "official" Arduino wifi shield. This is one of those that uses a wifi chip (in this case from HDG) coupled to an external uC (an Atmel 32 bit UC3). The HDG104 chip is fairly dumb as compared to the GS module, but HDG has done a good job preparing firmware to run on the Atmel chip. So in this case, the UC3 handles the TCP stack and other features (I have not checked the latest list recently). The 32bit UC3 microprocessor is extremely powerful, even more powerful than the uC used on the Arduino Duo. A major benefit (at least for me) is that the Arduino wifi shield uses SPI to talk to the host Arduino.

So then, why don't I just use the Arduino wifi shield? It does look like the hardware can be used as is for my project (I still need to check a few more things to be sure). But I would need to modify the firmware, adding a basic web server, my static web content, and finally my custom firmware that produces my dynamic web content. It may actually be more difficult and time consuming to do all that than it would be to prototype my custom shield. The GS module can act as an access point, as a web server, can store the static web content on its own SRAM and do many other tricks. So thats the way I am leaning. Plus, its fun to design hardware.

As I review what I typed, I'm not sure why I am posting this, but heck, its written. Maybe someone will find it interesting.

Riva, to be fair, when that was posted, there in fact was no official Arduino wifi shield. Its a fairly new product, although it was under development for a while.

:blush: Forgot to check the post date, sorry skyjumper.

When I posted my reply we had been waiting almost a year since the official Arduino WiFi Shield was allowed at a Maker Faire in September the year before. There was not a single blog posting and requests on this and other forum as to when it might be available we're not answered. In essence the lines had gone dead.
In my own project I had gotten the CuHead to work but the library is not particularly intuitive, or easy to use for my limited programming expertise and I was not going to go into socket programming just to get the relatively simple UDP / ArdOSC functionality implemented. Also, due It's age and lack of continued development I was looking for a replacement.

Then in my research for an alternative solution I came across a blog post linking to a video showing a video of a person remote controlling a device per WiFi through an IPhone using Recotanta's ArdOSC library. Exactly what I was hoping to achieve!

The equipment was a " standard" Ethernet shield connected by a short cable to a pocket WiFi router. I have this solution implemented in my projects and it works absolutely flawlessly. The beauty is that the full functionality of the mature Ethernet library is at hand, including the ArdOsc and Bonjour.
Not only is it a highly functional solution but it is also less expensive that any of the more recent WiFi shields.

If you ask me, the Arduino WiFi shield is a bit too late and too expensive and lacks some basic things that many users seem to look for. The library for is has currently no UDP support. So even if you want to play with ArdOSC you're out of luck! Also at $80+ it is very expensive.