My requirements for the shield are:
- As much as cheap as possible (less than 10 USD)
- Arduino library compatible with the standard Ethernet/WiFi libraries
- Breadboard-friendly (no soldering needed)
The obvious choice for the WiFi module is the ESP8266-01. ESP8266-01 is great and cheap but there are some problems and limitations:
- Arduino boards are typically powered at 5V while ESP8266 needs a 3.3V power source. The Arduino 3.3V output pin cannot provide the power needed by the ESP (up to 250mA). This can be solved using a 3.3V voltage regulator like the LM1117, LD1117, LD33V or AMS1117. There are even more cheaper solutions but I decided to go with a AMS1117 module.
- ESP8266 connector is not breadboard-friendly. Using the technique described in this post is easy to plug the ESP into a breadboard with no additional hardware.
- ESP8266 default firmware uses AT commands and there is no good library for the ESP with a programming model similar to the WiFi library. There are some improved firmwares around but I want to use the stock firmware. I have developed my own EspWiFi library so I can use any existing Arduino WiFi sketch with few little code changes.
- ESP8266-01 module (3 USD)
- AMS1117 module - 5V To 3.3V DC-DCPower Supply (1 USD)
- Breadboard (2 USD)
- Capacitor (any 10-100 uF is ok)
- 2 or 3 resistors
- Jumper wires
- Arduino ProtoShield (3 USD)
All these components allows you to build a WiFi shield for less than 10 USD !
Look at this Instructable for detailed instructions about how to build the ESP WiFi shield.
After having built it you can try my WiFiEsp library to connect your Arduino projects to the Internet.