Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Conectar el Kit de Prototipo de Sensor SenseCAP K1100 de Seeed Studio a Ubidots [Wi-Fi]
Conectar el Kit de Prototipo de Sensor SenseCAP K1100 de Seeed Studio a Ubidots [Wi-Fi]

Este artículo explora los pasos necesarios para conectar el SenseCAP K1100 a Ubidots utilizando su módulo Wi-Fi y enviando los datos de su sensor integrado.

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

Requisitos

1. Actualizando el firmware de SenseCAP K1100

  • Ve a la página de Github de Seeed Studio y descarga el archivo “SenseCraft-v0.2.uf2” o el firmware más reciente. Mantén un registro de dónde descargaste este archivo para uso futuro.

  • Conecta el Wio Terminal a la PC usando el cable USB-C.

  • Haz que el Wio Terminal entre en “Modo Bootloader” siguiendo el siguiente procedimiento:

image.png

Consejo Profesional: Puedes confirmar que el Wio Terminal está en modo Bootloader cuando el LED azul comienza a parpadear de una manera diferente a solo parpadear.


  • Abre tu explorador de archivos y verifica si hay un dispositivo etiquetado como “Arduino”. Si no está listado, entonces el dispositivo no está en “Modo Bootloader”. Repite el paso anterior.

  • Usando tu explorador de archivos, copia y pega el archivo “SenseCraft-v0.2.uf2” en el dispositivo “Arduino” .

  • Cuando el proceso de copia haya terminado, el Wio Terminal se reiniciará automáticamente (espera a que lo haga).

2. Configurando el Arduino IDE

  • Lanza el Arduino IDE.

  • Haz clic en “Archivo” → “Preferencias” y copia la siguiente URL en el campo “URLs adicionales del gestor de placas” :

https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
image140.png
  • Haz clic en “Herramientas”“Placa”“Gestor de placas”, dirígete a la barra de búsqueda y escribe “Wio Terminal”. Instala la versión más reciente de “Seeed SAMD Boards”.

  • Espera a que la descarga termine y luego haz clic en el botón “Cerrar”.

image988.png
  • Selecciona tu placa yendo a “Herramientas” → “Placa” → “Seeed SAMD (32-bits ARM Cortex-M0+ y Cortex-M4) Boards” → “Seeeduino Wio Terminal”.

image1056.png
  • Selecciona el puerto al que está conectada tu placa. Ve a “Herramientas” → “Puerto” y selecciona tu dispositivo de los disponibles.


Consejo Profesional: En sistemas operativos Windows, es más probable que los dispositivos se enumeren como “COM1”, “COM2”, etc., mientras que en sistemas operativos basados en Linux, los dispositivos se enumerarán como “/dev/ttyACM0”, “/dev/ttyACM1”, etc.


image1134.png
  • Ve al Arduino IDE → “Sketch” → “Incluir biblioteca” → “Agregar biblioteca .ZIP...”

  • Agrega las bibliotecas que acabas de descargar de GitHub.

image1150.png
  • Ve a “Sketch” → “Incluir biblioteca” → “Administrar bibliotecas...”, busca e instala las siguientes bibliotecas:

    • “Seeed Arduino rcpWIFi”

    • “Seeed Arduino rcpUnified”

    • “Seeed Arduino mbedtls”

    • “Seeed Arduino FS”

    • “Seeed Arduino SFUD”

    • “PubSubClient”

image1184.png

3. Preparando las Credenciales de Conexión

  • Dirígete a tu cuenta de Ubidots y copia tu Token de Ubidots para uso posterior. En este enlace puedes aprender cómo obtener tu Token de Ubidots.

  • Ve a este sitio web y genera una cadena aleatoria según la siguiente configuración. Este será el nombre del cliente MQTT en los pasos posteriores.

  • Mantén ambos valores a mano porque los necesitarás para la siguiente sección.

image.png

4. Subiendo el Código al Wio Terminal

  • Ve al Arduino IDE, elimina todo el código y pega lo siguiente, reemplazando cada campo “#define” según corresponda:

    • WIFISSID: Tu SSID de Wi-Fi

    • PASSWORD: Tu contraseña de Wi-Fi

    • TOKEN: Tu Token de Ubidots

    • VARIABLE_LABEL1..., VARIABLE_LABEL5: Puedes dejar las opciones predeterminadas, sin embargo, puedes cambiarlas para que se ajusten a tus necesidades

    • DEVICE_LABEL: Puedes dejar la opción predeterminada. En ese caso, tu dispositivo se mostrará como “wio-terminal” en la plataforma de Ubidots, sin embargo, puedes cambiarlo para que se ajuste a tus necesidades

    • MQTT_CLIENT_NAME: la cadena aleatoria generada en la sección anterior

#include <PubSubClient.h>#include <rpcWiFi.h>#include <TFT_eSPI.h>#include"LIS3DHTR.h" LIS3DHTR<TwoWire> lis; //Información requerida#define WIFISSID "<YOUR-WIFISSD>" // Pon tu WifiSSID aquí#define PASSWORD "<YOUR-WIFI-PASSWORD" // Pon tu contraseña de wifi aquí#define TOKEN "<YOUR-UBIDOTS-TOKEN>" // Pon tu TOKEN de Ubidots#define VARIABLE_LABEL1 "light" // Asigna la etiqueta de la variable#define VARIABLE_LABEL2 "IMUx"#define VARIABLE_LABEL3 "IMUy"#define VARIABLE_LABEL4 "IMUz"#define VARIABLE_LABEL5 "sound"#define DEVICE_LABEL "wio-terminal" // Asigna la etiqueta del dispositivo#define MQTT_CLIENT_NAME "r6y1ax7mq8875jf" // Nombre del cliente MQTT const long interval = 100;unsigned long previousMillis = 0; TFT_eSPI tft; char mqttBroker[] = "industrial.api.ubidots.com"; WiFiClient wifiClient;PubSubClient client(wifiClient); //valores del sensorstatic int lightValue = 0;static float imuxValue = 0;static float imuyValue = 0;static float imuzValue = 0;static int soundValue = 0; // Espacio para almacenar valores a enviarstatic char str_light[6];static char str_imux[6];static char str_imuy[6];static char str_imuz[6];static char str_sound[6];char payload[700];char topic[150]; 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(MQTT_CLIENT_NAME, 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);    }  }} //Leyendo valores del sensor incorporadovoid read_builtin(){  lightValue = analogRead(WIO_LIGHT);  Serial.print("Luz = ");  Serial.println(lightValue);   imuxValue = lis.getAccelerationX();  Serial.print("IMU_x = ");  Serial.println(imuxValue);  imuyValue = lis.getAccelerationY();  Serial.print("IMU_y = ");  Serial.println(imuyValue);  imuzValue = lis.getAccelerationZ();  Serial.print("IMU_z = ");  Serial.println(imuzValue);   soundValue = analogRead(WIO_MIC);  Serial.print("Sonido = ");  Serial.println(soundValue);} //Enviando datos a Ubidotsvoid send_data(){  dtostrf(lightValue, 4, 0, str_light);  dtostrf(imuxValue, 4, 3, str_imux);  dtostrf(imuyValue, 4, 3, str_imuy);  dtostrf(imuzValue, 4, 3, str_imuz);  dtostrf(soundValue, 4, 0, str_sound);   if (!client.connected()) {    reconnect();  }   // Construye el tema  sprintf(topic, "%s", ""); // Limpia el contenido del tema  sprintf(topic, "%s%s", "/v2.0/devices/", DEVICE_LABEL);   //Construye la carga útil  sprintf(payload, "%s", ""); // Limpia la carga útil  sprintf(payload, "{\"%s\":", VARIABLE_LABEL1); // Agrega la etiqueta de la variable  sprintf(payload, "%s%s", payload, str_light); // Agrega el valor  sprintf(payload, "%s}", payload); // Cierra los corchetes del diccionario  client.publish(topic, payload);  delay(500);   sprintf(payload, "%s", ""); // Limpia la carga útil  sprintf(payload, "{\"%s\":", VARIABLE_LABEL2); // Agrega la etiqueta de la variable  sprintf(payload, "%s%s", payload, str_imux); // Agrega el valor  sprintf(payload, "%s}", payload); // Cierra los corchetes del diccionario  client.publish(topic, payload);  delay(500);   sprintf(payload, "%s", ""); // Limpia la carga útil  sprintf(payload, "{\"%s\":", VARIABLE_LABEL3); // Agrega la etiqueta de la variable  sprintf(payload, "%s%s", payload, str_imuy); // Agrega el valor  sprintf(payload, "%s}", payload); // Cierra los corchetes del diccionario  client.publish(topic, payload);  delay(500);   sprintf(payload, "%s", ""); // Limpia la carga útil  sprintf(payload, "{\"%s\":", VARIABLE_LABEL4); // Agrega la etiqueta de la variable  sprintf(payload, "%s%s", payload, str_imuz); // Agrega el valor  sprintf(payload, "%s}", payload); // Cierra los corchetes del diccionario  client.publish(topic, payload);  delay(500);   sprintf(payload, "%s", ""); // Limpia la carga útil  sprintf(payload, "{\"%s\":", VARIABLE_LABEL5); // Agrega la etiqueta de la variable  sprintf(payload, "%s%s", payload, str_sound); // Agrega el valor  sprintf(payload, "%s}", payload); // Cierra los corchetes del diccionario  client.publish(topic, payload);  delay(500);   client.loop();} void setup() {  Serial.begin(115200);  lis.begin(Wire1);  pinMode(WIO_MIC, INPUT);  pinMode(WIO_LIGHT, INPUT);   tft.begin();  tft.setRotation(3);  tft.setTextSize(2);  tft.fillScreen(TFT_BLACK);   lis.setOutputDataRate(LIS3DHTR_DATARATE_25HZ); //Tasa de salida de datos  lis.setFullScaleRange(LIS3DHTR_RANGE_2G); //  while(!Serial);   // Establecer WiFi en modo estación y desconectar de un AP si estaba conectado previamente  WiFi.mode(WIFI_STA);  WiFi.disconnect();   tft.drawString("Conectando a WiFi...",20,120);  WiFi.begin(WIFISSID, PASSWORD);   while (WiFi.status() != WL_CONNECTED) {    delay(500);    WiFi.begin(WIFISSID, PASSWORD);  }   tft.fillScreen(TFT_BLACK);  tft.drawString("Conectado a la WiFi",20,120);   delay(1000);  client.setServer(mqttBroker, 1883);  client.setCallback(callback); } void loop() {  read_builtin();   //Leyendo valores del sensor incorporado  send_data();   //Enviando datos a Ubidots  delay(5000);}
  • Sube el código al dispositivo “Wio Terminal” presionando el botón “Subir” en el Arduino IDE:

5. Visualiza los Datos en Ubidots

  • Ve a tu cuenta de Ubidots → “Dispositivos” y podrás ver un nuevo dispositivo etiquetado como “wio-terminal”.

¿Ha quedado contestada tu pregunta?