Encender - apagar - reiniciar el PC con Arduino

arduino-1280x800.png

Hola,

Llevo unos cierto tiempo desarrollando con este juguete y la verdad me resulta bastante interesante lo que podemos llegar hacer con este pequeña board, posteo por acá los pasos a seguir para poder conectar un Arduino UNO R3 (chip CH340) aunque para la versión original es exactamente los mismos pasos.

Requerimientos:

  • Cables dupont: O cualquier otro cable que sus terminaciones sean macho hembra, incluso puedes picar un cable de algún case, gabinete de algún PC que ya no estés utilizando, de hecho yo lo picado =)
  • Arduino IDE: O cualquier otra plataforma que nos permita subir sketch a nuestra placa.
  • Arduino Board: UNO, MEGA, o cualquier otra, yo e utilizado la versión china (chip CH340), la verdad no me quejo, no se nota la diferencia.
  • Rele: Para poder permitir un LOW (0 volts) o un HIGH (5 volts) para poder apagar o encender nuestra PC

Conexiones:

Físicamente e conectado de la board Arduino al relé los siguientes pines:

del PIN DIGITAL ARDUINO 8 a PIN INT2 del rele.

del PIN DE ALIMENTACIÓN ARDUINO 5V al VCC del relé.

del PIN DE ALIMENTACIÓN ARDUINO GND a PIN GND del relé.

Algo mas o menos similar a esto:

schema-relay_bb.png

En mi caso e comprado un relé de 5V, marca CNTENGFEI modelo JQC-3FF-S-Z especificaciones 5VDC, 10A 250VAC / 15A 125VAC, en caso de tener otro relé por favor refiérase al datasheet del mismo.

Un poco de código:

Por lo general (por lo menos desde mi experiencia) los proyectos en Arduino llevan muy poco código (lógico, los recursos son muy limitados) no voy a extender el articulo para que sirve cada instrucción hay suficiente documentación en Internet que explica con detalle que hace cada función del código que aquí se postea, ademas. la wiki o guía de referencia del proyecto Arduino es genial

Publico aca las lineas que e utilizado yo para poder encender/apagar/reiniciar mi equipo con Arduino...


//Relays PIN



//relayPc1
const int relayPc1 = 8;

//relayPc2
const int relayPc2 = 12;







int PowerForceMotherBoard(int pin)
{

   //Enviamos tensión al power switcher (PWSW) de la motherboard
   pinMode(pin, OUTPUT);

   //Durante 9 secs se permitira tensión (5v) en el power switcher (PWSW) de la motherboard
   delay(9000);

   //Dejamos de permitir tensión en el power switcher (PWSW)
   pinMode(pin, INPUT);

   return 0;
}








int PowerMotherBoard(int pin)
{


   //Enviamos tensión al power switcher (PWSW) de la motherboard
   pinMode(pin, OUTPUT);

   //Durante 1 sec habrá tensión (5v) en el power switcher (PWSW) de la motherboard
   delay(1000);

   //Dejamos de permitir tensión en el power switcher de la motherboard (PWSW)
   pinMode(pin, INPUT);

   return 0;

}



void setup()
{

     //Init Serial
     //Definimos el baude rate para la comunicacion serial de nuestro
     Serial.begin(9600);

}

void loop()
{


   if (Serial.available() > 0)
   {


      //La entrada serial la convierte a código ASCII
      int num = Serial.read();



      /*

          48 Es el código ASCII de 0
          48 == 0
          PowerForce relayPc2

      */


      if(num == 48)
      {        
        Serial.println("PowerForce relayPc2");
        PowerForceMotherBoard(relayPc2);
      }



      /*

        49 Es el código ASCII de 1
        49 == 1
        PowerForce relayPc1

      */

      if(num == 49)
      {        
        Serial.println("PowerForce Pc1");
        PowerForceMotherBoard(relayPc1);
      }




      /*

        50 es el código ASCII de 2
        50 == 2
        Power relayPc2

      */


      if(num == 50)
      {        
        Serial.println("Power relayPc2");
        PowerMotherBoard(relayPc2);
      }



      /*

        A que no sabes que representa 51 en la tabla ASCII =)
        51 == 3
        Power relayPc1

      */

      if(num == 51)
      {        
        Serial.println("Power relayPc1");
        PowerMotherBoard(relayPc1);
      }










      //  53 == 5
      //  Test para saber si todo esta OK

      if(num == 53)
      {        
        Serial.println("OK");
      }




   }

   delay(5000);

}

Por si lo necesitan dejo todo el proyecto en mi repositorio Github, con ciertas variaciones en el código, pero básicamente el mismo código.

Con PowerForceMotherBoard(int pin) apagamos la PC forzadamente, haz presionado el botón de POWER de tu case por 5 segundos sin soltar? pues el llamado de esta función hace exactamente lo mismo.

Con PowerMotherBoard(int pin) podemos encender o apagar nuestra PC de forma tradicional.

Repo Github

Sugerencias, pull request, correcciones a la publicación, por favor en los comentarios.

Saludos.

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now