Tabla de contenido:

Reloj de ubicación 'Weasley' con 4 manecillas: 11 pasos (con imágenes)
Reloj de ubicación 'Weasley' con 4 manecillas: 11 pasos (con imágenes)

Video: Reloj de ubicación 'Weasley' con 4 manecillas: 11 pasos (con imágenes)

Video: Reloj de ubicación 'Weasley' con 4 manecillas: 11 pasos (con imágenes)
Video: V. Completa. Cómo educar a los hijos para que sean más responsables. Maribel Martínez, psicóloga 2024, Mes de julio
Anonim
Reloj de ubicación 'Weasley' con 4 manecillas
Reloj de ubicación 'Weasley' con 4 manecillas

Entonces, con una Raspberry Pi que había estado dando vueltas por un tiempo, quería encontrar un buen proyecto que me permitiera aprovecharlo al máximo. Encontré este gran reloj Instructable Build Your Own Weasley Location de ppeters0502 y pensé que sería bueno intentarlo.

El reloj consiste básicamente en una Raspberry Pi que controla los servos para hacer girar las manecillas del reloj. Como en la casa de la familia Weasley en los libros / películas de Harry Potter, cada miembro de la familia tiene su propia mano. Cada mano señala la ubicación actual de ese miembro de la familia. El reloj lo logra al recibir mensajes de los teléfonos móviles de la familia cada vez que entran o salen de un radio predefinido.

Las principales diferencias con el Instructable anterior eran que necesitaba tener 4 manecillas, no 2 (de lo contrario, mis hijas se habrían quejado) y decidí construir el marco también, no tener un reloj viejo para reutilizarlo. Esto se debía a que me preocupaba que el espacio fuera un problema en una caja de reloj existente, con la necesidad de encajar en 4 servos, etc.

Me tomó mucho más tiempo de lo que esperaba, aunque sobre todo cuando encontré problemas complicados que me dejaron perplejo y que no parecían estar cubiertos por la publicación original. Nada en contra del Instructable original, que en general era genial, pero habían pasado algunos años y las versiones de las cosas cambiaron … etc. Además, estar en el Reino Unido significó que algunos de los elementos imperiales / métricos causaron más desafíos de los que esperaba.

Además, aunque estoy bien en la codificación, la fabricación física del reloj definitivamente me estiró y requirió algunas herramientas adicionales, lo que también me ralentizó un poco.

Al final, incluiré una sección sobre "Cosas que haría de manera diferente / mejor si lo hiciera de nuevo …"

Suministros:

Una de las cosas que me llamó la atención fue que los componentes costosos tenían que ver con las manecillas del reloj. Definitivamente 4 manos es mucho más caro que 2. Decidí poner algunos costos para que tengas una idea. Esta es la primera vez que lo sumo todo, y sin tener en cuenta las herramientas, creo que gasté alrededor de £ 200. Además de algunas cosas que no usé (y que no he incluido a continuación) más el Pi, más la fuente de alimentación que ya tenía.

Pi, etc

  1. Raspberry Pi: no recuerdo cuánto costó originalmente, pero era un Modelo 2B. Creo que si aún no tienes uno, incluso un Pi Zero probablemente funcionaría. Había agregado un dongle wifi y una tarjeta SD con Raspbian. Y tenía un viejo cargador de teléfono Android por ahí.
  2. Adafruit Servohat para Pi - £ 16
  3. Fuente de alimentación para el Servohat: me costó mucho encontrarla, ya que todos los sitios web solo apuntaban al sitio de adafruit, que obviamente recomienda una fuente de alimentación de EE. UU. Luego me di cuenta de que tenía un antiguo suministro de voltaje variable con puntas intercambiables, así que lo usé. Pero el de Estados Unidos cuesta $ 8, así que ese es el estadio.
  4. Estuche para el Pi, para luego colocarlo en el marco del reloj. £ 5

Servos y engranajes

Aquí estoy citando el precio de los 4, así que divida si quiere menos manos (sumando ~ £ 40 POR MANO = £ 160: -o

  1. 4 x Servos - Usé los recomendados por ppeters0502 - que se encuentran en ebay por ~ £ 15 cada uno = £ 60 - Busqué el siguiente texto "GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-degree "pero a veces no estaban disponibles
  2. 4 x tubos de latón que encajan exactamente uno dentro del otro - ~ £ 3 cada uno. Obtuve 1 de 1/4 ", 7/32", 3/16 ", 5/32" = £ 11
  3. 4 x abrazaderas que se sujetan a los tubos de latón para permitirle colocar los engranajes. ~ £ 7 cada uno = £ 28. Los obtuve de ActiveRobots que hacen pedidos regulares de Servocity en los EE. UU., Lo que le permite evitar el envío internacional. También pueden obtener cualquier otra cosa que pueda encontrar en el sitio principal de Estados Unidos de Servocity. Esto fue muy útil para los siguientes 2 elementos.
  4. 4 x engranajes con patrón de acetilo 0.770 "para montar en los cubos de sujeción. ~ £ 6 cada uno = £ 24
  5. 4 engranajes de acetilo montados en estrías de acetilo para montar en los servos. ~ £ 6.50 cada uno = £ 26
  6. 1 x paquete de tuercas hexagonales para engranajes adjuntos a tuercas de sujeción = £ 2.60
  7. Llave hexagonal de 1 x 7/64 "(llave allen) porque todo lo que venga de los EE. UU. Es imperial, por lo que los cientos de llaves allen que ya tengo son inútiles = £ 1

Para la construcción física

Aquí usé principalmente recortes de cosas sobre las que había mentido

  1. 2 x cuadrados de madera contrachapada para la placa 'frontal' y 'posterior'
  2. Luego corté cilindros de 4x10cm de una vieja barandilla que tenía, para conectar la parte posterior a la cara
  3. Algunos bloques para montar los servos en el desplazamiento correcto, solo recortes de madera blanda que corté a la medida.
  4. Tornillos surtidos. desde muy pequeño (para unir la carcasa del Pi al marco) a mediano (para unir el marco)
  5. Hoja de 0,75 mm de acero dulce de unos 50 cm x 20 cm (para cortar las manos). Esto fue lo único que compré ~ £ 9 de Wickes

Instrumentos

Algunas cosas las tenía y otras las pedí prestadas o las compré

  1. Soldador + soldadura eléctrica: para conectar los conectores al Adafruit Hat & Pi.
  2. Sierra de calar: para recortar la forma rugosa de las manos
  3. Taladro. solo un taladro normal inalámbrico de 18 V
  4. Brocas: tenga en cuenta que necesitará brocas imperiales para hacer agujeros que coincidan con los tubos de latón. Me las arreglé para pedir prestado algunos.
  5. sierra para metales - para cortar los tubos de latón. No haga lo que hice y gaste £ 3 en el cortatubos, funciona por presión y significa que el interior de los tubos se vuelve un poco más pequeño. por lo que el tubo inferior del siguiente tamaño no pasa por
  6. Amoladora de banco: no tenía uno de estos, pero un amigo sí lo tenía y me hizo MUCHO más fácil dar forma a las manos. Hasta entonces solo usaba archivos. No compraría uno solo para este proyecto, pero para las manos de metal fue genial.
  7. Compré una variedad de limas de punta de diamante (muy pequeñas). útil para las manos y los tubos alrededor de £ 15
  8. papel de lija áspero y liso
  9. algunas pequeñas abrazaderas sujetan las cosas en su lugar al perforar.
  10. un vicio por la misma razón.

Paso 1: Configurar sus teléfonos para enviar su ubicación a su Pi (Parte I MQTT Broker)

Este bit se describe muy bien por ppeters0502 en su excelente Instructable Reloj Weasley. Curiosamente, aunque tal vez refleje diferentes conjuntos de habilidades, comenzó con la compilación y luego pasó al software, yo lo hice al revés. Entonces, comencé con el teléfono … espera, no, no lo hice, comencé con el corredor de MQTT, que es el Paso 6 en su Instructable. Omitiré todas las partes que él hace muy bien y solo incluiré algunas que podría agregar. Fui por la ruta CloudMQTT que mencionó.

PERO mientras escribía esto, revisé el enlace a los planes y descubrí que ya no hay un plan gratuito. Lo retiraron, por lo que parecen motivos razonables. es decir, que la gente configuraría una instancia gratuita y luego nunca la usaría. No me di cuenta porque las instancias actuales pueden continuar. Entonces no cambiaré. Pero hace que las instrucciones sean un poco redundantes. Parece haber 3 opciones.

  1. Pague los $ 5 por mes por Cloud MQTT (pero eso suena caro para el reloj de manera continua).
  2. Vaya a la ruta Mosquitto on Pi como se describe en el primer Instructable. No puedo comentar sobre eso, pero podría ser una buena opción.
  3. Simplemente busque en Google "broker gratuito en la nube MQTT" y parece que hay algunos otros.

Por lo tanto, suponiendo que tenga un bróker MQTT en funcionamiento, si se parece al de CloudMQTT, se mostrará un servidor, un usuario, una contraseña y un puerto. Necesitará todos estos para configurar sus teléfonos para enviar al corredor sus ubicaciones / movimientos.

Paso 2: Configurar sus teléfonos para enviar su ubicación a su Pi (Part II Owntracks)

Esto también se cubre muy bien en el Instructable original, en los Pasos 7 (Android), 8 (iOS) y 9 (configuración de Regiones).

Solo tenía dispositivos iOS, así que no probé el paso 7.

¿Qué agregaría a esas instrucciones?

  1. En la configuración también están los campos TrackerID y DeviceID. Estos deben tener la capacidad de identificarlo dentro de su familia. P.ej. Los tenía como R y RPhone respectivamente. Esto significa que puede pasar al reloj qué Servo y, por lo tanto, qué manecilla girar.
  2. Las regiones son el nombre de las ubicaciones que desea rastrear.
  3. Cada región está definida por un Nombre, una Latitud, una Longitud y un Radio.
  4. Como quería tener varias ubicaciones como una sección en mi reloj, utilicé una convención de nomenclatura, que resultó ser muy útil. Son posibles otros métodos, pero esto funcionó para mí.

    • Por ejemplo, para la sección FAMILIA del reloj, quería tener a mis padres y hermanos y a los padres y hermanos de mi esposa. Por lo tanto, tenía ubicaciones como "Family Tom", "Family Dick", Family Harry "y" Family ParentsR ". Esto significaba que la siguiente etapa podía saber qué pasarle al Reloj.
    • Tenga en cuenta que las personas pueden tener diferentes ubicaciones. Pero siempre que sean consistentes con la convención de nomenclatura, está bien. P.ej. mi trabajo sería diferente de la región de trabajo de mi esposa y se llamaría de manera diferente. pero siempre que ambos comiencen a "Trabajar", todo estará bien.
  5. Quiere que el modo se establezca en 'Significativo' en la pantalla de Mapas. Esto significa que (en su mayoría) solo recibe mensajes cuando ingresa o sale de regiones. Esta parece ser la versión actualizada de la nota marcada como IMPORTANTE: al final del Paso 8 en el Instructable original.
  6. Como se mencionó en el Instructable original, usar Google Maps es una excelente manera de averiguar la latitud / longitud de algún lugar. Encontré que era más eficiente hacer esto a granel, descubriendo todos los Lat / Longs de mi ubicación, luego los pegué en Notes (en mi Mac) y con la sincronización en la nube, significó que aparecieron mágicamente en mi iPhone en Notes y podría copiarlos / pegarlos en Owntracks. También significaba que podía enviar el archivo a los teléfonos de mi familia y todos teníamos ubicaciones consistentes.
  7. Las ubicaciones cercanas pueden causar problemas. Mi hermano vive a 2 calles de distancia, e inicialmente mi teléfono seguía pensando que yo estaba simultáneamente en la región de su casa y también en casa. Finalmente, tuve que poner lógica adicional en Node Red para detectar e ignorar que esto sucedía.

Paso 3: Configuración de la Raspberry Pi

Configuración de la Raspberry Pi
Configuración de la Raspberry Pi

Así que aquí estoy asumiendo que tienes una Pi base configurada y con wifi. Estaba ejecutando Raspbian pero no debería importar. Utilice las instrucciones en raspberrypi.org para configurarlo todo.

Tenga en cuenta que un Pi tiene puertos para mostrarlo en un monitor y teclado / mouse, etc. PERO, obviamente, una vez que lo tenga en el reloj, no querrá nada de eso. Entonces, la respuesta, sugerida por alguien en el sitio web de Raspberry pi, creo, fue configurar una conexión VNC. Esto le permite conectarse desde otro dispositivo al Pi y controlarlo también. Lo hago desde mi Mac pero también lo he hecho desde un iPad. Sugeriría usar algo con un teclado para facilitar su uso.

Acabo de descubrir que parecen haberlo hecho más fácil desde que me conecté … ver aquí

Básicamente, te conectas y obtienes una ventana que es la interfaz estándar de Pi.

Entonces, tiene una ventana a su Pi desde su computadora portátil o computadora.

Ahora necesitas conectar los Servos.

Primero debe hacer una soldadura bastante básica para colocar el sombrero de adafruit en el Pi. Es un poco complicado, pero a pesar de no haber soldado durante 30 y tantos años, estuvo bien. Como siempre, encontré un video de YouTube útil para guiarme a través de él, lo cual fue de gran ayuda.

Si bien el sombrero puede ejecutar 16 servos, solo necesitaba 4, por lo que solo me molesté en soldar el primer juego de 4 pines.

Luego, los servos simplemente presionan los pines. Hice uno primero para comprobar que realmente podía hacer que el servo se moviera.

Aquí fue donde me topé con mi primer obstáculo importante. Tenía un script de Python muy básico para mover los servos y literalmente no pasó nada. Pasé aproximadamente una semana probando nuevos guiones, etc., y luego comenzó a aparecer humo en el sombrero. Apagando todo, verifiqué el esquema. Era un componente que protege contra la polaridad inversa. Debido a que tenía una fuente de alimentación de múltiples puntas y voltaje, había pasado por alto el hecho de que podía tener la salida de CC en ambos sentidos invirtiendo la punta. Me había equivocado (probabilidad de 50:50) y acabo de quemar mi primer sombrero de adafruit

:-(Así que un ligero retraso ya que compré uno nuevo, volví a soldar y corrigí la punta. Mucho mejor.

A continuación, necesitaba averiguar cómo mover los servos al punto correcto en el reloj. Eso vendrá en el Paso 5, pero lo que hice, sin haber construido el reloj real, fue atornillar ligeramente los servos a un trozo de madera al azar y pegarles cinta adhesiva con una flecha, como en la imagen. Esto dio una retroalimentación muy visual a lo que estaba codificando.

Paso 4: Instalar Node Red (Obtener los mensajes del servidor MQTT a su secuencia de comandos de Python)

Instalación de Node Red (Obtener los mensajes del servidor MQTT a su secuencia de comandos de Python)
Instalación de Node Red (Obtener los mensajes del servidor MQTT a su secuencia de comandos de Python)
Instalación de Node Red (Obtener los mensajes del servidor MQTT a su secuencia de comandos de Python)
Instalación de Node Red (Obtener los mensajes del servidor MQTT a su secuencia de comandos de Python)
Instalación de Node Red (Obtener los mensajes del servidor MQTT a su secuencia de comandos de Python)
Instalación de Node Red (Obtener los mensajes del servidor MQTT a su secuencia de comandos de Python)
Instalación de Node Red (Obtener los mensajes del servidor MQTT a su secuencia de comandos de Python)
Instalación de Node Red (Obtener los mensajes del servidor MQTT a su secuencia de comandos de Python)

Node-RED es un programa que instala en el Pi, que le brinda una interfaz visual (en su navegador) para recibir mensajes de su servidor MQTT y usarlo para pasar la información correcta a su script de Python (cubierto en el siguiente paso (Paso 5). Usé prácticamente las instrucciones de ppeters0502 en el Paso 5. Hay lógica en estos flujos y lógica adicional en Python, y puede tener más o menos en cada uno, según sus preferencias. Básicamente, debe hacer el seguimiento

  1. Tienen nodos de recepción para los mensajes MQTT: estos son de color violeta claro y yo tenía 1 por miembro de la familia
  2. Asigne eso al servo que desea mover (numerado 0, 1, 2, 3)
  3. Determine si está entrando o saliendo de un radio en OwnTracks
  4. Determine a qué ubicación debe apuntar el servo

    Hubo algunas excepciones a las reglas básicas que necesitaba incorporar

  5. Establecer el ángulo correctamente

Hice que Node-RED hiciera los primeros 4 y mantuve Python relativamente simple.

Puede ver el flujo básico aquí, y todos los flujos se pueden exportar al formato aquí, lo que significa que puede importar este flujo básico a su Node-RED y luego adaptarlo. Tenga en cuenta que eliminé todas las conexiones de los nodos violetas para que no pueda acceder a mi instancia de MQTT. También eliminé todos los nodos de prueba ya que contienen datos reales … es posible que deba cambiar este tipo de archivo para que sea flows.json para poder importarlo en su Node-RED, pero Instructables no me dejó cargar eso.

Los nodos verdes son nodos de depuración que luego muestran la salida en la ventana de depuración a la derecha de la pantalla (puede que sea necesario expandirla; busque la flecha en la mitad de la derecha).

El primer bit a hacer es el bit "En vivo - solo para depuración". Eso comprueba que puede recibir los mensajes MQTT y ver qué hay en ellos. json es solo una versión más estructurada de los mensajes que le permite obtener los datos más fácilmente. En este flujo, cuando está en vivo, luego conecto los nodos morados de la parte superior izquierda al nodo json a la derecha de ellos.

Prueba de nodos

Una vez que sepa cómo se verán los mensajes en vivo, se vuelve muy aburrido tener que salir de su casa y caminar y regresar, solo para desencadenar un evento. Una vez que haya hecho eso, puede copiar el mensaje en un disparador de PRUEBA y luego hacer clic en él para simular el evento. También puede cambiar los datos, para simular que son para diferentes ubicaciones (asegúrese de que se correspondan exactamente con los nombres de las ubicaciones en Owntracks).

Puede ver en el flujo que todos los casos de prueba van a un nodo separado y luego al nodo json. Esto es puramente para ordenar la pantalla.

No puedo enfatizar lo suficiente lo útiles que fueron y siguen siendo estos nodos.

Llamar a Python

Entonces llegué al siguiente obstáculo. Este requirió MUCHA búsqueda en Google en foros, etc. Mi flujo funcionaría perfectamente, pero no activaría mi script de Python. No pude resolver esto, pero te ahorraré las palabrotas, etc. Solo para decir que, como se resalta en la segunda captura de pantalla, debes especificar python3, ya que aparentemente Node-RED asume python2, a menos que tú lo especifiques.

2 complicaciones adicionales, solo si es necesario

Luego tuve una serie de desafíos en los que la lógica no funcionaba del todo. Primero fue que Owntracks se volvió un poco extraño y, como mi hermano vive a 2 calles de distancia, a menudo decía que estaba en 2 lugares a la vez, o seguía cambiando de uno a otro. La única forma en que pude evitarlo fue agregar una condición para detener los falsos positivos. Si decía que estaba en su casa, entonces lo enrutaba y verificaba la Longitud / Latitud real en el mensaje y lo abortaba si decía que realmente estaba en casa.

El otro problema era que, cuando paseaba a mi perro, realmente no podía obtener un buen radio. Normalmente camino en la misma área, así que aquí dije "si entro en esta área, definitivamente estaré paseando al perro, y lo estaré hasta que llegue a casa". esto significaba que no cambiaría al pub que paso de camino a casa, ni a varios otros lugares locales que podrían activarse mientras paseaba al perro. Para hacer esto, necesitaba configurar algunas variables de contexto persistentes (búsquelas en Node-RED. Vea la captura de pantalla. Estas variables persisten hasta que Node-RED se reinicia y, por lo tanto, puedo decir Si en un paseo de perros, configure la Variable de contexto a "Perro". Luego ignore CUALQUIER otra cosa a menos que "Ingrese" a Inicio.

La última captura de pantalla es la de mi flujo final real, con todas las excepciones, solo para su interés.

Paso 5: realmente mover servos con Python en la Pi

Un pequeño desvío a los servos. No sabía nada sobre servos, pero hay mucha información en línea. Los que utilicé son servos continuos que pueden girar 360 grados y sin problemas. El otro tipo principal son los servos paso a paso que se mueven en trozos (pasos) y aparentemente solo suben unos 180 grados (claramente no es útil aquí). La ventaja de los servos paso a paso es que puedes colocarlos en un ángulo y se mueven hasta ese punto y se detienen. Toda la documentación que encontré decía que los servos continuos funcionan al recibir una velocidad y un tiempo para mantener esa velocidad (por ejemplo, la velocidad máxima durante 1 s) y terminan donde terminan, pero es relativo a su punto de inicio. Después de muchos intentos, no pude hacer que esto funcionara, pero descubrí, usando el banco de pruebas, que los servos regresaban consistentemente al mismo punto dado el mismo ángulo. Lo cual es mucho más fácil, así que lo hice. Puede haber algunas desventajas que no conozco, pero me funciona. Sin embargo, tenga en cuenta que cada servo es único, por lo que debe tener un conjunto único de ángulos para cada servo. Encontré que era más fácil tener un script de Python de 'calibración', donde podía configurar los servos en ángulos a su vez, refinándolos hasta que todos parecieran correctos. Este es el primer guión adjunto. Simplemente comente los servos que no está probando, concéntrese en uno y luego ajuste los valores según sea necesario. NOTA: la calibración para el banco de pruebas es simple, tosca y lista. Deberá volver a calibrar cuando el reloj esté ensamblado, porque los engranajes, etc., cambiarán todo. Entonces, el segundo guión es bastante básico. Hace lo siguiente

  1. Importar algunas bibliotecas
  2. mover las variables provenientes de Node-RED a variables en el script
  3. mapea los ángulos determinados por el script de calibración a las ubicaciones en el reloj.
  4. compruebe que la ubicación se encuentra en la lista, y si no, muévase a "Peligro"
  5. escribir lo que se hizo en un archivo de registro
  6. mueva el servo requerido al ángulo requerido
  7. Detenga un servo de 'zumbido' *

3 cosas a tener en cuenta.

El archivo de registro es muy útil para depurar. Significa que puede ver la depuración Node-RED de un mensaje y luego ver qué sucedió en el script. la salida se ve así. Los primeros 3 son yo sacando al perro a pasear, y luego el Niño 1 sale de la casa y llega a la escuela. Nota para comprobar la hora en el Pi. Puede ser predeterminado en UTC y no permitir cambios de horario de verano / invierno. P.ej. los tiempos siguientes son de 1 hora.

2020-12-07_05: 36: 03 Quién = 0, loc = Viajando, detalle = Hogar, Ángulo = 10, índice = 8

2020-12-07_05: 36: 04 Who = 0, loc = Dog, detail = Astons, Angle = 86.5, index = 10

2020-12-07_06: 07: 49 Who = 0, loc = Home, detail = enter, Angle = 75, index = 0

2020-12-07_06: 23: 53 Quién = 2, loc = Viajando, detalle = Hogar, Ángulo = 19, índice = 8

2020-12-07_06: 30: 48 Quién = 2, loc = Escuela, detalle = N, Ángulo = 60,5, índice = 2

Servo-zumbido

Uno de los Servos (0) siguió sonando después del final del guión. Como puedes imaginar, esto es súper molesto de tener en nuestra cocina. Encontré un hilo en algún lugar que mencionaba establecer el ángulo del servo en 'ninguno', lo que de alguna manera lo establece en inactivo. Eso funcionó de manera brillante y se puede ver en el guión al final.

Tiempos

Tenga en cuenta lo bajo que toma una manecilla para barrer las veinticuatro horas del día. Puede ver en el script que hay una línea time.sleep (4) justo antes de que configuremos el servo para que deje de zumbar. Esto se debe a que debe permitir que la mano llegue a su destino antes de ponerla en inactivo. De lo contrario, simplemente se detiene. Esto también es importante al calibrarlo, porque está haciendo varios movimientos dentro del script. Lo pondría en ejecución para moverse a las 12 ubicaciones a su vez, para poder volver a verificarlas todas. pero necesitas un poco de tiempo en el medio.

Paso 6: Finalización del software: teléfonos a servos

Una vez que tenga el banco de pruebas y los scripts configurados, puede ejecutarlo 'en vivo' por un momento y ver cómo funciona en tiempo real. Aquí es donde encontré las excepciones que necesitaba agregar a mi flujo Node-RED.

Puede desconectar y conectar fácilmente a los miembros de la familia en el flujo Node-RED si desea concentrarse en uno. Por ejemplo, si dos están causando problemas pero desea solucionar uno a la vez. De lo contrario, tenga en cuenta que seguirá recibiendo mensajes de cualquier teléfono conectado.

Mencioné el problema de pasear perros y que la casa de mi hermano estaba bastante cerca. Tuve otros 2 desafíos.

Primero, ubicaciones dentro de otras ubicaciones. Mi esposa estaba haciendo un curso en una universidad de Londres. Queríamos que se registrara como 'Escuela', pero también está en 'Londres'. Así que necesitábamos reutilizar el contexto para decir que si ibas a dejar esa 'Escuela', entonces mudarte a 'Londres' y no a 'Viajar'.

En segundo lugar, las condiciones de la carrera. Como se mencionó, la casa de mi hermano está a 2 calles y también cerca de nuestro pub / restaurante favorito. Esto significa que a veces se reciben 2 señales al mismo tiempo o muy juntas. Esto puede configurar una 'condición de carrera' en la que se obtienen diferentes resultados dependiendo de cuál atraviese la lógica más rápido, lo que lleva a resultados impredecibles. Para contrarrestar esto, hice que todos los mensajes de 'entrada' tuvieran un retraso de 1 en la lógica, lo que pareció solucionar el problema. Puede haber formas mejores y más elegantes de resolver esto, pero pareció funcionar.

Paso 7: Construcción del reloj físico - Parte I - Servos y eje

Construyendo el reloj físico - Parte I - los servos y el eje
Construyendo el reloj físico - Parte I - los servos y el eje
Construyendo el reloj físico - Parte I - los servos y el eje
Construyendo el reloj físico - Parte I - los servos y el eje
Construyendo el reloj físico - Parte I - los servos y el eje
Construyendo el reloj físico - Parte I - los servos y el eje

Ahora la parte en la que tenía menos confianza, por eso la dejé para que durara. Quería una cara de tamaño decente y una construcción fácil. También estaba nervioso por tener físicamente 2 servos alrededor del eje central. Esto significó que, habiendo buscado brevemente en eBay relojes antiguos como en el instructable que estaba siguiendo, decidí darme más oportunidades construyéndolo yo mismo.

  • Obtuve 2 cuadrados grandes (~ 30 cm) de madera contrachapada que tenía por ahí (aproximadamente 9 mm de grosor).
  • Luego corté una barandilla vieja en secciones de 4x10cm y atornillé las placas frontal y posterior.
  • Después de marcar el orificio central, lo perforé para que tuviera el mismo tamaño que el tubo de latón más grande.
  • Luego lo pinté con pintura blanca brillante normal.
  • Después de un poco de experimentación, me di cuenta de que probablemente no podría obtener 4 servos alrededor del mismo eje si todos estuvieran unidos a la placa trasera (o delantera). Entonces necesitaba tener 3 + 1 o 2 + 2, en cada plato. Terminé con 3 en la espalda y 1 en el frente.
  • Calculé las compensaciones requeridas en una hoja de papel y luego corté los tubos de latón para que coincidieran. Tenga en cuenta que el tubo más grueso es el más corto y el más delgado debe llegar hasta la placa posterior. (De hecho, incrusté el más pequeño en un orificio que perforé parcialmente en la placa posterior, pero no del todo para que el eje no se moviera hacia atrás).
  • Para los tubos, compré un cortador de tubos, pero eso usa presión para cortarlos y significa que no se puede introducir el tubo más pequeño. Así que utilicé una sierra para metales y luego tuve que hacer una buena cantidad de limado para que funcionaran. Las limas de punta de diamante fueron invaluables aquí.
  • Luego hice coincidir el diagrama con las compensaciones reales para las abrazaderas y los engranajes *.
  • Una vez que tuve las compensaciones, supe qué tan 'alto' debía hacer los bloques para montar los servos. Rompí un par de bloques cortándolos demasiado delgados y también perforando el agujero para dejar salir el cable.
  • Luego vino la parte complicada de dónde colocar los bloques para que coincidieran exactamente con los engranajes del eje. Atornillé un bloque y luego pude girar el servo para encontrar el eje y luego atornillar en el segundo bloque el otro extremo del servo. También descubrí que necesitaba cortar un poco algunos bloques para evitar enganchar otros engranajes. Tomó bastante tiempo.
  • Una vez que hice todo eso, tomé mi estuche raspberry pi, le hice dos agujeros y lo atornillé a la placa frontal. Luego pude agregar el Pi, cerrar las placas frontal y posterior (habiendo conectado los servos al pi (recordando qué servo era para qué miembro de la familia) y girar hacia las manos …

* Aquí encontré el mayor problema, que aún tengo que resolver por completo. Los tubos de latón eran de 1/4 ", 7/32", 3/16 ", 5/32". Pero las abrazaderas eran métricas (excepto una que era de 1/4 "). Al convertir los tubos a métricas, eran de 6,35 mm, 5,56 mm, 4,76 mm y 3,97 mm. Las abrazaderas restantes eran de 4 mm, 5 mm y 6 mm de diámetro. Las 2 más pequeñas y las los más grandes están bien. pero claramente los 0,44 mm son demasiado recorrido para la abrazadera, así que tuve que rellenarlo con papel. Lo he intentado varias veces y funciona bien durante un tiempo y luego se afloja de nuevo. Así que el segundo más grande la mano no funciona correctamente. Sin embargo, estuvo bien durante unos 6 meses, por lo que el tiempo dedicado a hacer esto bien fue tiempo bien invertido. Pero si lo estuviera haciendo de nuevo, podría haber aumentado o disminuido una talla, con un espacio para tratar de obtener una mejor abrazadera para encajar en el tubo. Por ejemplo, elija 9/32 ", 1/4", (espacio), 3/16 ", 5/32"

Paso 8: las manecillas del reloj

Las manecillas del reloj
Las manecillas del reloj
Las manecillas del reloj
Las manecillas del reloj
Las manecillas del reloj
Las manecillas del reloj

Me decidí por la chapa de acero porque quería algo rígido pero con menos probabilidades de romperse mientras lo hacía. Además, ser delgado significaba que 4 manos era un problema menor.

  • Primero dibujé una forma.
  • Luego lo transferí al acero sobre un poco de cinta adhesiva.
  • Luego los corté con mucha inexperiencia con mi sierra de calar. Eran, y son, todos diferentes, pero eso no me importa.
  • Luego, un amigo me sugirió que tomara prestada su amoladora de banco para darles forma, y fue genial. muy recomendable. De lo contrario, la presentación lleva años.
  • Todavía quedaba un poco de limado y luego lijado para asegurar que no hubiera bordes afilados y también un buen acabado.
  • Tuve que perforar agujeros para que coincidieran con los respectivos tubos de latón (use tubos recortados para verificar, no los montados en el reloj).
  • Descubrí que los agujeros necesitaban un poco de limado para colocarlos en los tubos, pero una vez colocados estaban apretados y no necesitaban pegamento. La excepción fue la mano delantera que quería tener una 'portada'. Así que corté una pieza de acero (en su mayoría) redonda, después de haber perforado el orificio y haberla conseguido del tamaño correcto, y la pegué en la parte delantera. lo puedes ver en la última imagen. Ocasionalmente, la mano delantera necesitaría un poco de pegamento para asegurarla, pero después de un par de inicios en falso, las manos funcionan muy bien.
  • Había rechazado la idea de las fotos (porque los niños se quejarían rápidamente de nuestras fotos de citas), así que me conformé con pintar las iniciales con pintura acrílica.

Paso 9: ¡Completa

¡Completo!
¡Completo!
¡Completo!
¡Completo!

Todo funciona muy bien. Las manos a veces están un poco fuera de lugar, dependiendo de dónde vinieron, pero en realidad no importa porque cada ubicación es una sección, no solo una línea.

A veces, extrañamente, mi teléfono se niega a reconocer que estoy en casa. Estoy claramente dentro del radio de Owntracks cuando se muestra en el mapa, e incluso cuando la precisión es buena… no tengo idea de por qué. no parece afligir al resto de mi familia. pero la configuración es la misma. Esto significa que Owntracks nunca envía un mensaje y me quedo atascado en 'Viajar'. Pero generalmente se resuelve por sí solo con el tiempo.

Ha sido muy útil tenerlo en nuestra cocina, sobre todo para saber cuándo las niñas se dirigen a casa desde la escuela, o las casas de sus amigas, y cuándo tener comida / té listo para ellas.

Una vez más, un gran agradecimiento a @ ppeters0502 por las excelentes instrucciones a seguir. Con suerte, estos pueden agregar algo para hacer un reloj con 4 manecillas.

Paso 10: Cosas que aprendí y que haría mejor / diferente si tuviera que hacerlo de nuevo

  • Las construcciones físicas necesitan prueba y error. No hay forma de predecir los problemas del espacio, solo necesitas sumergirte e intentarlo.
  • Para el código, los problemas de búsqueda en Google son esenciales
  • Empiece de forma básica y aumente. Los servos en la madera del banco de pruebas significaban que podía hacer que la mayor parte funcionara sin la estructura física
  • Podría haberme cortado las manos con láser en una máquina CNC. Pero no sabía dónde estaba el local, y me gusta cómo funcionó el acero dulce (era barato y la amoladora de banco lo hizo mucho más fácil)
  • un motor paso a paso podría ser posible si usa el engranaje para obtener un giro de 360 grados. pero es posible que tenga que tener los servos demasiado cerca del eje central
  • Hay 2 tipos de servo (Futaba y HiTech). Asegúrese de haber verificado esto, ya que tienen diferentes números de dientes en la ranura. Y compré los incorrectos inicialmente …
  • No conectes el sombrero con la polaridad incorrecta;-)
  • Google y Stack Overflow son tus amigos cuando se atascan. Pero debes utilizar buenos términos de búsqueda …
  • El banco de pruebas es en realidad una forma de obtener una versión más simple y económica con mucha más facilidad. La mayor parte de la complicación con la construcción proviene de tener que hacer girar las manos alrededor del mismo eje. Si se compromete con eso, entonces todo es mucho más fácil. Y creo que 4 puede ser el límite del eje único a menos que el eje se alargue mucho. Supongo que podrías tener 3 en la placa frontal y tres en la placa trasera si el eje fuera más largo …

Paso 11: ¿Posibles extensiones futuras…?

Las ideas que tenía sobre los próximos pasos son las siguientes.

  1. Me gustaría reutilizar un iPad viejo como esfera de reloj. es decir, hacer un reloj digital. Posiblemente basado en un navegador o una aplicación. Como un reloj físico es esencialmente sin estado (es decir, no sabe dónde está actualmente, excepto en virtud de que las manecillas están en una posición física), necesitaría tener un almacenamiento persistente de datos. Node Red puede escribir en el sistema de archivos local, por lo que probablemente haría eso.
  2. Si hiciera eso, me gustaría poder verlo desde fuera de casa. Pero entonces realmente necesitamos arreglar la seguridad. Dado que el acceso dentro de la misma red wifi es una cosa, el acceso desde Internet es otra. Actualmente no tengo idea de cuál es la mejor manera de hacer esto, pero sospecho que una suscripción a MQTT que va en sentido contrario podría funcionar (pi publica el estado actual y los dispositivos externos se suscriben)…?
  3. Me gustaría tener una mano para 'Abroad'. pero eso podría ser complejo desde el punto de vista de OwnTracks. ¿Quizás podría usar long / lat combinado con algunos radios enormes?

Recomendado: