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