Este programa conecta una placa Arduino o Genuino con la página de Arduino, http://arduino.cc ,
por medio del escudo GSM. A
continuación, imprime el contenido de la página en el monitor serie
del software de Arduino (IDE).
- Arduino o Genuino
-
Tarjeta SIM de datos habilitada
Circuito
Código
En primer lugar, importar la biblioteca de GSM
# include <GSM.h>
Las tarjetas SIM pueden tener un número PIN
que permite su funcionalidad. Definir
el PIN de su tarjeta SIM. Si su
tarjeta SIM no tiene PIN, puede dejarlo en blanco:
#define PinNumber ""
Definir una serie de constantes que
contienen información acerca de la red GPRS a la que va a conectar. Necesitará
el nombre de punto de acceso (APN), inicio de sesión (login) y contraseña
(password). Para
obtener esta información, póngase en contacto con su proveedor de red para la
información más actualizada. Esta
página tiene
alguna información acerca de los diversos ajustes de operador, pero puede no
estar actualizada.
#define GPRS_APN "GPRS_APN"
#define GPRS_LOGIN "login"
#define GPRS_PASSWORD "password"
#define GPRS_LOGIN "login"
#define GPRS_PASSWORD "password"
Inicializar instancias de las clases que
va a utilizar. Usted va a necesitar
las clases GSM, GPRS, y GSMClient.
GSMClient client;
GPRS gprs;
GSM gsmAccess;
GPRS gprs;
GSM gsmAccess;
Crear algunas variables para contener el
servidor, la ruta y el puerto que desea conectarse.
char server[] = "arduino.cc";
char path[] = "/";
int port = 80;
char path[] = "/";
int port = 80;
En setup, abra una conexión serie al ordenador. Después de abrir la conexión, envía un mensaje que indica que el programa se ha iniciado.
void setup(){
Serial.begin(9600);
Serial.println("Iniciando cliente web Arduino.");
Serial.begin(9600);
Serial.println("Iniciando cliente web Arduino.");
Crear una variable local para realizar un
seguimiento del estado de la conexión. Vamos
a usar esto para mantener el boceto de arranque hasta que la tarjeta SIM está
conectada a la red:
boolean notConnected = true;
Conectarse a la red llamando a
gsmAccess.begin ()
. Se necesita PIN de la tarjeta SIM como argumento. También podrá conectarse a la red GPRS utilizando gprs.attachGPRS ()
. Esto
requiere el APN, el inicio de sesión y la contraseña que ha declarado
anteriormente. Al colocar esto dentro
de un bucle while(),
puede comprobar continuamente el estado de la conexión y esperar a que ambos se
conectan realmente antes
de continuar.
while(notConnected)
{
if(gsmAccess.begin(PINNUMBER)==GSM_READY)
(gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD)==GPRS_READY))
notConnected = false;
else
{
Serial.println("No conectado");
delay(1000);
}
}
{
if(gsmAccess.begin(PINNUMBER)==GSM_READY)
(gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD)==GPRS_READY))
notConnected = false;
else
{
Serial.println("No conectado");
delay(1000);
}
}
Intentará conectarse al servidor utilizando
client.connect ().
connect ()
requiere dos argumentos, el servidor y el puerto. Una vez conectado al servidor, realizar una solicitud HTTP llamando client.print ()
. Una solicitud web típica se parece a "GET ruta de acceso HTTP / 1.0". print enviará el mensaje, al igual que lo haría un navegador.
if (client.connect(server, port))
{
Serial.println("Conectado");
client.print("Obtenido ");
client.print(path);
client.println(" HTTP/1.0");
client.println();
}
{
Serial.println("Conectado");
client.print("Obtenido ");
client.print(path);
client.println(" HTTP/1.0");
client.println();
}
Si la conexión con el
servidor no pudo realizarse, hacer tomar nota de ello en el monitor serie, y cerrar setup.
else
{
Serial.println("Fallo de conexion");}
}
}
Dentro
de loop,
comprobar para ver si hay bytes devueltos por el servidor. Si
es así, leerlos e imprimirlos en el monitor serie.
if (client.available())
{
char c = client.read();
Serial.print(c);
}
{
char c = client.read();
Serial.print(c);
}
Si se desconecta el servidor,
lo que se suele hacer una vez que se ha completado la solicitud HTTP, es detener el
cliente a nivel local y cerrar loop.
if (!client.available() && !client.connected())
{
Serial.println();
Serial.println("disconnecting.");
client.stop();
// do nothing forevermore:
for(;;)
;
}
}
{
Serial.println();
Serial.println("disconnecting.");
client.stop();
// do nothing forevermore:
for(;;)
;
}
}
Una vez que se carga el código,
abrir el monitor serie. Debería
ver el código HTML de http://arduino.cc imprimir
en pantalla cuando se recibe. Tarda
aproximadamente un minuto, por lo que no se preocupe si usted no tiene una
retroalimentación inmediata!
A continuación, el programa completo.
A continuación, el programa completo.
// Cliente Web // Este programa se conecta a un sitio web por medio de un escudo GSM. // Específicamente, este ejemplo descarga la URL "http://www.arduino.cc/asciilogo.txt" // y la imprime al monitor serie. // Circuito: // * Escudo GSM conectado a un Arduino // * Tarjeta SIM con un plan de datos //creado el 8 de Marzo de 2012 // por Tom Igoe http://www.arduino.cc/en/Tutorial/GSMExamplesWebClient // bibliotecas #include <GSM.h> // Numero de PIN #define PINNUMBER "" // APN data #define GPRS_APN "GPRS_APN" // reemplazar por su APN GPRS #define GPRS_LOGIN "login" // reemplazar por su login GPRS #define GPRS_PASSWORD "password" // reemplazar por su password GPRS // initializa la instancia biblioteca GSMClient client; GPRS gprs; GSM gsmAccess; // URL, path & port (por ejemplo: arduino.cc) char server[] = "arduino.cc"; char path[] = "/asciilogo.txt"; int port = 80; // el puerto 80 es el puerto por defecto para HTTP void setup() { // initializa la comunicacion serie y espera a que el puerto se abra: Serial.begin(9600); while (!Serial) { ; // espera a que el puerto este conectado. Solo necesario para USB nativo } Serial.println("Iniciando el cliente web Arduino."); // estado de la conexion boolean notConnected = true; // Despues de iniciar el modem con GSM.begin() // conectar el escudo a la red GPRS con el APN, login y password while (notConnected) { if ((gsmAccess.begin(PINNUMBER) == GSM_READY) & (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)) { notConnected = false; } else { Serial.println("No conectado"); delay(1000); } } Serial.println("Conectando..."); // si consigue una conexion, informa por el monitor serie: if (client.connect(server, port)) { Serial.println("Conectado"); // Make a HTTP request: client.print("CONSEGUIDA "); client.print(path); client.println(" HTTP/1.1"); client.print("Host: "); client.println(server); client.println("Conexion: Cerrar"); client.println(); } else { // Si usted no recibió una conexión con el servidor: Serial.println("Fallo de conexion"); } } void loop() { // Si hay bytes entrantes disponibles // desde el servidor, leerlos e imprimirlos: if (client.available()) { char c = client.read(); Serial.print(c); } // si el servidor se desconecta, detener el cliente: if (!client.available() && !client.connected()) { Serial.println(); Serial.println("Desconectando."); client.stop(); // no hace nada for (;;) ; } }
no funciona este codigo
ResponderEliminarno funciona
ResponderEliminar