Encender - apagar - reiniciar el PC con Arduino

in #arduino7 years ago (edited)

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.

Sort:  

I like and enjoyed your post ! Keep publishing interesting and informative articles.
If you wish, you can check my posts @kingru
Keep steeming. Cheers !!!
Follow me @kingru

Te doy la bienvenida a Steemit, @opensylar

A continuación te presento varias iniciativas que existen en esta comunidad para ayudarte a crecer

Para ayudarte en la plataforma, he votado en este post y te estoy siguiendo 🙂

¡Te deseamos mucho éxito y que disfrutes estar por aquí!


Este bot fue creado por @moisesmcardona. Vótalo como Witness si esta información te ha parecido útil en https://steemit.com/~witnesses

Excelente.

Te dí un follow en GitHub.

Qué bueno tener otro programador por aquí.

Muchas gracias, igual te acabo de seguir en Github y steemit, un saludo =)

Congratulations @opensylar! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

You made your First Comment

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

Coin Marketplace

STEEM 0.28
TRX 0.11
JST 0.030
BTC 68156.12
ETH 3727.18
USDT 1.00
SBD 3.65