Proyecto del reloj Weasley que muestra la ubicación de los miembros de la familia





Quería sorprender a mi esposa en Navidad. Es pelirroja, fanática de Harry Potter y también madre; todo esto me inspiró a crear el reloj Weasley. Se me ocurrió la idea en febrero, así que tuve 10 meses para desarrollar y crear el proyecto.



Para las personas que no estén familiarizadas con Harry Potter y la familia Weasley, les explicaré que la familia de magos Weasley tiene un reloj mágico que no muestra la hora, sino la ubicación de los miembros de la familia, cada uno de los cuales tiene su propia flecha. Aquí hay un extracto de Harry Potter y el cáliz de fuego (J. Rowling, 2000):

, . . , , – - . , . , , . «», «», «», « », «», «», «»; , «12», « ». «», , , «».



«, !» – , . , «» « », «» , , .


Se necesitó un poco de trabajo de investigación para convertir los relojes mágicos en relojes reales. Tengo mucha experiencia en programación, pero recién comencé a escribir código que mueve algo en el mundo físico. En 2018, comencé a dirigir nuestro club de robótica FRC local desde FIRST y conocí el mundo de los motores y codificadores.





El diagrama de flujo para actualizar los datos en el reloj Weasley: los

usuarios de teléfonos inteligentes tienen la aplicación Life360 en ejecución -> La

aplicación rastrea la ubicación y velocidad de los

usuarios -> HA rastrea a los usuarios y calcula el estado del reloj. Envía actualizaciones a través del protocolo MQTT a Raspberry Pi ->

Se está ejecutando un proceso weasleyclockd especial en Raspberry Pi, que monitorea la transmisión MQTT y controla los servos de reloj ->

Cualquier integración de IoT suficientemente avanzada es indistinguible de la magia.




Dividí el proyecto con el reloj en varios subproyectos con los que ya se podría trabajar y comencé a rastrear la ubicación. Al principio, usé la aplicación móvil Find My Phone de Apple, ya que todos los miembros de mi familia inmediata usan iPhones. Pero luego cambié a Life360, porque su API resultó ser más fácil de usar para terceros y me permitió agregar a los familiares de mi esposa que viven con nosotros y usan teléfonos Android. Incluso antes de comenzar a construir y programar, tuve que convencerlos de que instalaran Life360 y lo usaran. Afortunadamente, todos estuvieron de acuerdo. Mi esposa lo hizo por razones de seguridad, sin nunca enterarse de mi plan secreto para hacer una sorpresa complicada para Navidad.



El siguiente desafío fue la creación de un reloj con múltiples manecillas. Asumí ingenuamente que existían tales cosas, y solo tendría que comprar algo así y meter mis propios controladores de motor allí. Terminé usando tubos de latón concéntricos de tiendas de pasatiempos. Adjunté engranajes a las tuberías con abrazaderas de ServoCity.com.



Para girar las flechas, decidí utilizar servo-winches con posibilidad de múltiples giros. Le compré a Adafruit y soldé una placa de expansión Raspberry Pi Servo HAT de 16 canales y comencé a hacer prototipos. Y en ese momento, me invadió la emoción cuando me di cuenta de que todo iba a funcionar.



Entonces necesitaba un programa que convierta los datos de ubicación sin procesar en estados específicos del reloj Weasley. Decidí hacer del sistema de automatización Home Assistant un intermediario entre los datos de ubicación de Life360 y el cálculo del estado del reloj. Esto complicó el sistema en su conjunto, pero me permitió trasladar la carga de la integración de Life360 (y los posibles cambios de API en el futuro) sobre los hombros de Home Assistant. El seguimiento de los puntos de acceso WiFi específicos de las personas me permite identificar con mayor precisión su ubicación en la casa. Cuando, por ejemplo, el teléfono de alguien se conecta a un enrutador de la calle, el sistema sabe que la persona está en el "jardín".





Panel de asistente de inicio



Habiendo escrito las reglas para Home Assistant, obtuve un panel de control, donde se enumeraban todos los estados del reloj Weasley. Ahora solo necesitaba usar estos datos para mover las manecillas del reloj.



Home Assistant es un proyecto de automatización del hogar de código abierto con un enfoque en el almacenamiento y la gestión local. Esto contrasta con la mayoría de los sistemas de automatización de IoT que requieren una conexión a Internet y almacenan sus datos en la nube.



Dado que los estados del reloj ya estaban calculados en el propio Home Assistant, y la Raspberry Pi y los servocontroladores estaban en el reloj, necesitaba averiguar cómo transferir datos del Home Assistant al reloj Weasley. Elegí el protocolo MQTTpopular para el uso de IoT y bien compatible con Home Assistant. Agregué automatización a Home Assistant para enviar mensajes MQTT cada vez que cambia el estado del reloj. En el lado del oyente , escribí un demonio de Python, weasleyclockd , que escucha el flujo de eventos MQTT y mueve las flechas en consecuencia.



Agregué algo de información a la esfera del reloj para que hubiera más datos que solo "en casa" o "perdidos". En los sectores "perdido" y "en camino" la posición de las flechas de los valores indicados es proporcional a qué tan lejos de la casa se encuentra la persona. Puede comprender de un vistazo si una persona está cerca de su casa, en la tienda más cercana o a cien kilómetros de distancia.



Para que sea más fácil de leer, las flechas están escalonadas para evitar aglomeraciones en sectores como el "hogar". El sector de la casa se divide en dos partes: la casa principal y el segundo edificio, el taller.



En el proyecto, una parte importante está ocupada por el dibujo del dial. Encontré un hermoso póster del reloj Weasley de Minalima . Este autor ha dibujado muchos de los dibujos oficiales de las películas de Harry Potter.



Mientras hacía este reloj, traté de imaginar cuál debería ser su caso. Me di cuenta de que sería mejor reutilizar un reloj antiguo. O podría haberlo hecho usted mismo, pero yo no tenía experiencia como ebanista. En principio, era posible, pero sabía que los resultados de mi primer trabajo no me vendrían bien. El reloj de sobremesa que vi en las tiendas de antigüedades locales en Snohomish, Washington, era demasiado pequeño para el mecanismo y la esfera del reloj. Y luego la suerte me sonrió.



Mi esposa y yo condujimos hasta Whidbey Island y entramos en la tienda de segunda mano Good Cheer en Langley. Vendieron un reloj de pie, cuyo tamaño, a primera vista, era adecuado tanto para el mecanismo como para la esfera. Sin embargo, no estaba dispuesto a comprarlos. No tenía conmigo las dimensiones de la esfera y el movimiento. Y conmigo estaba mi esposa, a quien estaba destinada esta sorpresa. Así que acabo de recordar este momento y decidí que definitivamente necesitaba comprar un reloj así



en casa, armado con todas las medidas, comencé a peinar eBay en busca de un reloj de pie. Esto no fue tarea fácil. Las horas de trabajo eran caras. Nadie quiso enviarlos. Tan pronto como encontré un reloj adecuado, resultó que se vendieron por auto-recogida en Florida.



Tres meses después, mi esposa y yo decidimos con toda la familia volver a Whidbey Island. Cenamos en Langley de nuevo y rápidamente me lancé a esa tienda. ¡El reloj del abuelo todavía estaba allí! Incluso fueron rebajados a $ 165. Una coincidencia tan afortunada no podía pasarse por alto, así que le pedí a mi esposa que no hiciera preguntas, ya que todo era parte de la sorpresa. Compré un reloj y lo cargamos en una camioneta Honda Odyssey ya atascada. Ahora ella ya entendió que algo estaba planeado.



Resultó incluso más difícil que la caja del reloj descubrir cómo hacer las manecillas. Inicialmente quería imprimirlos en 3D o cortarlos de latón. Tengo la suerte de tener en casa a un par de mis propios expertos en este tema. Ver las impresionantes flechas impresas en los accesorios imprimibles, Me decidí por la impresión 3D. Nuestro hijo Alex acaba de terminar su curso de CAD avanzado de la escuela secundaria y aprobó su examen de certificación Solidworks con excelentes calificaciones. Lo cargué con hacer flechas y salieron geniales. Mi suegro Ron estaba a cargo de la impresión 3D. Trabaja con una impresora 3D en nuestro equipo de robótica y se desempeña como nuestro experto local en el tema. Para rematar las flechas, las pinté con pintura metalizada y agregué negro para contrastar.





Movimientos familiares durante el día





Distancia desde casa



Tenía muchas ganas de presumir de las capacidades del reloj, pero en medio del autoaislamiento, nadie se fue lejos de casa. Para resolver este problema, escribí un programa que envía secuencias grabadas de mensajes MQTT. Podía simular eventos y hacer que las manecillas del reloj se movieran como si la gente estuviera conduciendo de un lado a otro.





Reloj terminado





Ponlo en la cocina



Al final, logré mantener todo el proyecto en secreto. Pero no tuve tiempo con él para Navidad. Por lo tanto, durante las vacaciones, tuve que hacer una demostración del reloj en un estado estático que no funcionaba. Me las arreglé para traer el esmalte exterior y mi esposa se sorprendió y se alegró.



Se dedicaron otros dos meses al trabajo de acabado final: imprimir los componentes en una impresora 3D, instalar el mecanismo, imprimir y pintar las flechas y ajustar el software.



El proyecto parece estar completo, pero quiero hacer algunas mejoras más. Planeo armar un reloj con seis o siete manecillas y automatizar el toque del reloj.



Parafraseando a Arthur Clarke: "Cualquier integración de IoT suficientemente avanzada es indistinguible de la magia".



En la segunda generación de relojes Weasley, me gustaría cambiar lo siguiente:



  • Diseñe e imprima engranajes que se adhieran directamente a las varillas de latón.
  • Utilice motores con codificadores.
  • Corta las flechas del latón para dejar espacio para más flechas.


Enlaces a mi registro de desarrollo, fotos y programas:






All Articles