Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Conectar el Adafruit Ethernet FeatherWing a Ubidots a través de HTTP
Conectar el Adafruit Ethernet FeatherWing a Ubidots a través de HTTP

Aprende a configurar tu Adafruit Ethernet FeatherWing con Ubidots.

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

El Adafruit Ethernet FeatherWing es la opción perfecta para instalaciones permanentes que utilizan conexiones de internet por cable confiables. Lo que más nos gusta del Ethernet FeatherWing es que funciona con toda la serie de placas Feather y se puede gestionar fácilmente para ejecutar una serie de diferentes aplicaciones con altas tasas de datos utilizando una conexión ethernet. Haz clic para aprender más sobre el Ethernet FeatherWing en la página oficial de Adafruit.

En el siguiente tutorial, Ubidots demostrará cómo configurar y programar el Adafruit Ethernet FeatherWing utilizando el Arduino IDE para visualizar e interpretar datos utilizando la Plataforma de Aplicaciones IoT de Ubidots.

Requisitos

Paso a Paso

  1. Configura el Arduino IDE con tu dispositivo

  2. Configuración de Hardware

  3. Programación

  4. Resumen

1. Configura el Arduino IDE con tu dispositivo

El Adafruit Ethernet FeatherWing se puede utilizar con cualquier placa Feather, y el código de muestra proporcionado a continuación fue diseñado abiertamente para adaptarse a la serie, así que elige tu hardware Feather libremente.

Para aprender cómo configurar las placas Feather, consulta el sitio de Adafruit

¿Buscando el Feather HUZZAH ESP8266 con la configuración del Arduino IDE? Consulta esta guía para llevarte al lugar correcto.

a) Instalaciones de bibliotecas:

1. Ve al repositorio de bibliotecas de Adafruit para descargar la biblioteca Ethernet2. Para descargar la biblioteca, haz clic en el botón verde llamado "Clone or download" y selecciona "Download ZIP".

2. Ahora, de vuelta en el Arduino IDE, haz clic en Sketch -> Incluir Biblioteca -> Agregar Biblioteca .ZIP y selecciona el archivo .ZIP de Ethernet2-master y luego “Aceptar” o “Elegir”. Una vez que la biblioteca se haya agregado con éxito, recibirás el mensaje "Biblioteca añadida a tus bibliotecas".

Paso 2. Configuración de hardware

1. Conecta el Ethernet FeatherWing a la placa Feather.

2. Conecta un extremo del cable Ethernet al Ethernet FeatherWing y el otro a tu hub, router o switch.

Paso 3. Enviando (POST) Datos a Ubidots

Con el siguiente código de muestra, enviaremos lecturas ANALÓGICAS tomadas del pin A0 de la placa Feather a Ubidots para habilitar los datos.

1. Para enviar tu primer valor a Ubidots, abre el Arduino IDE y pega el código de muestra a continuación. Una vez que hayas pegado el código, necesitarás asignar tu TOKEN único de Ubidots para la autenticación.

/******************************** * Bibliotecas incluidas *******************************/#include <SPI.h>#include <Ethernet2.h>/******************************** * Constantes y objetos *******************************/ /* Ingresa una dirección MAC para tu controlador a continuación.   Las placas Ethernet más nuevas tienen una dirección MAC impresa en una etiqueta en la placa */byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };/* Establece la dirección IP estática a utilizar si el DHCP no asigna */IPAddress ip(192, 168, 0, 177);/* Inicializa la biblioteca del cliente Ethernet   con la dirección IP y el puerto del servidor   al que deseas conectarte (el puerto 80 es el predeterminado para HTTP) */EthernetClient client;unsigned long lastConnectionTime = 0;             // última vez que te conectaste al servidor, en milisegundosconst unsigned long postingInterval = 10L * 1000L; // retraso entre actualizaciones, en milisegundos// la "L" es necesaria para usar números de tipo largo//#define WIZ_RESET 9#if defined(ESP8266)  // predeterminado para ESPressif  #define WIZ_CS 15#elif defined(ESP32)  #define WIZ_CS 33#elif defined(ARDUINO_STM32_FEATHER)  // predeterminado para WICED  #define WIZ_CS PB4#elif defined(TEENSYDUINO)  #define WIZ_CS 10#elif defined(ARDUINO_FEATHER52)  #define WIZ_CS 11#else   // predeterminado para 328p, 32u4 y m0  #define WIZ_CS 10#endifconst char* TOKEN = "...."; // Pon aquí tu TOKENconst char* DEVICE_LABEL = "feather-ethernet"; // La etiqueta de tu dispositivoconst char* VARIABLE_LABEL = "temperature"; // La etiqueta de tu variableconst char* HTTPSERVER = "industrial.api.ubidots.com";   const char* USER_AGENT = "ESP8266";const char* VERSION = "1.0";/******************************** * Funciones Auxiliares *******************************//** * Obtiene la longitud del cuerpo * @arg variable el cuerpo de tipo char * @return dataLen la longitud de la variable */int dataLen(char* variable) {  uint8_t dataLen = 0;  for (int i = 0; i <= 250; i++) {    if (variable[i] != '\0') {      dataLen++;    } else {      break;    }  }  return dataLen;}/******************************** * Funciones Principales *******************************/void setup() {#if defined(WIZ_RESET)  pinMode(WIZ_RESET, OUTPUT);  digitalWrite(WIZ_RESET, HIGH);  delay(100);  digitalWrite(WIZ_RESET, LOW);  delay(100);  digitalWrite(WIZ_RESET, HIGH);#endif#if !defined(ESP8266)   /* espera a que el puerto serie se conecte */  while (!Serial); #endif  /* Abre las comunicaciones serie y espera a que el puerto se abra */  Serial.begin(115200);  delay(1000);  Serial.println("\nConfigurando...");  Ethernet.init(WIZ_CS);    /* da tiempo al módulo ethernet para arrancar */  delay(1000);  /* inicia la conexión Ethernet */  if (Ethernet.begin(mac) == 0) {    Serial.println("Error al configurar Ethernet usando DHCP");    /* no tiene sentido continuar, así que no hagas nada para siempre:       intenta configurar usando la dirección IP en lugar de DHCP */    Ethernet.begin(mac, ip);  }    /* imprime la dirección IP de la placa/escudo Ethernet */  Serial.print("Mi dirección IP: ");  Serial.println(Ethernet.localIP());}void loop() {  /* si hay datos entrantes de la conexión de red.     envíalos por el puerto serie. Esto es solo para depuración     propósitos */  if (client.available()) {    char c = client.read();    Serial.write(c);  }  /* si han pasado diez segundos desde tu última conexión,     entonces conéctate de nuevo y envía datos */  if (millis() - lastConnectionTime > postingInterval) {    httpRequest();  }}/* este método realiza una conexión HTTP al servidor */void httpRequest() {  char* body = (char *) malloc(sizeof(char) * 150);  char* data = (char *) malloc(sizeof(char) * 300);  /* Espacio para almacenar valores a enviar */  char str_val[10];    /* cierra cualquier conexión antes de enviar una nueva solicitud.     Esto liberará el socket en el escudo WiFi */  client.stop();  /* Lee el sensor de la entrada analógica*/  float sensor_value = analogRead(A0);  /*---- Transforma los valores de los sensores a tipo char -----*/  /* 4 es el ancho mínimo, 2 es la precisión; el valor float se copia en str_val*/  dtostrf(sensor_value, 4, 2, str_val);  /* Construye el cuerpo a enviar en la solicitud*/   sprintf(body, "{\"%s\":%s}", VARIABLE_LABEL, str_val);  /* Construye la solicitud HTTP para ser POST */  sprintf(data, "POST /api/v1.6/devices/%s", DEVICE_LABEL);  sprintf(data, "%s HTTP/1.1\r\n", data);  sprintf(data, "%sHost: industrial.api.ubidots.com\r\n", data);  sprintf(data, "%sUser-Agent: %s/%s\r\n", data, USER_AGENT, VERSION);  sprintf(data, "%sX-Auth-Token: %s\r\n", data, TOKEN);  sprintf(data, "%sConnection: close\r\n", data);  sprintf(data, "%sContent-Type: application/json\r\n", data);  sprintf(data, "%sContent-Length: %d\r\n\r\n", data, dataLen(body));  sprintf(data, "%s%s\r\n\r\n", data, body);    /* si hay una conexión exitosa */  if (client.connect(HTTPSERVER, 80)) {    Serial.println("conectando...");    /* envía la solicitud HTTP POST */    client.print(data);    /* nota el tiempo que se realizó la conexión */    lastConnectionTime = millis();  }  else {    /* si no pudiste hacer una conexión */    Serial.println("conexión fallida");  }  /* Libera memoria */  free(data);  free(body);} 

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

3. Luego, Sube el código a tu placa Feather. Para hacer esto, elige el ícono de "flecha derecha" junto al ícono de la marca de verificación.

4. Para verificar la conectividad del hardware con internet, abre el monitor serie seleccionando el ícono de "lupa" en la esquina superior derecha de nuestro Arduino IDE para ver los registros de conectividad.

5. Confirma tus datos en Ubidots. Ahora deberías ver los datos publicados en tu cuenta de Ubidots, localiza el dispositivo llamado "feather-ethernet" y visualiza tus datos.

4. Resumen

Con este simple tutorial, podemos POSTear y publicar datos en Ubidots con la facilidad del Arduino IDE y el Adafruit FeatherWing. Si deseas enviar más de una variable a Ubidots, consulta la API REST de Ubidots para aprender a construir la solicitud correctamente. :)

Ahora es tiempo de crear Tableros de Ubidots para visualizar tus datos y desplegar tu solución de monitoreo conectada a internet!

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

¿Ha quedado contestada tu pregunta?