Download - The Arduino WiFi Shield
![Page 1: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/1.jpg)
The Arduino WiFi Shield
Katrina Ellison Geltman March 27, 2014
![Page 2: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/2.jpg)
Arduino UNO R3 Arduino WiFi Shield
![Page 3: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/3.jpg)
Arduino UNO R3 Arduino WiFi Shield
![Page 4: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/4.jpg)
+
vs.
![Page 5: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/5.jpg)
+
vs.
![Page 6: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/6.jpg)
How it Works
![Page 7: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/7.jpg)
Getting set up
![Page 8: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/8.jpg)
In the beginning, you have:
WiFi ShieldComputer WiFi RouterArduino
![Page 9: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/9.jpg)
You set up the basics.
WiFi ShieldComputer WiFi RouterArduino
WiFi driver
Serverobject
![Page 10: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/10.jpg)
You request to connect to the network.
WiFi ShieldComputer WiFi RouterArduino
WiFi driver
Request to connectServerobject
![Page 11: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/11.jpg)
If you’re lucky, you connect successfully.
WiFi ShieldComputer WiFi RouterArduino
WiFi driverConnection successful
Request to connectServerobject
![Page 12: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/12.jpg)
You start your server.
WiFi ShieldComputer WiFi RouterArduino
Serverobject
Start TCP server listening onsocket/port
![Page 13: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/13.jpg)
Now it’s listening on a particular port.
WiFi ShieldComputer WiFi RouterArduino
Serverobject
![Page 14: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/14.jpg)
You’re ready to go!
![Page 15: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/15.jpg)
Receiving requests
![Page 16: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/16.jpg)
After setup, everything happens in an event loop.
WiFi ShieldComputer WiFi RouterArduino
Serverobject
Your code loop
![Page 17: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/17.jpg)
At the beginning of the loop, a client object is created using the server’s port & socket.
WiFi ShieldComputer WiFi RouterArduino
Serverobject
Your code loop
Clientobject
![Page 18: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/18.jpg)
The client asks the WiFi shield whether it’s active or not.
WiFi ShieldComputer WiFi RouterArduino
Serverobject
Your code loop
ClientobjectWhat's my state?
![Page 19: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/19.jpg)
If there haven’t been any requests, the client stays inactive.
WiFi ShieldComputer WiFi RouterArduino
Serverobject
Your code loop
ClientobjectInactive
The event loop ends and re-starts.
![Page 20: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/20.jpg)
If there haven’t been any requests, the client stays inactive.
!!
The event loop ends and re-starts. !
I think the client is deleted, but I’m not sure how.
WiFi ShieldComputer WiFi RouterArduino
Serverobject
Your code loop
![Page 21: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/21.jpg)
If a request has been made, the client activates.
WiFi ShieldComputer WiFi RouterArduino
Serverobject
Your code loop
ClientobjectClientobjectConnected!
Request!
![Page 22: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/22.jpg)
Your code asks the client object for whatever data it’s receiving from your computer.
WiFi ShieldComputer WiFi RouterArduino
Serverobject
Your code loop
ClientobjectClientobjectConnected!
Request!
Data?
![Page 23: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/23.jpg)
If there is data, it reads it and processes it.
WiFi ShieldComputer WiFi RouterArduino
Serverobject
Your code loop
ClientobjectClientobjectRead data
Request!
Read data
![Page 24: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/24.jpg)
(This is when your Arduino actually does something)
WiFi ShieldComputer WiFi RouterArduino
Serverobject
Your code loop
ClientobjectClientobjectRead data
Request!
Read data
![Page 25: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/25.jpg)
Then the event loop ends and the client is deleted.
WiFi ShieldComputer WiFi RouterArduino
Serverobject
Your code loop
![Page 26: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/26.jpg)
!Then the event loop ends and the client is deleted.
(I think)
WiFi ShieldComputer WiFi RouterArduino
Serverobject
Your code loop
ClientobjectInactive
![Page 27: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/27.jpg)
That’s all good
![Page 28: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/28.jpg)
How it goes wrong
![Page 29: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/29.jpg)
Bad things happen if you disconnect from the network.
WiFi ShieldComputer WiFi RouterArduino
Serverobject
Your code loop
![Page 30: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/30.jpg)
The server doesn’t reconnect properly when the network reconnects.
WiFi ShieldComputer WiFi RouterArduino
Serverobject
Your code loop
![Page 31: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/31.jpg)
We know this from our debugging output.
Socket Port Server Status
Client Status
-1 0 0 0
![Page 32: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/32.jpg)
We know this from our debugging output.
Socket Port Server Status
Client Status
-1 0 0 0
0 80 0 0
![Page 33: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/33.jpg)
We know this from our debugging output.
Socket Port Server Status
Client Status
-1 0 0 0
0 80 0 0Still active!
![Page 34: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/34.jpg)
We know this from our debugging output.
Socket Port Server Status
Client Status
-1 0 0 0
0 80 0 0
No server!
![Page 35: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/35.jpg)
How to fix it
![Page 36: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/36.jpg)
Manually release port & socket
![Page 37: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/37.jpg)
void WiFiServer::disconnect() { WiFiClass::_state[_sock] = -1; WiFiClass::_server_port[_sock] = 0; }
![Page 38: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/38.jpg)
void WiFiServer::disconnect() { WiFiClass::_state[_sock] = -1; WiFiClass::_server_port[_sock] = 0; }
![Page 39: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/39.jpg)
void WiFiServer::disconnect() { WiFiClass::_state[_sock] = -1; WiFiClass::_server_port[_sock] = 0; }
![Page 40: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/40.jpg)
void WiFiServer::disconnect() { WiFiClass::_state[_sock] = -1; WiFiClass::_server_port[_sock] = 0; }
![Page 41: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/41.jpg)
Socket Port Server Status
Client Status
-1 0 0 0
![Page 42: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/42.jpg)
Socket Port Server Status
Client Status
-1 0 0 0
0 80 1 0
![Page 43: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/43.jpg)
It works!
![Page 44: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/44.jpg)
It works!
… trivially
![Page 45: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/45.jpg)
It doesn’t work if a client object has ever
been created
![Page 46: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/46.jpg)
It doesn’t work if a client object has ever
been created
This makes it useless!
![Page 47: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/47.jpg)
It doesn’t work if a client object has ever
been created
usually
This makes it useless!
![Page 48: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/48.jpg)
Memory management?
![Page 49: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/49.jpg)
But available memory does not change from
loop to loop.
![Page 50: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/50.jpg)
I don’t really know C++
![Page 51: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/51.jpg)
Or network programming
![Page 52: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/52.jpg)
So I would love to hear your ideas
![Page 53: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/53.jpg)
But whether or not you can help
![Page 54: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/54.jpg)
Your main takeaway should be
![Page 55: The Arduino WiFi Shield](https://reader031.vdocuments.us/reader031/viewer/2022021814/58f9aaf2760da3da068b7e63/html5/thumbnails/55.jpg)
Arduino UNO R3 Arduino WiFi Shield