Skip to main content

Practice 27: NodeRed (USB)

✅ Práctica 27
▷ #TSCLab #TCLab #ESP32 #Arduino #Control #MACI

En el siguiente blog se presenta la vigési cuarta práctica del laboratorio de control de temperatura y velocidad de un motor.

Objetivo general:

  • Enviar los valores sensados del motor del TSC-Lab por comunicación serial a Node-Red y visualizarlo. 

Materiales:

  • Node-Red
  • TSC-Lab

Introducción:

En la presente práctica se muestra otra de las alternativas para visualizar y controlar dispositivos, la cual es Node-Red, siendo esta una herramienta de desarrollo basada en flujo para programación visual desarrollada originalmente por IBM para conectar dispositivos de hardware, API y servicios en línea como parte de Internet of Things. Para ir familiarizándose con el entorno de Node-Red se hará una conexión por comunicación seríal con el TSC-Lab.

Procedimiento:

Se necesita instalar Node-Red, a continuación se mostrará como hacerlo en un sistema operativo de Windows. 
  1. Instalar Node.js, puede descargarlo aquí. Cualquiera de las versiones son válidas, en mi caso usé la 17.1.0 y la instalación se hace aceptando terminos como cualquier otro programa que se desea instalar. Debe seleccionar la casilla de instalar herramientas adicionales, en caso de no hacerlo se presentarán inconvenientes en el desarrollo de las prácticas.
  2. Abrir el Símbolo del sistema (CMD) y escribir el siguiente comando: npm install -g --unsafe-perm node-red 
  3. Una vez que se ha realizado la instalación de manera exitosa, en el mismo CMD se debe escribir el comando: node-red. Al cabo de unos segundos aparecerá la dirección del servidor, la cual se debe copiar y pegar en cualquier navegador, tal cual como se ve en la siguiente imagen.

  4. Conectar el TSC-Lab y tener en cuenta el puerto que se le asignó. En caso de no saberlo puede averiguarlo en administrador de dispositivos.

  5. Copiar el archivo .json aquí
  6. Importar el archivo copiado en Node-Red, para ello hay que dirigirse a las tres líneas horizontales que aparece en la interfaz de Node-Red.

  7. Seleccionar la opción importar

  8. Pegar el código en el cuadro rosa que aparece.

  9. Una vez que pegado el código en formato json dar clic en importar

  10. Si aparece el recuadro que se muestra en la imagen dar clic en Import copy

  11. Es necesario instalar la librería de Dashboard la cual hace posible la visualización de datos. Para ello hay que dirigirse a las tres línes horizontales y dar clin en Manage palette.

  12. Seleccionar la pestañana install y escribir en el buscador: node-red-dashboard, para posteriormente dar clic en install. Luego instale node-red-node-serialport y finalmente de clic en close.

  13. En la interfaz de Node-Red debe aparecer algo como la imagen de abajo y se debe dar doble clic sobre ella.

  14. Seleccionar Add new serial-port

  15. Dar clic en el lápiz

  16. Escribir el nombre del puerto asignado, cambiar el Baud Rate a 115200 y dar clic en Add

  17. Debe aparecer algo similar a lo que se muestra en la imagen. Dar clic en Done



  18. Antes de continuar con la visualización, se debe cargar el código que se muestra a continuación en el TSC-Lab, el código a utilizar es una práctica de las RPM del motor y se asume que las librerías ya fueron previamente instaladas.

/*
****************************** TSC-Lab *******************************
***************************** PRACTICE 24 *****************************
This practice is aboutNode-Red (with usb)
By: Kevin E. Chica O
More information: https://tsc-lab.blogspot.com/
*/
//initial setting for data acquisition
int dutyCycleInitial = 255;
int dutyCycleFinish = 0;
int period = 13000;
int cycles = 10;
//separador library
#include <Separador.h>
Separador s;
//motor
int motor1Pin1 = 33;
int motor1Pin2 = 25;
int enable1Pin = 32;
int motor_status = 1;
// Setting PWM properties
const int freq = 30000;
const int pwmChannel = 0;
const int resolution = 8;
//move
String move_motor = "counterclockwise";
int encoder = 27;
void motor( void *pvParameters );
//void enviar( void *pvParameters );
void RPM( void *pvParameters );
volatile int counter = 0;
void interruption() // Function that runs during each interrupt
{
counter++;
}
void setup() {
Serial.begin(115200);
// sets the pins as outputs:
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enable1Pin, OUTPUT);
// configure LED PWM functionalitites
ledcSetup(pwmChannel, freq, resolution);
// attach the channel to the GPIO to be controlled
ledcAttachPin(enable1Pin, pwmChannel);
attachInterrupt(encoder, interruption, RISING);
xTaskCreatePinnedToCore(
motor
, "MotorDC" // Descriptive name of the function (MAX 8 characters)
, 2048 // Size required in STACK memory
, NULL // INITIAL parameter to receive (void *)
, 1 // Priority, priority = 3 (configMAX_PRIORITIES - 1) is the highest, priority = 0 is the lowest.
, NULL // Variable that points to the task (optional)
, 1); // core 1
xTaskCreatePinnedToCore(
RPM
, "RPM" // Descriptive name of the function (MAX 8 characters)
, 2048 // Size required in STACK memory
, NULL // INITIAL parameter to receive (void *)
, 1 // Priority, priority = 3 (configMAX_PRIORITIES - 1) is the highest, priority = 0 is the lowest.
, NULL // Variable that points to the task (optional)
, 1); // core 0
}
void loop() {
}
void motor( void *pvParameters ) {
while (1) {
if (cycles > 0) {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
ledcWrite(pwmChannel, dutyCycleInitial);
motor_status = 1;
vTaskDelay(period);
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
ledcWrite(pwmChannel, dutyCycleFinish);
motor_status = 0;
vTaskDelay(period);
cycles--;
}
}
}
void RPM( void *pvParameters ) {
while (1) {
vTaskDelay(999);
Serial.println(counter * 60);
counter = 0;
}
}
view raw Practice24.ino hosted with ❤ by GitHub
    
  1. Volviendo a la interfaz de Node-Red, hay que dar clic en Deploy para guardar y cargar todos los datos al server.

  2. Para visualizar los valores de RPM, se debe dar clic en la flecha que se muestra en la imagen y luego en Dashboard.

  3.  En la pestaña del dashboard hay que dar clic en el ícono que se encierra en la siguiente imagen

  4. Se abrirá una ventana donde se visualiza las RPM del motor en tiempo real.


                  



Comments

Popular posts from this blog

Practice 35: NodeRed (MQTT) + Telegram

✅ Práctica 35 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI En el siguiente blog se presenta la vigésima sextapráctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Recibir los valores sensados de temperatura del TSC-Lab a Telegram.  Materiales: Node-Red TSC-Lab Introducción: En la práctica anterior se aprendió a información del TSC-Lab a Node-Red mediante Wi-Fi con protocolo HTTP. Ahora a mas de enviar dicha información se pretende recibirla y monitoreada desde Telegram, la cual es una aplicación enfocada en la mensajería instantánea, el envío de varios archivos y la comunicación en masa. Se la puede descargar desde la tienda de Google Play o App Store. También se la puede utilizar desde su sitio web o versión de escritorio. En esta práctica se crearrá un bot en Telegram el cual al recibir un comando en específico, enviará de manera instantanea el valor de temperatura solicitado. Procedimiento: Nota: se asume qu...

Práctica 7: Speed control using PWM

✅ Práctica 7 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI En el siguiente blog se presenta la septima práctica y corresponde a la segunda del laboratorio de control de velocidad. Objetivo general: Entender el funcionamiento del motor DC con PWM para aumentar o bajar la velocidad usando código de programación en el IDE de Arduino. Objetivos específicos: Comparar los resultados de movimiento cambiando los parámetros. Materiales: PCB de Temperature Control Lab (TSC-Lab) Introducción: En la práctica anterior, al motor se le enviaba señales de High y Low para ponerlo en marcha. Sin embargo, dentro de la realidad a un motor no se lo controla así, en algunas ocasiones se lo requiere hacer girar con cierta velocidad y durante esta práctica para tener control sobre la misma se lo hace con señales PWM. Procedimiento: Se asume que la placa del ESP-32 ha sido previamente instalada en el IDE de Arduino. Copiar el código en el IDE de Arduino:      ...

Practice 29: NodeRed (Http) + Telegram

✅ Práctica 29 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI En el siguiente blog se presenta la vigésima sextapráctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Recibir los valores sensados de temperatura del TSC-Lab a Telegram.  Materiales: Node-Red TSC-Lab Introducción: En la práctica anterior se aprendió a información del TSC-Lab a Node-Red mediante Wi-Fi con protocolo HTTP. Ahora a mas de enviar dicha información se pretende recibirla y monitoreada desde Telegram, la cual es una aplicación enfocada en la mensajería instantánea, el envío de varios archivos y la comunicación en masa. Se la puede descargar desde la tienda de Google Play o App Store. También se la puede utilizar desde su sitio web o versión de escritorio. En esta práctica se crearrá un bot en Telegram el cual al recibir un comando en específico, enviará de manera instantanea el valor de temperatura solicitado. Procedimiento: Nota: se asume qu...

Practice 12: Speed Control Lab

✅ Práctica 12 ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI When using this resource, please cite the original publication: Víctor Asanza, Kevin Chica-Orellana, Jonathan Cagua, Douglas Plaza, César Martín, Diego Hernan Peluffo-Ordóñez. (2021). Temperature and Speed Control Lab (TSC-Lab). IEEE Dataport. https://dx.doi.org/10.21227/8cty-6069 En el siguiente blog se presenta la vigésima segunda práctica del laboratorio de control de temperatura y velocidad de un motor. Github repository: https://github.com/vasanza/TSC-Lab Objetivo general: Realizar la adquisición de datos en Matlab emplenado comunicación serial. Materiales: Matlab TSC-Lab Registro de datos en formato Byte: Esta versión se recomienda si se utiliza Matlab de versiones anteriores a las 2017. Repository: https://github.com/vasanza/TSC-Lab/tree/main/Practice12/Practice12_Byte Registro de datos en formato String: Esta versión se recomienda si se utiliza Matlab de versiones actuales. Repository:  https://github.c...

Practice 26 : Over-The-Air programming (OTA)

✅ Práctica 26 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI When using this resource, please cite the original publication: Víctor Asanza, Kevin Chica-Orellana, Jonathan Cagua, Douglas Plaza, César Martín, Diego Hernan Peluffo-Ordóñez. (2021). Temperature and Speed Control Lab (TSC-Lab). IEEE Dataport. https://dx.doi.org/10.21227/8cty-6069 En el siguiente blog se presenta la vigésima sexta práctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Actualizar el código del TSC-Lab utilizando OTA. Materiales: IOTAppStory TSC-Lab Introducción: A lo largo de todas las prácticas previamente realizadas, cada código se ha cargado al TSC-Lab con ayuda del cable USB por comunicación serial. Sin embargo, esta no es la única forma de hacerlo. Al igual que muchos otros dispositivos como celulares, carros inteligentes, decodificadores, entres otros se le pueden realizar ajustes y configuraciones de manera inalámbrica por una programaci...

Practice 30: NodeRed (Http) + ThingSpeak

✅ Práctica 30 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI When using this resource, please cite the original publication: Víctor Asanza, Kevin Chica-Orellana, Jonathan Cagua, Douglas Plaza, César Martín, Diego Hernan Peluffo-Ordóñez. (2021). Temperature and Speed Control Lab (TSC-Lab). IEEE Dataport. https://dx.doi.org/10.21227/8cty-6069 En el siguiente blog se presenta la vigésima séptima práctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Enviar los valores sensados de temperatura del TSC-Lab por WiFi a Node-Red y ThingSpeak.  Materiales: Node-Red Thingspeak TSC-Lab Introducción: En la práctica anterior se aprendió a utilizar y familiarizarse con Node-Red, el envío de información se lo hizo por medio de comunicación serial. Sin embargo, no tiene mucho sentido que se esté enviando información a Node-Red por el puerto serial cuando se puede aprovechar el ESP-32 para conectarse a internet por medio de Wi-Fi. S...

Practice 34: NodeRed (WiFi y MQTT)

✅ Práctica 34 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI En el siguiente blog se presenta la vigésima quinta práctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Enviar los valores sensados de temperatura del TSC-Lab por WiFi a Node-Red por medio del protocoo MQTT y visualizarlos.  Materiales: Node-Red TSC-Lab Introducción: En la práctica anterior se aprendió a utilizar y familiarizarse con Node-Red, el envío de información se lo hizo por medio de comunicación serial. Sin embargo, no tiene mucho sentido que se esté enviando información a Node-Red por el puerto serial cuando se puede aprovechar el ESP-32 para conectarse a internet por medio de Wi-Fi. Se usará el protocolo MQTT para conectarse al servidor donde se aloja el servidor que se está ejecutando Node-Red, lo cual permitirá que cualquier dispositivo tenga acceso a su información. Procedimiento: Nota: se asume que está instalado Node-Red, que está famil...

▷ CHARLA #PUCESE Arduino Week: Hardware de Código Abierto TSC-LAB

  ⭐⭐⭐⭐⭐ CHARLA #PUCESE Arduino Week: Hardware de Código Abierto TSC-LAB ☑️ #TSCLab #TCLab #ESP32 #Arduino #Control #MACI ☑️ #ElectronicPrototypesDesign #PrototipadoElectronico #PCB #HardwareDesign #Hardware #AdeltaTechnologies #OpenHardware #OpenSourceHardware ➡️ Repository:  https://github.com/vasanza/TSC-Lab ➡️ When using this resource, please cite the original publication: Víctor Asanza, Kevin Chica-Orellana, Jonathan Cagua, Douglas Plaza, César Martín, Diego Hernan Peluffo-Ordóñez, April 25, 2021, "Temperature and Speed Control Lab (TSC-Lab)", IEEE Dataport, doi: https://dx.doi.org/10.21227/8cty-6069. ✅ #PUCESE, organizó el webinar: "ARDUINO WEEK 2022 PUCESE" ✅  Arduino Week PUCE Esmeraldas- Charla con Expertos ⭐⭐⭐⭐⭐ CHARLA #PUCESE Arduino Week: Hardware de Código Abierto TSC-LAB  from  Victor Asanza ✅ Video de la charla: ✅ Contenido: ➡️  1- Introducción ➡️  2- Hardware de Código Abierto ➡️  3- Temperature and Speed Control Lab (TSC-LAB)...

Practice 24: Firebase

✅ Práctica 24 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI When using this resource, please cite the original publication: Víctor Asanza, Kevin Chica-Orellana, Jonathan Cagua, Douglas Plaza, César Martín, Diego Hernan Peluffo-Ordóñez. (2021). Temperature and Speed Control Lab (TSC-Lab). IEEE Dataport. https://dx.doi.org/10.21227/8cty-6069 En el siguiente blog se presenta la cuadragésima primera práctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Sensar datos y subirlos a la Realtime Database de Firebase Materiales: Firebase TSC-Lab Introducción: Firebase es una plataforma para el desarrollo de aplicaciones web y aplicaciones móviles lanzada en 2011 y adquirida por Google en 2014.​ Es una plataforma ubicada en la nube, integrada con Google Cloud Platform, que usa un conjunto de herramientas para la creación y sincronización de proyectos que serán dotados de alta calidad, haciendo posible el crecimiento del número de...

Practice 33: MQTT

✅ Práctica 33 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI En el siguiente blog se presenta la vigésima octava práctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Realizar una conexión MQTT utilizando el TSC-Lab.  Objetivos específicos: Enviar un mensaje al servidor y verificarlo en MQTTLens. Materiales: MQTTLens TSC-Lab Introducción: En las prácticas anteriores se realizararon conexiones a .diferentes plataformas donde se envió la información e inclusive se pudo visualizar los datos. Sin embargo, poseen muchas limitaciones como por ejemplo ThingSpeak que únicamente permite crear cuatro canales y el envío de información lo hace con un delay mínimo de 14 segundos, inclusive utilizar el protocolo HTTP ha generado conflictos. Ante ello, la mejor alternativa es trabajar con un servidor y enviar la data por medio de protocolo MQTT.  Procedimiento: Nota: revisar la práctica 1 donde se le recuerda a como insta...