La posibilidad de integrar conectividad celular en proyectos electrónicos ha revolucionado la forma en que interactuamos con la tecnología, permitiendo desde sistemas de domótica avanzados hasta el monitoreo remoto de dispositivos. Ahora, esta capacidad está al alcance de tu mano, facilitada por módulos diseñados específicamente para trabajar con plataformas populares como Arduino. Exploraremos cómo puedes enviar mensajes de texto a tu Arduino utilizando módulos GSM/GPRS, abriendo un abanico de posibilidades para el control y la automatización.

Introducción a la Conectividad GSM/GPRS en Proyectos Arduino
La comunicación celular, a través de las redes GSM (Sistema Global para las Comunicaciones Móviles) y GPRS (Servicio General de Paquetes de Radio), ofrece una vía robusta y accesible para que tus proyectos interactúen con el mundo exterior. Estos protocolos permiten no solo la transmisión de voz y datos, sino también el envío y recepción de mensajes de texto (SMS), una funcionalidad que resulta particularmente útil para el control a distancia.
En el contexto de los microcontroladores como Arduino, la integración de módulos GSM/GPRS transforma un proyecto simple en una solución inteligente y conectada. Estos módulos actúan esencialmente como pequeños teléfonos celulares, capaces de conectarse a la red móvil para realizar llamadas, enviar SMS y, en el caso de GPRS, acceder a internet.
La principal ventaja de utilizar estos módulos con Arduino radica en su capacidad para recibir comandos a través de mensajes de texto. Un usuario puede enviar un SMS con una instrucción específica (por ejemplo, "ENCENDER LUZ") al número de teléfono asociado al módulo SIM, y el Arduino, al recibir y procesar este mensaje, puede ejecutar la acción correspondiente, como activar un relé conectado a una lámpara.
Módulos GSM/GPRS Compatibles con Arduino: GPRSBee y SIM800L
Existen diversos módulos en el mercado diseñados para facilitar esta integración. Dos opciones destacadas son el GPRSBee y el módulo SIM800L.
El GPRSBee SMA se presenta como una solución conveniente para quienes ya utilizan o planean utilizar productos con el formato XBee. Este módulo está diseñado para ser compatible con tarjetas como la PICARO+ (compatible con Arduino), Arduino UNO con un XBee Shield, o la XBee IO Pro V2. Su principal atractivo es que proporciona conectividad GPRS y GSM de forma sencilla, gracias a su módulo M66 integrado y su formato físico XBee. La comunicación con el Arduino se realiza a través de la comunicación serial, utilizando los pines específicos del formato XBee destinados a esta función. El GPRSBee SMA cuenta con un conector para antena SMA y un socket para tarjeta SIM. Para su encendido, requiere un pulso bajo (GND) en el pin ON.

La tabla comparativa de los módulos GPRSBee resalta las diferencias entre dos versiones:
| Característica | GPRSBee | GPRSBee V2 |
|---|---|---|
| Módulo | M95 | M66 |
| Conector antena | SMA | UFL |
| Tarjeta SIM | Tarjeta SIM | Tarjeta micro SIM |
| Tamaño de tarjeta | 3.07 x 4.45 [cm] | 2.96 x 3.85 [cm] |
| Encendido | Pulso bajo (GND) | Pulso alto (VCC) |
Es importante notar que para encender el módem GPRSBee, se debe conectar el pin ON del conector JST, o el pad On/Off, a VCC por aproximadamente 2 segundos. Este encendido puede ser manual o controlado por un pin del microcontrolador.
Por otro lado, el módulo SIM800L es otra opción popular y muy compacta, a menudo descrita como no mucho mayor que una moneda. Este módulo GSM/GPRS opera en frecuencias que van desde 850 hasta 1900 MHz, ofreciendo capacidades de voz, mensajes de texto y conexión a internet. Su tamaño ultra compacto lo hace ideal para proyectos donde el espacio es una limitación.
Conexiones y Alimentación del Módulo SIM800L con Arduino
Para implementar un proyecto de control por SMS utilizando el módulo SIM800L y un Arduino, las conexiones son un paso crucial.
Conexiones de Comunicación Serial:La comunicación entre el Arduino y el módulo SIM800L se establece a través de la comunicación serial. Típicamente, se utilizan dos pines digitales del Arduino para este propósito:
- El pin digital 8 del Arduino se conecta al pin RX del módulo SIM800L.
- El pin digital 9 del Arduino se conecta al pin TX del módulo SIM800L.
Estas conexiones permiten el intercambio de datos entre ambos dispositivos, posibilitando que el Arduino envíe comandos al módulo y reciba información de él, como los mensajes de texto entrantes.
Alimentación del Módulo SIM800L:La alimentación adecuada del módulo SIM800L es fundamental para su correcto funcionamiento y estabilidad. Según la documentación oficial, el módulo requiere un voltaje de operación entre 3.3 y 4.4 voltios, y es crucial proporcionar un amperaje continuo de al menos 2 amperios. Los módulos GSM/GPRS son conocidos por tener picos de consumo de corriente elevados durante la transmisión, por lo que una fuente de alimentación insuficiente puede causar reinicios o fallos en el módulo.
Para cumplir con estos requisitos, se recomienda el uso de un conversor de voltaje Step-Down (reductor). El proceso de conexión sería el siguiente:
- Conectar una fuente de energía (por ejemplo, una batería) a los pines de entrada del Step-Down.
- Ajustar el Step-Down para que proporcione un voltaje de salida de aproximadamente 4.3V. Este valor suele ser un buen punto de equilibrio para asegurar la estabilidad del módulo.
- Conectar un cable desde la salida positiva (+) del Step-Down al pin VCC del módulo SIM800L.
- Conectar un cable desde la salida negativa (-) del Step-Down al pin GND del módulo SIM800L. Es importante que este mismo GND también se conecte al pin GND del Arduino para establecer una referencia de tierra común.
Utilizar un tester (multímetro) durante el ajuste del Step-Down es una práctica recomendada para verificar que el voltaje de salida sea el correcto antes de conectar el módulo.

Programación del Arduino para Control por SMS
La programación del Arduino es lo que permite que el sistema funcione. Se emplean librerías y comandos AT para interactuar con el módulo GSM/GPRS.
Uso de la Librería SoftwareSerial:Para establecer la comunicación serial entre el Arduino y el módulo SIM800L en pines distintos a los pines seriales hardware (RX0, TX0), se utiliza la librería SoftwareSerial. Esta librería permite crear puertos seriales virtuales en otros pines digitales del Arduino.
Al inicio del sketch, se debe incluir la librería y definir los pines que se usarán para la comunicación serial con el módulo:
#include <SoftwareSerial.h>// Define los pines RX y TX para la comunicación serial con el módulo SIM800LSoftwareSerial SIM800L(9, 8); // RX, TXEn este ejemplo, el pin 9 del Arduino se configura como RX para recibir datos del módulo (conectado al TX del módulo), y el pin 8 del Arduino como TX para enviar datos al módulo (conectado al RX del módulo).
Configuración Inicial (Setup):Dentro de la función setup(), se deben iniciar tanto la comunicación serial principal del Arduino (para el monitor serial, por ejemplo) como la comunicación serial con el módulo SIM800L. Además, se envían comandos AT iniciales para configurar el módulo y asegurar su correcto funcionamiento.
void setup() { Serial.begin(9600); // Inicia comunicación serial con el monitor SIM800L.begin(9600); // Inicia comunicación serial con el módulo SIM800L (ajustar baudrate si es necesario) Serial.println("Iniciando..."); // Comandos AT iniciales para configurar el módulo SIM800L.println("AT"); // Comando para verificar la comunicación delay(1000); SIM800L.println("AT+CMGF=1"); // Configura el modo de mensajes de texto a formato de texto delay(1000); SIM800L.println("AT+CNMI=1,2,0,0,0"); // Configura el SIM800L para que muestre nuevos mensajes por comunicación serial delay(1000); Serial.println("Módulo listo. Esperando mensajes...");}El comando AT+CNMI=1,2,0,0,0 es particularmente importante, ya que instruye al módulo para que notifique al microcontrolador cada vez que se reciba un nuevo mensaje SMS, y que este mensaje esté disponible para ser leído a través de la comunicación serial.
Programación del Lazo Principal (Loop):La función loop() es donde reside la lógica del programa. Aquí se verifica constantemente si hay mensajes entrantes y se procesan.
Para el ejemplo de encender un LED:
void loop() { if (SIM800L.available()) { // Comprueba si hay datos disponibles del módulo String mensaje = ""; while (SIM800L.available() > 0) { mensaje += (char)SIM800L.read(); // Lee el mensaje entrante carácter por carácter } Serial.print("Mensaje recibido: "); Serial.println(mensaje); // Comprueba si el mensaje contiene la palabra "ON" if (mensaje.indexOf("ON") != -1) { digitalWrite(13, HIGH); // Enciende el LED en el pin 13 Serial.println("El Led se encendio"); // Opcional: Enviar una respuesta por SMS // SIM800L.println("AT+CMGS=\"<numero_telefono>\""); // delay(1000); // SIM800L.println("El LED ha sido encendido."); // delay(1000); // SIM800L.write(26); // Carácter de fin de mensaje } else { digitalWrite(13, LOW); // Apaga el LED en el pin 13 Serial.println("El Led se apago"); // Opcional: Enviar una respuesta por SMS // SIM800L.println("AT+CMGS=\"<numero_telefono>\""); // delay(1000); // SIM800L.println("El LED ha sido apagado."); // delay(1000); // SIM800L.write(26); // Carácter de fin de mensaje } }}En este código, se verifica si el módulo serial SIM800L tiene datos disponibles. Si los hay, se lee el mensaje completo y se almacena en una variable String. Luego, se utiliza el método indexOf() para buscar la subcadena "ON" dentro del mensaje recibido. Si indexOf() devuelve un valor distinto de -1, significa que la palabra "ON" está presente, y se procede a encender el LED conectado al pin digital 13. De lo contrario, el LED se apaga.
Para enviar respuestas SMS, se utilizan comandos como AT+CMGS seguidos del número de teléfono y el mensaje deseado.
Tutorial de SMS del SIM800L con Arduino
Pruebas y Verificación del Proyecto
Una vez que el hardware está conectado y el código cargado en el Arduino, es hora de probar el sistema.
- Inserte la Tarjeta SIM: Asegúrese de que la tarjeta SIM insertada en el módulo tenga saldo y un plan de datos activo si se planea usar GPRS. Verifique que la tarjeta SIM no requiera un PIN, o configure el módulo para manejarlo si es necesario (esto requiere comandos AT adicionales).
- Encienda el Sistema: Conecte la alimentación al Arduino y al módulo SIM800L.
- Envíe un Mensaje de Texto: Desde otro teléfono móvil, envíe un mensaje de texto con la palabra "ON" al número de teléfono asociado a la tarjeta SIM del módulo.
- Observe el Resultado:
- El LED conectado al pin 13 del Arduino debería encenderse.
- En el Monitor Serial del IDE de Arduino (con el baudrate configurado correctamente, por ejemplo, 115200 y la opción "Both NL & CR" seleccionada), debería aparecer el mensaje "Mensaje recibido: ON" y luego "El Led se encendio".
- Pruebe el Estado de Apagado: Envíe cualquier otro mensaje de texto (por ejemplo, "OFF", "APAGAR", o simplemente un mensaje vacío) al número del módulo. El LED en el pin 13 debería apagarse, y el Monitor Serial debería reflejar la recepción del mensaje y la acción de apagado del LED.
Uso de la Librería FONA de Adafruit y Plataformas M-Duino
Para proyectos más complejos o para una integración más directa con ciertos hardware, librerías como la FONA de Adafruit ofrecen funcionalidades adicionales y abstracciones útiles. Si estás utilizando hardware específico como los PLCs de Industrial Shields (modelos M-Duino, Ardbox PLC), el proceso de configuración puede variar ligeramente.
Pasos generales con la librería FONA:
- Instalar la Librería FONA: Descarga e instala la librería FONA de Adafruit desde el gestor de librerías del IDE de Arduino.
- Abrir el Ejemplo
FONAtest: Navega en el IDE de Arduino aArchivo > Ejemplos > Adafruit FONA library > FONAtest. - Adaptar el Código: Modifica el sketch
FONAtestpara que se ajuste a tu hardware específico. Esto puede implicar cambiar los pines seriales utilizados (por ejemplo,Serial1para algunos modelos de Arduino oHardwareSerialpara otros). Para modelos como el M-Duino GPRS/GSM, podrías necesitar descomentar líneas comoHardwareSerial *fonaSerial = &Serial1;y ajustar la configuración de la comunicación serial. - Seleccionar la Placa y Puerto Correctos: Si usas un M-Duino o similar, asegúrate de seleccionar la familia de placas correcta (
Herramientas > Modelo > M-Duino Family) y el modelo específico (Herramientas > Modelo > M-Duino 19R+o el que corresponda). Luego, selecciona el puerto COM correcto enHerramientas > Puerto. - Compilar y Subir el Sketch: Haz clic en el icono de la lupa para compilar y luego en el botón de la flecha para subir el sketch a tu placa.
- Abrir el Monitor Serial: Abre el Monitor Serial (
Herramientas > Monitor Serial) y configura el baudrate a 115200 y la opciónBoth NL & CR. - Prueba Interactiva: El Monitor Serial presentará un menú interactivo. Por ejemplo, para habilitar el GPRS, puedes teclear una "G" y presionar Enviar. Para enviar un SMS, puedes teclear "s", ingresar el número de teléfono y el mensaje.
Este enfoque, utilizando librerías como FONA y adaptándolo a plataformas específicas como M-Duino, permite una integración más profunda y un control más robusto de las funcionalidades del módulo GSM/GPRS, como la gestión de red, el envío y recepción de SMS, e incluso la conexión a internet.
Consideraciones Adicionales y Aplicaciones
La capacidad de controlar dispositivos mediante SMS abre un mundo de posibilidades:
- Domótica: Encender o apagar luces, activar electrodomésticos, controlar sistemas de riego, o ajustar la temperatura de un hogar de forma remota.
- Monitoreo Remoto: Recibir alertas por SMS sobre el estado de sensores (temperatura, humedad, movimiento), niveles de líquidos, o el estado de equipos industriales.
- Sistemas de Alarma: Configurar el Arduino para enviar un SMS de alerta a un número predefinido en caso de detectar una intrusión o una condición de riesgo.
- Control de Activos: Rastrear la ubicación de vehículos o equipos (con la adición de un módulo GPS) y recibir notificaciones sobre su estado operativo.
- Automatización Agrícola: Monitorear las condiciones de un cultivo y enviar comandos para activar sistemas de riego o ventilación.
Es importante considerar las implicaciones de seguridad al exponer un dispositivo a control remoto a través de SMS. Se deben implementar mecanismos de autenticación (por ejemplo, códigos PIN en los mensajes) y validar cuidadosamente los comandos recibidos para prevenir accesos no autorizados. Además, la elección de un plan de datos adecuado y la gestión del consumo son factores clave para la viabilidad a largo plazo de estos proyectos.
La conectividad celular para proyectos Arduino, ya sea a través de módulos como el GPRSBee o el SIM800L, o mediante plataformas más integradas como los M-Duino, ofrece una vía poderosa y flexible para crear soluciones inteligentes y conectadas. La simplicidad de los comandos SMS, combinada con la versatilidad de Arduino, permite desarrollar aplicaciones innovadoras que aprovechan al máximo la comunicación móvil.