Envío de mensajes de texto desde Arduino

En un proyecto anterior, te mostramos cómo publicar en Twitter desde Arduino. En este nuevo tutorial aprenderás a enviar mensajes de texto desde Arduino y ESP8266 cuando un sensor infrarrojo detecte un movimiento.

Para este proyecto también vamos a hacer uso de la plataforma IFTTT, una plataforma web gratuita que conecta dispositivos con servicios como Gmail, Twitter, Instagram, Dropbox, Fitbit, Amazon Alexa y muchos más.

Mediante IFTTT configuraremos un applet que servirá de disparador para ejecutar nuestro evento el cual es notificar vía SMS cada vez que un sensor infrarrojo envíe datos a nuestra placa Arduino.

Proyecto envío de mensajes de texto desde Arduino

Para este proyecto, conectaremos un sensor de movimiento a una placa Arduino UNO y luego transferiremos la señal digital a un módulo ESP8266.

El sensor infrearrojo, también conocido como sensor de proximidad, es un sensor digital que emite un pulso ALTO cuando detecta movimiento.

El módulo ESP8266 está configurado para enviar una solicitud GET a IFTTT cuando la señal es ALTA. La solicitud GET activa el applet, que luego envía un SMS al dispositivo que vamos a configurar.

El montaje físico de este proyecto lo puedes observar en la siguiente imagen:

Configuración del servicio IFTTT

Lo primero es ir al sitio web de IFTTT y crear una cuenta nueva.

Una vez iniciado sesión, ve a la barra de herramientas en la parte superior derecha y selecciona la opción Crear.

Cómo enviar un correo electrónico con ESP8266 e IFTTT - Creación de cuenta

Ahora debemos establecer una condición haciendo clic en «+ this».

Cómo enviar correo electrónico con ESP8266 e IFTTT - Creación de cuenta Paso 2

Luego selecciona «webhooks».

Dentro de la opción webhooks, selecciona recibir una solicitud web. Luego selecciona ESP_MotionSMS y luego haz click en create trigger.

Ahora se debe configurar la acción, para esto haz click en «+ that».

Cómo enviar un correo electrónico con ESP8266 e IFTTT - Parámetro de acción

Desafortunadamente, IFTTT ha descontinuado el soporte para mensajes de textousando webhooks, y la única forma de acceder a dicha función es instalar la aplicación IFTTT en un dispositivo Android.

Finalmente, escribe el contenido del SMS.

Hay algunas variables útiles que puede usar para redactar su mensaje:

EventName que contiene el nombre del evento.

OccurredAt que muestra la fecha y hora en que se activó el evento.

Value que puede incluir cualquier número que desee enviar al servidor IFTTT.

Comprueba que haz introducido los datos correctos y da click al botón finalizar.

El applet ya está listo.

Ahora, para habilitar su dispositivo Android para recibir notificaciones por SMS, busque IFTTT en Google PlayStore e instálelo.

Después de la instalación, inicie sesión con sus credenciales de IFTTT para asociar tu cuenta.

Adquisicion de la llave

Para activar el Applet, es necesaria la clave con el nombre del evento en nuestra solicitud HTTP.

Para obtener su clave IFTTT única, ve a la página de inicio y busca webhooks en la barra de búsqueda superior izquierda.

Ahora, en la página de webhooks, haz click en el vínculo Documentación, en la esquina superior derecha de la pantalla.

Esta opción muestra su clave personal y la solicitud web para su evento.

Esta clave es única para cada cuenta IFTTT.

Ahora continuemos al código.

Código para Envío de mensajes de texto desde Arduino

#include "SerialTransfer.h"

SerialTransfer myTransfer;
int status;

void setup()
{
  Serial.begin(115200);
  myTransfer.begin(Serial);
  pinMode(5, INPUT);
}

void loop()
{
  status = digitalRead(D5);
  myTransfer.txObj(status, sizeof(status));
  myTransfer.sendData(sizeof(status));
  delay(100);
}

Código para el módulo ESP8266

#include <ESP8266WiFi.h> 
#include "SerialTransfer.h"

SerialTransfer myTransfer;

const char* ssid     = "Wifi Name";
const char* password = "WiFi Password";

const char* resource = "https://maker.ifttt.com/trigger/YOUR EVENT NAME HERE/with/key/YOUR KEY HERE";
const char* server = "maker.ifttt.com";

void setup() {
Serial.begin(115200);
pinMode(D5, INPUT);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }

  myTransfer.begin(Serial);
}

void loop() 
{
  if(myTransfer.available())
  {
    int status;  
    myTransfer.rxObj(myFloat, sizeof(myFloat));
    if (status==1)
    {
        WiFiClient client;
        client.print(String("GET ") + resource + 
                        " HTTP/1.1\r\n" +
                        "Host: " + server + "\r\n" + 
                        "Connection: close\r\n\r\n");
                    
        int timeout = 5 * 10; // 5 seconds             
        while(!!!client.available() && (timeout-- > 0))
        {
        delay(100);
        }
        while(client.available())
        {
        Serial.write(client.read());
        }
        client.stop();
        delay(10000);
    }      
  } 
}  

Código para NodeMCU

#include <ESP8266WiFi.h> 

const char* ssid     = "Wifi Name";
const char* password = "WiFI";

const char* resource = "https://maker.ifttt.com/trigger/YOUR EVENT NAME HERE/with/key/YOUR KEY HERE";
const char* server = "maker.ifttt.com";

int status;

void setup() {
  Serial.begin(115200);
  pinMode(D5, INPUT);
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() 
{
  status = digitalRead(D5);
  delay(500);
  Serial.println(status);
  if (status==1)
  {
    WiFiClient client;
    client.print(String("GET ") + resource + 
                      " HTTP/1.1\r\n" +
                      "Host: " + server + "\r\n" + 
                      "Connection: close\r\n\r\n");
                  
    int timeout = 5 * 10; // 5 seconds             
    while(!!!client.available() && (timeout-- > 0))
    {
      delay(100);
    }
    while(client.available())
    {
      Serial.write(client.read());
    }
    client.stop();
    delay(10000);
  }
  else 
  {
    return;
  }
}  

Finalmente podrás recibír una notificación de la aplicación IFTTT y luego un mensaje de texto poco después luego de que el sensor detecte movimiento.

Esperamos que este artículo te haya servido para aprender configurar el envío de mensajes de texto desde Arduino.

Deja un comentario

programar en arduino logo

En este sitio aprenderas a programar en Arduino de forma gratuita a través de sencillos tutoriales y distintos proyectos.