Subido por Fabian Zambrana

Escudo Arduino GPRS - Geeetech Wiki

Anuncio
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
Arduino GPRS Shield
From Geeetech Wiki
Jump to: navigation, search
Contents
1 Introduction
2 Features
3 Application Ideas
4 Cautions
5 Hardware Diagram
6 Getting Started
6.1 Indicator LEDs
6.2 Power Up and Power Down the GPRS Shield
6.2.1 Power Up the GPRS Shield
6.2.2 Power Down the GPRS Shield
6.3 Serial Port(UART) Communication
6.4 Upload Sketch to Arduino
6.4.1 Step 1: Creating a test setup for the GPRS Shield
6.4.2 SoftwareSerial library Notes
6.5 A Simple Source Code Examples
7 Schematics
8 Resources
9 instructions to test the communication
9.1 FAQS
9.2 Tools
9.3 Steps
10 How to buy
Introduction
The GPRS Shield is based on SIM900 module from SIMCOM and compatible with Arduino and its clones. The GPRS Shield provides you a way to communicate
using the GSM cell phone network. The shield allows you to achieve SMS, MMS, GPRS and Audio via UART by sending AT commands (GSM 07.07 ,07.05 and
SIMCOM enhanced AT Commands). The shield also has the 12 GPIOs, 2 PWMs and an ADC of the SIM900 module(They are all 2V8 logic) present onboard.
Features
Quad-Band 850 / 900/ 1800 / 1900 MHz - would work on GSM networks in all countries across the world.
GPRS multi-slot class 10/8
GPRS mobile station class B
Compliant to GSM phase 2/2+
Class 4 (2 W @ 850 / 900 MHz)
Class 1 (1 W @ 1800 / 1900MHz)
Control via AT commands - Standard Commands: GSM 07.07 & 07.05 | Enhanced Commands: SIMCOM AT Commands.
Short Message Service - so that you can send small amounts of data over the network (ASCII or raw hexadecimal).
Embedded TCP/UDP stack - allows you to upload data to a web server.
RTC supported.
Selectable serial port.
Speaker and Headphone jacks
Low power consumption - 1.5mA(sleep mode)
Industrial Temperature Range - -40°C to +85 °C
Specifications
Application Ideas
M2M (Machine 2 Machine) Applicatoions.
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
1/17
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
Remote control of appliances.
Remote Weather station or a Wireless Sensor Network.
Vehicle Tracking System with a GPS module.
Cautions
Make sure your SIM card is unlocked.
The product is provided as is without an insulating enclosure. Please observe ESD precautions specially in dry (low humidity) weather.
The factory default setting for the GPRS Shield UART is 19200 bps 8-N-1. (Can be changed using AT commands).
Hardware Diagram
Power select - select the power supply for GPRS shield(external power or 5v of arduino)
Power jack - connected to external 4.8~5VDC power supply
Antenna interface - connected to external antenna
Serial port select - select either software serial port or hareware serial port to be connected to GPRS Shield
Hardware Serial - D0/D1 of Arduino
Software serial - D7/D8 of Arduino
Status LED - tell whether the power of SIM900 is on
Net light - tell the status about SIM900 linking to the net
UART of SIM900 - UART pins breakout of SIM900
Microphone - to answer the phone call
Speaker - to answer the phone call
GPIO,PWM and ADC of SIM900 - GPIO,PWM and ADC pins breakout of SIM900
Power key - power up and down for SIM900
Pins usage on Arduino
D0 - Unused if you select software serial port to communicate with GPRS Shield
D1 - Unused if you select software serial port to communicate with GPRS Shield
D2 - Unused
D3 - Unused
D4 - Unused
D5 - Unused
D6 - Unused
D7 - Used if you select software serial port to communicate with GPRS Shield
D8 - Used if you select software serial port to communicate with GPRS Shield
D9 - Used for software control the power up or down of the SIM900
D10 - Unused
D11 - Unused
D12 - Unused
D13 - Unused
D14(A0) - Unused
D15(A1) - Unused
D16(A2) - Unused
D17(A3) - Unused
D18(A4) - Unused
D19(A5) - Unused
Note: A4 and A5 are connected to the I2C pins on the SIM900. The SIM900 however cannot be accessed via the I2C .
Getting Started
Insert a unlock SIM card
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
2/17
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
Make sure the antenna pad buckled properly
Assemble the GSM antenna
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
3/17
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
Chooose communication port properly using the jumpers
Assemble GPRS shield to Arduino and download the sketch
Press power key about 2 seconds to turn on the GPRS shield
Indicator LEDs
There are three indicator LEDs(PWR(Green), Staus(Blue), Netlight(Red)) on the GPRS Shield, users can know about the working state of the shield based on the
three indicator LEDs. Detailed information please refer to the following table:
Power Up and Power Down the GPRS Shield
Power Up the GPRS Shield
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
4/17
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
The GPRS Shield can be turned on by two ways:
1, Hardware Triger; Press the ON/OFF Button about two seconds.The power up scenarios illustrates as following figure:
2, Software Triger; If use this way to power up the GPRS Shield, JP need to be soldered, then Digital Pin 9 of the Arduino will act as Software Triger port
and Digital Pin 9 can not be use as other purpose. Then give Digital Pin 9 a Turn on Impulse can power up the GPRS Shield. The power up scenarios
illustrates as following figure:
The following code is power up subroutine for Arduino if using software triger:
void powerUp()
{
pinMode(9, OUTPUT);
digitalWrite(9,LOW);
delay(1000);
digitalWrite(9,HIGH);
delay(2000);
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
5/17
19/8/2019
}
Escudo Arduino GPRS - Geeetech Wiki
digitalWrite(9,LOW);
delay(3000);
When power on procedure completes, the SIM900 will send out following result code to indicate the GPRS shield is ready to operate; When set as fixed baud rate,
the SIM900 will send out result code: RDY This result code does not appear when auto baud rate is active.
Power Down the GPRS Shield
The GPRS Shield can be turned off by following ways:
1, Normal power down procedure: Turn off the GPRS shield by using Hardware Triger; Press the ON/OFF Button about two seconds.
The power down scenarios illustrates as following figure:
2, Normal power down procedure: If JP is soldered, then give Digital Pin 9 of the Arduino(act as Software Triger) a Turn off Impulse can turn off the GPRS
Shield. The power down scenarios illustrates as following figure:
The following code is power down subroutine for Arduino if using software triger:
void powerDown()
{
pinMode(9, OUTPUT);
digitalWrite(9,LOW);
delay(1000);
digitalWrite(9,HIGH);
delay(2000);
digitalWrite(9,LOW);
delay(3000);
}
3, Normal power down procedure:Turn off the GPRS shield by sending AT command “AT+CPOWD=1” to SIM900 module.
When GPRS Shield power dowm in Normal power down procedure, the procedure lets the SIM900 log off from the network and allows the software to enter into a
secure state and save data before completely disconnecting the power supply. Before the completion of the power down procedure the SIM900 will send out result
code: NORMAL POWER DOWN
4, Over-voltage or Under-voltage Automatic Power Down: SIM900 will constantly monitor the voltage applied on the VBAT.
①If the voltage ≤ 3.3V, the following URC will be presented:
UNDER-VOLTAGE WARNNING
②If the voltage ≥ 4.7V, the following URC will be presented:
OVER-VOLTAGE WARNNING
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
6/17
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
③The uncritical voltage range is 3.2V to 4.8V. If the voltage > 4.8V or < 3.2V, SIM900 will be automatic power down soon. If the voltage < 3.2V, the following
URC will be presented:
UNDER-VOLTAGE POWER DOWN
④If the voltage > 4.8V, the following URC will be presented:
OVER-VOLTAGE POWER DOWN
5, Over-temperature or Under-temperature Automatic Power Down: SIM900 will constantly monitor the temperature of the module.
①If the temperature > 80℃, the following URC will be presented:
+CMTE:1
②If the temperature < -30℃, the following URC will be presented:
+CMTE:-1
③The uncritical temperature range is -40℃ to +85℃. If the temperature > +85℃ or < -40℃, the module will be automatic power down soon. If the temperature >
+85℃, the following URC will be presented:
+CMTE:2
④If the temperature < -40℃, the following URC will be presented:
+CMTE:-2
When the GPRS Shield encounters POWER DOWN scenario, the AT commands can not be executed. The SIM900 logs off from network and enters the POWER
DOWN mode, only the RTC is still active. POWER DOWN can also be indicated by STATUS LED(Blue), which is off in this mode.
Note:
To monitor the temperature, users can use the “AT+CMTE” command to read the temperature when GPRS Shield is powered on.
To monitor the supply voltage, users can use the “AT+CBC” command which includes a parameter: voltage value(in mV) when GPRS Shield is
powered on.
Serial Port(UART) Communication
The GPRS Shield is used UART protocol to communicate with an Arduino/Arduino clone; Users can use jumpers to connect (RX,TX) of the shield to either
Software Serial(D8,D7) or Hardware Serial(D1,D0) of the Arduino.Detailed information is showed as the following picture:
Note:
Not all Arduino boards support software serial on D7 and D8, For example Arduino Mega and Mega 2560 only support the following pins for RX: 10, 11, 12,
13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69. So Arduino Mega doesn't support soft serial on Pin D7 and D8. If using GPRS shield with Ardiuno Mega,
please use the hardware serial or use the jumper wires wiring GPRS TX and RX to the pins support interrupt on Ardiuno Mega. And not all pins on the
Leonardo support change interrupts, so only the following can be used for RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI). More information about
Softserial library please visit http://arduino.cc/en/Reference/SoftwareSerial
Users can use “AT+IPR=?” command to see supported baudrate, it will response a list of supported baudrate.
Los usuarios pueden usar "AT + IPR = x" (x es el valor de la velocidad de transmisión admitida) para establecer una velocidad de transmisión fija y guardar la
configuración en una memoria flash no volátil.
Subir boceto a Arduino
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
7/17
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
El siguiente boceto configura el clon Arduino / Arduino como enlace en serie entre la PC y el escudo GPRS (puentes en el lado de la serie). La PC necesitaría un
software de terminal en serie para comunicarse con ella: el HyperTerminal incorporado de Windows, el Monitor en serie de Arduino IDE, los Terminales en serie
(sscom32) o el Terminal Bray ++ .
El GPRS Shield viene con todos los accesorios que necesita para comenzar a enviar datos a través de la red GSM, excepto una placa Arduino y una tarjeta SIM
GSM. Si desea realizar llamadas de voz, también necesitará unos auriculares con micrófono.
Paso 1: crear una configuración de prueba para el escudo GPRS
Los comandos AT son simples comandos de texto enviados al módem GPRS a través de su interfaz en serie (UART), por lo que puede utilizar cualquier software de
terminal en serie para comunicarse con él.
Nota: Casi todos los comandos AT deben enviarse seguidos de retorno de carro y debe seleccionar la opción "+ CR" en el terminal del puerto serie. Para
experimentar con los comandos AT, necesitaría una forma de encender y comunicarse con su GPRS Proteger. La mejor manera de hacerlo con una placa Arduino
Duemilanove.
1. Siga los pasos de instalación de hardware descritos anteriormente para configurar el sistema de hardware;
2. Asegúrese de que los puentes GPRS_TX y GPRS_RX del GPRS Shield estén montados en la posición SWSerial; es decir, queremos que GPRS_TX esté
conectado a D7 (RX) y GPRS_RX a D8 (TX).
3. Conecte el Arduino Duemilanove a su computadora con un cable USB.
4. El microcontrolador ATmega328P en la placa Duemilanove tiene solo un UART que se utiliza para comunicarse con la PC. Lo que necesitamos es un Arduino
Sketch que se ejecute dentro del ATmega328P que emule un segundo puerto serie (UART) utilizando software en los pines digitales D8 y D7 y conecte a
través de toda la comunicación entre este segundo puerto serie de software y el puerto serie de hardware real. Al hacer esto, todos los datos provenientes de la
computadora (conectados al UART de hardware real) se enrutarían al Escudo GPRS (conectado al software UART), entonces podríamos emitir comandos AT
para controlar el Escudo GPRS. El diagrama de bloques que describe este esquema se muestra a continuación.
Para desarrollar dicho programa, necesitamos usar la biblioteca SoftwareSerial incluida en las bibliotecas de Arduino 1.0 y el código de demostración a
continuación.
// Retransmisión en serie: Arduino parcheará un
// enlace serial entre la computadora y el escudo GPRS
// a 19200 bps 8-N-1
// La computadora está conectada al hardware UART
// GPRS Shield está conectado al software UART
#include <SoftwareSerial.h>
Software Serial GPRS (7, 8);
búfer de caracteres sin signo [64]; // matriz de búfer para recibir datos a través del puerto serie
int cuenta = 0; // contador para la matriz de búfer
configuración nula ()
{
GPRS.begin (19200); // la velocidad de transmisión GPRS
Serial.begin (19200); // el puerto serie de la velocidad en baudios de Arduino.
}
bucle vacío ()
{
if (GPRS.available ()) // si la fecha proviene del puerto serie del software ==> los datos provienen del escudo gprs
{
while (GPRS.available ()) // leer datos en una matriz de caracteres
{
buffer [cuenta ++] = GPRS.read (); // escribir datos en una matriz
if (cuenta == 64) descanso;
}
Serial.write (buffer, count); // si no finaliza la transmisión de datos, escriba el búfer en el puerto serie del hardware
clearBufferArray (); // llama a la función clearBufferArray para borrar los datos almacenados de la matriz
cuenta = 0; // establece el contador del ciclo while en cero
}
if (Serial.available ()) // si los datos están disponibles en el puerto hardwareserial ==> los datos provienen de la PC o notebook
GPRS.write (Serial.read ()); // escríbelo en el escudo GPRS
}
void clearBufferArray () // función para borrar la matriz de búfer
{
para (int i = 0; i <cuenta; i ++)
{buffer [i] = NULL;} // borra todo el índice de la matriz con el comando NULL
}
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
8/17
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
1. Cargue el boceto en la placa Arduino.
2. . Descargue y encienda la herramienta en serie si no tiene una. Elija el puerto COM correcto para Arduino, configúrelo para que funcione en 19200 8-N-1 y
luego haga clic en "Abrir Com".
3. Puede encender o apagar el SIM900 presionando el botón aproximadamente 2 segundos. Después del encendido, el LED rojo estará encendido, y el verde al
lado parpadeará y el escudo ha encontrado la red si parpadea cada 3 segundos.
Además, en el monitor en serie debería ver mensajes del escudo como RDY
+ CFUN: 1
+ CPIN: LISTO
Llame listo
Si no puede ver los mensajes en el monitor en serie, debe hacer clic en la opción "enviar nuevo" que agregará el retorno de carro al final del comando AT y luego
enviar el comando AT "AT + IPR = 19200" para establecer la velocidad en baudios de El SIM900.
Paso 2: enviar un mensaje de texto (SMS)
Ahora que nuestra configuración de prueba está lista, juguemos con algunos comandos AT manualmente antes de pasar a programar el Arduino para hacer esto.
Intentemos enviar un SMS para comenzar.
1. .Cree la configuración como se describe en el Paso 1 anterior.
2. A través de su software de terminal en serie, envíe AT + CMGF = 1 y presione la tecla Intro. El escudo GPRS puede enviar SMS en dos modos: modo de texto
y modo PDU (o binario). Como deseamos enviar un mensaje legible por humanos, seleccionaremos el modo de texto. El escudo GPRS responderá con un OK.
3. Haga clic en la opción "enviar nuevo" y envíe AT + CMGS = "+ 918446043032". Esto le indicará a GPRS Shield que comience a aceptar texto para un nuevo
mensaje destinado al número de teléfono especificado (reemplace el número con el número de teléfono del teléfono objetivo). GPRS Shield enviará un> para
recordarle que debe escribir el mensaje.
1. .Comience a escribir su mensaje y cuando haya terminado, haga clic en la opción "enviar hexadecimal" y luego envíe un hexadecimal: 1A. El módem aceptará
el mensaje y responderá con un OK. Unos momentos más tarde, el mensaje debería recibirse en el teléfono cuyo número había especificado. Puede consultar
la imagen a continuación.
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
9/17
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
NOTA: Si, a pesar de seguir los pasos especificados anteriormente, no puede recibir el mensaje en el teléfono de destino, es posible que necesite configurar el
número del Centro de mensajes SMS. Envíe el comando AT + CSCA = "+ 919032055002" y presione la tecla Intro. Envíe este comando entre los comandos AT +
CMGF y AT + CMGS. Reemplace el número de teléfono especificado en el comando anterior con el número del Centro de SMS de su proveedor de servicios GSM.
El número del centro de mensajes es específico para cada proveedor de servicios (por ejemplo, +919032055002 es el número del centro de mensajes para Tata
DoCoMo, Pune, India). Puede obtener el número del centro de mensajes llamando al centro de atención al cliente del proveedor de servicios GSM y solicitándolo.
Notas de la biblioteca de software
Con Arduino 1.0 debería poder usar la biblioteca SoftwareSerial incluida con la distribución (en lugar de NewSoftSerial). Sin embargo, debe tener en cuenta que el
búfer reservado para los mensajes entrantes está codificado a 64 bytes en el encabezado de la biblioteca, "SoftwareSerial.h": 1.define _SS_MAX_RX_BUFF 64 //
Tamaño del búfer RX
Esto significa que si el módulo GPRS responde con más datos que eso, ¡es probable que lo pierda con un desbordamiento del búfer! Por ejemplo, al leer un SMS del
módulo con "AT + CMGR = xx" (xx es el índice del mensaje), es posible que ni siquiera vea la parte del mensaje porque la información del encabezado anterior
(como el número de teléfono y el tiempo) ocupa mucho del espacio. La solución parece ser cambiar manualmente _SS_MAX_RX_BUFF a un valor más alto (¡pero
razonable para que no use toda su preciosa memoria!)
La biblioteca de Softwareserial tiene las siguientes limitaciones (tomadas de la página de arduino) Si usa múltiples puertos seriales de software, solo uno puede
recibir datos a la vez. http://arduino.cc/hu/Reference/SoftwareSerial Esto significa que si intenta agregar otro dispositivo en serie, es decir, grove serial LCD, puede
obtener errores de comunicación a menos que cree su código cuidadosamente.
Un ejemplo de código fuente simple
El código de demostración a continuación es para que Xduino envíe mensajes SMS / marque una llamada de voz / envíe una solicitud http a un sitio web y cargue
datos en el pachube. Se ha probado en Arduino Duemilanove pero funcionará en cualquier variante compatible, tenga en cuenta que este boceto utiliza el sorfware
UART de ATmega328P. siga los siguientes pasos para ejecutar este boceto.
1. Con el escudo GPRS eliminado, descargue este boceto en su Arduino.
2. . Desconecte el Xduino del puerto USB para eliminar la fuente de alimentación.
3. Configure los puentes del puerto serie en el escudo GPRS en la posición SWserial para utilizar el puerto serie suave de Arduino.
4. .Conecte la antena al GPRS Shield e inserte la tarjeta SIM.
5. .Montar el escudo GPRS en Arduino.
6. .Conecte el Arduino a la computadora por USB, y encienda su software de terminal serial favorito en la computadora, elija el puerto COM para Arduino,
configúrelo para operar en 19200 8-N-1.
7. Escriba el comando en el terminal para ejecutar diferentes funciones, hay 4 funciones en la demostración:
1. Si ingresas 't', la demostración enviará un mensaje SMS a otro teléfono celular que configures (debes configurar el número en el código);
2. Si ingresas 'd', el programa marcará una llamada al otro teléfono celular que configures (también es necesario que lo configures en el código);
3. Si ingresa 'h', enviará una solicitud http a la web a la que desea acceder (necesita establecer la dirección web en el código), devolverá una cadena del
sitio web si funciona correctamente;
4. Si ingresa 's', cargará los datos en el pachube (para más detalles, puede consultar la explicación en el código). Recomiendo encarecidamente que ingrese
'h' antes de la entrada 's', porque cargar datos en el pachube necesita realizar alguna configuración, después de ejecutar la función de enviar una solicitud
http, la configuración se establecerá.
8. .Si el programa devuelve un error en la terminal después de escribir el comando, no se preocupe, solo intente ingresar el comando nuevamente.
/ * Nota: este código es una demostración de cómo usar gprs shield para enviar mensajes SMS, marcar una llamada de voz y
enviar una solicitud http al sitio web, subir datos a pachube.com por conexión TCP,
Los microcontroladores Digital Pin 7 y por lo tanto permiten sin obstáculos
comunicación con GPRS Shield utilizando SoftSerial Library.
IDE: Arduino 1.0 o posterior
Reemplace los siguientes elementos en el código:
1.Número de teléfono, no olvides agregar el código del país
2. Reemplace el nombre del punto de acceso
3. Reemplace la clave API de Pachube con las personales asignadas
a su cuenta en cosm.com
* /
#include <SoftwareSerial.h>
#include <String.h>
SoftwareSerial mySerial (7, 8);
configuración nula ()
{
mySerial.begin (19200); // la velocidad de transmisión GPRS
Serial.begin (19200); // la velocidad de transmisión GPRS
retraso (500);
}
bucle vacío ()
{
// después de iniciar el programa, puedes usar el terminal para conectar la serie de gprs shield,
// si ingresas 't' en la terminal, el programa ejecutará SendTextMessage (), mostrará cómo enviar un mensaje SMS,
// si ingresa 'd' en el terminal, ejecutará DialVoiceCall (), etc.
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
10/17
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
if (Serial.available ())
conmutador (Serial.read ())
{
caso 't':
Envía un mensaje de texto();
rotura;
caso 'r':
RecieveTextMessage (); // Este código de programa por directiva'r'para recibir, al recibir la información después del retorno para llamar a la f
// para verificar la función de recepción. Pero no puede mostrar el contenido recibido en la SIM.
DialVoiceCall ();
rotura;
caso 'd':
DialVoiceCall ();
rotura;
caso 'h':
SubmitHttpRequest ();
rotura;
casos':
Send2Pachube ();
rotura;
}
if (mySerial.available ())
Serial.write (mySerial.read ());
}
///Envía un mensaje de texto()
/// esta función es enviar un mensaje sms
void SendTextMessage ()
{
mySerial.print ("AT + CMGF = 1 \ r"); // Porque queremos enviar el SMS en modo texto
retraso (100);
mySerial.println ("AT + CMGS = \" + 86138xxxxx615 \ ""); // envíe un mensaje SMS, tenga cuidado de agregar un código de país antes del número de telé
retraso (100);
mySerial.println ("¡Un mensaje de prueba!"); // el contenido del mensaje
retraso (100);
mySerial.println ((char) 26); // el código ASCII de ctrl + z es 26
retraso (100);
mySerial.println ();
}
nulo RecieveTextMessage ()
{
//mySerial.print("AT+CMGF=1\r "); // Porque queremos recibir el SMS en modo texto
// retraso (100);
mySerial.print ("AT + CMGR = 1 \ r"); // Porque queremos recibir el SMS en modo texto
retraso (100);
mySerial.println ("AT + CSCA = \" + 86135 ********* \ ""); // recibir mensaje SMS, tenga cuidado de agregar un código de país antes del número de t
retraso (100);
mySerial.println ("¡Un mensaje de prueba!"); // el contenido del mensaje
retraso (100);
mySerial.println ((char) 26); // el código ASCII de ctrl + z es 26
retraso (100);
mySerial.println ();
// return r;
}
/// DialVoiceCall
/// esta función es para marcar una llamada de voz
anular DialVoiceCall ()
{
mySerial.println ("ATD + + 86138xxxxx615;"); // marca el número
retraso (100);
mySerial.println ();
}
/// SubmitHttpRequest ()
/// esta función es enviar una solicitud http
/// atención: el tiempo de retraso es muy importante, se debe configurar lo suficiente
void SubmitHttpRequest ()
{
mySerial.println ("AT + CSQ");
retraso (100);
ShowSerialData (); // este código es para mostrar los datos de gprs shield, para ver fácilmente el proceso de cómo el gprs shield presenta una solici
mySerial.println ("AT + CGATT?");
retraso (100);
ShowSerialData ();
mySerial.println ("AT + SAPBR = 3,1, \" CONTYPE \ ", \" GPRS \ ""); // configurando el SAPBR, el tipo de conexión está utilizando gprs
retraso (1000);
ShowSerialData ();
mySerial.println ("AT + SAPBR = 3,1, \" APN \ ", \" CMNET \ ""); // configurando el APN, el segundo debe completar su servidor apn local
retraso (4000);
ShowSerialData ();
mySerial.println ("AT + SAPBR = 1,1"); // configurando el SAPBR, para más detalles puede consultar el comando AT mamual
retraso (2000);
ShowSerialData ();
mySerial.println ("AT + HTTPINIT"); // inicia la solicitud HTTP
retraso (2000);
ShowSerialData ();
mySerial.println ("AT + HTTPPARA = \" URL \ ", \" www.google.com.hk \ ""); // configurando httppara, el segundo parámetro es el sitio web al que dese
retraso (1000);
ShowSerialData ();
mySerial.println ("AT + HTTPACTION = 0"); // envíe la solicitud
delay (10000); // el retraso es muy importante, el tiempo de retraso se basa en la devolución del sitio web, si los datos de devolución son muy grand
// while (! mySerial.available ());
ShowSerialData ();
mySerial.println ("AT + HTTPREAD"); // lea los datos del sitio web al que accede
retraso (300);
ShowSerialData ();
mySerial.println ("");
retraso (100);
}
/// send2Pachube () ///
/// esta función es enviar los datos del sensor al pachube, puede ver el nuevo valor en el pachube después de ejecutar esta función ///
nulo Send2Pachube ()
{
mySerial.println ("AT + CGATT?");
retraso (100);
ShowSerialData ();
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
11/17
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
mySerial.println ("AT + CSTT = \" CMNET \ ""); // inicia la tarea y configura el APN,
retraso (1000);
ShowSerialData ();
mySerial.println ("AT + CIICR"); // abre una conexión inalámbrica
retraso (300);
ShowSerialData ();
mySerial.println ("AT + CIFSR"); // obtener dirección IP local
retraso (2000);
ShowSerialData ();
mySerial.println ("AT + CIPSPRT = 0");
retraso (3000);
ShowSerialData ();
mySerial.println ("AT + CIPSTART = \" tcp \ ", \" api.cosm.com \ ", \" 8081 \ ""); // inicia la conexión
retraso (2000);
ShowSerialData ();
mySerial.println ("AT + CIPSEND"); // comenzar a enviar datos al servidor remoto
retraso (4000);
ShowSerialData ();
Stringidity = "1031"; // estos códigos de 4 líneas imitan los datos reales del sensor, porque la demostración no agregó otro sensor, por lo que se us
Stringidity = "1242"; // puede reemplazar estas cuatro variables por los datos reales del sensor en su proyecto
Temperatura de cadena = "30"; //
Barómetro de cuerda = "60.56"; //
mySerial.print ("{\" method \ ": \" put \ ", \" resource \ ": \" / feeds / 42742 / \ ", \" params \ ""); // aquí está el feed que aplica de pachube
retraso (500);
ShowSerialData ();
mySerial.print (": {}, \" headers \ ": {\" X-PachubeApiKey \ ":"); // aquí, debe reemplazar su pachubeapikey
retraso (500);
ShowSerialData ();
mySerial.print ("\" _ cXwr5LE8qW4a296O-cDwOUvfddFer5pGmaRigPsiO0 "); // pachubeapikey
retraso (500);
ShowSerialData ();
mySerial.print ("jEB9OjK-W6vej56j9ItaSlIac-hgbQjxExuveD95yc8BttXc"); // pachubeapikey
retraso (500);
ShowSerialData ();
mySerial.print ("Z7_seZqLVjeCOmNbEXUva45t6FL8AxOcuNSsQS \"}, \ "body \": ");
retraso (500);
ShowSerialData ();
mySerial.print ("{\" versión \ ": \" 1.0.0 \ ", \" datastreams \ ":");
retraso (500);
ShowSerialData ();
mySerial.println ("[{\" id \ ": \" 01 \ ", \" current_value \ ": \" "+ barometer +" \ "},");
retraso (500);
ShowSerialData ();
mySerial.println ("{\" id \ ": \" 02 \ ", \" current_value \ ": \" "+ humedad +" \ "},");
retraso (500);
ShowSerialData ();
mySerial.println ("{\" id \ ": \" 03 \ ", \" current_value \ ": \" "+ humedad +" \ "},");
retraso (500);
ShowSerialData ();
mySerial.println ("{\" id \ ": \" 04 \ ", \" current_value \ ": \" "+ temperature +" \ "}]}, \" token \ ": \" lee \ "}" );
retraso (500);
ShowSerialData ();
mySerial.println ((char) 26); // envío
delay (5000); // esperando respuesta, ¡importante! el tiempo se basa en la condición de internet
mySerial.println ();
ShowSerialData ();
mySerial.println ("AT + CIPCLOSE"); // cierra la conexión
retraso (100);
ShowSerialData ();
}
nulo ShowSerialData ()
{
while (mySerial.available ()! = 0)
Serial.write (mySerial.read ());
}
Esquemas
Archivo: GPRSshield_sch.pdf
Recursos
Manual de comandos de SIM900 AT v1.03.pdf
SIM900_hd_v1.06.pdf
Nota de aplicación SIM900_TCP / IP
Si5902BDC - MOSFET duales de 30 V (DS) de canal N (utilizados para la traducción de 2.8V <> 5.0V para la interfaz en serie)
instrucciones para probar la comunicación
Si está utilizando un enrutador en lugar de un módem o un intercambiador, antes de realizar pruebas de red para el módulo GPRS, debe prestar atención a los
siguientes consejos.
1. Especifique una dirección IP fija para el host local, en lo sucesivo denominada "IP del host local".
2. Establezca una asignación de puertos en el enrutador y asigne el puerto a la IP del host local. Llamamos al puerto configurado "Puerto de host local". El puerto
host local está dentro de 0 y 65535.
3. Abra la página de inicio (Google), ingrese "IP" para verificar su IP pública.
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
12/17
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
Preguntas frecuentes
Q1. ¿Por qué debería especificar un "Puerto de host local" en el enrutador (asignación de puertos)?
ADSL marca a través de un enrutador y el host comparte la red a través del enrutador. En este caso, el host generalmente extrae IP privada como 192.168.xx por
tales razones, solo cuando especifica un 'Puerto de host local' en el enrutador (asignación de puertos) y lo reenvía al host local correspondiente, puede acceder a
Internet el host local a través de este puerto.
Q2 ¿Por qué debería especificar una IP privada fija para el host local?
La asignación de puertos es un proceso uno a uno. Si se especifica el host local para obtener IP automáticamente, la dirección IP probablemente cambiará cuando la
computadora se reinicie o se vuelva a conectar a la red. Por lo tanto, es necesario especificar una IP privada fija.
Herramientas
1. IDE de Arduino
2. Net Assist
3. STC-SIP
Pasos
1, Inicie "Net Assist", elija "servidor TCP" en los menús desplegables de "protocolo" (no se recomienda el servidor UDP), cambie la "IP del host local" a la IP fija.
Ingrese el "Puerto de host local" establecido antes y luego haga clic en "Conectar". Como se muestra en la siguiente imagen.
2, abra STC-ISP y haga clic en "COM Helper" Haga clic en "Puerto COM" y haga clic en 115200 en "Velocidad en baudios" (si el código es ilegible en RX Buffer,
luego vuelva a hacer clic en Velocidad en baudios), haga clic en "Abrir COM"
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
13/17
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
Ingrese el siguiente código en el cuadro de texto de "TX Buffer" y luego presione "Enter".
AT + CLPORT = "TCP", "2022"
Haga clic en "Enviar datos". Si el "RX Buffer" muestra "ok", es exitoso.
Okay
Ingrese en "TX Buffer" de la siguiente manera,
AT + CIPSTART = "TCP", "183.37.246.171", "10000"
(NB.IP "183.37.246.171" es una IP pública de Google; "10000" es el "Puerto de host local"). Y luego haga clic en "Enviar datos". Aparecerá el "RX Buffer"
Okay
CONECTAR OK
de la siguiente manera, lo que significa que los datos se han enviado con éxito. Ahora puede realizar la comunicación TCP.
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
14/17
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
3, verificar el éxito de la entrada de comunicación
AT + CIPSEND
en "TX Buffer", luego presione "Enter". Haga clic en "Enviar datos" y aparecerá el "RX Buffer"
>
como sigue.
Entrada
HOLA MUNDO
en "TX Buffer" y haga clic en "Enviar datos", marque "Modo HEX".
Mientras tanto, entrada
1A
para finalizar la instrucción y haga clic en "Enviar datos". Es exitoso cuando ves
ENVIAR OK
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
15/17
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
Ahora, "Helloword" aparecerá en "NetAssist".
Seleccione la dirección IP correspondiente y haga clic en "Enviar". El cuadro de diálogo "RX Buffer" en STC-ISP aceptará la información devuelta como se muestra
a continuación.
PD:
Medios: para gprs networking test.rar
Cómo comprar
Haga clic aquí para comprar Arduino GPRS Shield
Obtenido de " http://www.geeetech.com/wiki/index.php?title=Arduino_GPRS_Shield&oldid=4199 "
Menú de Navegación
Herramientas personales
Iniciar sesión
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
16/17
19/8/2019
Escudo Arduino GPRS - Geeetech Wiki
Espacios de nombres
Página
Discusión
Variantes
Puntos de vista
Leer
Ver fuente
Ver historial
Comportamiento
Buscar
Search
Buscar
Ir
Navegación
Pagina principal
producto
Experimentar
Tutoriales
Búsqueda frecuente
impresora 3d
Tablero de control de la impresora 3D
Accesorios para impresoras 3D
Arduino compatibles
Campo de golf
Foro
Bazar
Blog
Contáctenos
Herramientas
Lo que enlaza aquí
Cambios relacionados
Páginas especiales
Versión imprimible
Enlace Permanente
Información de la página
Esta página fue modificada por última vez el 8 de julio de 2014, a las 09:53.
Esta página ha sido visitada 510.827 veces.
Política de privacidad
Acerca de Wiki Geeetech
Renuncias
https://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield
17/17
Descargar