La placa de desarrollo LinkIt ONE es una placa de código abierto para prototipar proyectos de IoT. ¡Nos gusta mucho el hecho de que ya incluye conectividad integrada como GSM, GPRS, Wi-Fi, Bluetooth y GPS!
Siguiendo esta guía, podrás POST datos a Ubidots utilizando el módulo LinkIt One en solo un par de minutos!
Requisitos
Una tarjeta SIM activa con un plan de datos
Paso a Paso
1. Configuración de hardware
2. Configuración del Arduino IDE
3. Enviando (POST) datos a Ubidots
4. Resumen
1. Configuración de hardware
1. Inserta la tarjeta SIM con un plan de datos activado en la placa LinkIt One.
2. Conecta la antena GSM en el conector respectivo ubicado en la parte posterior de la placa.
2. Configuración del Arduino IDE
1. Para poder trabajar con el LinkIt One en el Arduino IDE, instala la plataforma MediaTek utilizando el Administrador de Placas de Arduino preconfigurado. Si no estás familiarizado con la instalación de una placa con el Arduino IDE, consulta este artículo para obtener orientación adicional.
2. Con la plataforma MediaTek instalada, selecciona el dispositivo LinkItOne con el que estás trabajando. En este caso, estamos trabajando con un “LinkIt One”. Para seleccionar tu placa desde el Arduino IDE, selecciona Herramientas > Placa “LinkIt One”
3. Enviando (POST) datos a Ubidots
Con el siguiente código de ejemplo podrás publicar las lecturas tomadas de los A0, A1 y A2 de la placa LinkIt One.
1. Para publicar tus primeros valores en Ubidots, abre el Arduino IDE y pega el código de ejemplo a continuación. Una vez que hayas pegado el código, asigna los siguientes parámetros:
APN (Nombre del Punto de Acceso) de tu proveedor celular con nombre de usuario y contraseña.
#include <LGPRS.h> //incluir la biblioteca base GPRS#include <LGPRSClient.h> //incluir la capacidad de Publicar y Obtener información usando HTTP#include <LGPRSUdp.h>#include <LWiFi.h>#include <LWiFiClient.h>// Estas son las variables que querrás cambiar según tu cuenta / proveedor de transmisión de datos IoT#define HOST "industrial.api.ubidots.com"#define URL "/api/v1.6/devices/"#define DEVICELABEL "linkit-one"#define TOKEN "YOUR-UBIDOTS-TOKEN-HERE"#define APN "" // APN de tu proveedor celular#define APN_USER ""#define APN_PASS ""const int PACKET_SIZE = 3; byte packetBuffer[PACKET_SIZE]; LGPRSUDP u;char payload[180]; // Reserva un char para almacenar los datos de Ubidots. Considera 60 bytes por variable. char le[4];String response;int temp;void setup(){ Serial.begin(115200); // configurar el puerto Serial pinMode(13, OUTPUT); Serial.println("Conectando a la red GPRS"); // Conectar a la red GPRS - necesita agregar tiempo de espera while (!LGPRS.attachGPRS(APN,APN_USER,APN_PASS)) { delay(500); } Serial.println("¡GPRS conectado!"); delay(10000); }void loop(){ int temp = analogRead(A0); int ph = analogRead(A1); int hum = analogRead(A2); save_values(temp, ph, hum); delay(3000);}void save_values(int val1, int val2, int val3){ LGPRSClient client; //LWiFiClient client; sprintf(payload,"%s", "{"); sprintf(payload,"%s%s", payload, "{\"temperature"\":"); sprintf(payload,"%s%d", payload, val1); sprintf(payload,"%s%s", payload, ","); sprintf(payload,"%s%s", payload, "\"ph\":"); sprintf(payload,"%s%d", payload, val2); sprintf(payload,"%s%s", payload, ","); sprintf(payload,"%s%s", payload, "{\"humidity\":"); sprintf(payload,"%s%d", payload, val3); sprintf(payload,"%s%s", payload, "}"); // Obtener la longitud de toda la carga útil sprintf(le,"%d", strlen(payload)); Serial.println("Enviando: "); Serial.println(payload); // Conectar a Ubidots... if (client.connect(HOST, 80)){ Serial.println("¡Conectado!"); // Monitoreo de consola client.print(F("POST ")); client.print(URL); client.print(DEVICELABEL); client.println(F(" HTTP/1.1")); client.println(F("User-Agent: LinKit One/1.0")); client.print(F("X-Auth-Token: ")); client.println(TOKEN); client.println(F("Connection: close")); client.println(F("Content-Type: application/json")); client.print(F("Content-Length: ")); client.println(le); client.print(F("Host: ")); client.println(HOST); client.println(); client.println(payload); client.println(); } else { Serial.println(F("Conexión fallida")); } while (client.connected()) { while (client.connected() && !client.available()); // esperar char c = client.read(); Serial.print(c); } client.stop();}
2. Verifica tu código dentro del Arduino IDE. Para hacer esto, en la esquina superior izquierda de nuestro Arduino IDE verás el icono de "Marca de Verificación"; presiónalo para verificar tu código.
3. Sube el código a tu “LinkIt One”. Para hacer esto, elige el icono de "flecha derecha" al lado del icono de "marca de verificación".
4. Para verificar la conectividad del dispositivo y los datos enviados, abre el monitor serial seleccionando el icono de "lupa" en la esquina superior derecha del Arduino IDE para ver los registros de conectividad.
NOTA: Si no se ve ninguna respuesta, intenta desconectar el LinkIt One y luego volver a conectarlo. Asegúrate de que la velocidad de baudios del monitor serial esté configurada a la misma que se especifica en tu código 115200
.
5. Confirma los datos en Ubidots. Ahora deberías ver los datos publicados en tu cuenta de Ubidots, ubicados en el dispositivo llamado "linkit-one"
4. Resumen
Con este simple tutorial, puedes POST datos a Ubidots con la facilidad del Arduino IDE y una LinkIt One y conectividad GPRS. Si deseas manejar valores de contexto o timestamp en tu solicitud, consulta Ubidots REST API y modifica la solicitud construida en el código de ejemplo proporcionado.
¡Ahora es el momento de crear Dashboards de Ubidots para visualizar tus datos y desplegar tu solución IoT! ¡Feliz Hackeo! :)
Otros lectores también han encontrado útil...