Explicamos cómo realizar una conexión a Internet, a una página web por socket mediante Arduino UNO y un módulo GPRS/GSM. Mostramos todos los requisitos hardware y software para realizar este proyecto de prueba con Arduino. Indicamos cómo conectar dos Arduinos para enviar la salida serie de uno de ellos (el que lleva el módulo GPRS/GSM) a otro.
- Requisitos para realizar conexión a Internet desde Arduino con GPRS.
- Cómo conectar el módulo GPRS a la placa Arduino UNO.
- Consideraciones importantes a tener en cuenta antes de enviar el programa a Arduino para usar el módulo GPRS.
- Programar Arduino UNO para realizar una conexión a Internet con el módulo GPRS.
- Enviar salida serie de un Arduino a otro para comprobar resultado de la conexión a Internet.
Requisitos para realizar conexión a Internet desde Arduino con GPRS
En la siguiente sección del siguiente artículo explicamos los requisitos hardware y software necesarios para realizar el envío de SMS con Arduino y un módulo GPRS, dichos requisitos son los mismos que para la conexión a Internet:
Básicamente necesitaremos un Módulo GPRS (en nuestro caso usamos un GPRS Sagem Quadband Module for Arduino), una Placa Arduino UNO y los requisitos software explicados en este otro artículo, donde también indicamos cómo conectar Arduino al PC paso a paso y cómo enviar programas desde el IDE de Arduino a la memoria Flash de la placa:
Cómo conectar el módulo GPRS a la placa Arduino UNO
En la siguiente sección del siguiente artículo explicamos paso a paso cómo conectar la antena externa al módulo GPRS y cómo conectar el módulo GPRS a la placa Arduino UNO:
Consideraciones importantes a tener en cuenta antes de enviar el programa a Arduino para usar el módulo GPRS
Hay que tener en cuenta que el módulo GPRS tiene «dos posiciones» para la conexión con Arduino:
1. Por un lado hay que indicarle al módulo GPRS cuándo está conectado al PC por el puerto USB (serie emulado), esto se hace colocando dos jumpers que incorpora en la parte superior de la siguiente forma:
Es muy importante tener esto en cuenta, cuando queramos enviar el programa a Arduino, los dos jumpers deben estar como se indica en la imagen anterior, si no es así el Upload (envío) del programa dará error.
El error que nos mostrará el IDE de desarrollo de Arduino si no hemos colocado los jumpers correctamente será:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
2. Para probar el programa de conexión a Internet o cualquier otra tarea que hayamos programado con Arduino y el módulo GPRS deberemos desconectarlo del USB del PC y alimentarlo externamente. Además, deberemos cambiar los jumpers mencionados anteriormente a esta nueva posición:
Si no se hace esto, cuando desconectemos Arduino del PC y lo alimentemos externamente, el módulo GPRS no funcionará.
Programar Arduino UNO para realizar una conexión a Internet con el módulo GPRS
Para realizar una conexión a Internet con la placa Arduino UNO, insertaremos una tarjeta SIM en el módulo GPRS con la opción de datos activa, conectaremos el módulo GPRS a la placa Arduino, colocaremos los jumpers del módulo en su posición para conexión con PC y conectaremos Arduino UNO al PC por el puerto USB. Una vez realizados todos estos pasos (explicados anteriormente), abriremos el IDE de desarrollo de Arduino y escribiremos el siguiente programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
/* * Conexion a Internet con modulo GPRS y Arduino */ int pinActivarGPRS = 2; // pin para activar el módulo GPRS //procedimiento para activar el módulo GPRS void activarModuloGPRS() { digitalWrite(pinActivarGPRS, HIGH); delay(2000); digitalWrite(pinActivarGPRS, LOW); } void setup() { pinMode(pinActivarGPRS, OUTPUT); Serial.begin(19200); //velocidad de conexión con módulo GPRS activarModuloGPRS(); //activar el módulo GPRS delay(20000); //esperamos 20 segundos a que se active el módulo GPRS Serial.println("AT&k3"); //activa el control de flujo RTS/CTS en el modem delay(1000); Serial.print("AT+KCNXCFG=0,"); //inicia la configuración para el GPRS Serial.print(34,BYTE); Serial.print("GPRS"); //tipo de conexión Serial.print(34,BYTE); Serial.print(","); Serial.print(34,BYTE); Serial.print("gprs-service.com"); //punto de acceso Serial.print(34,BYTE); Serial.print(","); Serial.print(34,BYTE); Serial.print(""); //usuario del operador Serial.print(34,BYTE); Serial.print(","); Serial.print(34,BYTE); Serial.print("1234"); //contraseña del operador, para Simyo "1234" Serial.print(34,BYTE); Serial.println(); delay(1000); //establecer configuraciones de tiempos de espera, reintentos de conexion y demas Serial.println("AT+KCNXTIMER=0,60,2,70"); delay(1000); Serial.println("AT+KCNXPROFILE=0"); delay(1000); Serial.println("AT+CGATT=1"); //para conectarnos a la red movil del operador delay(1000); Serial.print("AT+KTCPCFG=0,0,"); //para indicar el host o IP al que nos conectaremos Serial.print(34,BYTE); Serial.print("www.ajpdsoft.com"); Serial.print(34,BYTE); Serial.println(",80"); //puerto por el que se realizará la conexión delay(1000); Serial.println("AT+KTCPCNX=1"); //para iniciar un intercambio de datos TCP delay(7000); //para envio de datos a la conexion //el 18 indica la cantidad de datos que queremos enviar "GET / HTTP/1.0\r" Serial.println("AT+KTCPSND=1,18"); delay(2000); Serial.println("GET / HTTP/1.0"); Serial.print(10,BYTE); //salto de línea Serial.print(13,BYTE); //retorno de carro Serial.print("--EOF--Pattern--"); //fin de la cadena de envio de datos delay(2000); Serial.println("AT+KTCPRCV=1,807"); //activar recepcion de datos delay(1000); Serial.println("AT+KTCPCLOSE=1,1"); //cerrar la conexion delay(1000); } void loop() { } |
Como siempre, verificaremos el código pulsando en el botón «Verify» del IDE de desarrollo de Arduino:
Y lo enviaremos a la placa Arduino pulsando en «Upload»:
Enviar salida serie de un Arduino a otro para comprobar resultado de la conexión a Internet
En este proyecto, para poder comprobar la placa Arduino con el módulo GPRS GSM realiza la conexión a Internet correctamente, deberemos conectar una segunda placa Arduino al primero como explicamos a continuación.
Por un lado conectaremos un cable del pin TX – 1 del Arduino sin el módulo GPRS GSM al jumper USB del módulo GPRS GSM como se muestra en la imagen y por otro lado conectaremos un segundo cable del pin GND del Arduino sin el módulo GPRS al ping GND del Arduino con el módulo:
1. Vista del Arduino con el módulo GPRS GSM:
2. Vista del Arduino sin el módulo GPRS:
3. Vista de los dos Arduinos conectados:
Una vez conectados los dos Arduinos, conectaremos el segundo (el que no lleva el programa ni el módulo GPRS) al PC por el puerto USB, iniciaremos el IDE de Arduino, seleccionaremos el puerto desde el menú «Tools» – «Serial Port»:
Pulsaremos en el botón «Serial Monitor» y en la ventana que nos mostrará debemos seleccionar la misma velocidad que hayamos indicando en el programa para la conexión serie, en nuestro caso 19200 baud (si no hacemos esto puede que veamos caracteres raros en la pantalla):
Ahora alimentaremos eléctricamente el Arduino con el módulo GPRS GSM, tras unos segundos, si la conexión de los dos Arduinos mediante los dos cables es correcta, iremos viendo la salida serie del primer Arduino en el PC y así podremos verificar y testear el resultado de la conexión a Internet: