I love the Arduino Nano - it's a nice compact yet fully functional version of the Arduino Uno. However, when I went to connect it to the internet all of that neat and tidy smallness disappeared under the big full sized ethernet shield I had. (See my other instructable on how to do that).
However, I recently discovered a better, more compact way to connect my Nano to the internet - by using the much smaller (and more affordable) WIZ550io module from WIZnet!
You can get an adapter board to connect this module up to an Arduino Uno for easy connection, but I wanted to keep things compact by using my Nano and directly connecting them together. However, the same procedure can be used to connect it up directly to a Uno if you don't have the adapter board.
Step 1: Parts
For this Instructable, I used the following parts:
1 Arduino Nano (or compatible)
1 WIZ550io module (available direct from WIZnet)
1 breadboard (I'm using one with 30 rows, which is just barely big enough)
5 m-m jumper wires
4 f-m jumper wires
Step 2: Making the Connections
Note: before connecting all the wires, it’s a good idea to first load the WebServer example onto your Arduino, to make sure there is no existing firmware on it that might cause issues with your WIZ550io.
1. Pop the Arduino Nano and the WIZ550io module onto a breadboard. I put them back to back (see pictures) to allow the USB power cable and the Ethernet cable to both be easily hooked up. As you can see in the pictures, my breadboard would ideally have been 1 row longer!
2. Connect 9 pins:
Arduino - WIZ550io
(5 M-M jumper wires)
3v3 - J1.8
GND - J1.1
D2 - J2.5 (INT)
D7 - J2.2 (RDY)
D10 - J1.6 (SCS)
(SPI needs 4 F-M jumper wires)
spi.1 - J1.4 (MISO)
spi.3 - J1.5 (SCK aka SCLK)
spi.5 - J2.3 (RST)
spi.4 - J1.3 (MOSI)
Note: spi.2 (VDD) - Do not connect! this is 5v and the WIZ board needs 3.3v
Refer to the SPI picture above to see the ordering of the pins on the Arduino Nano. Also, the board itself should have a digit 1 by the number 1 pin. This should be the outermost pin on the side of the VIN pin.
Step 3: Update the Ethernet Library
The WIZnet module uses a newer chip and requires an updated library for it to work. Don't worry, your older ethernet boards will still work with it too.
1. Download the WIZnet Ethernet Library: https://github.com/Wiznet/WIZ_Ethernet_Library There is a button at the bottom right labelled "Download ZIP" which downloads everything in one neat little file.
2. Copy the Ethernet folder into the Arduino Libraries folder (on Mac it’s Documents/Arduino/Libraries) This will override the built-in Ethernet library that’s part of the Arduino app. See Note (a) in the Notes step if you need to also use other ethernet shields and modules. Note that there are 2 versions of the Ethernet folder, depending on the version of your Arduino IDE. I’m using Arduino IDE version 1.0.6, so I copied the Ethernet folder from the WIZnet folder marked as 1.0.x.
3. In the Libraries/Ethernet/utility folder, open w5100.h and verify that only the 1 correct #define line (out of 3) is uncommented. For my WIZ550io it looks like this:
//#define W5100_ETHERNET_SHIELD // Arduino Ethernet Shield and Compatibles ... //#define W5200_ETHERNET_SHIELD // WIZ820io, W5200 Ethernet Shield #define W5500_ETHERNET_SHIELD // WIZ550io, ioShield series of WIZnet</p>
4. In the same file, (optionally) also uncomment the line that allows the board to use the pre-assigned hardware MAC address:
#define WIZ550io_WITH_MACADDRESS // Use assigned MAC address of WIZ550io
The picture shows what my settings look like (I used XCode to edit the file, thus the nice formatting and colours!)
Step 4: Run a Webserver to Test It!
Now that everything is all set up, it is a good idea to test it to make sure everything was done correctly. Thankfully, the Ethernet library includes a set of very nice examples. We will just use the easy WebServer example.
1. Open the Arduino IDE and open the included example from File/Examples/Ethernet named WebServer
2. If you are on an Apple network (through Apple’s Airport wireless hubs), you will need to change the IP address to be noticed by other computers on your network. I used this:
IPAddress ip(10,0,1,177); // on an Apple wifi network
Note that this is probably not necessary for most networks, as long as the first 3 digits match your own IP address .
3. Save it and give it a new name
4. Connect your WIZ550io to your network with a network cable
5. Connect your Arduino to your computer and run the WebServer example.
6. Open up a browser window and load the url matching the IP address you set in the WebServer example. In my case that’s http://10.0.1.177
The browser window should just show a list of numbers, corresponding to each of the analog inputs. Note that as we did not hook up any of the analog inputs, those numbers will be somewhat random. You could of course start adding a bunch of sensors to them for more fun :)
Step 5: Notes and References
(a) If you also have other ethernet shields, you will need to choose the correct line in w5100.h when working with that particular shield (and then change it back when using the WIZ550io again). For example, for my other Wiz5100 based ethernet shield, I uncomment the top line:
#define W5100_ETHERNET_SHIELD // Arduino Ethernet Shield and Compatibles ... //#define W5200_ETHERNET_SHIELD // WIZ820io, W5200 Ethernet Shield //#define W5500_ETHERNET_SHIELD // WIZ550io, ioShield series of WIZnet
(b) There are no other notes ;)
For more information, please refer to: