Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Conectar un Intel Edison a Ubidots a través de MQTT
Conectar un Intel Edison a Ubidots a través de MQTT

Aprende a configurar y conectar el Intel Edison a Ubidots a través de MQTT utilizando la simplicidad del IDE de Arduino.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de 2 meses

El Intel Edison es una pequeña computadora en módulo ofrecida por Intel como un sistema de desarrollo para aplicaciones de Internet de las Cosas (IoT). El Edison cuenta con un CPU Intel Quark x86 de doble núcleo a 400 MHz y se comunica a través de Bluetooth y Wi-Fi.

El Intel Edison ofrece un KIT de Arduino con pines estándar de Arduino 1.0 y conectores estándar, diseñado específicamente para ser compatible con hardware o software que utilice el escudo Arduino Uno R3.

Esta guía paso a paso te ayudará a:

  1. Ensamblar y conectar cables a tu placa Intel® Edison.

  2. Ejecutar la herramienta de configuración para instalar los controladores USB y flashear el firmware de tu placa Intel® Edison.

  3. Establecer una contraseña de dispositivo y conectar tu placa de desarrollo a Wi-Fi.

  4. Recoger, analizar y organizar tu panel de control de Ubidots para la gestión de dispositivos y datos.

Requisitos

El módulo de computación Intel® Edison está destinado a ser utilizado con una placa de expansión y generalmente se compra junto con un kit que contiene el módulo de computación y una placa de expansión.

Requisitos:

  • Módulo de computación Intel® Edison

  • Placa de expansión Arduino*

  • Cables Micro-B USB a USB estándar (x 2)

  • Fuente de alimentación de corriente continua (CC) (ver especificaciones)

Paso a Paso

  1. Configurando el Intel Edison

  2. Configurando el IDE de Arduino

  3. Enviando (PUBLICAR) datos a Ubidots

  4. Recibiendo (SUSCRIBIR) datos de Ubidots

  5. Resumen

1. Configurando el Intel Edison

  1. Ensamblar la placa Intel Edison. Con el siguiente enlace encontrarás todas las especificaciones para ensamblar tu hardware correctamente.

2. Descarga la última herramienta de configuración para tu sistema operativo (SO) para acceder a las características del Kit de Desarrollo Intel® IoT.

3. Acepta los términos de la licencia y sigue paso a paso las instrucciones de la herramienta de configuraciones.

4. Instala los controladores USB.

NOTA IMPORTANTE: Los controladores permiten que tu computadora reconozca las placas como dispositivos. Por esta razón, asegúrate de que todos los controladores estén correctamente instalados.

5. Descarga el último firmware y flashea a tu Intel Edison. Esto tomará unos minutos - por favor, ten paciencia.

6. Una vez que la descarga haya finalizado, debería aparecer la ventana a continuación. Asegúrate de que tu placa esté correctamente conectada a tu PC y alimentada para permitir el flasheo y reinicio.

7. Establece un nombre de dispositivo y una contraseña para habilitar SHH. No se necesita una guía para este paso, simplemente sigue la configuración en pantalla.

8. Conecta tu placa a Wi-Fi. La placa escaneará las redes disponibles y te mostrará las redes detectadas. Selecciona la que deseas usar; selecciona la seguridad de la red e ingresa las credenciales y la contraseña de Wi-Fi. Si cambias alguna configuración de Wi-Fi, no olvides anotarlas para la próxima vez que las necesites.

9. Una vez que tu dispositivo esté conectado a la red, se te proporcionará la dirección IP del dispositivo.

10. Verifica que todas las configuraciones estén marcadas y, por lo tanto, completadas. Haz clic en el botón “Finalizar” una vez confirmado.

2. Configurando el IDE de Arduino

1. Abre el IDE de Arduino, si no tienes el IDE puedes descargar rápidamente la última versión del IDE de Arduino aquí.

2. Para poder trabajar con la plataforma Intel en el IDE de Arduino, necesitarás instalar la plataforma Intel utilizando el Administrador de Placas preconfigurado de Arduino. Si no estás familiarizado con agregar una placa en el IDE de Arduino, consulta este artículo para obtener orientación adicional.

  • Plataforma Intel a instalar: Placas Intel i868 - Edison

3. Con la plataforma Intel instalada, selecciona el dispositivo Intel con el que estás trabajando. En este caso, estamos trabajando con un “Intel Edison”. Para seleccionar tu placa desde el IDE de Arduino, selecciona Herramientas > Placa Intel Edison”. Luego, selecciona la placa y elige el puerto COM asignado a la placa.

4. Descarga e instala la biblioteca PubSubClient . La biblioteca se puede encontrar en el siguiente enlace.

Para aprender cómo instalar bibliotecas usando el IDE de Arduino, consulta esta guía.

3. Enviando (PUBLICAR) datos a Ubidots

Con el siguiente código de ejemplo podrás publicar lecturas tomadas de los pines ANALOG A0 y A1 del Kit de Arduino Intel Edison en tu cuenta de Ubidots.

1. Para publicar tu primer valor en Ubidots, abre el IDE de Arduino y pega el código a continuación. Una vez que hayas pegado el código, necesitarás asignar tu único TOKEN de Ubidots, SSID (Nombre de WiFi), y la contraseña de la red disponible.

/**************************************** * Incluir Bibliotecas ****************************************/#include <PubSubClient.h>#include <SPI.h>#include <WiFi.h>/**************************************** * Definir tus credenciales de Wi-Fi ****************************************/char ssid[] = "xxxxx"; //  Tu SSID de red (nombre)char password[] = "xxxxx";    // Tu contraseña de red (usar para WPA, o usar como clave para WEP)/**************************************** * Definir Constantes ****************************************/#define TOKEN "xxxxx" // Tu TOKEN de Ubidots#define DEVICE_LABEL "edison" // La etiqueta de tu dispositivo#define VARIABLE_LABEL_1 "sensor-1"// La etiqueta de tu variable (1)#define VARIABLE_LABEL_2 "sensor-2"// La etiqueta de tu variable (2)#define MQTT_SERVER "industrial.api.ubidots.com"#define sensor1 A0#define sensor2 A1char topic[150];float sensorValue1;float sensorValue2;WiFiClient wifiClient;PubSubClient client(wifiClient);/**************************************** * Funciones Auxiliares ****************************************/void callback(char* topic, byte* payload, unsigned int length) {  Serial.print("Mensaje recibido [");  Serial.print(topic);  Serial.print("] ");  for (int i=0;i<length;i++) {    Serial.print((char)payload[i]);  }}void reconnect() {  // Bucle hasta que estemos reconectados  while (!client.connected()) {    Serial.println("Intentando conexión MQTT...");    // Intentar conectar    if (client.connect("intel-edison", TOKEN,"")) {      Serial.println("conectado");    } else {      Serial.print("fallido, rc=");      Serial.print(client.state());      Serial.println(" intenta de nuevo en 2 segundos");      // Espera 2 segundos antes de reintentar      delay(2000);    }  }}/**************************************** * Funciones Principales ****************************************/void setup() {    Serial.begin(115200);    pinMode(sensor1, INPUT);    pinMode(sensor2, INPUT);    pinMode(RELAY, OUTPUT);    delay(10);         // Comenzamos conectándonos a una red WiFi    Serial.println();    Serial.print("Conectando a ");    Serial.println(ssid);      WiFi.begin(ssid, password);      while (WiFi.status() != WL_CONNECTED) {      delay(500);      Serial.print(".");    }      Serial.println("");    Serial.println("WiFi conectado");    Serial.println("Dirección IP: ");    Serial.println(WiFi.localIP());    client.setServer(MQTT_SERVER, 1883);    client.setCallback(callback);    sprintf(topic, "%s%s", "/v1.6/devices/", DEVICE_LABEL);    }void loop() {    if (!client.connected()) {      reconnect();    }    char* payload = (char *) malloc(sizeof(char) * 100);    sensorValue1 = analogRead(sensor1);    sensorValue2 = analogRead(sensor2);        sprintf(payload, "{\"%s\": %f}", VARIABLE_LABEL_1, sensorValue1);        client.publish(topic, payload);    //Serial.println((topic, payload));    Serial.print("Valor del Sensor 1: ");    Serial.println(sensorValue1);          sprintf(payload, "{\"%s\": %f}", VARIABLE_LABEL_2, sensorValue2);        client.publish(topic, payload);    //Serial.println((topic, payload));        Serial.print("Valor del Sensor 2: ");    Serial.println(sensorValue2);    free(payload);    client.loop();    delay(5000);}

2. Verifica tu código dentro del IDE de Arduino. Para hacer esto, en la esquina superior izquierda de nuestro IDE de Arduino verás el ícono de "Marca de Verificación"; presiónalo para verificar tu código.

3. Sube el código a tu “Intel Edison”. Para hacer esto, elige el ícono de "flecha derecha" junto al ícono de "marca de verificación".

4. Para verificar la conectividad del dispositivo y los datos enviados, abre el monitor serial seleccionando el ícono de "lupa" en la esquina superior derecha del IDE de Arduino para ver los registros de conectividad.

5. Confirma tus datos en Ubidots. Ahora deberías ver los datos publicados en tu cuenta de Ubidots, ubicada en el dispositivo llamado "edison".

4. Recibiendo (SUSCRIBIR) datos de Ubidots

Con el siguiente código de ejemplo podrás suscribirte a un valor de Ubidots para comenzar a controlar cualquier activo que desees.

1. Para comenzar a recibir valores de Ubidots, abre el IDE de Arduino y pega el código de ejemplo a continuación. Una vez que hayas pegado el código, asegúrate de asignar los siguientes parámetros:

/**************************************** * Incluir Bibliotecas ****************************************/#include <PubSubClient.h>#include <SPI.h>#include <WiFi.h>/**************************************** * Definir tus credenciales de Wi-Fi ****************************************/char ssid[] = "xxxxx"; //  Tu SSID de red (nombre)char password[] = "xxxxx";    // Tu contraseña de red (usar para WPA, o usar como clave para WEP)/**************************************** * Definir Constantes ****************************************/#define TOKEN "xxxxx" // Tu TOKEN de Ubidots#define DEVICE_LABEL "edison" // La etiqueta de tu dispositivo#define VAR_SUBSCRIBE "relay" // La etiqueta de tu variable para suscribirse#define MQTT_SERVER "industrial.api.ubidots.com"#define RELAY 3 char topic[150];WiFiClient wifiClient;PubSubClient client(wifiClient);/**************************************** * Funciones Auxiliares ****************************************/void callback(char* topic, byte* payload, unsigned int length) {  Serial.print("Mensaje recibido [");  Serial.print(topic);  Serial.print("] ");  for (int i=0;i<length;i++) {    Serial.print((char)payload[i]);  }  if ((char)payload[0]=='1'){    digitalWrite(RELAY, HIGH);  }  else{    digitalWrite(RELAY, LOW);  }}void reconnect() {  // Bucle hasta que estemos reconectados  while (!client.connected()) {    Serial.println("Intentando conexión MQTT...");    // Intentar conectar    if (client.connect("intel-edison", TOKEN,"")) {      Serial.println("conectado");      client.subscribe("/v1.6/devices/"DEVICE_LABEL"/"VAR_SUBSCRIBE"/lv");    } else {      Serial.print("fallido, rc=");      Serial.print(client.state());      Serial.println(" intenta de nuevo en 2 segundos");      // Espera 2 segundos antes de reintentar      delay(2000);    }  }}/**************************************** * Funciones Principales ****************************************/void setup() {    Serial.begin(115200);    pinMode(RELAY, OUTPUT);    delay(10);         // Comenzamos conectándonos a una red WiFi    Serial.println();    Serial.print("Conectando a ");    Serial.println(ssid);      WiFi.begin(ssid, password);      while (WiFi.status() != WL_CONNECTED) {      delay(500);      Serial.print(".");    }    Serial.println("");    Serial.println("WiFi conectado");    Serial.println("Dirección IP: ");    Serial.println(WiFi.localIP());    client.setServer(MQTT_SERVER, 1883);    client.setCallback(callback);    sprintf(topic, "%s%s", "/v1.6/devices/", DEVICE_LABEL);        client.subscribe("/v1.6/devices/"DEVICE_LABEL"/"VAR_SUBSCRIBE"/lv"); }void loop() {    if (!client.connected()) {      reconnect();      client.subscribe("/v1.6/devices/"DEVICE_LABEL"/"VAR_SUBSCRIBE"/lv");     }    client.loop();}

2. Verifica & Sube el código a la placa siguiendo los mismos pasos proporcionados en el paso de PUBLICAR anterior.

3. Para verificar la conectividad del dispositivo y los datos que se están recibiendo, abre el monitor serial seleccionando el ícono de "lupa" en la esquina superior derecha del IDE de Arduino para ver los registros de conectividad.

4. En el monitor serial, podrás ver el último valor recibido en Ubidots de la variable especificada en el firmware.

5. Resumen

Con este simple tutorial puedes PUBLICAR y SUSCRIBIR datos desde/hacia Ubidots con la facilidad del IDE de Arduino y un Intel Edison. Si deseas publicar y suscribirte al mismo tiempo, puedes consultar este código de ejemplo.

Ahora es tiempo de crear Paneles de Control de Ubidots para visualizar tus datos y desplegar tu solución IoT. ¡Feliz Hackeo! :)

Otros lectores también han encontrado útil...

¿Ha quedado contestada tu pregunta?