Ethernet shield

Ebben a cikkben web szerverként használunk egy Adafruit ethernet pajzsot, persze csak nagyon light-os kivitelben, egyetlen mért analóg értéket továbbítunk vele.

Néhány szóban a pajzsról: a pajzs segítségével könnyedén csatlakoztathatjuk Arduino boardunkat az internethez, lehetővé teszi, hogy az Arduinonk küldeni és fogadni tudjon adatokat bárhol a világon egy internet kapcsolaton keresztül.
Segítségével nagy lehetőségek nyílnak meg az Arduino felhasználók előtt hisz bárhonnan és bármikor hozzáférhetnek futó arduino projektjük mért értékeihez illetve távolról vezérelni tudják azokat.


A pajzs egyszerüen rádugható az Arduino boardra a kinyúló tüskesor segítségével, kompatibilis az Unoval és a Megával. Csatlakoztatni az internethez RJ45 kábel segítségével lehet (sima UTP kábel) aminek egyik végét a pajzsba a másikat saját routerünkbe kell bedugni.

Az üzemi feszültség 5V (ezt az Arduino boardról kapja)
az Ethernet vezérlő W5100-as ic 16K belső pufferrel, kapcsolati sebesség 10/100Mbs.
Csatlakozási pontok: az Arduino SPI portját használja adatátvitelre, 10,11,12,13 az Uno ; 50,51,52,53 a Mega.
A beépített SD kártya foglalat használja a 4-es csapot adatátvitelre. A beépített SD-micro kártya foglalat használatával fájlokat tárolhatunk és megoszthatunk az interneten. Az SD kártyaolvasó az SD könyvtár segítségével kezelhető.


Wiznet W5100 ethernet chip: Hálózati(IP) stack(verem) képes TCP és UDP kezelésére.
TCP: átviteli vezérlő protokoll, az IP-vel együtt használják.
UDP: datagram alapú protokoll, rövid gyors üzenetek küldésére, nem garantált a csomag megérkezése.
Támogat akár 4 egyidejű végponti kapcsolatot is.


A pajzson elhelyezett információs ledek:

- PWR: power bekapcsolt állapotban a pajzs

- LINK: hálózati kapcsolatot jelzi, villog ha a pajzs továbbit vagy fogad adatokat

- FULLD: a hálózati kapcsolat teljes duplex

- 100M:jelzi ha 100 Mb/s a hálózati kapcsolat (különben 10 Mb/s)

- RX: villog ha a pajzs adatokat fogad

- TX: villog ha a pajzs adatokat küld

- COLL: villog, ha hálózati ütközést észlel.


Lássuk a kapcsolást:
Az Arduino boardunkra rá dugjuk az Ethernet pajzsunkat, majd az A2 analóg input bemenetet összekötjük a TMP36 hőérzékelőnk középső kimenetével, a bal oldali kimenet a +5V, a jobb oldali a GND.


A tmp36 bekötése:



A kód:

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

//a MAC és IP-cím megadása, az IP-cím függ a helyi hálózattól
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,102);
int tempPin = 2;
// 80-as port az alapértelmezett HTTP
EthernetServer server(80);

void setup() {
// Soros monitor megnyitása
Serial.begin(9600);
while (!Serial) {
; // vár a soros port csatlakozására, csak Leonardónál

}


// az ethernet csatlakozás és a szerver indítása
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}


void loop() {
// a client-ek észlelése
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// http kérés a végén üres sorral
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// 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("Connection: close"); // the connection will be closed after completion of the response
client.println("Refresh: 5"); // refresh the page automatically every 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");

int tempReading = analogRead(tempPin);
float tempVolts = tempReading*5.0/1024.0;
float tempC = (tempVolts-0.5)*100.0;
client.print("a mai homerseklet:");
client.print(tempC);
client.print("C");
client.println("<br />");
client.println("</html>");
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();
Serial.println("client disonnected");
}
}

Ez a kód az Arduino IDE/ Minták / Ethernet / Webserver minta kódja átalakításával készült. A kód segítségével a TMP36 által mért értéket átalakítva kiíratjuk a beállított IP címen, az érték bizonyos időközönként frissül.


IPAddress ip(192,168,1,102);
Ezzel a sorral határozzuk meg az eszközünk kiosztott IP-jét, ami persze router függő, illetve a routerre csatlakoztatott eszközök számától és sorrendjétől függ. pl.: 192.168.0.104, 192.168.2.115


folyt. köv.