Ir al contenido principal
Todas las coleccionesTutoriales de proyectos IoT
Controlar un motor paso a paso de forma remota utilizando los xChips OC06, CW01 de XinaBox y Ubidots a través de HTTP
Controlar un motor paso a paso de forma remota utilizando los xChips OC06, CW01 de XinaBox y Ubidots a través de HTTP

Controla un motor paso a paso de forma remota utilizando los xChips CW01 (ESP8266) y OC06 (PCA9554A & DRV8825) de XinaBox a través de Ubidots sobre HTTP.

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

El núcleo ESP8266 y el módulo Wi-Fi (CW01) permiten a los usuarios enviar datos de los xChips modulares de XinaBox a la nube y controlar el dispositivo de acuerdo con los datos obtenidos.

El xChip OC06 utiliza un controlador de motor paso a paso DRV8825 para impulsar y controlar con precisión un motor paso a paso conectado. El DRV8825 se conecta a través de I2C mediante un expansor de E/S PCA9554A que proporciona todas las señales de control necesarias.

Al final de esta guía, podrás controlar el motor paso a paso con funcionalidad básica para mover el motor hacia adelante o hacia atrás de forma remota utilizando Ubidots y los xChips IP01, CW01 y OC06 de XinaBox.

Requisitos

1. Configuración de Hardware

Conecta CW01, OC06 y IP01 juntos utilizando los conectores XC10 xBus. Puedes conectarlo como se muestra en el diagrama a continuación. Por favor, consulta esta guía sobre cómo ensamblar xChips en general.

Luego conecta tu dispositivo y PC a través del USB de IP01.

2. Configuración del Arduino IDE

1. Necesitarás instalar Arduino IDE 1.8.8.

2. Instala estas bibliotecas en Arduino:

NOTA: Si no estás familiarizado con cómo instalar bibliotecas, consulta el siguiente enlace: Instalando bibliotecas de Arduino

3. Con la plataforma ESP8266 instalada, selecciona el dispositivo ESP8266 con el que estás trabajando. En este caso, estamos trabajando con un “CW01 (ESP8266)”. Para seleccionar tu placa desde el Arduino IDE, selecciona Tools > Board “XinaBox CW01”.

3. Crear Widget de Botón de Interruptor

1. Inicia sesión en tu cuenta de Ubidots:

2. Crea un nuevo dispositivo. Para crear un nuevo dispositivo, haz clic en el icono "+" en la esquina superior derecha de la sección de Dispositivos de tu cuenta. Luego, asigna “OC06” como nombre del dispositivo.

Una vez que se crea el dispositivo, aparecerá listado en la sección de dispositivos:

3. Ingresa al dispositivo creado y agrega una nueva variable en bruto presionando el icono "+". La variable debe llamarse “state”:

Una vez que se crea la variable, deberías tener el siguiente resultado:

Una vez que se crea la variable, deberías tener el siguiente resultado:

NOTA IMPORTANTE: Para poder establecer la comunicación, la etiqueta del dispositivo y variable asignada en la plataforma debe ser la misma que se asigna en el código. Para aprender más sobre Dispositivos y Etiquetas de Variables, consulta el siguiente artículo.

4. Ve a la sección dashboard ("Data > Dashboards") para crear un nuevo widget de control. Para crear un nuevo widget de control en el Dashboard, haz clic en el icono “+” en la esquina superior derecha de la interfaz de usuario del dashboard. Luego, selecciona "Switch" como tipo de widget y asigna el dispositivo y la variable creados anteriormente.

Una vez que se crea el widget, deberías tener el siguiente resultado:

4. Programación

Incluyendo bibliotecas:

#include "Ubidots.h"#include <xOC06.h>#include <xCore.h>

Ingresa tus credenciales de Wi-Fi y el TOKEN de Ubidots donde se indica:

const char* UBIDOTS_TOKEN = "...";  // Pon aquí tu TOKEN de Ubidotsconst char* WIFI_SSID = "..."; // Pon aquí tu SSID de Wi-Ficonst char* WIFI_PASS = "..."; // Pon aquí tu contraseña de Wi-Ficonst char* DEVICE_LABEL_TO_RETRIEVE_VALUES_FROM = "OC06";  // Reemplaza por la etiqueta de tu dispositivoconst char* VARIABLE_LABEL_TO_RETRIEVE_VALUES_FROM = "degrees";       // Reemplaza por la etiqueta de tu variable


NOTA IMPORTANTE: Asegúrate de que la etiqueta del Dispositivo y Variable estén asignadas respectivamente.

Configuración única, consulta los comentarios para autoexplicación:

void setup() {    //Serial.begin(74880);    ubidots.wifiConnect(WIFI_SSID, WIFI_PASS);     Wire.begin();    OC06.begin();    OC06.enable();    //ubidots.setDebug(true); // Descomenta esta línea para activar DEBUG}

Operación del bucle, sigue ejecutándose y actualizándose una y otra vez

 void loop() {    //Obtener estado del interruptor de Ubidots     value= ubidots.get(DEVICE_LABEL_TO_RETRIEVE_VALUES_FROM, VARIABLE_LABEL_TO_RETRIEVE_VALUES_FROM);    //Mover motor hacia adelante o hacia atrás    if(value==1){      OC06.move(400, 200, FORWARD); //(Pasos, Velocidad, Dirección)      delay(20);    } else {      OC06.move(400, 200, REVERSE);      delay(20);    }}


El código completo:

#include "Ubidots.h"#include <xOC06.h>#include <xCore.h>  const char* UBIDOTS_TOKEN = "...";  // Pon aquí tu TOKEN de Ubidotsconst char* WIFI_SSID = "..."; // Pon aquí tu SSID de Wi-Ficonst char* WIFI_PASS = "..."; // Pon aquí tu contraseña de Wi-Ficonst char* DEVICE_LABEL_TO_RETRIEVE_VALUES_FROM = "OC05";  // Reemplaza por la etiqueta de tu dispositivoconst char* VARIABLE_LABEL_TO_RETRIEVE_VALUES_FROM = "degrees";       // Reemplaza por la etiqueta de tu variablefloat value; //Almacenar valor del estadoxOC06 OC06; //Crear objeto OC06Ubidots ubidots(UBIDOTS_TOKEN, UBI_HTTP); //Crear cliente de Ubidotsvoid setup() {    //Serial.begin(74880);    ubidots.wifiConnect(WIFI_SSID, WIFI_PASS);     Wire.begin();    OC06.begin();    OC06.enable();    //ubidots.setDebug(true); // Descomenta esta línea para activar DEBUG} void loop() {    //Obtener estado del interruptor de Ubidots     value= ubidots.get(DEVICE_LABEL_TO_RETRIEVE_VALUES_FROM, VARIABLE_LABEL_TO_RETRIEVE_VALUES_FROM);    //Mover motor hacia adelante o hacia atrás    if(value==1){      OC06.move(400, 200, FORWARD); //(Pasos, Velocidad, Dirección)      delay(20);    } else {      OC06.move(400, 200, REVERSE);      delay(20);    }}

5. Compilar y Subir Código

1. Ahora usarás Arduino IDE para compilar y luego subir el código al CW01, asegurándote de haber seleccionado la placa CW01 y de estar conectado al puerto USB correcto.

2. Ve al Dashboard de Ubidots para cambiar el estado del widget de interruptor creado anteriormente y ver el resultado en el OC06:

6. Resumen

En este tutorial, hemos aprendido cómo controlar un motor paso a paso utilizando CW01/OC06/IP01 con Ubidots de forma remota desde cualquier lugar. Con XinaBox y Ubidots, ahora puedes enviar impresiones 3D a una impresora 3D de forma remota desde cualquier lugar. El tutorial fue bastante simple y puede tomar entre 15 y 20 minutos.

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


¿Ha quedado contestada tu pregunta?