Ethernet W5100 Network Shield For Arduino UNO/Mega

HCARDU0034

New

This Ethernet Shield is based on the Wiznet W5100 Ethernet Chip and gives you an easy way to get your Arduino online.

More details

77 Items

In Stock

£ 7.80

+ wishlist

Volume discounts

QuantityDiscountYou Save
20 -£ 0.49 Up to -£ 9.80
10 -£ 0.61 Up to -£ 6.10
5 -£ 0.85 Up to -£ 4.25

This Ethernet Shield is based on the Wiznet W5100 Ethernet Chip and gives you an easy way to get your Arduino online. It is directly supported by the official Arduino Ethernet Library. It also includes an additional micro-SD card slot, which can be used to store files for serving over the network. It is compatible with the Arduino Duemilanove (168 or 328), Uno as well as Mega (1280/2560) and can be accessed using the SD and Ethernet libraries.
 
The Wiznet W5100 provides a network (IP) stack capable of both TCP and UDP. It supports up to four simultaneous socket connections. Use the Ethernet library to write sketches which connect to the internet using the shield.

 

This product is derived from the Arduino(TM) reference design which was released under the Creative Commons Attribution Share-Alike license.

You can see the license here:

https://creativecommons.org/licenses/by-sa/3.0/legalcode

Technical support for any product sold by Hobby Components should be directed to Hobby Components. We have no affiliation with Arduino.

 

EXAMPLE ARDUINO CODE


 
 
/* FILE:    ARD_Ethernet_Shield_HCARDU0034_SD_Card_Reader_Example.pde
   DATE:    25/04/13
   VERSION: 0.2
 
This is an example of how to use the HobbyComponents Arduino Ethernet shield
(HCARDU0033) and its included micro SD card reader. This Ethernet shield is 
based on the W5100 Ethernet controller and is compatible with the standard Arduino
Ethernet libraries. It requires no additional libraries to work.
 
This example program will serve a web page to a client (i.e. web browser) that 
contains the contents of a text file saved on an inserted micro SD card.
 
For this example to work you will need to have a micro SD card inserted into the 
card reader containing a text file with the name 'test.txt'. The contents of the text 
file can be anything you like. When a client makes a connection, the program will 
attempt to read the contents of the test.txt file and serve it to the client.
 
REVISIONS:
 
V0.1 Initial version
V0.2 Added line to configure pin 53 as an output on Mega's to stop the SPI
     master potentially being configured as a slave by hardware.
 
You may copy, alter and reuse this code in any way you like, but please leave 
reference to HobbyComponents.com in your comments if you redistribute this code. 
This software may not be used directly for the purpose of selling products that 
directly compete with Hobby Components Ltd's own range of products.  
 
THIS SOFTWARE IS PROVIDED "AS IS". HOBBY COMPONENTS MAKES NO WARRANTIES, WHETHER 
EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF 
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ACCURACY OR LACK OF NEGLIGENCE.
HOBBY COMPONENTS SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR ANY DAMAGES, 
INCLUDING, BUT NOT LIMITED TO, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY 
REASON WHATSOEVER.
 
*/
 
/* Include the serial library for communicating with the COM port */
#include <SPI.h>
 
/* Include the standard Ethernet library */
#include <Ethernet.h>
 
/* Include the standard SD card library */
#include <SD.h>
 
/* DIO pin used to control the modules CS pin */
#define SD_CARD_CD_DIO 4 
 
File SDFileData;
 
 
/* MAC address of the Ethernet shield. If you are using this on your 
own network, then the MAC address below will be fine, but remember if 
you use more than one shield on your network they will need to be assigned
unique MAC addresses */
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
 
/* The IP address of the shield. Make sure this matches the IP 
   address range of your network and is not in use by any other 
   device on it */    
IPAddress ip(192, 168, 1, 55 );
 
/* The port number the shield will respond to. Use port 80 
   for standard HTTP requests */
EthernetServer server(80);
 
 
 
void setup()
{  
  //pinMode(53, OUTPUT); //Uncomment this line if using a Mega
  /* Start the Ethernet interface */
  Ethernet.begin(mac, ip);
  server.begin();
 
  /* DIO pin used for the CS function. Note that even if you are not driving this
     function from your Arduino board, you must still configure this as an output 
     otherwise the SD library functions will not work. */
  pinMode(10, OUTPUT);
 
  
  /* Initialise the serial port */
  Serial.begin(9600);
 
  /* Initialise the SD card */
  if (!SD.begin(SD_CARD_CD_DIO)) 
  {
    /* If there was an error output this to the serial port and go no further */
    Serial.println("ERROR: SD card failed to initialise");
    while(1);
  }else
  {
    Serial.println("SD Card OK");
  }
 
}
 
 
/* MAIN PROGRAM LOOP */
void loop()
{
  /* All client requests are terminated with a blank line. This flag will 
    signify if the current line received from this client is a blank line */
  boolean bBlankLineFlag = true;
  
  /* Used to hold the current byre received from the client */
  char cCurrentByte;
  
  /* Used to hold the current byte read from the test.txt file located on the SD card */
  char cCurrentSDByte;
    
  
  /* Wait for a request from a client */
  EthernetClient ethernet = server.available();
  
  if (ethernet) 
  {
    /* Continue to read data from the client one byte at a time until 
       there is no more data */ 
    while (ethernet.connected()) 
    {
      /* Is there still data available to be read? ethernet class 
         ethernet.connected() returns the number of bytes available */
      if (ethernet.available()) 
      {
        /* If data is available read the next byte */ 
        cCurrentByte = ethernet.read();
 
        /* Is the next byte read is a new line termination ? */      
        if (cCurrentByte == '\n')
        { 
          /* If so was it a blank line? */
          if (bBlankLineFlag) 
          {
            
            /* If it was then we can now send a response to the client’s http request... */
            ethernet.println("HTTP/1.1 200 OK");
            ethernet.println("Content-Type: text/html");
            ethernet.println();
 
            ethernet.println("<body>");
            ethernet.println("<big><span style=\"font-weight: bold;\">www.hobbycomponents.com Ethernet Shield Example</span></big><br>");
            ethernet.println("****************************************************<br>");
 
            /* ...and the append the contents of the text.txt file */
  
            SDFileData = SD.open("test.txt");
    
 
            /* Sequentially read the data from the file until there is no more data available */
            while (SDFileData.available())
            {
              cCurrentSDByte = SDFileData.read();
             
              /* Check if the current byte is a line break ASCII and if so send an HTML line break */
              if (cCurrentSDByte == '\n')
              {
                ethernet.println("<br>");
              }else
              {
                /* If not then just send it to the client */
                ethernet.print((char)cCurrentSDByte);
              }
            }
     
            /* Close the file */
            SDFileData.close();  
           
            ethernet.println("</body>");
 
            /* Disconnect from the client */
            ethernet.stop();
          }
        
          /* The last byte received from the client was the start of a 
             new line so flag as no data received for this line yet */
          bBlankLineFlag = true;
        
        /* If the last byte received wasn't a new line then it must be data... */  
        } else if (cCurrentByte != '\r')
        {  
          /* ...and so flag this as not a blank line. */
          bBlankLineFlag = false;
        }
      }
    }
  }
}
 

 

Viewed products