Arduino: Alarma SMS usando Seeeduino GPRS

Muchas veces necesitamos crear un sistema que nos permita enviar una alarma vía SMS. ¿Por qué un SMS si tenemos smartphones y sistemas de mensajería instantánea que son gratis? bueno, porque enviar un SMS es muy simple y no requerimos de ninguna aplicación en el equipo que lo recibe ya que es una norma GSM y todos los equipos móviles la soportan.

La muerte del SMS y su posible resurrección

Cuando aparecieron los smartphones y las aplicaciones de mensajería como Whatsapp, Snapchat, Facebook Messenger, Viber y varias mas, muchos vaticinaron (y me incluyo) la muerte del SMS (Short Message Service). ¿Por qué? Simple, el SMS tiene un costo asociado que normalmente se descuenta del saldo de tu móvil de prepago o plan, en cambio los sistemas de mensajería aunque tienen un costo (necesitas un smartphone para instalar la aplicación) este no es percibido por el usuario como tal.

Muchas operadoras al ver la baja en la tasa de envíos de SMS comenzaron a ofrecer planes ilimitados (sin costo fijo por SMS enviado y recibido) o con «bolsas» mensuales de mensajes, incluso en países como Australia, los SMS (o text como les llaman los aussies) son completamente gratuitos si tienes un plan contratado.

Justamente es aquí donde el SMS puede volver a la vida, si las operadoras dejan de cobrar por ellos, muchos dispositivos IoT podrían enviar datos periódicamente a un costo bastante competitivo. Pero bueno, habrá razones comerciales por las cuales no lo hacen. Por este motivo el titulo de este tutorial es «alarma» y no «dispositivo» IoT que envía constantemente valores.

Después de la introducción, que creo esta justificada vamos a lo que nos convoca, como enviar una Alarma vía SMS.

Vamos a plantearnos un problema bastante simple para que la programación no sea tan complicada, supongamos que tenemos un invernadero (cito este ejemplo porque me han hecho muchas preguntas al respecto) y deseamos que si la temperatura sube mas allá de los 25 grados recibamos una alarma porque eso implicaría que el sistema de refrigeración falló.

Deseamos que el sistema sea simple y barato, preferentemente con Arduino.

Ante este requerimiento, como es habitual en la plataforma Arduino, pensaríamos que para mandar un SMS necesitaríamos una Shield GSM y Arduino Uno, bueno, los muchachos de Seeedstudio fusionaron un Arduino Leonardo y una Shield GSM y crearon un Seeeduino GPRS, definido como ellos mismos como una placa para la Internet de las Cosas, y a un precio mas barato que un Arduino Uno ya que al parecer están de «clearance» y van a sacar una versión nueva.

Seeeduino GPRS

La placa Seeeduino GPRS esta basada en un procesador Atmega32U4 compatible con Arduino, y dispone de un modulo SIM800H que permite al procesador conectarse con la red GPRS en las bandas 850/900/1800/1900MHz, y que como valor agregado posee la funcionalidad Bluetooth y radio FM, todo por el módico precio de USD 19.90 (el precio normal es USD 39.50).

En este tutorial usaremos la funcionalidad para enviar SMS, pero esta claro que la placa es mucho mas poderosa e iremos viendo cada funcionalidad en los siguientes tutoriales. Manos a la obra!

Materiales

1 Seeeduino GPRS
1 Sensor de temperatura DS18B20
1 Simcard (activada y que pueda enviar SMS)
1 Protoboard
1 Cable Micro USB (el que usan los celulares Android)
3 cables para protoboard
1 Resistencia de 4.7 K

Procedimiento

Instalar Librerías en Arduino IDE

Seeedstudio ha desarrollado una librería para este Seeeduino que pueden descargar desde su repositorio GitHub, he encontrado algunos errores en las funciones para recibir SMS por lo cual he creado un fork para mejorar la función que permite leer los SMS, pero en este ejemplo solo enviaremos, sin recibir.

La librería se debe instalar de la forma habitual descomprimiendo la carpeta dentro de libraries donde tengamos el software de Arduino instalado que normalmente en un computador con Windows esta en C:\Program Files (x86)\Arduino. Aun no esta disponible para descargar directamente del IDE como las siguientes librerías que instalaremos.

Para el sensor de temperatura DS18B20 necesitaremos instalar dos librerías las cuales si están disponibles en el gestionador de librerías de Arduino IDE (Versión 1.8) en el menú Sketch / Include Library / Manage Libraries…

Se deben instalar dos librerías para controlar el sensor Dallas DS18B20, para eso se debe buscar utilizando el gestionador de librerías y buscar «DallasTemp»  de Adafruit y luego presionar el botón «Install», lo mismo para la librería  «OneWire» .

Insertar la Simcard en la placa Seeeduino GPRS

La simcard debe estar previamente activada en tu operador de telefonía móvil y no debe solicitar un PIN al momento de colocarla en el equipo.

Seeeduino GPRS dispone de un socket especial en la parte de abajo para las simcards normales, si tienes una micro simcard o una nano simcard necesitarás de un adaptador.

Circuito Eléctrico

El sensor Dallas DS18B20 posee tres pines que deben están numerados de acuerdo a la siguiente imagen.

Debemos armar el circuito eléctrico de acuerdo a la siguiente tabla y diagrama.

Seeeduino DS18B20
Pin 2 Pin 2
GND Pin 1
+5V Pin 3

Notar que la resistencia pull-up va entre los pines 2 y 3 del sensor DS18B20.

Programación

EL código para este tutorial esta en nuestro repositorio GitHub para que puedan descargarlo desde https://github.com/internetdelascosas/Seeeduino-GPRS-Alarma-SMS.  Siéntanse libres de hacer «fork», modificarlo y enviar sus «pull request».

Deben cambiar las constantes numero_telefono y temp_limite de acuerdo a sus requerimientos, en este caso la alarma se activará a los 25  grados para provocar su activación al calentar el sensor con la mano a modo de ejemplo.

Saludos!

Author: José Zorrilla

Ingeniero Civil Informático, Universidad de Santiago de Chile. Master of Professional Engineering University of Sydney. En Chile trabajó empresas de servicios internet y telcos como IBM, VTR y Entel. Le gusta la fotografía y el armado de drones, tiene estudios de violín, guitarra eléctrica y sintetizadores que enciende cuando tiene algo de tiempo.

3 thoughts

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *