"El amigo Jason-K4FLY de California, EE.UU, nos comparte un excelente e interesante proyecto, c4fmdmr.com le agradece su colaboración para con el este sitio web".
Intro
El uso móvil de hotspots multi-modo es cada día más común; y desde el lanzamiento del modo PDN de Yaesu, muchos también hacemos uso móvil de algún tipo de micro-PC con WIRES-X.
Es importante recordar que estos dispositivos corriendo sobre Linux o Windows deben ser apagados de manera adecuada, o arriesgamos daño al sistema de archivos resultando en una larga tarea de reparar o reinstalar el sistema operativo.
Es conveniente correr estos dispositivos con un adaptador de corriente USB a enchufe de accesorio/encendedor de cigarrillos. Estos enchufes usualmente se desactivan al apagar el automóvil y es muy fácil olvidar apagar los dispositivos primero; y cuando lo hacemos de manera correcta, tenemos que esperar y asegurarnos que complete el proceso antes de apagar el automóvil -- el proceso no es complicado, pero si es muy inconveniente para una instalación móvil permanente.
Objetivos:
Automatizar el proceso de arranque, al igual que el proceso de apague de cualquier número de dispositivos.
Para los usuarios de PDN Móvil, proveer la opción de continuar usando un “nodo en ruedas” al bajarse del auto con su handy por x minutos/horas, y luego automáticamente apagarse para no agotar la batería del carro.
Descripción:
La propuesta solución está compuesta de dos timer-relay y un Raspberry Pi. El Raspberry Pi y uno de los timer-relay se encargan de señalar a los dispositivos que es tiempo de apagarse, y finalmente el segundo timer-relay se encarga de cortar electricidad a los dispositivos.
Secuencia de Ejecución
Arranque:
El arranque es sencillo, al subir la línea de señal 12V al timer-relay, el relay cierra el circuito eléctrico y los dispositivos arrancan. *Ojo: muchos dispositivos soportan arranque automático, pero requieren activación de esta función a través del BIOS.*
Apague:
El apague es donde este proyecto ofrece la mayor parte de su función.
Al bajar la línea de señal, los dos timers comienzan su conteo. El timer del GPIO (conectado al Raspberry Pi) tiene el tiempo más corto. Al terminar el conteo, se dispara el relay causando detección de este cambio por uno de los GPIO del Raspberry Pi. Al hacer la detección, el Raspberry Pi manda la señal por mensaje UDP a todos los dispositivos en la red para que comiencen su apague adecuado. La detección y envío del mensaje UDP, al igual que la recepción de este mensaje, se logran en un par de simples y pequeños programas que describimos en una de las próximas secciones.
Pasa un tiempo y los dispositivos, incluyendo el Raspberry Pi completan su proceso de apague.
Eventualmente, el conteo del segundo timer-relay llega a zero, causando que el segundo relay corte la electricidad a todos los dispositivos.
Partes:
Costo total: ~$50 dólares
2x Timer Relay
1x Fuse Tap
12v -> USB power supply; asegurando que tengas suficiente capacidad para todos los dispositivos
Raspberry Pi
Espaciadores (PCB Standoffs)
Alambrado
Conexiones:
El lado derecho de la ilustración se conecta a 12V permanente del auto. Siempre permanece conectado. La línea amarilla se conecta a un enchufe de fusible que solo activa al encender del auto. Ojo al conectar el fuse tap, solo hay una manera correcta de conectarlo. Al conectarlo incorrectamente, la conexión esquiva el fusible y puede causar daños graves a tu automóvil. Prestar atención al manual!
Programas
Server - Raspberry Pi Zero:
Primero instalamos el paquete gpiozero, el cual nos permite examinar el estado del los pins GPIO usando Python.
Luego, creamos el archivo nombrado `relay-trigger.py` con el contenido:
El programa que hemos creado se hará cargo de detectar el GPIO #21 cuando se activa el relay; al detectar el cambio, el mismo programa manda un mensaje UDP a la red local avisando a todas la computadoras a apagarse. Finalmente, el programa apaga el mismo Raspberry Pi donde está corriendo.
Ahora configuramos que este programa arranque solo al iniciar el Raspberry Pi. Esto lo logramos creando un servicio que corre sobre el sistema de Linux llamado systemd. Para eso tenemos que crear el archivo: /lib/systemd/system/relay-trigger.service
Nota: debido a la ubicación del archivo, tendrás que crearlo con `sudo`, por ejemplo `sudo nano /lib/systemd/system/relay-trigger.service`
Este nuevo archivo tendrá el contenido:
Próximo, le pedimos a systemd que lea nuestro nuevo servicio:
Luego, activamos el nuevo servicio:
Finalmente, hacemos un reinicio al Raspberry Pi:
Podemos verificar si hemos logrado correr el servicio con el siguiente comando:
Clientes
El programa cliente lo corremos en cualquier número de dispositivos Windows PC o Linux. En este artículo, damos el ejemplo de cómo instalarlo en un Windows PC.
Creamos un archivo nombrado cliente.py en el directorio que el usuario prefiera. El contenido debe ser:
Colocamos un shortcut a este nuevo archivo en el siguiente directorio, cambiando NOMBRE_DE_USUARIO al nombre nombre registrado como cuenta del usuario en Windows:
C:\Users\NOMBRE_DE_USUARIO\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Finalmente, nos aseguramos de instalar Python versión más reciente (3.x).
Conclusiones:
Este fue un proyecto de bajo costo, muy sencillo, y fácil de construir. Brinda una gran utilidad automática a las instalaciones WIRES-X y MMDVM móviles.
Los dos timer-relays y el Raspberry Pi se pueden montar en una tabla de plexiglass, o se pueden montar juntos usando standoffs para proyectos de placas.
Otras Notas:
Aunque no es necesario para este proyecto, el sistema llamado ZeroTier es una solución mesh network que es muy útil para para dispositivos en instalaciones móviles. Nos permite alcanzar a nuestros dispositivos sin tener que abrir puertos especiales ni hacer cambios de firewall que a veces no se pueden hacer por restricciones en hotspot 4G/LTE/Celulares.
Demo en Youtube:
"Espero que mi proyecto les sea útil y que disfruten de su armado."
Jason - K4FLY - 73's, California, EE.UU.
Comments