giovedì 13 giugno 2013

Arduino Tutorial 13: Ethernet shield

Eccoci di nuovo per un altro progetto con Arduino, oggi cercheremo di utilizzare la nostra bella schedina di sviluppo per creare, grazie all'unione di una ulteriore schedina, un server web direttamente a casa nostra!

La Ethernet Shield


Esistono migliaia di shield interfacciabili con l'Arduino, ognuna di queste è infatti studiata per diversi scopi. Una delle più interessanti è la Ethernet Shield, una schedina che si innesta direttamente sulla principale e permette di collegare Arduino ad una porta Ethernet, in modo da poterlo controllare via rete locale o via Internet.
La Ethernet Shield è provvista di un connettore RJ45 per la connessione diretta al modem di casa ed inoltre offre la possibilità di utilizzare uno slot microSD per lo scambio diretto di dati con un supporto di memorizzazione dedicato.
Attraverso questa shield è possibile creare oltre ad un piccolo server web (come vedremo tra poco), chatroom, webclient e chi più ne ha più ne metta!
La Ethernet Shield è dotata di un chip, il W5100 che non svolge solamente il ruolo di controller Ethernet, bensì ci permette anche di utilizzare la libreria Ethernet.h che ad oggi rimane la più intuitiva tra le librerie utilizzabili con i moduli Ethernet.



Sketch:

#include <String.h>
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 
byte ip[] = { 192, 168, 1, 177 }; // indirizzo IP della shield
byte gateway[] = { 192, 168, 1, 1 }; // indirizzo ip del router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); 

void setup(){
Ethernet.begin(mac, ip, gateway, subnet);
Serial.begin(9600);
}

void loop(){
EthernetClient client = server.available();
if (client) {
 boolean currentLineIsBlank = true;
 while (client.connected()) {
 if (client.available()) {
 char c = client.read();
 readString.concat(c); 

 if (c == '\n' && currentLineIsBlank) {

 Serial.print(readString);

 client.println("HTTP/1.1 200 OK");
 client.println("Content-Type: text/html");
 client.println();
 client.print("<html><head><title>Hello World</head><body>");
 client.println("</body></html>");
 readString="";
 client.stop();

 } 
 } 
 } 

}
Se avete dei problemi a far funzionare il circuito commentate o scrivete sul forum.

4 commenti:

  1. ciao, ho caricato il codice, collegato al router, ma non funziona. ho provato a fare il ping tramite prompt ma nulla. io credo che il problema possa essere:
    il cavo ethernet (croassato o non)
    l'alimentatore di arduino
    il fatto che il router usi ip dinamici
    sapresti aiutarmi?

    RispondiElimina
  2. p.s.: o il fatto che il mac address sia a caso in quanto sotto la mia shield (giapponese) non vi è nessun mac?

    RispondiElimina
  3. per connetterla al pc devo usare un cavo ethernet o crossover?

    RispondiElimina
  4. buongiorno, basta connettere la scheda al router e avere tutti i parametri apposto come se fosse la scheda di rete di un pc, quindi gateway e ip i principali, se per connettermi al router da pc uso 192.168.1.1 questo sarà il nostro gateway, se uso 192.168.0.1 sarà questo, poi l'idirizzo di arduino non deve essere occupato da un o dispositivo e dipende dal gateway es ip arduino 192.168.1.25 oppure 192.168.0.25

    RispondiElimina

Commenta