Sim900, primeros pasos, envío de SMS, llamada, encendido de led

En construcción…

Este artículo es una guía completa para controlar el módulo SIM900 con arduino. Aprenderemos cómo enviar y recibir SMS, realizar y recibir llamadas telefónicas, encender led.

Te presento el escudo SIM900 con arduino uno

Aplicaciones:

El escudo SIM900  permite:

  • Conéctese a Internet a través de la red GPRS
  • Enviar y recibir SMS
  • Realizar y recibir llamadas telefónicas

Sus capacidades lo hacen ideal para proyectos con Arduino como:

  • Control remoto de dispositivos electrónicos: enviar un SMS para activar algo (motores, luces, etc).
  • Recibir notificaciones: envíe un SMS a su teléfono celular (por ejemplo sensor de gas).
  • Reciba datos de un sensor: envía SMS periódicamente a su teléfono con datos de la temperatura de un snesor.

Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagrama


Caracteristicas

Estas son algunas de las características más importantes del escudo:

  • Compatible con Arduino y clones
  • Basado en el módulo SIM900 de SIMCOM
  • Le permite enviar SMS, MMS, GPRS y audio a través de UART usando comandos AT.
  • Tiene 12 GPIO, 2 PWM y ADC incorporado en el módulo SIM900
  • Es cuatribanda: 850; 900; 1800 y 1900 MHZ, por lo que debería funcionar en todos los países con redes GSM (2G)
  • Control y configuración a través de comandos AT
  • Admite RTC (reloj de tiempo real) – tiene un soporte para una batería CR1220 de 3V en la parte inferior

¿ Que significa GSM ?

Es el Sistema Global para Comunicaciones Móviles y es el estándar a nivel mundial para comunicaciones móviles.

¿ Que significa GPRS  ?

Significa General Packet Radio Service. GPRS es un servicio de datos móviles en las comunicaciones celulares 2G.

Antes de empezar

Antes de comenzar con su módulo SIM900,  ¿Fuente de alimentación elegir?

Recomiendo una fuente de 12 voltios 2 amperes. Como se puede observar en la siguiente foto.

Si lo vamos a conectar la fuente al arduino, debemos colocar el interrruptor en la posición que se muestra en la foto, que es la opción que recomiendo, ya que no tuve inconvenientes.

Ahora si la conexión de alimentación la hicimos al módulo SIM900, el interruptor se debe colocar en esta posición, pero tiene que tener en cuanta que el arduino no es alimentado por el SIM900, tocará alimentarlo por usb o por otro método. Ver foto

Cobertura GSM

Hay que asegurarse que en tu pais hay covertura de red GSM 850 MHz, GSM 900 MHz, DCS 1800 MHz o PCS 1900 MHz es decir 2G (redes de segunda generación).

¿Que tarjeta SIM usar?

Te recomiendo usar una tarjeta SIM prepaga o con SMS/llamada ilimitadas, tener esta precausión por si algo sale mal con el programa que estamos haciendo y este comienza a enviar o llamar en forma repetida, es posible que tengamos que pagar una suma muy grande en nuestra factura telefónica si no tomamos precauciones.

Selección del puerto serial

Hay que asegurarse que los jumper, estén en la posición que se muestra en la foto, para poder utilizar los pines 7 y 8 por software.

Conexión con puerto usb serial

Para las primeras pruebas con comandos AT, recomiendo usar un puerto usb serial

El módulo SIM900 trae unos pines para conexión de un puerto serial, pero no tiene unos pines soldados, tocará hacerlo para poder utilizar este modo.

La conexión con el SIM900 y el adaptador usb serial, se debe hacer la de la siguiente manera TXD–>RXD y RXD–>TXD y por supuesto GNG para unificar las tierras con ambos dispositivos.

¿Y si no tenemos el adaptador usb serial?

Si no tenemos el módulo serial, podemos usar nuestro arduino, para ello debemos cargar un sketch, este programa genera una comunicación gracias a la librería softwareserial.h, genera una comunicación entre arduino y nuestro módulo SIM900 por los pines 7 y 8.

Código fuente

A partir de ahora podemos enviar comandos AT para depuración testero de distintos comandos, estudiando las respuestas y acciones que genera nuestro módulo SIM900. Podemos usar el mismo terminal serial de arduino para algunos comandos como el de llamada (ATD).

Encendido por sofware

Para el encendido por software antes debemos soldar dos puntos con estaño

Una vez terminado el trabajo debería quedar algo parecido a esto

Ahora en cada programa que queramos que nuestro arduino encienda el SIM900 debemos cargar las siguientes lineas.

 

Envió de SMS y encendido de led

Reenvío de SMS con acuse de recibo con encendido de led

Ejemplo básico de llamado telefónico


Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagrama


SUSCRIBETE A NUESTROS BOLETINES, RECIBE EN TU CORREO LAS NOTICIAS MÁS DESTACADAS, SÓLO INGRESANDO TU CORREO ELECTRÓNICO

[wysija_form id=”1″]



VIDEO RECOMENDADO

4 comentarios en “Sim900, primeros pasos, envío de SMS, llamada, encendido de led

  1. hola , modifique tu ejemplo y le agregue 8 luces , lo puedes chequear? , el tema es que lo unico que hace es entrar en loop y empieza enviar mensajes y prende luces al azar.

    que podria hacer para quede en espera a el ingreso del letra , gracias

    #include
    SoftwareSerial SIM900(7, 8);//Configarión de los pines serial por software
    char caracter=0;// Variable para guardar los caracteres mensajes entrantes
    int led2=2;
    int led3=3;
    int led4=4;
    int led5=5;
    int led6=6;
    int led7=9;
    int led8=10;
    int led9=11;
    String estado=””;
    void setup() {
    SIM900.begin(19200);//Arduino se comunica con el SIM900 a una velocidad de 19200bps
    Serial.begin(19200);//Velocidad del puerto serial de arduino
    delay(20000);//Tiempo prudencial para el escudo inicie sesión de red con tu operador
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(led4, OUTPUT);
    pinMode(led5, OUTPUT);
    pinMode(led6, OUTPUT);
    pinMode(led7, OUTPUT);
    pinMode(led8, OUTPUT);
    pinMode(led9, OUTPUT);
    SIM900.print(“AT+CMGF=1\r”);// comando AT para configurar el SIM900 en modo texto
    delay(200);
    SIM900.print(“AT+CNMI=2,2,0,0,0\r”);//Configuramos el módulo para que muestre los SMS por el puerto serie.
    delay(200);
    }
    void loop() {
    if(SIM900.available() >0) {//Verificamos si hay datos disponibles desde el SIM900
    caracter=SIM900.read(); // Leemos los datos y los almcanamos en la variable mensaje
    Serial.print(caracter); //Imprime los datos entrantes uno a uno en el terminal serial
    if(caracter==’A’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led2, HIGH);
    estado=”led encendido”;
    envioMensaje(estado);
    }
    if(caracter==’B’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led2, LOW);
    estado=”led apagado”;
    envioMensaje(estado);
    }
    if(caracter==’C’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led3, HIGH);
    estado=”led encendido”;
    envioMensaje(estado);
    }
    if(caracter==’D’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led3, LOW);
    estado=”led apagado”;
    envioMensaje(estado);
    }
    if(caracter==’E’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led4, HIGH);
    estado=”led encendido”;
    envioMensaje(estado);
    }
    if(caracter==’F’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led4, LOW);
    estado=”led apagado”;
    envioMensaje(estado);
    }
    if(caracter==’G’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led5, HIGH);
    estado=”led encendido”;
    envioMensaje(estado);
    }
    if(caracter==’H’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led5, LOW);
    estado=”led apagado”;
    envioMensaje(estado);
    }
    if(caracter==’I’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led6, HIGH);
    estado=”led encendido”;
    envioMensaje(estado);
    }
    if(caracter==’J’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led6, LOW);
    estado=”led apagado”;
    envioMensaje(estado);
    }
    if(caracter==’K’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led7, HIGH);
    estado=”led encendido”;
    envioMensaje(estado);
    }
    if(caracter==’L’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led7, LOW);
    estado=”led apagado”;
    envioMensaje(estado);
    }
    if(caracter==’M’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led8, HIGH);
    estado=”led encendido”;
    envioMensaje(estado);
    }
    if(caracter==’N’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led8, LOW);
    estado=”led apagado”;
    envioMensaje(estado);
    }
    if(caracter==’O’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led9, HIGH);
    estado=”led encendido”;
    envioMensaje(estado);
    }
    if(caracter==’P’){
    Serial.println(“–>enviando mensaje”);
    digitalWrite(led9, LOW);
    estado=”led apagado”;
    envioMensaje(estado);
    }
    }
    }
    void envioMensaje(String estado) {
    SIM900.println(“AT + CMGS = \”+56996491012\””);//reemplzar por el número a enviar el mensaje
    delay(1000);
    SIM900.println(“Estado:” + estado);// Reemplzar por el texto a enviar
    delay(1000);
    //Finalizamos este comando con el caracter de sustitución (→) código Ascii 26 para el envio del SMS
    // SIM900.println((char)26);
    delay(1000);
    SIM900.println();
    }

Deja una respuesta