mirror of
https://github.com/arduino/Arduino.git
synced 2024-12-04 15:24:12 +01:00
afc368b01f
Fixes #2343
110 lines
2.4 KiB
C++
110 lines
2.4 KiB
C++
/*
|
|
Web client
|
|
|
|
This sketch connects to a website through a GSM shield. Specifically,
|
|
this example downloads the URL "http://arduino.cc/asciilogo.txt" and
|
|
prints it to the Serial monitor.
|
|
|
|
Circuit:
|
|
* GSM shield attached to an Arduino
|
|
* SIM card with a data plan
|
|
|
|
created 8 Mar 2012
|
|
by Tom Igoe
|
|
|
|
http://arduino.cc/en/Tutorial/GSMExamplesWebClient
|
|
|
|
*/
|
|
|
|
// libraries
|
|
#include <GSM.h>
|
|
|
|
// PIN Number
|
|
#define PINNUMBER ""
|
|
|
|
// APN data
|
|
#define GPRS_APN "GPRS_APN" // replace your GPRS APN
|
|
#define GPRS_LOGIN "login" // replace with your GPRS login
|
|
#define GPRS_PASSWORD "password" // replace with your GPRS password
|
|
|
|
// initialize the library instance
|
|
GSMClient client;
|
|
GPRS gprs;
|
|
GSM gsmAccess;
|
|
|
|
// URL, path & port (for example: arduino.cc)
|
|
char server[] = "arduino.cc";
|
|
char path[] = "/asciilogo.txt";
|
|
int port = 80; // port 80 is the default for HTTP
|
|
|
|
void setup()
|
|
{
|
|
// initialize serial communications and wait for port to open:
|
|
Serial.begin(9600);
|
|
while (!Serial) {
|
|
; // wait for serial port to connect. Needed for Leonardo only
|
|
}
|
|
|
|
Serial.println("Starting Arduino web client.");
|
|
// connection state
|
|
boolean notConnected = true;
|
|
|
|
// After starting the modem with GSM.begin()
|
|
// attach the shield to the GPRS network with the APN, login and password
|
|
while (notConnected)
|
|
{
|
|
if ((gsmAccess.begin(PINNUMBER) == GSM_READY) &
|
|
(gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY))
|
|
notConnected = false;
|
|
else
|
|
{
|
|
Serial.println("Not connected");
|
|
delay(1000);
|
|
}
|
|
}
|
|
|
|
Serial.println("connecting...");
|
|
|
|
// if you get a connection, report back via serial:
|
|
if (client.connect(server, port))
|
|
{
|
|
Serial.println("connected");
|
|
// Make a HTTP request:
|
|
client.print("GET ");
|
|
client.print(path);
|
|
client.println(" HTTP/1.1");
|
|
client.print("Host: ");
|
|
client.println(server);
|
|
client.println("Connection: close");
|
|
client.println();
|
|
}
|
|
else
|
|
{
|
|
// if you didn't get a connection to the server:
|
|
Serial.println("connection failed");
|
|
}
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
// if there are incoming bytes available
|
|
// from the server, read them and print them:
|
|
if (client.available())
|
|
{
|
|
char c = client.read();
|
|
Serial.print(c);
|
|
}
|
|
|
|
// if the server's disconnected, stop the client:
|
|
if (!client.available() && !client.connected())
|
|
{
|
|
Serial.println();
|
|
Serial.println("disconnecting.");
|
|
client.stop();
|
|
|
|
// do nothing forevermore:
|
|
for (;;)
|
|
;
|
|
}
|
|
}
|