Tabla de contenido:

Apagar o reiniciar de forma remota una computadora con un dispositivo ESP8266: 10 pasos (con imágenes)
Apagar o reiniciar de forma remota una computadora con un dispositivo ESP8266: 10 pasos (con imágenes)

Video: Apagar o reiniciar de forma remota una computadora con un dispositivo ESP8266: 10 pasos (con imágenes)

Video: Apagar o reiniciar de forma remota una computadora con un dispositivo ESP8266: 10 pasos (con imágenes)
Video: Solventando problemas de Arduino IDE con ESP32 y ESP8266 | Arduino basico 2024, Mes de julio
Anonim
Image
Image

Para ser claros aquí, estamos apagando SU computadora, no la computadora de otra persona.

La historia va así:

Un amigo mío en Facebook me envió un mensaje y me dijo que tiene una docena de computadoras que ejecutan un montón de matemáticas, pero todas las mañanas a las 3 am, cierran. Dado que las computadoras están a 30 minutos de distancia, es una gran molestia conducir dos ciudades (vivimos en Dakota del Sur) para apagar y encender las computadoras. Preguntó, ¿podría construirle un dispositivo de IoT que le permitiera reiniciar la computadora ofensiva desde la comodidad de su cómoda cama?

Para no perderme nunca un desafío, acepté armar algo para él. Este es ese proyecto.

Usando dos bit-shift registrados, un ESP8266 ESP01, un puñado de LED y algunos optoaisladores caseros, el proyecto completo cuesta alrededor de $ 5 si compra las piezas de China en eBay. Quizás $ 20 de Amazon.

Esta es una construcción bastante compleja con mucha soldadura fina. Sin contar mis errores y volver a soldar, me tomó la mayor parte de 20 horas hacerlo, pero resultó increíble y funcionó a la perfección.

Vamos a empezar.

Paso 1: Tablero prototipo

Tablero prototipo
Tablero prototipo
Tablero prototipo
Tablero prototipo

Siempre comience todos los proyectos con un prototipo de tablero. Es la mejor manera de determinar si tiene todos los componentes y funciona como se espera. Este proyecto es un poco complicado, por lo que recomiendo encarecidamente construirlo en una placa de pruebas antes de seguir adelante.

Las piezas que necesitará son:

  • Un ESP8266 ESP01 (aunque cualquier dispositivo ESP8266 funcionaría)
  • Dos registros de desplazamiento de 8 bits, utilicé el 74HC595N
  • 16 LED, utilicé LED blancos de sombrero de paja que funcionan a 3.3V. Si usa otros, es posible que necesite resistencias.
  • Tres resistencias reductoras de 3k3 ohmios
  • Cables de puente y una placa de pruebas

También necesitará construir al menos un optoaislador. Usé un tubo retráctil negro, un LED blanco brillante, una resistencia de 220 ohmios y una fotorresistencia. Suelde la resistencia de 220 ohmios al cátodo del LED y luego selle el LED y la fotorresistencia dentro del tubo retráctil uno frente al otro. Pero llegaremos a ellos en un paso posterior.

Siga el diagrama de cableado proporcionado en el siguiente paso. El cableado es bastante sencillo.

Debido a que el ESP8266 funciona a 3,3 V, asegúrese de alimentarlo adecuadamente

Paso 2: esquema con Will-CAD

Esquema con Will-CAD
Esquema con Will-CAD

El esquema es bastante sencillo. Estamos siguiendo el cableado estándar de un registro de desplazamiento de 8 bits. Como estoy usando dos registros de desplazamiento de 8 bits, deben estar encadenados en sus pines de 'reloj' y 'pestillo'.

Debido a que el ESP01 solo tiene dos pines GPIO, necesitamos reutilizar TX y RX como salidas, lo que funciona bien para nuestros propósitos. Puede usar un ESP-12 u otra versión con más de dos pines GPIO si desea más control. Pero eso agregará otros $ 2 al costo del proyecto, que es una locura.

Necesitamos mantener nuestros registros de desplazamiento de 8 bits y los pines ESP01 en alto en el arranque, para que no hagan cosas raras o entren en modo de programa. Usé tres resistencias de 3k3, valores más grandes o más pequeños también funcionarían. Este valor se derivó de las guías que hablan sobre el aprovechamiento de pines alternativos en ESP01.

ESP01 (ESP8266)

  • Pulsador de reloj TX 3k3 pullup
  • Pullup 3k3 del pasador de cierre RX
  • 00 serie de datos 3k3 pullup
  • 02 flotante

Registro de cambio de 8 bits (74HC595H)

  • VCC 3,3 V
  • OE 3.3V (este es el pin de habilitación)
  • GND GND
  • CLR GND (esto evita que el pin claro se borre)
  • Y los LED, esos van a tierra.

Paso 3: Código ESP8266

Código ESP8266
Código ESP8266

El código ESP8266 es bastante sencillo. Desafortunadamente, el editor de Instructables es bastante inútil, por lo que querrá obtener el código directamente de Github.

proyecto "racks-reboot":

github.com/bluemonkeydev/arduino-projects/…

La clase "SensorBase" está disponible aquí. Es necesario si quieres "usar" mi código:

github.com/bluemonkeydev/arduino-projects/…

Hay algunas cosas a tener en cuenta. El código está bastante bien documentado.

  1. Soy un desarrollador muy vago, por lo que puse todo el código ESP8266 reutilizable en una clase llamada "SensorBase". También puede encontrar eso en Github, enlace de arriba.
  2. Debe escribir el servidor, el nombre de usuario, la contraseña y el puerto de su agente de MQTT. Esos se pueden encontrar un poco más abajo cuando creamos el servicio CloudMQTT.
  3. NO es necesario seguir el formato de sintaxis de mi tema. Sin embargo, recomendaría seguirlo.
  4. No hay nada inteligente en este código. Es muy pragmático.

Paso 4: Disposición del tablero

Diseño de tablero
Diseño de tablero

Este proyecto se instalará en un mini-centro de datos, así que decidí usar simplemente la placa perf para el diseño final. Perfboard funciona muy bien para proyectos como este y es fácil de diseñar con un trozo de papel cuadriculado personalizado. Aquí verá mi diseño. Por supuesto, puede optar por hacerlo de otra manera.

Mi proyecto necesitaba dos registros de desplazamiento de 8 bits, así que comencé con su posición en el medio. Sabía que mis conectores a optoaisladores serían simples encabezados hembra por ahora, aunque esa no es una solución ideal.

Me encantan los LED, y esto necesitaba tener un LED para cada circuito optoaislador. Sabía que la fase de prueba sería infinitamente más fácil si pudiera obtener retroalimentación instantánea directamente en la placa, pero también sabía que esos LED causarían un gran dolor al soldar. Y lo fueron. No tenía nada más pequeño que LED de 5 mm, así que tuve que escalonarlos. Mi diseño final hizo un patrón en zig-zag de los cátodos porque no quería pasar los ánodos sobre los cables de tierra. Este resultó ser un buen diseño. Los cables LED se unen por encima de los registros de desplazamiento de 8 bits y se colocan en la parte superior de la placa con cables blindados para simplificar.

Para la alimentación, quería ejecutarlo desde un cable USB antiguo para que se alimentara directamente desde una de las computadoras. Esto funcionará bien porque los puertos USB generalmente se alimentan incluso si la computadora está apagada. Usé un regulador de voltaje lineal LM317 para reducir la potencia a 3.3V. Un regulador de 3.3V también habría funcionado, pero yo no tenía uno.

Para evitar que se crucen demasiados cables, pasé algunos cables en la parte superior de la placa de perforación, que trato de evitar. Tenga en cuenta que los orificios pasantes son conductores, por lo tanto, use cables blindados para evitar cortocircuitos. Esas conexiones que tienen lugar en la parte superior del tablero se muestran en líneas discontinuas en mi diagrama.

Paso 5: tablero soldado

Tablero soldado
Tablero soldado

Mi última placa soldada resultó muy bien. Como era de esperar, los LED en la parte superior requirieron mucho trabajo para soldarse correctamente sin ningún cortocircuito. Después de haber soldado los LED y los encabezados, use su multímetro para determinar si tiene algún cortocircuito. Es mejor averiguarlo ahora.

Aparte de los LED, todo lo demás salió bastante bien. Tuve que rehacer algunas conexiones, pero con algunos pacientes, algunas depuraciones y un poco de soldadura, todo funcionará bien.

Verá en esta foto que también he conectado los optoaisladores, que utilicé un cable CAT-5 de 8 hilos. La razón es que es súper barato, fácil de empalmar y está bien marcado; más sobre esos optoaisladores en el siguiente paso.

Paso 6: Fabricación de optoaisladores

Fabricación de optoaisladores
Fabricación de optoaisladores

Por supuesto, no es necesario que fabrique sus propios optoaisladores. Muchas versiones comerciales están disponibles por centavos cada una y funcionarían mejor ya que conducirían las líneas eléctricas de la computadora directamente sin ninguna resistencia. Pero, no tenía ningún optoaislador, así que tuve que hacer el mío usando un LED, una resistencia y una fotorresistencia.

Después de confirmar que dentro de una manga de tubo retráctil negro, la resistencia de "apagado" con menos de lo que podía leer mi medidor y la resistencia de "encendido" era de unos pocos miles de ohmios, hice una prueba final en una placa base vieja. Funcionó perfectamente para mí. Sospecho que algunas computadoras pueden ser más o menos sensibles, pero en las placas base que he probado, esta configuración funcionó bien.

Querrá usar un LED blanco realmente brillante para obtener la máxima luz en el fotorresistor. No probé muchas opciones, pero el LED blanco brillante y una resistencia de 220 ohmios definitivamente funcionan bien.

Paso 7: Configuración de CloudMQTT

Configuración de CloudMQTT
Configuración de CloudMQTT
Configuración de CloudMQTT
Configuración de CloudMQTT
Configuración de CloudMQTT
Configuración de CloudMQTT

Cualquier servicio MQTT, o un servicio IoT similar como Blynk, funcionaría, pero elijo usar CloudMQTT para este proyecto. He usado CloudeMQTT para muchos proyectos en el pasado, y dado que este proyecto se entregará a un amigo, tiene sentido crear una nueva cuenta que también se pueda transferir.

Cree una cuenta de CloudMQTT y luego cree una nueva "instancia", elija el tamaño de "Cute Cat" ya que solo lo usamos para el control, no para el registro. CloudMQTT le proporcionará un nombre de servidor, nombre de usuario, contraseña y número de puerto. (Tenga en cuenta que el número de puerto no es el puerto MQTT estándar). Transfiera todos estos valores a su código ESP8266 en las ubicaciones correspondientes, asegurándose de que el caso sea correcto. (en serio, copia / pega los valores)

Puede usar el panel "Websocket UI" en CloudMQTT para ver las conexiones de su dispositivo, las pulsaciones de botones y, en el caso extraño, que obtenga un error, un mensaje de error.

También necesitará estas configuraciones al configurar el cliente MQTT de Android, así que tenga en cuenta los valores si es necesario. Con suerte, su contraseña no es demasiado complicada para escribirla en su teléfono. No puede configurar eso en CloudMQTT.

Paso 8: Cliente Android MQTT

Cliente Android MQTT
Cliente Android MQTT
Cliente Android MQTT
Cliente Android MQTT
Cliente Android MQTT
Cliente Android MQTT
Cliente Android MQTT
Cliente Android MQTT

Cualquier cliente MQTT de Android (o iPhone) funcionaría, pero me gusta MQTT Dash. MQTT Dash es fácil de usar, muy receptivo y tiene todas las opciones que necesitará.

Una vez instalado, configure un servidor MQTT, complete el servidor, el puerto, el nombre de usuario y la contraseña con los valores de su instancia, NO su información de inicio de sesión en CloudMQTT. Puede utilizar cualquier nombre de cliente que desee.

Si escribió todo correctamente, se conectará automáticamente a su servidor MQTT y le mostrará una pantalla en blanco, ya que aún no ha configurado ningún botón, texto o mensaje. En la pantalla en blanco, verá un "+" en la esquina superior derecha, haga clic en él y luego seleccione "Seleccionar / Botón". Agregaremos un "Botón Seleccionar /" por computadora, por lo que 8 o 16 o menos.

Si obtuvo un error de conexión, tiene uno de los valores incorrectos. Regrese y vuelva a verificar

Cada computadora usará el tema que corresponda a los valores especificados en su código. Si siguiera mis convenciones, serían "cluster / rack-01 / computer / 01". Sería mejor cambiar los valores "on" y "off" para que coincidan con nuestro código. En lugar de "0" y "1", utilice los valores "activado" y "desactivado", respectivamente. También recomendaría usar QoS (1) ya que esperamos una confirmación del servidor.

Después de agregar uno, puede mantener presionado y usar la opción "clonar" para crear un grupo, luego cambiar su nombre y tema.

Suficientemente fácil.

Paso 9: Obtener su ESP8266 en Wifi

Obtener su ESP8266 en Wifi
Obtener su ESP8266 en Wifi

Usando el módulo ESP8266 Wifi Manager, es muy fácil poner nuestro dispositivo en Wifi. Si usó mi clase SensorBase, ya está incorporada. De lo contrario, siga las instrucciones en la página del Administrador de Wifi.

Wifi Manager intentará conectarse a su SSID en el arranque, lo cual no puede hacerlo ya que nunca le ha dicho su SSID, por lo que automáticamente entrará en el modo de punto de acceso (o modo AP) y mostrará una página web simple solicitando su SSID. & Contraseña. Usando su teléfono o computadora portátil, conecte la red inalámbrica recién disponible con el nombre SSID "ESP_xxxxxx", donde "xxxxxx" es una secuencia aleatoria (no realmente aleatoria). (Las instrucciones completas se pueden encontrar en la página del Administrador de Wifi).

Una vez conectado, abra su navegador web y apúntelo a 192.168.4.1, escriba su SSID y contraseña y haga clic en guardar.

¡Ahora está en Internet y su dispositivo IoT tiene la parte "I" funcionando!

Paso 10: Conexión y prueba finales

Prueba y conexión final
Prueba y conexión final

Todo listo.

Para conectar todo, ubique el cable del botón de encendido de su computadora donde se encuentra con la placa base. Debería ver dos filas de encabezados con un montón de cables y conectores. Por lo general, están bastante bien etiquetados. Desenchufe su interruptor y conecte el optoaislador. Puse algunos enchufes "Dupont" en el mío, por lo que se enchufaron como el cable de alimentación. La polaridad en este extremo no importa, pero asegúrese de tener la polaridad correcta en el otro extremo, el que va a su placa personalizada.

Y funciona perfectamente. Con el cliente MQTT Dash (o una herramienta similar), puede alimentar sus computadoras de forma remota.

Presione el botón de verificación correspondiente en su aplicación, y una vez que la aplicación reciba una respuesta del servidor MQTT con el mensaje "apagado", el botón volverá a estar desmarcado.

Esto se ha estado ejecutando durante algunas semanas sin ningún problema. Nos dimos cuenta de que era necesario extender el tiempo para presionar el botón hacia abajo en las computadoras. Terminamos con 1 segundo completo. Este valor puede exponerse como un valor configurable a través del servidor MQTT, o puede cablear el valor, según lo desee.

Buena suerte y cuéntame cómo resultó el tuyo.

Recomendado: