diff options
Diffstat (limited to 'libraries/WiFi/examples')
14 files changed, 1939 insertions, 0 deletions
| diff --git a/libraries/WiFi/examples/ConnectNoEncryption/ConnectNoEncryption.ino b/libraries/WiFi/examples/ConnectNoEncryption/ConnectNoEncryption.ino new file mode 100644 index 0000000..f42a7f3 --- /dev/null +++ b/libraries/WiFi/examples/ConnectNoEncryption/ConnectNoEncryption.ino @@ -0,0 +1,121 @@ +/* +  + This example connects to an unencrypted Wifi network.  + Then it prints the  MAC address of the Wifi shield, + the IP address obtained, and other network details. + + Circuit: + * WiFi shield attached +  + created 13 July 2010 + by dlf (Metodo2 srl) + modified 31 May 2012 + by Tom Igoe + */ + #include <WiFi.h> + +char ssid[] = "yourNetwork";     // the name of your network +int status = WL_IDLE_STATUS;     // the Wifi radio's status + +void setup() { +  //Initialize serial and wait for port to open: +  Serial.begin(9600);  +  while (!Serial) { +    ; // wait for serial port to connect. Needed for Leonardo only +  } +   +  // check for the presence of the shield: +  if (WiFi.status() == WL_NO_SHIELD) { +    Serial.println("WiFi shield not present");  +    // don't continue: +    while(true); +  }  +   + // attempt to connect to Wifi network: +  while ( status != WL_CONNECTED) {  +    Serial.print("Attempting to connect to open SSID: "); +    Serial.println(ssid); +    status = WiFi.begin(ssid); + +    // wait 10 seconds for connection: +    delay(10000); +  } +    +  // you're connected now, so print out the data: +  Serial.print("You're connected to the network"); +  printCurrentNet(); +  printWifiData(); +} + +void loop() { +  // check the network connection once every 10 seconds: +  delay(10000); +  printCurrentNet(); +} + +void printWifiData() { +  // print your WiFi shield's IP address: +  IPAddress ip = WiFi.localIP(); +    Serial.print("IP Address: "); +  Serial.println(ip); +  Serial.println(ip); +   +  // print your MAC address: +  byte mac[6];   +  WiFi.macAddress(mac); +  Serial.print("MAC address: "); +  Serial.print(mac[5],HEX); +  Serial.print(":"); +  Serial.print(mac[4],HEX); +  Serial.print(":"); +  Serial.print(mac[3],HEX); +  Serial.print(":"); +  Serial.print(mac[2],HEX); +  Serial.print(":"); +  Serial.print(mac[1],HEX); +  Serial.print(":"); +  Serial.println(mac[0],HEX); +   +  // print your subnet mask: +  IPAddress subnet = WiFi.subnetMask(); +  Serial.print("NetMask: "); +  Serial.println(subnet); + +  // print your gateway address: +  IPAddress gateway = WiFi.gatewayIP(); +  Serial.print("Gateway: "); +  Serial.println(gateway); +} + +void printCurrentNet() { +  // print the SSID of the network you're attached to: +  Serial.print("SSID: "); +  Serial.println(WiFi.SSID()); + +  // print the MAC address of the router you're attached to: +  byte bssid[6]; +  WiFi.BSSID(bssid);     +  Serial.print("BSSID: "); +  Serial.print(bssid[5],HEX); +  Serial.print(":"); +  Serial.print(bssid[4],HEX); +  Serial.print(":"); +  Serial.print(bssid[3],HEX); +  Serial.print(":"); +  Serial.print(bssid[2],HEX); +  Serial.print(":"); +  Serial.print(bssid[1],HEX); +  Serial.print(":"); +  Serial.println(bssid[0],HEX); + +  // print the received signal strength: +  long rssi = WiFi.RSSI(); +  Serial.print("signal strength (RSSI):"); +  Serial.println(rssi); + +  // print the encryption type: +  byte encryption = WiFi.encryptionType(); +  Serial.print("Encryption Type:"); +  Serial.println(encryption,HEX); +} + diff --git a/libraries/WiFi/examples/ConnectWithWEP/ConnectWithWEP.ino b/libraries/WiFi/examples/ConnectWithWEP/ConnectWithWEP.ino new file mode 100644 index 0000000..19736b5 --- /dev/null +++ b/libraries/WiFi/examples/ConnectWithWEP/ConnectWithWEP.ino @@ -0,0 +1,126 @@ +/* +  + This example connects to a WEP-encrypted Wifi network.  + Then it prints the  MAC address of the Wifi shield, + the IP address obtained, and other network details. +  + If you use 40-bit WEP, you need a key that is 10 characters long,  + and the characters must be hexadecimal (0-9 or A-F).  + e.g.  for 40-bit, ABBADEAF01 will work, but ABBADEAF won't work  + (too short) and ABBAISDEAF won't work (I and S are not  + hexadecimal characters).  +  + For 128-bit, you need a string that is 26 characters long.  + D0D0DEADF00DABBADEAFBEADED will work because it's 26 characters,  + all in the 0-9, A-F range. +  + Circuit: + * WiFi shield attached +  + created 13 July 2010 + by dlf (Metodo2 srl) + modified 31 May 2012 + by Tom Igoe + */ +#include <WiFi.h> + +char ssid[] = "yourNetwork";                     // your network SSID (name)  +char key[] = "D0D0DEADF00DABBADEAFBEADED";       // your network key +int keyIndex = 0;                                // your network key Index number +int status = WL_IDLE_STATUS;                     // the Wifi radio's status + +void setup() { +  //Initialize serial and wait for port to open: +  Serial.begin(9600);  +  while (!Serial) { +    ; // wait for serial port to connect. Needed for Leonardo only +  } + +  // check for the presence of the shield: +  if (WiFi.status() == WL_NO_SHIELD) { +    Serial.println("WiFi shield not present");  +    // don't continue: +    while(true); +  }  + +  // attempt to connect to Wifi network: +  while ( status != WL_CONNECTED) {  +    Serial.print("Attempting to connect to WEP network, SSID: "); +    Serial.println(ssid); +    status = WiFi.begin(ssid, keyIndex, key); + +    // wait 10 seconds for connection: +    delay(10000); +  } + +  // once you are connected : +  Serial.print("You're connected to the network"); +  printCurrentNet(); +  printWifiData(); +} + +void loop() { +  // check the network connection once every 10 seconds: +  delay(10000); +  printCurrentNet(); +} + +void printWifiData() { +  // print your WiFi shield's IP address: +  IPAddress ip = WiFi.localIP(); +  Serial.print("IP Address: "); +  Serial.println(ip); +  Serial.println(ip); + +  // print your MAC address: +  byte mac[6];   +  WiFi.macAddress(mac); +  Serial.print("MAC address: "); +  Serial.print(mac[5],HEX); +  Serial.print(":"); +  Serial.print(mac[4],HEX); +  Serial.print(":"); +  Serial.print(mac[3],HEX); +  Serial.print(":"); +  Serial.print(mac[2],HEX); +  Serial.print(":"); +  Serial.print(mac[1],HEX); +  Serial.print(":"); +  Serial.println(mac[0],HEX); +} + +void printCurrentNet() { +  // print the SSID of the network you're attached to: +  Serial.print("SSID: "); +  Serial.println(WiFi.SSID()); + +  // print the MAC address of the router you're attached to: +  byte bssid[6]; +  WiFi.BSSID(bssid);     +  Serial.print("BSSID: "); +  Serial.print(bssid[5],HEX); +  Serial.print(":"); +  Serial.print(bssid[4],HEX); +  Serial.print(":"); +  Serial.print(bssid[3],HEX); +  Serial.print(":"); +  Serial.print(bssid[2],HEX); +  Serial.print(":"); +  Serial.print(bssid[1],HEX); +  Serial.print(":"); +  Serial.println(bssid[0],HEX); + +  // print the received signal strength: +  long rssi = WiFi.RSSI(); +  Serial.print("signal strength (RSSI):"); +  Serial.println(rssi); + +  // print the encryption type: +  byte encryption = WiFi.encryptionType(); +  Serial.print("Encryption Type:"); +  Serial.println(encryption,HEX); +  Serial.println(); +} + + + diff --git a/libraries/WiFi/examples/ConnectWithWPA/ConnectWithWPA.ino b/libraries/WiFi/examples/ConnectWithWPA/ConnectWithWPA.ino new file mode 100644 index 0000000..fcc33ec --- /dev/null +++ b/libraries/WiFi/examples/ConnectWithWPA/ConnectWithWPA.ino @@ -0,0 +1,116 @@ +/* +  + This example connects to an unencrypted Wifi network.  + Then it prints the  MAC address of the Wifi shield, + the IP address obtained, and other network details. + + Circuit: + * WiFi shield attached +  + created 13 July 2010 + by dlf (Metodo2 srl) + modified 31 May 2012 + by Tom Igoe + */ + #include <WiFi.h> + +char ssid[] = "yourNetwork";     //  your network SSID (name)  +char pass[] = "secretPassword";  // your network password +int status = WL_IDLE_STATUS;     // the Wifi radio's status + +void setup() { +  //Initialize serial and wait for port to open: +  Serial.begin(9600);  +  while (!Serial) { +    ; // wait for serial port to connect. Needed for Leonardo only +  } +   +  // check for the presence of the shield: +  if (WiFi.status() == WL_NO_SHIELD) { +    Serial.println("WiFi shield not present");  +    // don't continue: +    while(true); +  }  +   + // attempt to connect to Wifi network: +  while ( status != WL_CONNECTED) {  +    Serial.print("Attempting to connect to WPA SSID: "); +    Serial.println(ssid); +    // Connect to WPA/WPA2 network:     +    status = WiFi.begin(ssid, pass); + +    // wait 10 seconds for connection: +    delay(10000); +  } +    +  // you're connected now, so print out the data: +  Serial.print("You're connected to the network"); +  printCurrentNet(); +  printWifiData(); + +} + +void loop() { +  // check the network connection once every 10 seconds: +  delay(10000); +  printCurrentNet(); +} + +void printWifiData() { +  // print your WiFi shield's IP address: +  IPAddress ip = WiFi.localIP(); +    Serial.print("IP Address: "); +  Serial.println(ip); +  Serial.println(ip); +   +  // print your MAC address: +  byte mac[6];   +  WiFi.macAddress(mac); +  Serial.print("MAC address: "); +  Serial.print(mac[5],HEX); +  Serial.print(":"); +  Serial.print(mac[4],HEX); +  Serial.print(":"); +  Serial.print(mac[3],HEX); +  Serial.print(":"); +  Serial.print(mac[2],HEX); +  Serial.print(":"); +  Serial.print(mac[1],HEX); +  Serial.print(":"); +  Serial.println(mac[0],HEX); +  +} + +void printCurrentNet() { +  // print the SSID of the network you're attached to: +  Serial.print("SSID: "); +  Serial.println(WiFi.SSID()); + +  // print the MAC address of the router you're attached to: +  byte bssid[6]; +  WiFi.BSSID(bssid);     +  Serial.print("BSSID: "); +  Serial.print(bssid[5],HEX); +  Serial.print(":"); +  Serial.print(bssid[4],HEX); +  Serial.print(":"); +  Serial.print(bssid[3],HEX); +  Serial.print(":"); +  Serial.print(bssid[2],HEX); +  Serial.print(":"); +  Serial.print(bssid[1],HEX); +  Serial.print(":"); +  Serial.println(bssid[0],HEX); + +  // print the received signal strength: +  long rssi = WiFi.RSSI(); +  Serial.print("signal strength (RSSI):"); +  Serial.println(rssi); + +  // print the encryption type: +  byte encryption = WiFi.encryptionType(); +  Serial.print("Encryption Type:"); +  Serial.println(encryption,HEX); +  Serial.println(); +} + diff --git a/libraries/WiFi/examples/ScanNetworks/ScanNetworks.ino b/libraries/WiFi/examples/ScanNetworks/ScanNetworks.ino new file mode 100644 index 0000000..93b3000 --- /dev/null +++ b/libraries/WiFi/examples/ScanNetworks/ScanNetworks.ino @@ -0,0 +1,119 @@ +/* +  + This example  prints the Wifi shield's MAC address, and + scans for available Wifi networks using the Wifi shield. + Every ten seconds, it scans again. It doesn't actually  + connect to any network, so no encryption scheme is specified. +  + Circuit: + * WiFi shield attached +  + created 13 July 2010 + by dlf (Metodo2 srl) + modified 21 Junn 2012 + by Tom Igoe and Jaymes Dec + */ + + +#include <SPI.h> +#include <WiFi.h> + +void setup() { +  //Initialize serial and wait for port to open: +  Serial.begin(9600);  +  while (!Serial) { +    ; // wait for serial port to connect. Needed for Leonardo only +  } + +  // check for the presence of the shield: +  if (WiFi.status() == WL_NO_SHIELD) { +    Serial.println("WiFi shield not present");  +    // don't continue: +    while(true); +  }  + +  // Print WiFi MAC address: +  printMacAddress(); + +  // scan for existing networks: +  Serial.println("Scanning available networks..."); +  listNetworks(); +} + +void loop() { +  delay(10000); +  // scan for existing networks: +  Serial.println("Scanning available networks..."); +  listNetworks(); +} + +void printMacAddress() { +  // the MAC address of your Wifi shield +  byte mac[6];                      + +  // print your MAC address: +  WiFi.macAddress(mac); +  Serial.print("MAC: "); +  Serial.print(mac[5],HEX); +  Serial.print(":"); +  Serial.print(mac[4],HEX); +  Serial.print(":"); +  Serial.print(mac[3],HEX); +  Serial.print(":"); +  Serial.print(mac[2],HEX); +  Serial.print(":"); +  Serial.print(mac[1],HEX); +  Serial.print(":"); +  Serial.println(mac[0],HEX); +} + +void listNetworks() { +  // scan for nearby networks: +  Serial.println("** Scan Networks **"); +  int numSsid = WiFi.scanNetworks(); +  if (numSsid == -1) +  {  +    Serial.println("Couldn't get a wifi connection"); +    while(true); +  }  + +  // print the list of networks seen: +  Serial.print("number of available networks:"); +  Serial.println(numSsid); + +  // print the network number and name for each network found: +  for (int thisNet = 0; thisNet<numSsid; thisNet++) { +    Serial.print(thisNet); +    Serial.print(") "); +    Serial.print(WiFi.SSID(thisNet)); +    Serial.print("\tSignal: "); +    Serial.print(WiFi.RSSI(thisNet)); +    Serial.print(" dBm"); +    Serial.print("\tEncryption: "); +    printEncryptionType(WiFi.encryptionType(thisNet)); +  } +} + +void printEncryptionType(int thisType) { +  // read the encryption type and print out the name: +  switch (thisType) { +  case ENC_TYPE_WEP: +    Serial.println("WEP"); +    break; +  case ENC_TYPE_TKIP: +    Serial.println("WPA"); +    break; +  case ENC_TYPE_CCMP: +    Serial.println("WPA2"); +    break; +  case ENC_TYPE_NONE: +    Serial.println("None"); +    break; +  case ENC_TYPE_AUTO: +    Serial.println("Auto"); +    break; +  }  +} + + + diff --git a/libraries/WiFi/examples/SimpleWebServerWiFi/SimpleWebServerWiFi.ino b/libraries/WiFi/examples/SimpleWebServerWiFi/SimpleWebServerWiFi.ino new file mode 100644 index 0000000..cdb4e62 --- /dev/null +++ b/libraries/WiFi/examples/SimpleWebServerWiFi/SimpleWebServerWiFi.ino @@ -0,0 +1,129 @@ +/* +  WiFi Web Server LED Blink +  + A simple web server that lets you blink an LED via the web. + This sketch will print the IP address of your WiFi Shield (once connected) + to the Serial monitor. From there, you can open that address in a web browser + to turn on and off the LED on pin 9. +  + If the IP address of your shield is yourAddress: + http://yourAddress/H turns the LED on + http://yourAddress/L turns it off +  + This example is written for a network using WPA encryption. For  + WEP or WPA, change the Wifi.begin() call accordingly. +  + Circuit: + * WiFi shield attached + * LED attached to pin 9 +  + created 25 Nov 2012 + by Tom Igoe + */ +#include <SPI.h> +#include <WiFi.h> + +char ssid[] = "yourNetwork";      //  your network SSID (name)  +char pass[] = "secretPassword";   // your network password +int keyIndex = 0;                 // your network key Index number (needed only for WEP) + +int status = WL_IDLE_STATUS; +WiFiServer server(80); + +void setup() { +  Serial.begin(9600);      // initialize serial communication +  pinMode(9, OUTPUT);      // set the LED pin mode + +  // check for the presence of the shield: +  if (WiFi.status() == WL_NO_SHIELD) { +    Serial.println("WiFi shield not present");  +    while(true);        // don't continue +  }  + +  // attempt to connect to Wifi network: +  while ( status != WL_CONNECTED) {  +    Serial.print("Attempting to connect to Network named: "); +    Serial.println(ssid);                   // print the network name (SSID); + +    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:     +    status = WiFi.begin(ssid, pass); +    // wait 10 seconds for connection: +    delay(10000); +  }  +  server.begin();                           // start the web server on port 80 +  printWifiStatus();                        // you're connected now, so print out the status +} + + +void loop() { +  WiFiClient client = server.available();   // listen for incoming clients + +  if (client) {                             // if you get a client, +    Serial.println("new client");           // print a message out the serial port +    String currentLine = "";                // make a String to hold incoming data from the client +    while (client.connected()) {            // loop while the client's connected +      if (client.available()) {             // if there's bytes to read from the client, +        char c = client.read();             // read a byte, then +        Serial.write(c);                    // print it out the serial monitor +        if (c == '\n') {                    // if the byte is a newline character + +          // if the current line is blank, you got two newline characters in a row. +          // that's the end of the client HTTP request, so send a response: +          if (currentLine.length() == 0) {   +            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK) +            // and a content-type so the client knows what's coming, then a blank line:     +            client.println("HTTP/1.1 200 OK"); +            client.println("Content-type:text/html"); +            client.println(); + +            // the content of the HTTP response follows the header: +            client.print("Click <a href=\"/H\">here</a> turn the LED on pin 9 on<br>"); +            client.print("Click <a href=\"/L\">here</a> turn the LED on pin 9 off<br>"); + +            // The HTTP response ends with another blank line: +            client.println(); +            // break out of the while loop: +            break;          +          }  +          else {      // if you got a newline, then clear currentLine: +            currentLine = ""; +          } +        }      +        else if (c != '\r') {    // if you got anything else but a carriage return character, +          currentLine += c;      // add it to the end of the currentLine +        } + +        // Check to see if the client request was "GET /H" or "GET /L": +        if (currentLine.endsWith("GET /H")) { +          digitalWrite(9, HIGH);               // GET /H turns the LED on +        } +        if (currentLine.endsWith("GET /L")) { +          digitalWrite(9, LOW);                // GET /L turns the LED off +        } +      } +    } +    // close the connection: +    client.stop(); +    Serial.println("client disonnected"); +  } +} + +void printWifiStatus() { +  // print the SSID of the network you're attached to: +  Serial.print("SSID: "); +  Serial.println(WiFi.SSID()); + +  // print your WiFi shield's IP address: +  IPAddress ip = WiFi.localIP(); +  Serial.print("IP Address: "); +  Serial.println(ip); + +  // print the received signal strength: +  long rssi = WiFi.RSSI(); +  Serial.print("signal strength (RSSI):"); +  Serial.print(rssi); +  Serial.println(" dBm"); +  // print where to go in a browser: +  Serial.print("To see this page in action, open a browser to http://"); +  Serial.println(ip); +} diff --git a/libraries/WiFi/examples/WiFiChatServer/WiFiChatServer.ino b/libraries/WiFi/examples/WiFiChatServer/WiFiChatServer.ino new file mode 100644 index 0000000..e4b1d1a --- /dev/null +++ b/libraries/WiFi/examples/WiFiChatServer/WiFiChatServer.ino @@ -0,0 +1,111 @@ +/* + Chat  Server +  + A simple server that distributes any incoming messages to all + connected clients.  To use telnet to  your device's IP address and type. + You can see the client's input in the serial monitor as well. +  + This example is written for a network using WPA encryption. For  + WEP or WPA, change the Wifi.begin() call accordingly. +  +  + Circuit: + * WiFi shield attached +  + created 18 Dec 2009 + by David A. Mellis + modified 31 May 2012 + by Tom Igoe +  + */ + +#include <SPI.h> +#include <WiFi.h> + +char ssid[] = "yourNetwork"; //  your network SSID (name)  +char pass[] = "secretPassword";    // your network password (use for WPA, or use as key for WEP) + +int keyIndex = 0;            // your network key Index number (needed only for WEP) + +int status = WL_IDLE_STATUS; + +WiFiServer server(23); + +boolean alreadyConnected = false; // whether or not the client was connected previously + +void setup() { +  //Initialize serial and wait for port to open: +  Serial.begin(9600);  +  while (!Serial) { +    ; // wait for serial port to connect. Needed for Leonardo only +  } +   +  // check for the presence of the shield: +  if (WiFi.status() == WL_NO_SHIELD) { +    Serial.println("WiFi shield not present");  +    // don't continue: +    while(true); +  }  +   +  // attempt to connect to Wifi network: +  while ( status != WL_CONNECTED) {  +    Serial.print("Attempting to connect to SSID: "); +    Serial.println(ssid); +    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:     +    status = WiFi.begin(ssid, pass); + +    // wait 10 seconds for connection: +    delay(10000); +  }  +  // start the server: +  server.begin(); +  // you're connected now, so print out the status: +  printWifiStatus(); + } + + +void loop() { +  // wait for a new client: +  WiFiClient client = server.available(); + + +  // when the client sends the first byte, say hello: +  if (client) { +    if (!alreadyConnected) { +      // clead out the input buffer: +      client.flush();     +      Serial.println("We have a new client"); +      client.println("Hello, client!");  +      alreadyConnected = true; +    }  + +    if (client.available() > 0) { +      // read the bytes incoming from the client: +      char thisChar = client.read(); +      // echo the bytes back to the client: +      server.write(thisChar); +      // echo the bytes to the server as well: +      Serial.write(thisChar); +    } +  } +} + + +void printWifiStatus() { +  // print the SSID of the network you're attached to: +  Serial.print("SSID: "); +  Serial.println(WiFi.SSID()); + +  // print your WiFi shield's IP address: +  IPAddress ip = WiFi.localIP(); +  Serial.print("IP Address: "); +  Serial.println(ip); + +  // print the received signal strength: +  long rssi = WiFi.RSSI(); +  Serial.print("signal strength (RSSI):"); +  Serial.print(rssi); +  Serial.println(" dBm"); +} + + diff --git a/libraries/WiFi/examples/WiFiPachubeClient/WiFiPachubeClient.ino b/libraries/WiFi/examples/WiFiPachubeClient/WiFiPachubeClient.ino new file mode 100644 index 0000000..f8ffc07 --- /dev/null +++ b/libraries/WiFi/examples/WiFiPachubeClient/WiFiPachubeClient.ino @@ -0,0 +1,190 @@ +/* +  Wifi Pachube sensor client +  + This sketch connects an analog sensor to Pachube (http://www.pachube.com) + using an Arduino Wifi shield. +  + This example is written for a network using WPA encryption. For  + WEP or WPA, change the Wifi.begin() call accordingly. +  + This example has been updated to use version 2.0 of the Pachube API.  + To make it work, create a feed with a datastream, and give it the ID + sensor1. Or change the code below to match your feed. +  + Circuit: + * Analog sensor attached to analog in 0 + * Wifi shield attached to pins 10, 11, 12, 13 +  + created 13 Mar 2012 + modified 31 May 2012 + by Tom Igoe + modified 8 Sept 2012 + by Scott Fitzgerald +  + This code is in the public domain. +  + */ +#include <SPI.h> +#include <WiFi.h> + +#define APIKEY         "YOUR API KEY GOES HERE" // replace your pachube api key here +#define FEEDID         00000                    // replace your feed ID +#define USERAGENT      "My Arduino Project"     // user agent is the project name + +char ssid[] = "yourNetwork";      //  your network SSID (name)  +char pass[] = "secretPassword";   // your network password + +int status = WL_IDLE_STATUS; + +// initialize the library instance: +WiFiClient client; +// if you don't want to use DNS (and reduce your sketch size) +// use the numeric IP instead of the name for the server: +IPAddress server(216,52,233,121);      // numeric IP for api.pachube.com +//char server[] = "api.pachube.com";   // name address for pachube API + +unsigned long lastConnectionTime = 0;          // last time you connected to the server, in milliseconds +boolean lastConnected = false;                 // state of the connection last time through the main loop +const unsigned long postingInterval = 10*1000; //delay between updates to pachube.com + +void setup() { +  //Initialize serial and wait for port to open: +  Serial.begin(9600);  +  while (!Serial) { +    ; // wait for serial port to connect. Needed for Leonardo only +  } +   +  // check for the presence of the shield: +  if (WiFi.status() == WL_NO_SHIELD) { +    Serial.println("WiFi shield not present");  +    // don't continue: +    while(true); +  }  +   +  // attempt to connect to Wifi network: +  while ( status != WL_CONNECTED) {  +    Serial.print("Attempting to connect to SSID: "); +    Serial.println(ssid); +    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:     +    status = WiFi.begin(ssid, pass); + +    // wait 10 seconds for connection: +    delay(10000); +  }  +  // you're connected now, so print out the status: +  printWifiStatus(); +} + + +void loop() { +  // read the analog sensor: +  int sensorReading = analogRead(A0);    + +  // if there's incoming data from the net connection. +  // send it out the serial port.  This is for debugging +  // purposes only: +  while (client.available()) { +    char c = client.read(); +    Serial.print(c); +  } + +  // if there's no net connection, but there was one last time +  // through the loop, then stop the client: +  if (!client.connected() && lastConnected) { +    Serial.println(); +    Serial.println("disconnecting."); +    client.stop(); +  } + +  // if you're not connected, and ten seconds have passed since +  // your last connection, then connect again and send data: +  if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) { +    sendData(sensorReading); +  } +  // store the state of the connection for next time through +  // the loop: +  lastConnected = client.connected(); +} + +// this method makes a HTTP connection to the server: +void sendData(int thisData) { +  // if there's a successful connection: +  if (client.connect(server, 80)) { +    Serial.println("connecting..."); +    // send the HTTP PUT request: +    client.print("PUT /v2/feeds/"); +    client.print(FEEDID); +    client.println(".csv HTTP/1.1"); +    client.println("Host: api.pachube.com"); +    client.print("X-ApiKey: "); +    client.println(APIKEY); +    client.print("User-Agent: "); +    client.println(USERAGENT); +    client.print("Content-Length: "); + +    // calculate the length of the sensor reading in bytes: +    // 8 bytes for "sensor1," + number of digits of the data: +    int thisLength = 8 + getLength(thisData); +    client.println(thisLength); + +    // last pieces of the HTTP PUT request: +    client.println("Content-Type: text/csv"); +    client.println("Connection: close"); +    client.println(); + +    // here's the actual content of the PUT request: +    client.print("sensor1,"); +    client.println(thisData); +   +  }  +  else { +    // if you couldn't make a connection: +    Serial.println("connection failed"); +    Serial.println(); +    Serial.println("disconnecting."); +    client.stop(); +  } +   // note the time that the connection was made or attempted: +  lastConnectionTime = millis(); +} + + +// This method calculates the number of digits in the +// sensor reading.  Since each digit of the ASCII decimal +// representation is a byte, the number of digits equals +// the number of bytes: + +int getLength(int someValue) { +  // there's at least one byte: +  int digits = 1; +  // continually divide the value by ten,  +  // adding one to the digit count for each +  // time you divide, until you're at 0: +  int dividend = someValue /10; +  while (dividend > 0) { +    dividend = dividend /10; +    digits++; +  } +  // return the number of digits: +  return digits; +} + +void printWifiStatus() { +  // print the SSID of the network you're attached to: +  Serial.print("SSID: "); +  Serial.println(WiFi.SSID()); + +  // print your WiFi shield's IP address: +  IPAddress ip = WiFi.localIP(); +  Serial.print("IP Address: "); +  Serial.println(ip); + +  // print the received signal strength: +  long rssi = WiFi.RSSI(); +  Serial.print("signal strength (RSSI):"); +  Serial.print(rssi); +  Serial.println(" dBm"); +} + + + diff --git a/libraries/WiFi/examples/WiFiPachubeClientString/WiFiPachubeClientString.ino b/libraries/WiFi/examples/WiFiPachubeClientString/WiFiPachubeClientString.ino new file mode 100644 index 0000000..243fe83 --- /dev/null +++ b/libraries/WiFi/examples/WiFiPachubeClientString/WiFiPachubeClientString.ino @@ -0,0 +1,177 @@ +/* +  Wifi Pachube sensor client with Strings +  + This sketch connects an analog sensor to Pachube (http://www.pachube.com) + using a Arduino Wifi shield. +  + This example is written for a network using WPA encryption. For  + WEP or WPA, change the Wifi.begin() call accordingly. +  + This example has been updated to use version 2.0 of the pachube.com API.  + To make it work, create a feed with a datastream, and give it the ID + sensor1. Or change the code below to match your feed. +  + This example uses the String library, which is part of the Arduino core from + version 0019.   +  + Circuit: + * Analog sensor attached to analog in 0 + * Wifi shield attached to pins 10, 11, 12, 13 +  + created 16 Mar 2012 + modified 31 May 2012 + by Tom Igoe + modified 8 Sept 2012 + by Scott Fitzgerald +  + This code is in the public domain. +  + */ + +#include <SPI.h> +#include <WiFi.h> + +#define APIKEY         "YOUR API KEY GOES HERE" // replace your pachube api key here +#define FEEDID         00000                    // replace your feed ID +#define USERAGENT      "My Arduino Project"     // user agent is the project name + +char ssid[] = "yourNetwork";      //  your network SSID (name)  +char pass[] = "secretPassword";   // your network password + +int status = WL_IDLE_STATUS; + +// initialize the library instance: +WiFiClient client; + +// if you don't want to use DNS (and reduce your sketch size) +// use the numeric IP instead of the name for the server: +//IPAddress server(216,52,233,121);      // numeric IP for api.pachube.com +char server[] = "api.pachube.com";   // name address for pachube API + +unsigned long lastConnectionTime = 0;          // last time you connected to the server, in milliseconds +boolean lastConnected = false;                 // state of the connection last time through the main loop +const unsigned long postingInterval = 10*1000;  //delay between updates to pachube.com + +void setup() { +  //Initialize serial and wait for port to open: +  Serial.begin(9600);  +  while (!Serial) { +    ; // wait for serial port to connect. Needed for Leonardo only +  } +   +  // check for the presence of the shield: +  if (WiFi.status() == WL_NO_SHIELD) { +    Serial.println("WiFi shield not present");  +    // don't continue: +    while(true); +  }  +   +  // attempt to connect to Wifi network: +  while ( status != WL_CONNECTED) {  +    Serial.print("Attempting to connect to SSID: "); +    Serial.println(ssid); +    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:     +    status = WiFi.begin(ssid, pass); + +    // wait 10 seconds for connection: +    delay(10000); +  }  +  // you're connected now, so print out the status: +  printWifiStatus(); +} + +void loop() { +  // read the analog sensor: +  int sensorReading = analogRead(A0);    +  // convert the data to a String to send it: + +  String dataString = "sensor1,"; +  dataString += sensorReading; + +  // you can append multiple readings to this String if your +  // pachube feed is set up to handle multiple values: +  int otherSensorReading = analogRead(A1); +  dataString += "\nsensor2,"; +  dataString += otherSensorReading; + +  // if there's incoming data from the net connection. +  // send it out the serial port.  This is for debugging +  // purposes only: +  while (client.available()) { +    char c = client.read(); +    Serial.print(c); +  } + +  // if there's no net connection, but there was one last time +  // through the loop, then stop the client: +  if (!client.connected() && lastConnected) { +    Serial.println(); +    Serial.println("disconnecting."); +    client.stop(); +  } + +  // if you're not connected, and ten seconds have passed since +  // your last connection, then connect again and send data:  +  if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) { +    sendData(dataString); +  } +  // store the state of the connection for next time through +  // the loop: +  lastConnected = client.connected(); +} + +// this method makes a HTTP connection to the server: +void sendData(String thisData) { +  // if there's a successful connection: +  if (client.connect(server, 80)) { +    Serial.println("connecting..."); +    // send the HTTP PUT request: +    client.print("PUT /v2/feeds/"); +    client.print(FEEDID); +    client.println(".csv HTTP/1.1"); +    client.println("Host: api.pachube.com"); +    client.print("X-ApiKey: "); +    client.println(APIKEY); +    client.print("User-Agent: "); +    client.println(USERAGENT); +    client.print("Content-Length: "); +    client.println(thisData.length()); + +    // last pieces of the HTTP PUT request: +    client.println("Content-Type: text/csv"); +    client.println("Connection: close"); +    client.println(); + +    // here's the actual content of the PUT request: +    client.println(thisData); +  }  +  else { +    // if you couldn't make a connection: +    Serial.println("connection failed"); +    Serial.println(); +    Serial.println("disconnecting."); +    client.stop(); +  } +  // note the time that the connection was made or attempted: +  lastConnectionTime = millis(); +} + + +void printWifiStatus() { +  // print the SSID of the network you're attached to: +  Serial.print("SSID: "); +  Serial.println(WiFi.SSID()); + +  // print your WiFi shield's IP address: +  IPAddress ip = WiFi.localIP(); +  Serial.print("IP Address: "); +  Serial.println(ip); + +  // print the received signal strength: +  long rssi = WiFi.RSSI(); +  Serial.print("signal strength (RSSI):"); +  Serial.print(rssi); +  Serial.println(" dBm"); +} + + diff --git a/libraries/WiFi/examples/WiFiTwitterClient/WiFiTwitterClient.ino b/libraries/WiFi/examples/WiFiTwitterClient/WiFiTwitterClient.ino new file mode 100644 index 0000000..d500cfb --- /dev/null +++ b/libraries/WiFi/examples/WiFiTwitterClient/WiFiTwitterClient.ino @@ -0,0 +1,163 @@ +/* +  Wifi Twitter Client with Strings +  + This sketch connects to Twitter using using an Arduino WiFi shield.  + It parses the XML returned, and looks for <text>this is a tweet</text> +  + This example is written for a network using WPA encryption. For  + WEP or WPA, change the Wifi.begin() call accordingly. +  + This example uses the String library, which is part of the Arduino core from + version 0019.   +  + Circuit: + * WiFi shield attached to pins 10, 11, 12, 13 +  + created 23 apr 2012 + modified 31 May 2012 + by Tom Igoe +  + This code is in the public domain. +  + */ +#include <SPI.h> +#include <WiFi.h> + +char ssid[] = "yourNetwork"; //  your network SSID (name)  +char pass[] = "password";    // your network password (use for WPA, or use as key for WEP) +int keyIndex = 0;            // your network key Index number (needed only for WEP) + +int status = WL_IDLE_STATUS; // status of the wifi connection + +// initialize the library instance: +WiFiClient client; + +const unsigned long requestInterval = 30*1000;    // delay between requests; 30 seconds + +// if you don't want to use DNS (and reduce your sketch size) +// use the numeric IP instead of the name for the server: +//IPAddress server(199,59,149,200);    // numeric IP for api.twitter.com +char server[] = "api.twitter.com";     // name address for twitter API + +boolean requested;                     // whether you've made a request since connecting +unsigned long lastAttemptTime = 0;     // last time you connected to the server, in milliseconds + +String currentLine = "";               // string to hold the text from server +String tweet = "";                     // string to hold the tweet +boolean readingTweet = false;          // if you're currently reading the tweet + +void setup() { +  // reserve space for the strings: +  currentLine.reserve(256); +  tweet.reserve(150); +  //Initialize serial and wait for port to open: +  Serial.begin(9600);  +  while (!Serial) { +    ; // wait for serial port to connect. Needed for Leonardo only +  } +   +  // check for the presence of the shield: +  if (WiFi.status() == WL_NO_SHIELD) { +    Serial.println("WiFi shield not present");  +    // don't continue: +    while(true); +  }  +   +  // attempt to connect to Wifi network: +  while ( status != WL_CONNECTED) {  +    Serial.print("Attempting to connect to SSID: "); +    Serial.println(ssid); +    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:     +    status = WiFi.begin(ssid, pass);   +  +    // wait 10 seconds for connection: +    delay(10000); +  }  +  // you're connected now, so print out the status: +  printWifiStatus(); +  connectToServer(); +} + +void loop() +{ +  if (client.connected()) { +    if (client.available()) { +      // read incoming bytes: +      char inChar = client.read(); + +      // add incoming byte to end of line: +      currentLine += inChar;  + +      // if you get a newline, clear the line: +      if (inChar == '\n') { +        currentLine = ""; +      }  +      // if the current line ends with <text>, it will +      // be followed by the tweet: +      if ( currentLine.endsWith("<text>")) { +        // tweet is beginning. Clear the tweet string: +        readingTweet = true;  +        tweet = ""; +        // break out of the loop so this character isn't added to the tweet: +        return; +      } +      // if you're currently reading the bytes of a tweet, +      // add them to the tweet String: +      if (readingTweet) { +        if (inChar != '<') { +          tweet += inChar; +        }  +        else { +          // if you got a "<" character, +          // you've reached the end of the tweet: +          readingTweet = false; +          Serial.println(tweet);    +          // close the connection to the server: +          client.stop();  +        } +      } +    }    +  } +  else if (millis() - lastAttemptTime > requestInterval) { +    // if you're not connected, and two minutes have passed since +    // your last connection, then attempt to connect again: +    connectToServer(); +  } +} + +void connectToServer() { +  // attempt to connect, and wait a millisecond: +  Serial.println("connecting to server..."); +  if (client.connect(server, 80)) { +    Serial.println("making HTTP request..."); +    // make HTTP GET request to twitter: +    client.println("GET /1/statuses/user_timeline.xml?screen_name=arduino HTTP/1.1"); +    client.println("Host: api.twitter.com"); +    client.println("Connection: close"); +    client.println(); +  } +  // note the time of this connect attempt: +  lastAttemptTime = millis(); +}    + + +void printWifiStatus() { +  // print the SSID of the network you're attached to: +  Serial.print("SSID: "); +  Serial.println(WiFi.SSID()); + +  // print your WiFi shield's IP address: +  IPAddress ip = WiFi.localIP(); +  Serial.print("IP Address: "); +  Serial.println(ip); + +  // print the received signal strength: +  long rssi = WiFi.RSSI(); +  Serial.print("signal strength (RSSI):"); +  Serial.print(rssi); +  Serial.println(" dBm"); +} + + + + diff --git a/libraries/WiFi/examples/WiFiUdpNtpClient/WiFiUdpNtpClient.ino b/libraries/WiFi/examples/WiFiUdpNtpClient/WiFiUdpNtpClient.ino new file mode 100644 index 0000000..dd8b003 --- /dev/null +++ b/libraries/WiFi/examples/WiFiUdpNtpClient/WiFiUdpNtpClient.ino @@ -0,0 +1,182 @@ +/* + + Udp NTP Client +  + Get the time from a Network Time Protocol (NTP) time server + Demonstrates use of UDP sendPacket and ReceivePacket  + For more on NTP time servers and the messages needed to communicate with them,  + see http://en.wikipedia.org/wiki/Network_Time_Protocol +  + created 4 Sep 2010  + by Michael Margolis + modified 9 Apr 2012 + by Tom Igoe +  + This code is in the public domain. +  + */ + +#include <SPI.h>          +#include <WiFi.h> +#include <WiFiUdp.h> + +int status = WL_IDLE_STATUS; +char ssid[] = "mynetwork";  //  your network SSID (name) +char pass[] = "mypassword";       // your network password +int keyIndex = 0;            // your network key Index number (needed only for WEP) + +unsigned int localPort = 2390;      // local port to listen for UDP packets + +IPAddress timeServer(129, 6, 15, 28); // time.nist.gov NTP server + +const int NTP_PACKET_SIZE = 48; // NTP time stamp is in the first 48 bytes of the message + +byte packetBuffer[ NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets  + +// A UDP instance to let us send and receive packets over UDP +WiFiUDP Udp; + +void setup()  +{ +  // Open serial communications and wait for port to open: +  Serial.begin(9600); +  while (!Serial) { +    ; // wait for serial port to connect. Needed for Leonardo only +  } + +  // check for the presence of the shield: +  if (WiFi.status() == WL_NO_SHIELD) { +    Serial.println("WiFi shield not present");  +    // don't continue: +    while(true); +  }  + + +  // attempt to connect to Wifi network: +  while ( status != WL_CONNECTED) {  +    Serial.print("Attempting to connect to SSID: "); +    Serial.println(ssid); +    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:     +    status = WiFi.begin(ssid, pass); + +    // wait 10 seconds for connection: +    delay(10000); +  } + +  Serial.println("Connected to wifi"); +  printWifiStatus(); + +  Serial.println("\nStarting connection to server..."); +  Udp.begin(localPort); +} + +void loop() +{ +  sendNTPpacket(timeServer); // send an NTP packet to a time server +    // wait to see if a reply is available +  delay(1000);   +  Serial.println( Udp.parsePacket() ); +  if ( Udp.parsePacket() ) {  +    Serial.println("packet received");  +    // We've received a packet, read the data from it +    Udp.read(packetBuffer,NTP_PACKET_SIZE);  // read the packet into the buffer + +    //the timestamp starts at byte 40 of the received packet and is four bytes, +    // or two words, long. First, esxtract the two words: + +    unsigned long highWord = word(packetBuffer[40], packetBuffer[41]); +    unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]);   +    // combine the four bytes (two words) into a long integer +    // this is NTP time (seconds since Jan 1 1900): +    unsigned long secsSince1900 = highWord << 16 | lowWord;   +    Serial.print("Seconds since Jan 1 1900 = " ); +    Serial.println(secsSince1900);                + +    // now convert NTP time into everyday time: +    Serial.print("Unix time = "); +    // Unix time starts on Jan 1 1970. In seconds, that's 2208988800: +    const unsigned long seventyYears = 2208988800UL;      +    // subtract seventy years: +    unsigned long epoch = secsSince1900 - seventyYears;   +    // print Unix time: +    Serial.println(epoch);                                + + +    // print the hour, minute and second: +    Serial.print("The UTC time is ");       // UTC is the time at Greenwich Meridian (GMT) +    Serial.print((epoch  % 86400L) / 3600); // print the hour (86400 equals secs per day) +    Serial.print(':');   +    if ( ((epoch % 3600) / 60) < 10 ) { +      // In the first 10 minutes of each hour, we'll want a leading '0' +      Serial.print('0'); +    } +    Serial.print((epoch  % 3600) / 60); // print the minute (3600 equals secs per minute) +    Serial.print(':');  +    if ( (epoch % 60) < 10 ) { +      // In the first 10 seconds of each minute, we'll want a leading '0' +      Serial.print('0'); +    } +    Serial.println(epoch %60); // print the second +  } +  // wait ten seconds before asking for the time again +  delay(10000);  +} + +// send an NTP request to the time server at the given address  +unsigned long sendNTPpacket(IPAddress& address) +{ +  //Serial.println("1"); +  // set all bytes in the buffer to 0 +  memset(packetBuffer, 0, NTP_PACKET_SIZE);  +  // Initialize values needed to form NTP request +  // (see URL above for details on the packets) +  //Serial.println("2"); +  packetBuffer[0] = 0b11100011;   // LI, Version, Mode +  packetBuffer[1] = 0;     // Stratum, or type of clock +  packetBuffer[2] = 6;     // Polling Interval +  packetBuffer[3] = 0xEC;  // Peer Clock Precision +  // 8 bytes of zero for Root Delay & Root Dispersion +  packetBuffer[12]  = 49;  +  packetBuffer[13]  = 0x4E; +  packetBuffer[14]  = 49; +  packetBuffer[15]  = 52; +   +  //Serial.println("3"); + +  // all NTP fields have been given values, now +  // you can send a packet requesting a timestamp: 		    +  Udp.beginPacket(address, 123); //NTP requests are to port 123 +  //Serial.println("4"); +  Udp.write(packetBuffer,NTP_PACKET_SIZE); +  //Serial.println("5"); +  Udp.endPacket();  +  //Serial.println("6"); +} + + +void printWifiStatus() { +  // print the SSID of the network you're attached to: +  Serial.print("SSID: "); +  Serial.println(WiFi.SSID()); + +  // print your WiFi shield's IP address: +  IPAddress ip = WiFi.localIP(); +  Serial.print("IP Address: "); +  Serial.println(ip); + +  // print the received signal strength: +  long rssi = WiFi.RSSI(); +  Serial.print("signal strength (RSSI):"); +  Serial.print(rssi); +  Serial.println(" dBm"); +} + + + + + + + + + + diff --git a/libraries/WiFi/examples/WiFiUdpSendReceiveString/WiFiUdpSendReceiveString.ino b/libraries/WiFi/examples/WiFiUdpSendReceiveString/WiFiUdpSendReceiveString.ino new file mode 100644 index 0000000..eb11295 --- /dev/null +++ b/libraries/WiFi/examples/WiFiUdpSendReceiveString/WiFiUdpSendReceiveString.ino @@ -0,0 +1,112 @@ + +/* +  WiFi UDP Send and Receive String +  + This sketch wait an UDP packet on localPort using a WiFi shield. + When a packet is received an Acknowledge packet is sent to the client on port remotePort +  + Circuit: + * WiFi shield attached +  + created 30 December 2012 + by dlf (Metodo2 srl) + + */ + + +#include <SPI.h> +#include <WiFi.h> +#include <WiFiUdp.h> + +int status = WL_IDLE_STATUS; +char ssid[] = "yourNetwork"; //  your network SSID (name)  +char pass[] = "secretPassword";    // your network password (use for WPA, or use as key for WEP) +int keyIndex = 0;            // your network key Index number (needed only for WEP) + +unsigned int localPort = 2390;      // local port to listen on + +char packetBuffer[255]; //buffer to hold incoming packet +char  ReplyBuffer[] = "acknowledged";       // a string to send back + +WiFiUDP Udp; + +void setup() { +  //Initialize serial and wait for port to open: +  Serial.begin(9600);  +  while (!Serial) { +    ; // wait for serial port to connect. Needed for Leonardo only +  } +   +  // check for the presence of the shield: +  if (WiFi.status() == WL_NO_SHIELD) { +    Serial.println("WiFi shield not present");  +    // don't continue: +    while(true); +  }  +   +  // attempt to connect to Wifi network: +  while ( status != WL_CONNECTED) {  +    Serial.print("Attempting to connect to SSID: "); +    Serial.println(ssid); +    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:     +    status = WiFi.begin(ssid); +   +    // wait 10 seconds for connection: +    delay(10000); +  }  +  Serial.println("Connected to wifi"); +  printWifiStatus(); +   +  Serial.println("\nStarting connection to server..."); +  // if you get a connection, report back via serial: +  Udp.begin(localPort);   +} + +void loop() { +     +  // if there's data available, read a packet +  int packetSize = Udp.parsePacket(); +  if(packetSize) +  {    +    Serial.print("Received packet of size "); +    Serial.println(packetSize); +    Serial.print("From "); +    IPAddress remoteIp = Udp.remoteIP(); +    Serial.print(remoteIp); +    Serial.print(", port "); +    Serial.println(Udp.remotePort()); + +    // read the packet into packetBufffer +    int len = Udp.read(packetBuffer,255); +    if (len >0) packetBuffer[len]=0; +    Serial.println("Contents:"); +    Serial.println(packetBuffer); +     +    // send a reply, to the IP address and port that sent us the packet we received +    Udp.beginPacket(Udp.remoteIP(), Udp.remotePort()); +    Udp.write(ReplyBuffer); +    Udp.endPacket(); +   } +} + + +void printWifiStatus() { +  // print the SSID of the network you're attached to: +  Serial.print("SSID: "); +  Serial.println(WiFi.SSID()); + +  // print your WiFi shield's IP address: +  IPAddress ip = WiFi.localIP(); +  Serial.print("IP Address: "); +  Serial.println(ip); + +  // print the received signal strength: +  long rssi = WiFi.RSSI(); +  Serial.print("signal strength (RSSI):"); +  Serial.print(rssi); +  Serial.println(" dBm"); +} + + + + diff --git a/libraries/WiFi/examples/WiFiWebClient/WiFiWebClient.ino b/libraries/WiFi/examples/WiFiWebClient/WiFiWebClient.ino new file mode 100644 index 0000000..310ec46 --- /dev/null +++ b/libraries/WiFi/examples/WiFiWebClient/WiFiWebClient.ino @@ -0,0 +1,121 @@ + +/* +  Web client +  + This sketch connects to a website (http://www.google.com) + using a WiFi shield. +  + This example is written for a network using WPA encryption. For  + WEP or WPA, change the Wifi.begin() call accordingly. +  + This example is written for a network using WPA encryption. For  + WEP or WPA, change the Wifi.begin() call accordingly. +  + Circuit: + * WiFi shield attached +  + created 13 July 2010 + by dlf (Metodo2 srl) + modified 31 May 2012 + by Tom Igoe + */ + + +#include <SPI.h> +#include <WiFi.h> + +char ssid[] = "yourNetwork"; //  your network SSID (name)  +char pass[] = "secretPassword";    // your network password (use for WPA, or use as key for WEP) +int keyIndex = 0;            // your network key Index number (needed only for WEP) + +int status = WL_IDLE_STATUS; +// if you don't want to use DNS (and reduce your sketch size) +// use the numeric IP instead of the name for the server: +//IPAddress server(74,125,232,128);  // numeric IP for Google (no DNS) +char server[] = "www.google.com";    // name address for Google (using DNS) + +// Initialize the Ethernet client library +// with the IP address and port of the server  +// that you want to connect to (port 80 is default for HTTP): +WiFiClient client; + +void setup() { +  //Initialize serial and wait for port to open: +  Serial.begin(9600);  +  while (!Serial) { +    ; // wait for serial port to connect. Needed for Leonardo only +  } +   +  // check for the presence of the shield: +  if (WiFi.status() == WL_NO_SHIELD) { +    Serial.println("WiFi shield not present");  +    // don't continue: +    while(true); +  }  +   +  // attempt to connect to Wifi network: +  while (status != WL_CONNECTED) {  +    Serial.print("Attempting to connect to SSID: "); +    Serial.println(ssid); +    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:     +    status = WiFi.begin(ssid, pass); +   +    // wait 10 seconds for connection: +    delay(10000); +  }  +  Serial.println("Connected to wifi"); +  printWifiStatus(); +   +  Serial.println("\nStarting connection to server..."); +  // if you get a connection, report back via serial: +  if (client.connect(server, 80)) { +    Serial.println("connected to server"); +    // Make a HTTP request: +    client.println("GET /search?q=arduino HTTP/1.1"); +    client.println("Host: www.google.com"); +    client.println("Connection: close"); +    client.println(); +  } +} + +void loop() { +  // if there are incoming bytes available  +  // from the server, read them and print them: +  while (client.available()) { +    char c = client.read(); +    Serial.write(c); +  } + +  // if the server's disconnected, stop the client: +  if (!client.connected()) { +    Serial.println(); +    Serial.println("disconnecting from server."); +    client.stop(); + +    // do nothing forevermore: +    while(true); +  } +} + + +void printWifiStatus() { +  // print the SSID of the network you're attached to: +  Serial.print("SSID: "); +  Serial.println(WiFi.SSID()); + +  // print your WiFi shield's IP address: +  IPAddress ip = WiFi.localIP(); +  Serial.print("IP Address: "); +  Serial.println(ip); + +  // print the received signal strength: +  long rssi = WiFi.RSSI(); +  Serial.print("signal strength (RSSI):"); +  Serial.print(rssi); +  Serial.println(" dBm"); +} + + + + + diff --git a/libraries/WiFi/examples/WiFiWebClientRepeating/WiFiWebClientRepeating.ino b/libraries/WiFi/examples/WiFiWebClientRepeating/WiFiWebClientRepeating.ino new file mode 100644 index 0000000..96eb628 --- /dev/null +++ b/libraries/WiFi/examples/WiFiWebClientRepeating/WiFiWebClientRepeating.ino @@ -0,0 +1,138 @@ +/* +  Repeating Wifi Web client +  + This sketch connects to a a web server and makes a request + using an Arduino Wifi shield. +  + Circuit: + * Wifi shield attached to pins 10, 11, 12, 13 +  + created 23 April 2012 + modifide 31 May 2012 + by Tom Igoe +  + http://arduino.cc/en/Tutorial/WifiWebClientRepeating + This code is in the public domain. + */ + +#include <SPI.h> +#include <WiFi.h> + +char ssid[] = "yourNetwork";      //  your network SSID (name)  +char pass[] = "secretPassword";   // your network password +int keyIndex = 0;            // your network key Index number (needed only for WEP) + +int status = WL_IDLE_STATUS; + +// Initialize the Wifi client library +WiFiClient client; + +// server address: +char server[] = "www.arduino.cc"; +//IPAddress server(64,131,82,241); + +unsigned long lastConnectionTime = 0;           // last time you connected to the server, in milliseconds +boolean lastConnected = false;                  // state of the connection last time through the main loop +const unsigned long postingInterval = 10*1000;  // delay between updates, in milliseconds + +void setup() { +  //Initialize serial and wait for port to open: +  Serial.begin(9600);  +  while (!Serial) { +    ; // wait for serial port to connect. Needed for Leonardo only +  } +   +  // check for the presence of the shield: +  if (WiFi.status() == WL_NO_SHIELD) { +    Serial.println("WiFi shield not present");  +    // don't continue: +    while(true); +  }  +   +  // attempt to connect to Wifi network: +  while ( status != WL_CONNECTED) {  +    Serial.print("Attempting to connect to SSID: "); +    Serial.println(ssid); +    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:     +    status = WiFi.begin(ssid, pass); + +    // wait 10 seconds for connection: +    delay(10000); +  }  +  // you're connected now, so print out the status: +  printWifiStatus(); +} + +void loop() { +  // if there's incoming data from the net connection. +  // send it out the serial port.  This is for debugging +  // purposes only: +  while (client.available()) { +    char c = client.read(); +    Serial.write(c); +  } + +  // if there's no net connection, but there was one last time +  // through the loop, then stop the client: +  if (!client.connected() && lastConnected) { +    Serial.println(); +    Serial.println("disconnecting."); +    client.stop(); +  } + +  // if you're not connected, and ten seconds have passed since +  // your last connection, then connect again and send data: +  if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) { +    httpRequest(); +  } +  // store the state of the connection for next time through +  // the loop: +  lastConnected = client.connected(); +} + +// this method makes a HTTP connection to the server: +void httpRequest() { +  // if there's a successful connection: +  if (client.connect(server, 80)) { +    Serial.println("connecting..."); +    // send the HTTP PUT request: +    client.println("GET /latest.txt HTTP/1.1"); +    client.println("Host: www.arduino.cc"); +    client.println("User-Agent: arduino-ethernet"); +    client.println("Connection: close"); +    client.println(); + +    // note the time that the connection was made: +    lastConnectionTime = millis(); +  }  +  else { +    // if you couldn't make a connection: +    Serial.println("connection failed"); +    Serial.println("disconnecting."); +    client.stop(); +  } +} + + +void printWifiStatus() { +  // print the SSID of the network you're attached to: +  Serial.print("SSID: "); +  Serial.println(WiFi.SSID()); + +  // print your WiFi shield's IP address: +  IPAddress ip = WiFi.localIP(); +  Serial.print("IP Address: "); +  Serial.println(ip); + +  // print the received signal strength: +  long rssi = WiFi.RSSI(); +  Serial.print("signal strength (RSSI):"); +  Serial.print(rssi); +  Serial.println(" dBm"); +} + + + + + + diff --git a/libraries/WiFi/examples/WiFiWebServer/WiFiWebServer.ino b/libraries/WiFi/examples/WiFiWebServer/WiFiWebServer.ino new file mode 100644 index 0000000..de861e8 --- /dev/null +++ b/libraries/WiFi/examples/WiFiWebServer/WiFiWebServer.ino @@ -0,0 +1,134 @@ +/* +  WiFi Web Server +  + A simple web server that shows the value of the analog input pins. + using a WiFi shield. +  + This example is written for a network using WPA encryption. For  + WEP or WPA, change the Wifi.begin() call accordingly. +  + Circuit: + * WiFi shield attached + * Analog inputs attached to pins A0 through A5 (optional) +  + created 13 July 2010 + by dlf (Metodo2 srl) + modified 31 May 2012 + by Tom Igoe + + */ + +#include <SPI.h> +#include <WiFi.h> + + +char ssid[] = "yourNetwork";      // your network SSID (name)  +char pass[] = "secretPassword";   // your network password +int keyIndex = 0;                 // your network key Index number (needed only for WEP) + +int status = WL_IDLE_STATUS; + +WiFiServer server(80); + +void setup() { +  //Initialize serial and wait for port to open: +  Serial.begin(9600);  +  while (!Serial) { +    ; // wait for serial port to connect. Needed for Leonardo only +  } +   +  // check for the presence of the shield: +  if (WiFi.status() == WL_NO_SHIELD) { +    Serial.println("WiFi shield not present");  +    // don't continue: +    while(true); +  }  +   +  // attempt to connect to Wifi network: +  while ( status != WL_CONNECTED) {  +    Serial.print("Attempting to connect to SSID: "); +    Serial.println(ssid); +    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:     +    status = WiFi.begin(ssid, pass); + +    // wait 10 seconds for connection: +    delay(10000); +  }  +  server.begin(); +  // you're connected now, so print out the status: +  printWifiStatus(); +} + + +void loop() { +  // listen for incoming clients +  WiFiClient client = server.available(); +  if (client) { +    Serial.println("new client"); +    // an http request ends with a blank line +    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>"); +          // output the value of each analog input pin +          for (int analogChannel = 0; analogChannel < 6; analogChannel++) { +            int sensorReading = analogRead(analogChannel); +            client.print("analog input "); +            client.print(analogChannel); +            client.print(" is "); +            client.print(sensorReading); +            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"); +  } +} + + +void printWifiStatus() { +  // print the SSID of the network you're attached to: +  Serial.print("SSID: "); +  Serial.println(WiFi.SSID()); + +  // print your WiFi shield's IP address: +  IPAddress ip = WiFi.localIP(); +  Serial.print("IP Address: "); +  Serial.println(ip); + +  // print the received signal strength: +  long rssi = WiFi.RSSI(); +  Serial.print("signal strength (RSSI):"); +  Serial.print(rssi); +  Serial.println(" dBm"); +} + | 
