UNIVERSIDAD TÉCNICA DE AMBATO Facultad de Ingeniería en Sistemas, Electrónica e Industrial
INFORME DE COMUNICACIONES MOVILES “Proyecto Captador de Frecuencias” Frecuencias”
Título: Diseño e implementación de un circuito captador de frecuencias basado en un sistema de comunicación mediante el uso del módulo SIM900 y arduino.
Carrera:
Electrónica y Comunicaciones
Área Académica:
Comunicaciones
Línea de Investigación:
Comunicaciones
Ciclo Académico y Paralelo: Septiembre-Febrero 2018 Alumnos participantes:
Andrade Andy
Bonilla Gissela
Chango Francisco
Musso Pedro
Monta Christian
Llamuca Diego
Panimbosa José Luis
Pico Magaly
Sailema Sandra
Villegas Diego
Zurita Xavier
Módulo
Docente:
Comunicaciones Móviles
Ing. Juan Pablo Pallo.
UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL PERÍODO ACADÉMICO: MARZO 2017 – SEPTIEMBRE 2017
I.
INFORME DEL PROYECTO 1.1 Título Diseño e implementación de un circuito captador de frecuencias basado en un sistema de comunicación mediante el uso del módulo SIM900 y arduino.
1.2 Objetivos Objetivos General: Realizar el circuito captador de frecuencias mediante el uso del módulo SIM900 en interfaz con arduino
Objetivos específicos:
Realizar la conexión del módulo SIM900 con la tarjeta arduino utilizando un chip 3G.
Configurar y cargar el código para envío de llamadas y mensajes en la tarjeta arduino.
Comprobar el funcionamiento de la conexión entre el usuario y la placa
1.3 Resumen 1.4 Palabras clave: 1.5 Introducción 1.6 Metodología 1.6.1 Materiales Software
Hardware
Arduino
Modulos SIM900
Putty
Tarjeta Arduino Sensor de Temperatura 1 PC Cable Serial
1.6.2 Marco Teórico arduino que es caracteristicas puestos analógicas velocidades
UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL PERÍODO ACADÉMICO: MARZO 2017 – SEPTIEMBRE 2017
puerto serial
algo del Lm35 GSM/GPRS Shield
El GPRS / GSM Shield le proporciona una forma de utilizar la red de telefonía celular GSM para recibir datos desde una ubicación remota. El escudo te permite lograr esto a través de cualquiera de los tres métodos: • Servicio de mensajes cortos • Audio • Servicio GPRS El GPRS Shield es compatible con todas las placas que tienen el mismo factor de forma (y pinout) como una placa Arduino estándar. El GPRS Shield está configurado y controlado a través de su UART usando comandos AT simples. Basado en el módulo SIM900 de SIMCOM, el GPRS Shield es como un teléfono celular. Además de las funciones de comunicación, el escudo GPRS tiene 12 GPIO, 2 PWM y un ADC
Especificaciones
Banda cuádruple 850/900/1800/1900 MHz - funcionaría en redes GSM en todos países de todo el mundo. GPRS multi-slot clase 10/8 Estación móvil GPRS clase B Cumple con la fase GSM 2/2 + Clase 4 (2W @ 850 / 900MHz) Clase 1 (1W @ 1800 / 1900MHz) Control mediante comandos (GSM 07.07, 07.05 y SIMCOM mejorado AT Comandos)
UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL PERÍODO ACADÉMICO: MARZO 2017 – SEPTIEMBRE 2017
Servicio de mensajes cortos Selección de puerto serie gratuito Compatible con RTC con Super Cap Función de encendido / apagado y restablecimiento compatible con la interfaz Arduino
Elementos
Funciones de los LED indicadores El escudo GSM tiene tres indicadores LED para la potencia del escudo GSM, la potencia SIM900 y el estado de la red.
Potencia del escudo GSM (P): Este LED se usa para indicar el estado de alimentación del blindaje GSM. Si la fuente de alimentación externa está conectada a la placa Arduino, entonces la pantalla GSM se encenderá, este LED se encenderá.
SIM900 potencia (S): Este LED se usa para indicar el estado de la alimentación del SIM900. Después de que el SIM900 se encienda, el LED de estado se encenderá.
Estado neto (N): Este LED se usa para indicar el estado de la red. El LED parpadeará lenta o rápidamente según los diferentes estados.
Estado
Descripción
Off
SIM900 no está funcionando
64ms On/800ms Off
SIM900 no registrado en la red
64ms On/3000ms Off
SIM900 registrado en la red
64ms On/300ms Off
Comunicación GPRS está establecida
Configuraciones del Jumper
UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL PERÍODO ACADÉMICO: MARZO 2017 – SEPTIEMBRE 2017
Si se desea usar UART se debe envía comandos AT. Coloque el puente en la posición HW. Si se utiliza soft serial. Establecer en posición SW. Nuestro boceto de prueba utiliza una serie suave. Entonces lo mantenemos en la posición SW normalmente. Si está usando MEGA2560. Solo se necesita conectar las patillas centrales de los puentes RX y TX a RX1 TX1 en Arduino Mega 2560. Y cambie la configuración del código.
COMANDOS AT
AT
Comprueba estado del módulo.
AT+CPIN=”XXXX”
Introducir el PIN de la SIM. Cambiar XXXX por el PIN.
AT+CREG?
Comprueba la conexión a la red.
ATDXXXXXXX;
Realiza una llamada. Sustituir XXXXXXXXX por el nº al que queramos llamar.
ATA
Descuelga una llamada.
ATH
Finaliza la llamada.
AT+CMGF=1
Configura el modo texto para enviar o recibir mensajes. Devuelve “>” como inductor.
AT+CMGS=”XXXXXXXXX”
Nº al que vamos a enviar el mensaje.
AT+CLIP=1
Activamos la identificación de llamada.
AT+CNMI=2,2,0,0,0
Configuramos el módulo para que muestre los SMS por el puerto serie.
UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL PERÍODO ACADÉMICO: MARZO 2017 – SEPTIEMBRE 2017
AT+CGATT=1
Conectamos a la red GPRS.
AT+CSTT=”APN”,”usuario”,”contraseña”
Definimos APN. usuario y contraseña
AT+CIICR
Activamos el perfil de datos inalámbrico
AT+CIFSR
Obtenemos nuestra IP
AT+CIPSTART=”TCP”,”direccionIP”,”puerto”
Indicamos el tipo de conexión, dirección IP y puerto al que realizamos la conexión
AT+CIPSEND
Preparamos el envío de datos. Devuelve “>” como
AT+CIPCLOSE
Cerramos la conexión.
AT+CIPSHUT
Cierra el contexto PDP del GPRS
AT+CGPSPWR=1
Activar el GPS.
AT+CGPSSTATUS?
Comprueba que el GPS ha encontrado la red.
AT+CGPSINF=0
Obtiene los datos del GPS: Modo,Latitud,Longitud,Altitud,HorarioUTC,Tiempo de respuesta,Número de satélites,Velocidad,Curso
AT+CGPSOUT=32
para obtener los datos del GPS usando la especificación de la NMEA: Horario UTC,Estado,Latitud,Longitud,Velocidad en nudos,Ángulo de derrota en grados,Fecha,Variación magnética,Datos del Cheksum
AT+CGPSPWR=0
Cerrar el GPS.
1.6.3
inductor.
Desarrollo Configuración de la velocidad de arduino La velocidad para el puerto serial de la SIM900 es de 19.2Mbps, para lo que en la configuración de arduino utiliza un método que determina su funcionamiento. void setup() { SIM900.begin(19200); //Configura velocidad serial para el SIM900 delay(3000); //Retardo para que encuentra a una RED Serial.begin(19200); //Configura velocidad serial para el Arduino pinMode(2,OUTPUT); }
UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL PERÍODO ACADÉMICO: MARZO 2017 – SEPTIEMBRE 2017
Configuración de los puertos de entrada y salida
Se va a enviar datos de un sensor de temperatura mediante el puerto analógico A0 del arduino. Para la lectura de los datos utilizamos el método Serial.read() el cual permite obtener datos que serán recibidos a través de un mensaje de texto. const int sensorPin= A0; float temperatura;
Conexión arduino con sim900 y modo de funcionamiento
Para la conexión es necesario el uso de un chip 3G, posteriormente se realiza la adaptación física de las placas arduino con el modulo SIM 900. Alimentar la shield con una fuente externa máximo 1A y 9V. Verificar que los jumpers que estén cerca a la antena y estén colocados con D7 y D8 Se ha configurado un lapso de tiempo de conexión de 10s, el cual permitirá verificar si la SIM900 se ha registrado en la red.
Envío y recepción de llamadas y mensajes
Se debe configurar el número telefónico del usuario con el que se desea establecer la comunicación mediante la función ATD . SIM900.println("ATD0999234469;");
Cargamos los métodos especificados para llamar o enviar mensajes
Método llamar void llamar() // Función que permite llamar a un celular local { // SIM900.println("ATD0051947648943;"); //Numero local SIM900.println("ATD0999234469;"); //Celular delay(100); SIM900.println(); delay(30000); // wait for 30 seconds... SIM900.println("ATH"); // Cuelta el telefono delay(1000); }
Método enviar mensajes void mensaje_sms()
UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL PERÍODO ACADÉMICO: MARZO 2017 – SEPTIEMBRE 2017
//Funcion para mandar mensaje de texto { SIM900.print("AT+CMGF=1\r"); // AT command to send SMS message delay(100); //0999234469 SIM900.println("AT+CMGS=\"0999234469\"");
//
recipient's
mobile
number, in international format delay(100); SIM900.println(temperatura*100); //SIM900.println("COMUNICACIONES MOVILES"); // message to send delay(100); SIM900.println((char)26); // End AT command with a ^Z, ASCII code 26 //Comando de finalizacion delay(100); SIM900.println(); delay(5000); // Tiempo para que se envie el mensaje Serial.println("SMS sent successfully"); }
Método recibir mensajes void modo_recibe_mensaje() { //Configura el modo texto para enviar o recibir mensajes SIM900.print("AT+CMGF=1\r"); // set SMS mode to text delay(100); SIM900.print("AT+CNMI=2,2,0,0,0\r"); // blurt out contents of new SMS upon receipt to the GSM shield's serial out delay(1000); }
1.6.4 Código de programación en Arduino #include SoftwareSerial SIM900(7, 8); // Configura el puerto serial para el SIM900
char incoming_char=0; //Variable que guarda los caracteres que envia el SIM900 int salir = 0;
UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL PERÍODO ACADÉMICO: MARZO 2017 – SEPTIEMBRE 2017
const int sensorPin= A0; float temperatura; int i=1; void setup() { SIM900.begin(19200); //Configura velocidad serial para el SIM900 delay(3000); //Retardo para que encuentra a una RED Serial.begin(19200); //Configura velocidad serial para el Arduino pinMode(2,OUTPUT); } void llamar() // Función que permite llamar a un celular local { // SIM900.println("ATD0051947648943;"); //Numero local SIM900.println("ATD0999234469;"); //Celular delay(100); SIM900.println(); delay(30000); // wait for 30 seconds... SIM900.println("ATH"); // Cuelta el telefono delay(1000); } void mensaje_sms() //Funcion para mandar mensaje de texto { SIM900.print("AT+CMGF=1\r"); // AT command to send SMS message delay(100); //0999234469 SIM900.println("AT+CMGS=\"0999234469\""); // recipient's mobile number, in international format delay(100); SIM900.println(temperatura*100); //SIM900.println("COMUNICACIONES MOVILES"); // message to send delay(100); SIM900.println((char)26); // End AT command with a ^Z, ASCII code 26 //Comando de finalizacion delay(100); SIM900.println(); delay(5000); // Tiempo para que se envie el mensaje Serial.println("SMS sent successfully"); }
UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL PERÍODO ACADÉMICO: MARZO 2017 – SEPTIEMBRE 2017
void espera_mensaje() { salir = 1; while(salir==1) { if(SIM900.available() >0) { incoming_char=SIM900.read(); //Get the character from the cellular serial port. Serial.print(incoming_char); //Print the incoming character to the terminal. salir = 0; } } } void modo_recibe_mensaje() { //Configura el modo texto para enviar o recibir mensajes SIM900.print("AT+CMGF=1\r"); // set SMS mode to text delay(100); SIM900.print("AT+CNMI=2,2,0,0,0\r");
// blurt out contents of new SMS upon receipt to the GSM shield's serial o ut delay(1000); } void loop() { int iniciar; int value = analogRead(sensorPin); temperatura = (value*5 / 1023.0);
inicio: iniciar=Serial.read();
if(i<2){ Serial.println("DISPONIBLE"); Serial.println("M-->MENSAJE"); Serial.println("L-->LLAMAR"); i++; }
UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL PERÍODO ACADÉMICO: MARZO 2017 – SEPTIEMBRE 2017
if(iniciar=='L') { i=1; Serial.println("LLamando...."); llamar(); //Llama //modo_recibe_mensaje(); Serial.println("OK-1");
delay(100); SIM900.println(); delay(5000); goto inicio; //while(1); // Esperate por tiempo indefinido
} if(iniciar=='M') { i= 1; Serial.println("Mensajeando...."); //llamar(); //Llama mensaje_sms(); //Envia mensaje //
Serial.println("OK-2"); delay(100); SIM900.println(); delay(5000); goto inicio; //while(1); // Esperate por tiempo indefinido } /*
modo_recibe_mensaje(); for(;;) { if(SIM900.available() >0) {
incoming_char=SIM900.read(); //Get the character from the cellular serial port.
UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL PERÍODO ACADÉMICO: MARZO 2017 – SEPTIEMBRE 2017
Serial.print(incoming_char); //Print the incoming character to the terminal. } if(Serial.available() > 0) { if(Serial.read() == 'A') break; } } Serial.println("OK-2");
delay(100); SIM900.println(); delay(30000); while(1); // Esperate por tiempo indefinido
}
Tabla 1: Código de configuración en Arduino
1.7 Conclusiones y Recomendaciones
Se puede realizar llamadas o enviar a mensajes a cualquier usuario, siempre y cuando el usuario este registrado en la configuración del módulo.
Se puede enviar cualquier tipo de datos siempre y cuando estos estén configurados en la tarjeta.
Se pudo enviar datos de forma externa, en este caso datos obtenidos por un sensor de temperatura.
Se recomienda alimentar el modulo SIM900 con una fuente externa de máximo 1A y 9V, ya que podría generar daños en el módulo.
es necesario analizar la tabla de los tipos de encendido y apagado de los leds indicadores para determinar el estado del módulo, es decir si se ha conectado o no a la red.
Si desea realizar la conexión con un Arduino Mega se debe colocar en vez de los pines 7 y 8 los pines 10 y 11.
UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL PERÍODO ACADÉMICO: MARZO 2017 – SEPTIEMBRE 2017
1.8 Referencias bibliográficas