Código Arduino y vídeo para controlar un relé por USB desde la línea de comandos de PowerShell
En este tutorial exploraremos cómo controlar un relé usando un Arduino y un módulo USB a UART, todo mediante comandos de Windows PowerShell. Esta configuración te permite encender y apagar una luz de forma remota enviando comandos específicos a través de la línea de comandos. Al final de esta guía tendrás un sistema funcional que puede controlar dispositivos de CA de forma segura y eficaz.

Utilizaremos las capacidades de comunicación serie del Arduino para escuchar comandos enviados desde PowerShell. Los comandos específicos serán enteros que corresponden a encender y apagar el relé. Este proyecto requiere un manejo cuidadoso de la tensión de CA, por lo que se deben observar precauciones de seguridad durante todo el proceso. Para mayor aclaración, asegúrate de ver el video completo (en el video en 00:00).
Hardware explicado
Los componentes principales implicados en este proyecto incluyen la placa Arduino, el módulo USB a UART y el relé. La placa Arduino actúa como el cerebro de la operación, procesando comandos seriales y controlando el relé en consecuencia. El módulo USB a UART facilita la comunicación entre la placa Arduino y tu ordenador, permitiendo introducir comandos desde PowerShell.
El relé actúa como un interruptor que controla el flujo de electricidad hacia la luz. Cuando el relé se activa, cierra el circuito, permitiendo que la corriente fluya y la luz se encienda. Cuando se desactiva, abre el circuito, cortando la alimentación y apagando la luz. Esto permite el control seguro de dispositivos de alto voltaje desde un sistema de bajo voltaje.
Detalles de la ficha técnica
| Fabricante | FTDI |
|---|---|
| Número de pieza | FT232R |
| Voltaje lógico/E/S | 3.3 V / 5 V |
| Tensión de alimentación | 4.5 V a 5.5 V |
| Corriente de salida (por canal) | 50 mA |
| Corriente de pico (por canal) | 100 mA |
| Guía de frecuencia PWM | No aplica |
| Umbrales lógicos de entrada | 0.3 V (bajo), 0.7 V (alto) |
| Caída de voltaje / RDS(on)/ saturación | 0.5 V máx. |
| Límites térmicos | 125 °C |
| Paquete | LQFP de 32 pines |
| Notas / variantes | Convertidor USB a UART |
- Asegúrese de que los niveles de voltaje sean adecuados para el relé y el módulo UART.
- Utilice un disipador de calor si se espera que el relé maneje cargas elevadas.
- Verifique dos veces todas las conexiones antes de encender el sistema.
- Mantenga el módulo alejado de la humedad y de materiales conductores.
- Utilice una conexión a tierra común para todos los componentes para evitar picos de tensión.
Instrucciones de cableado


Comience conectando el pin VCC del módulo de relé al pin de 5V del Arduino. A continuación, conecte el pin GND del relé a uno de los pines de tierra del Arduino. El pin de control (etiquetado como IN o similar) del relé debe conectarse al pin digital 8 del Arduino.
Para el módulo USB a UART, conecta el pin TX al pin RX del Arduino y el pin RX del módulo al pin TX del Arduino. Asegúrate de conectar el pin de tierra (GND) del módulo USB al mismo GND que el Arduino para garantizar una referencia común. Esta configuración permite una comunicación fluida entre el Arduino y tu computadora a través de PowerShell.
Ejemplos de código y guía paso a paso
byte RX_Value = 0; // stores received byte
#define relay 8 // pin 8 for relay
int comON = 6; // code to turn ON the light
int comOFF = 2; // code to turn OFF the light
En este extracto, definimos la variableRX_Valuepara almacenar el comando recibido del monitor serie. Elrelayestá configurado en el pin 8, y definimos dos comandos:comONpara encender la luz ycomOFFpara apagarlo.

void setup() {
Serial.begin(9600); // Start serial communication at 9600 baud
pinMode(relay, OUTPUT); // Set relay pin as output
digitalWrite(relay, HIGH); // Turn the relay OFF initially
}
En elsetup()En la función, inicializamos la comunicación serie a 9600 baud, que debe coincidir con la configuración en PowerShell. El pin del relé se configura como salida y lo ponemos en HIGH para asegurarnos de que el relé esté apagado al iniciar el programa.

if (Serial.available()) {
RX_Value = Serial.read(); // Read the incoming byte
if (RX_Value == comON) {
digitalWrite(relay, LOW); // Turn the relay ON
} else if (RX_Value == comOFF) {
digitalWrite(relay, HIGH); // Turn the relay OFF
}
}
Este fragmento de código muestra cómo el programa escucha los datos seriales entrantes. Si se recibe un comando que coincidecomON, el relé se activa, encendiendo la luz. Por el contrario, sicomOFFse recibe, el relé se desactiva, apagando la luz. Este bucle continúa, permitiendo un control receptivo desde PowerShell.
Demostración / Qué esperar
Cuando la configuración esté completa y el código se haya cargado, deberías poder abrir PowerShell y enviar los comandos para controlar la luz. Al escribir el comando correspondiente, el relé debería activarse de inmediato, encendiendo o apagando la luz según se desee. Ten cuidado al manipular dispositivos de corriente alterna; asegúrate de que no haya cables vivos expuestos durante las pruebas.
Marcas de tiempo del vídeo
- 00:00- Introducción y visión general del proyecto
- 02:30- Explicación del cableado
- 05:00- Revisión del código
- 08:15- Demostración de un comando de PowerShell
- 10:45- Conclusión y consejos de seguridad
++
/*
* This Arduino code is to read and decode serial monitor
* code sent from USB to UART or USB to UART FTDI chip
* commands sent from Windows PowerShell or other systems commands.
* When the code is detected and matched with the present codes
* for example, 6 is to turn the relay ON and 2 to turn OFF the relay,
* in turn, will turn ON the AC bulb.
Watch the video for this code: https://youtu.be/HzLCkzX5q3w
*
*/
// Written by Ahmad S. Robojax at 19:11 on Saturday, April 01, 2018
byte RX_Value = 0; // stores received byte
#define relay 8 // pin 8 for relay
int comON = 6;//code to turn ON the light
int comOFF = 2;// code to turn OFF the light
void setup() {
// Robojax code for USB command to Relay
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
pinMode(relay,OUTPUT);// define pin 8 as output
digitalWrite(relay,HIGH);// turn the relay OFF
Serial.println("Robojax USB Command");
}
void loop() { // run over and over
// Robojax code for USB command to Relay
if (Serial.available()) {
RX_Value = Serial.read();
if(Serial.read() == comON)
{
digitalWrite(relay,LOW);// turn the relay ON
Serial.print("Code to Turn ON:");
Serial.println(RX_Value);// print the received command
}
if(RX_Value == comOFF)
{
digitalWrite(relay,HIGH);// turn the relay OFF
Serial.print("Code to Turn OFF:");
Serial.println(RX_Value); // print the received command
}
}
}// loop
Cosas que podrías necesitar
-
Amazonas
-
Amazonas
-
eBay
-
AliExpressCompra 1 relé KY-019 de 5V canal en AliExpress.s.click.aliexpress.com
Recursos y referencias
Aún no hay recursos.
Archivos📁
Archivo de Fritzing
-
Módulo de relé de 4 canales 5v
4-Channel 5v Relay Shield.fzpz0.02 MB -
FT232-AZ-adaptador-USB-a-TTL-serial
FT232-AZ-USB-to_TTL-serial-adapter.fzpz0.01 MB
Otros archivos
-
Script de potencia para controlar relé a través de USB
robojax-usb-relay-powershell_scripts.zip