Tutorial: Comunicando tu Arduino con un Módulo SIM900 - Tecneu

Tutorial: Comunicando tu Arduino con un Módulo SIM900

comments

Introducción

En este tutorial, te enseñaremos cómo configurar y comunicarte con un módulo SIM900 usando Arduino. Este módulo te permite enviar y recibir mensajes SMS y conectarte a la red GPRS para acceder a internet. Vamos a mostrarte cómo enviar comandos AT al módulo y leer sus respuestas para hacer una solicitud HTTP.

El módulo SIM900 es un dispositivo de comunicación GSM/GPRS que permite a los microcontroladores, como el Arduino, conectarse a redes móviles para realizar llamadas, enviar mensajes SMS, y conectarse a internet mediante GPRS. Es ampliamente utilizado en proyectos de IoT (Internet de las Cosas) debido a su versatilidad y facilidad de integración. A continuación, se describen las características principales del módulo SIM900.

Características Principales

  1. Compatibilidad GSM/GPRS:

    • Bandas: Quad-band GSM/GPRS 850/900/1800/1900 MHz, lo que le permite operar en casi cualquier lugar del mundo.
    • GPRS: Clase 10 (máxima velocidad de descarga teórica de 85.6 kbps).
  2. Interfaz Serial:

    • UART: Utiliza una interfaz UART (TTL) para comunicarse con microcontroladores. Esta interfaz es compatible con los niveles de voltaje TTL, lo que facilita su conexión con dispositivos como Arduino.
    • Velocidad de Baudios: Admite velocidades de baudios de hasta 115200 bps, pero típicamente se usa a 9600 bps para mayor estabilidad.
  3. Conectividad de Datos:

    • HTTP/HTTPS: Soporta solicitudes HTTP y HTTPS, lo que facilita la conexión a APIs web.
    • TCP/IP: Permite la comunicación basada en TCP/IP, adecuado para aplicaciones IoT.
  4. Antena:

    • Conector: Usualmente tiene un conector SMA para conectar una antena GSM externa, mejorando la recepción de la señal.
  5. Ejemplo de Uso

    • Sistemas de Alarma: Enviar alertas mediante SMS o llamada en caso de eventos específicos.
    • Automatización Doméstica: Controlar dispositivos remotos mediante SMS o a través de internet.
    • Estaciones Meteorológicas Remotas: Enviar datos meteorológicos a un servidor central para monitoreo y análisis.

Materiales Necesarios

  • Arduino Uno
  • Módulo SIM900
  • Cable USB para Arduino
  • Fuente de alimentación de 5V 2A para el módulo SIM900 
  • Tarjeta SIM con un plan de datos activo

Conexiones

  1. Conecta el pin RX del SIM900 al pin 7 del Arduino.
  2. Conecta el pin TX del SIM900 al pin 8 del Arduino.
  3. Conecta el GND del SIM900 al GND del Arduino.
  4. Conecta el negativo de la fuente al GND del Arduino.
  5. Conecta el VCC del SIM900 al positivo de la fuente.

 

¿Qué Son los Comandos AT?

Los comandos AT son instrucciones estándar utilizadas para controlar módems GSM, como el SIM900. "AT" significa "Attention" (Atención) y precede a cada comando. Estos comandos permiten realizar diversas operaciones, como:

  • Verificar la conexión del módulo.
  • Configurar la red GPRS.
  • Enviar y recibir SMS.
  • Ejecutar solicitudes HTTP.

Comunicación Serie con Arduino

Para enviar y recibir comandos AT desde el Arduino, utilizamos la comunicación serie. El Arduino se comunica con el módulo SIM900 a través de pines digitales configurados como una interfaz de comunicación serie utilizando la librería SoftwareSerial.

Este es el código que usaremos para configurar el módulo SIM900 y enviarle comandos AT:

 

Ahora, emite el comando de prueba "AT" a través del monitor serial configurado a 9600 baudios con "NL" y "CR" activados. Deberías recibir como respuesta "OK" desde el módulo.

Aquí tienes un enlace al documento con todos los comandos AT que acepta el módulo: SIM900_AT_MANUAL.

Enviar sms

El código que se proporciona a continuación te permitirá enviar un mensaje a un número de teléfono que está almacenado en un array de caracteres.

  1. AT+CSMP=17,167,0,0: Este comando configura los parámetros del servicio de mensajes cortos (SMS). Los números especifican detalles como el formato de mensaje, el tipo de validación, y más.
  2. AT+CMGF=1: Este comando configura el módulo en modo de formato de mensaje corto (SMS). El '1' especifica el modo texto, que es un formato más sencillo para enviar y leer mensajes SMS.
  3. AT+CMGS: Este comando se utiliza para enviar un mensaje SMS. Se sigue con el número de teléfono entre comillas. Después de este comando, se espera la entrada del cuerpo del mensaje.


En el caso del último comando, el carácter ASCII 26 (^Z) se envía para indicar el final del mensaje SMS. Este carácter le dice al módulo que el mensaje completo ha sido ingresado y que debe proceder a enviarlo.

Por favor, asegúrate de reemplazar el número de teléfono y el mensaje en el código con los datos que deseas utilizar para el envío del mensaje.

 

Una ves subido el codigo al arduino, abre el monitor serial y presiona el boton conectado al pin digital 2 para enviar el mensaje.

Realizar una Petición HTTP

El protocolo HTTP (HyperText Transfer Protocol) es el protocolo utilizado por la web para la transferencia de datos. Una petición HTTP se compone de varias partes clave:

  1. Método de Solicitud: Indica la acción que se desea realizar. Los métodos comunes incluyen GET, POST, PUT, DELETE, entre otros. En este tutorial, usamos el método GET para solicitar datos de un servidor.

  2. URL (Uniform Resource Locator): La dirección del recurso que se quiere solicitar. En nuestro ejemplo, la URL es http://worldtimeapi.org/api/timezone/Etc/UTC.

  3. Encabezados de la Petición: Proporcionan información adicional sobre la petición. Esto puede incluir detalles sobre el tipo de datos que se esperan en la respuesta, el tipo de navegador que está realizando la petición, y más.

  4. Cuerpo de la Petición: Contiene datos que se envían al servidor. Esto se utiliza principalmente en métodos como POST, donde se envían datos para ser procesados.

Cómo Funciona una Petición HTTP con el Módulo SIM900

  1. Configuración del Módulo SIM900: El módulo SIM900 necesita ser configurado para conectarse a la red GPRS (General Packet Radio Service). Esto se hace a través de una serie de comandos AT que configuran el APN (Access Point Name) de tu proveedor de servicios móviles, y establecen una conexión GPRS.

  2. Inicialización del Servicio HTTP: Una vez establecida la conexión GPRS, se inicializa el servicio HTTP en el módulo SIM900 mediante el comando AT+HTTPINIT.

  3. Configuración de Parámetros HTTP: Se configuran los parámetros necesarios para la petición HTTP, como el contexto de la conexión (CID) y la URL a la que se desea acceder.

  4. Ejecutar la Petición HTTP: Se envía el comando AT+HTTPACTION=0 para realizar una solicitud GET. El módulo SIM900 se conecta al servidor especificado en la URL y solicita los datos.

  5. Leer la Respuesta: Una vez realizada la petición, se puede leer la respuesta del servidor utilizando el comando AT+HTTPREAD. La respuesta del servidor incluirá el código de estado HTTP (por ejemplo, 200 para una solicitud exitosa) y el cuerpo de la respuesta con los datos solicitados.

Para conectarse a la red GPRS de tu operador móvil, es esencial configurar correctamente el APN (Access Point Name), el nombre de usuario y la contraseña.

Pasos para Configurar el APN

  1. Obtener el APN, Nombre de Usuario y Contraseña:
    • Consultar al Operador: Contacta a tu proveedor de servicios móviles o visita su sitio web.
    • Buscar en la Web: Usa términos de búsqueda como "APN [nombre de tu operador]".
    • Configuraciones del Teléfono: Verifica las configuraciones de red en un teléfono con una SIM del mismo operador.

Ejemplo de Configuración para Telcel (México)

  • APN: internet.itelcel.com
  • Nombre de Usuario: webgprs
  • Contraseña: webgprs2002

Ahora sube el siguiente código a tu Arduino. Este código configura el módulo SIM900, realiza una petición HTTP y muestra la respuesta en el monitor serial. Modifica la siguientes líneas del código con los valores de tu operador:

sendATCommand("AT+CSTT=\"internet.itelcel.com\",\"webgprs\",\"webgprs2002\""); 

sendATCommand("AT+SAPBR=3,1,\"APN\",\"internet.itelcel.com\""); 

 

 

Reinicia el Arduino con el SIM900 conectado y el monitor serial abierto.

El código en la sección `setup` configurará el módulo SIM900 y lo preparará para realizar la petición HTTP. Cuando todo esté listo, recibirás algo similar a esto a través del puerto serie:

Ahora envia el comando AT+HTTPACTION=0 que inicia la solicitud, y espera a recibir la respuesta.

Por último envia el comando AT+HTTPREAD para leer los datos de la respuesta HTTP.

 

 

Conclusión

El módulo SIM900 es una herramienta poderosa para agregar conectividad GSM/GPRS a tus proyectos de Arduino. Con este conocimiento, puedes expandir tus proyectos para incluir diversas aplicaciones de IoT (Internet de las Cosas) que requieren comunicación a través de redes móviles. 

Si tienes preguntas o problemas, no dudes en dejar un comentario. ¡Feliz programación!

Comentarios 
gerardo

hola esoty en desarrollo de un proyecto, coloco la sim en este caso ya utulice TELCEL y AT&T estoy en mexico y no logro que el modulo SIM900 conecte a ninguna de las dos redes

podrian ayudarme no entiendo que este pasando

gerardo
jose palacin

Buenas tardes, le saluda jose palacin, muy buena explicacion a ello como haria poder enviar un mesaje de texto , solo para saber el estado del led si se encuentra encendido o apagado, michas gracias

jose palacin
Dejar un comentario
Tu correo no será publicado, los campos requeridos estan marcados con *
Artículos relacionados
Suscríbete
Suscríbete a nuestro boletín y recibe las últimas ofertas y novedades.