22
Arduino Ethernet Shield

Ethernet Shield

  • Upload
    tinker

  • View
    1.787

  • Download
    2

Embed Size (px)

DESCRIPTION

Part of Tinker.it!'s Internet of Things master class at dconstruct 9, covering networking using the Arduino ethernet shield.

Citation preview

Page 1: Ethernet Shield

Arduino Ethernet Shield

Page 2: Ethernet Shield

Arduino + Ethernet

Page 3: Ethernet Shield

Twittering plant

Page 4: Ethernet Shield

Capabilities

★Wiznet W5100 ethernet chip★Client★Server★TCP★UDP★Four channels

Page 5: Ethernet Shield

The Ethernet library

★All looks like a serial port

★Ethernet: initialise network★Client: connect to a port on a server, then read() and write()★Server: waits for a connection on a port

Page 6: Ethernet Shield

Ethernet limitations

★DHCP needs 3rd-party library★No DNS★DIY for high-level protocols (no HTTP library, etc) - lots of print() statements★Library memory footprint

Page 7: Ethernet Shield

Practical 1: on the network

Page 8: Ethernet Shield

Practical 1: on the network

Example file:ChatServer

Page 9: Ethernet Shield

Configuration

byte mac[] = { 0xDE,0xAD,0xBE,0xEF,0xFE,0xED };byte ip[] = { 10, 0, 0, 177 };byte gateway[] = { 10, 0, 0, 1 };byte subnet[] = { 255, 255, 0, 0 };

...

Ethernet.begin(mac,ip,gateway,subnet);

Page 10: Ethernet Shield

Talking HTTP

Page 11: Ethernet Shield

Talking HTTP

$ curl -v http://www.example.com

Page 12: Ethernet Shield

Talking HTTP: the request

$ curl -v http://www.example.com* About to connect() to www.example.com port 80 (#0)* Trying 208.77.188.166... connected* Connected to www.example.com (208.77.188.166) port 80 (#0)

Page 13: Ethernet Shield

Talking HTTP: the request

$ curl -v http://www.example.com* About to connect() to www.example.com port 80 (#0)* Trying 208.77.188.166... connected* Connected to www.example.com (208.77.188.166) port 80 (#0)> GET / HTTP/1.1> User-Agent: curl/7.16.3> Host: www.example.com> Accept: */*>

Page 14: Ethernet Shield

Talking HTTP: the response

$ curl -v http://www.example.com* About to connect() to www.example.com port 80 (#0)* Trying 208.77.188.166... connected* Connected to www.example.com (208.77.188.166) port 80 (#0)> GET / HTTP/1.1> User-Agent: curl/7.16.3> Host: www.example.com> Accept: */*> < HTTP/1.1 200 OK< Date: Sun, 16 Aug 2009 16:05:42 GMT< Server: Apache/2.2.3 (Red Hat)< Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT< ETag: "b80f4-1b6-80bfd280"< Accept-Ranges: bytes< Content-Length: 438< Connection: close< Content-Type: text/html; charset=UTF-8

Page 15: Ethernet Shield

Talking HTTP: the document

$ curl -v http://www.example.com* About to connect() to www.example.com port 80 (#0)* Trying 208.77.188.166... connected* Connected to www.example.com (208.77.188.166) port 80 (#0)> GET / HTTP/1.1> User-Agent: curl/7.16.3> Host: www.example.com> Accept: */*> < HTTP/1.1 200 OK< Date: Sun, 16 Aug 2009 16:05:42 GMT< Server: Apache/2.2.3 (Red Hat)< Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT< ETag: "b80f4-1b6-80bfd280"< Accept-Ranges: bytes< Content-Length: 438< Connection: close< Content-Type: text/html; charset=UTF-8< <HTML>..........

Page 16: Ethernet Shield

The most important bits

> GET / HTTP/1.1> Host: www.example.com> < HTTP/1.1 200 OK< Content-Type: text/html; charset=UTF-8< <HTML>..........

Page 17: Ethernet Shield

Practical 2: retrieving data

Page 18: Ethernet Shield

Practical 2: retrieving data

Example file:WebClient

Page 19: Ethernet Shield

Web APIs

★It’s just HTTP★At least, the good ones are

Page 20: Ethernet Shield

Web API challenges

★HTTPS★Crypto (e.g. OAuth)★XML parsing★JSON parsing★Large documents

Page 21: Ethernet Shield

Practical 3: serving data

Page 22: Ethernet Shield

Practical 3: serving data

Example file:WebServer