Top Banner
Arduino Ethernet Shield
22

Ethernet Shield

May 14, 2015

Download

Technology

DeAnn Nelson

Part of Tinker.it!'s Internet of Things master class at dconstruct 9, covering networking using the Arduino ethernet shield.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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