"A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects." (Robert A. Heinlein)

Home » Post Item » New toy on the desk: Arduino Ethernet shield

New toy on the desk: Arduino Ethernet shield

Friday, January 28th, 2011

Let me start by saying that I’ve not forgot my Arduino board in a drawer, I’ve been mainly playing with the provided examples without producing something worth to be blogged. Working with hardware require more free time than simply experimenting with software; time that unfortunately I do not have (attaching your Arduino board to your computer while travelling by train is a bit impractical and make you look a little suspicious). By the way during the last electronic surplus fair, here in Genoa, I bought an Ethernet shield: a little board that connected, sandwich like, over the Arduino board give it the capability of connecting and communicating over a local network and even over the Internet if you configure your network the right way.


 

arduino-ethernet-shield

Unfortunately the board I managed to get is a quite cheap one, respect the one displayed at the Arduino site, since it lacks the SD card reader (and even the passing-trough connector).

 

First tests

 

Of course I didn’t manage to do a lot, with the Ethernet shield, apart some basic testing of the code provided with the Arduino board, in order to verify that the board is properly working. Here is the example code that implement a basic web server returning the status of Arduino’s analog inputs. I only had to adapt it to match my network configuration.

/*

Web Server

 

A simple web server that shows the value of the analog input pins.

using an Arduino Wiznet Ethernet shield.

 

Circuit:

* Ethernet shield attached to pins 10, 11, 12, 13

* Analog inputs attached to pins A0 through A5 (optional)

 

created 18 Dec 2009

by David A. Mellis

modified 4 Sep 2010

by Tom Igoe

 

*/


#include <SPI.h>

#include <Ethernet.h>


// Enter a MAC address and IP address for your controller below.

// The IP address will be dependent on your local network:

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

byte ip[] = { 192,168,0, 15 };


// Initialize the Ethernet server library

// with the IP address and port you want to use

// (port 80 is default for HTTP):

Server server(80);


void setup()

{

// start the Ethernet connection and the server:

Ethernet.begin(mac, ip);

server.begin();

}


void loop()

{

// listen for incoming clients

Client client = server.available();

if (client) {

// an http request ends with a blank line

boolean currentLineIsBlank = true;

while (client.connected()) {

if (client.available()) {

char c = client.read();

// if you’ve gotten to the end of the line (received a newline

// character) and the line is blank, the http request has ended,

// so you can send a reply

if (c == ‘\n’ && currentLineIsBlank) {

// send a standard http response header

client.println(”HTTP/1.1 200 OK”);

client.println(”Content-Type: text/html”);

client.println();


// output the value of each analog input pin

for (int analogChannel = 0; analogChannel < 6; analogChannel++) {

client.print(”analog input “);

client.print(analogChannel);

client.print(” is “);

client.print(analogRead(analogChannel));

client.println(”<br />”);

}

break;

}

if (c == ‘\n’) {

// you’re starting a new line

currentLineIsBlank = true;

}

else if (c != ‘\r’) {

// you’ve gotten a character on the current line

currentLineIsBlank = false;

}

}

}

// give the web browser time to receive the data

delay(1);

// close the connection:

client.stop();

}

}

All the code is simply made from a setup() function that provides to MAC and IP address initialization and a main loop() function where the board returns the HTML page.

 

Conclusions

 

Since first time I tried Arduino I’ve been impressed by its easiness of use and how its rich set of libraries could hide complex behaviour behind few lines of code. Adding an Ethernet shield to an Arduino board make it capable of even more complex actions, like handling Ethernet and network protocols, without adding a great deal to code complexity.

Posted by musante at 1:00:00 | permalink

Previous Comments

www.cheapcheapcomputers.com
It’s really glad to read about the following topic which has enhanced my knowledge regarding

topic and plus has given alot of ideas which I can think on.
So I would say thank you to the blog owner for providing this amazing information.

Posted by cheap computer at January 28, 2011, 2:22 pm

How to use that one?

Posted by killdaggy at February 13, 2011, 6:20 pm

Thanks for visiting killdaggy!
I think that with a tool like Arduino your are limited only by your fantasy (and your free time unfortunately). You can have an idea of what you can do with Arduino for example having a look at here (http://www.instructables.com/pages/search/search.jsp?cx=partner-pub-1783560022203827%3Anpr2q7v5m6t&cof=FORID%3A11&ie=ISO-8859-1&q=arduino+ethernet)

Posted by musante at February 13, 2011, 8:03 pm

Just a fast hello and also to thank you for discussing your ideas on this web page. I wound up inside your weblog right after researching physical fitness connected issues on Yahoo guess I lost track of what I had been performing! Anyway I’ll be back once once more inside the future to examine out your blogposts down the road. Thanks!

Posted by Ali Ashari at November 3, 2011, 6:46 pm

Thanks for visiting Ali Ashari!

Posted by musante at November 3, 2011, 8:16 pm

All comments are moderated. Your comments will not appear here unless approved by the blog owner. Thank you.

Add a comment