[136] | 1 | /*
|
---|
| 2 | GSM Web Server
|
---|
| 3 |
|
---|
| 4 | A simple web server that shows the value of the analog input pins.
|
---|
| 5 | using a GSM shield.
|
---|
| 6 |
|
---|
| 7 | Circuit:
|
---|
| 8 | * GSM shield attached
|
---|
| 9 | * Analog inputs attached to pins A0 through A5 (optional)
|
---|
| 10 |
|
---|
| 11 | created 8 Mar 2012
|
---|
| 12 | by Tom Igoe
|
---|
| 13 | */
|
---|
| 14 |
|
---|
| 15 | // libraries
|
---|
| 16 | #include <GSM.h>
|
---|
| 17 |
|
---|
| 18 | // PIN Number
|
---|
| 19 | #define PINNUMBER ""
|
---|
| 20 |
|
---|
| 21 | // APN data
|
---|
| 22 | #define GPRS_APN "GPRS_APN" // replace your GPRS APN
|
---|
| 23 | #define GPRS_LOGIN "login" // replace with your GPRS login
|
---|
| 24 | #define GPRS_PASSWORD "password" // replace with your GPRS password
|
---|
| 25 |
|
---|
| 26 |
|
---|
| 27 | // initialize the library instance
|
---|
| 28 | GPRS gprs;
|
---|
| 29 | GSM gsmAccess; // include a 'true' parameter for debug enabled
|
---|
| 30 | GSMServer server(80); // port 80 (http default)
|
---|
| 31 |
|
---|
| 32 | // timeout
|
---|
| 33 | const unsigned long __TIMEOUT__ = 10 * 1000;
|
---|
| 34 |
|
---|
| 35 | void setup()
|
---|
| 36 | {
|
---|
| 37 | // initialize serial communications and wait for port to open:
|
---|
| 38 | Serial.begin(9600);
|
---|
| 39 | while (!Serial) {
|
---|
| 40 | ; // wait for serial port to connect. Needed for Leonardo only
|
---|
| 41 | }
|
---|
| 42 |
|
---|
| 43 | // connection state
|
---|
| 44 | boolean notConnected = true;
|
---|
| 45 |
|
---|
| 46 | // Start GSM shield
|
---|
| 47 | // If your SIM has PIN, pass it as a parameter of begin() in quotes
|
---|
| 48 | while (notConnected)
|
---|
| 49 | {
|
---|
| 50 | if ((gsmAccess.begin(PINNUMBER) == GSM_READY) &
|
---|
| 51 | (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY))
|
---|
| 52 | notConnected = false;
|
---|
| 53 | else
|
---|
| 54 | {
|
---|
| 55 | Serial.println("Not connected");
|
---|
| 56 | delay(1000);
|
---|
| 57 | }
|
---|
| 58 | }
|
---|
| 59 |
|
---|
| 60 | Serial.println("Connected to GPRS network");
|
---|
| 61 |
|
---|
| 62 | // start server
|
---|
| 63 | server.begin();
|
---|
| 64 |
|
---|
| 65 | //Get IP.
|
---|
| 66 | IPAddress LocalIP = gprs.getIPAddress();
|
---|
| 67 | Serial.println("Server IP address=");
|
---|
| 68 | Serial.println(LocalIP);
|
---|
| 69 | }
|
---|
| 70 |
|
---|
| 71 | void loop() {
|
---|
| 72 |
|
---|
| 73 |
|
---|
| 74 | // listen for incoming clients
|
---|
| 75 | GSMClient client = server.available();
|
---|
| 76 |
|
---|
| 77 |
|
---|
| 78 |
|
---|
| 79 | if (client)
|
---|
| 80 | {
|
---|
| 81 | while (client.connected())
|
---|
| 82 | {
|
---|
| 83 | if (client.available())
|
---|
| 84 | {
|
---|
| 85 | Serial.println("Receiving request!");
|
---|
| 86 | bool sendResponse = false;
|
---|
| 87 | while (char c = client.read()) {
|
---|
| 88 | if (c == '\n') sendResponse = true;
|
---|
| 89 | }
|
---|
| 90 |
|
---|
| 91 | // if you've gotten to the end of the line (received a newline
|
---|
| 92 | // character)
|
---|
| 93 | if (sendResponse)
|
---|
| 94 | {
|
---|
| 95 | // send a standard http response header
|
---|
| 96 | client.println("HTTP/1.1 200 OK");
|
---|
| 97 | client.println("Content-Type: text/html");
|
---|
| 98 | client.println();
|
---|
| 99 | client.println("<html>");
|
---|
| 100 | // output the value of each analog input pin
|
---|
| 101 | for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
|
---|
| 102 | client.print("analog input ");
|
---|
| 103 | client.print(analogChannel);
|
---|
| 104 | client.print(" is ");
|
---|
| 105 | client.print(analogRead(analogChannel));
|
---|
| 106 | client.println("<br />");
|
---|
| 107 | }
|
---|
| 108 | client.println("</html>");
|
---|
| 109 | //necessary delay
|
---|
| 110 | delay(1000);
|
---|
| 111 | client.stop();
|
---|
| 112 | }
|
---|
| 113 | }
|
---|
| 114 | }
|
---|
| 115 | }
|
---|
| 116 | }
|
---|
| 117 |
|
---|
| 118 |
|
---|