Tabla de contenido:

Homúnculo: el adivino del oráculo místico mecánico: 15 pasos (con imágenes)
Homúnculo: el adivino del oráculo místico mecánico: 15 pasos (con imágenes)
Anonim
Image
Image
Homúnculo: el adivino del oráculo místico mecánico
Homúnculo: el adivino del oráculo místico mecánico

Ok, entonces, ¿qué se supone que es esto? La historia de fondo de esto que le digo a la gente es que el cráneo es de un místico del siglo XIX cuya tumba fue robada y que su cráneo, que terminó en algún espectáculo de carnaval a principios del siglo XX. Lo encontré en el sótano de una casa victoriana en ruinas y reconstruí el accesorio para convertirlo en una adivina del siglo XXI: 'que puede llegar al éter de Internet, decirte tu fortuna, quiénes son tus amigos y enemigos, cuéntale una broma y lea mi correo electrónico y el calendario del día '.

¿Qué es realmente? Bueno, es el increíble software Jasper que se ejecuta en una Raspberry pi y he creado un cráneo Linburg parlante de 2 canales que está hablando junto con muchas campanas y silbidos (y una pandereta) para agregarle..

Este fue un proyecto super ambicioso. Muchos medios diferentes con los que trabajar: múltiples tartas, trabajo en madera, pintura, mucho cableado, mucha codificación en python, codificación ardunio, mucho cableado pequeño, cableado de 120v, placas externas pi 'hats', controladores de relé y relés, 24v fuentes de alimentación, haciendo que las cosas se muevan: una calavera con 2 ejes y la pandereta golpeando.

No voy a entrar en súper detalles pieza por pieza para cada parte, especialmente la codificación de Python, pero intentaré describir cada componente brevemente e incluir imágenes.

Además, en los ejemplos de Python, sí, podría haber estado mucho más orientado a objetos en la codificación, pero mi experiencia con Python cuando comencé el proyecto era bastante básica y, por supuesto, es más fácil de cortar y pegar cuando tienes prisa vs. Detenga lo que está haciendo, vuelva a escribirlo correctamente y luego continúe.

Paso 1: Componentes principales: cosas que tenía que encontrar / conseguir / comprar

Componentes principales: cosas que tenía que encontrar / conseguir / comprar
Componentes principales: cosas que tenía que encontrar / conseguir / comprar
Componentes principales: cosas que tenía que encontrar / conseguir / comprar
Componentes principales: cosas que tenía que encontrar / conseguir / comprar
Componentes principales: cosas que tenía que encontrar / conseguir / comprar
Componentes principales: cosas que tenía que encontrar / conseguir / comprar

Frambuesa pi

Dos de ellos

www.adafruit.com/products/1914?gclid=CjwKE…

Jaspe

"Jasper es una plataforma de código abierto para desarrollar aplicaciones siempre activas controladas por voz"

jasperproject.github.io/

Adafruit "ojos"

learn.adafruit.com/adafruit-1-44-color-tft…

Teensy - Cerebro para los ojos

www.adafruit.com/product/2756

Cómo crear los ojos usando las pantallas tft de color de teensy y 1-44

learn.adafruit.com/ojo-electrónico- animado…

Sombrero Serveo de 16 canales

learn.adafruit.com/adafruit-16-channel-pwm…

El cráneo clásico de Lindberg

www.amazon.com/Lindberg-scale-Pirate-skull…

Placa de relé de 4 canales que funcionará con una Raspberry Pi

www.amazon.com/Sizet-Channel-Module-Arduin…

Empuje el solenoide

(Esto está disponible en muchos lugares diferentes)

www.aliexpress.com/item/High-quality-DC-12…

Micrófono USB

Esto está disponible en muchos lugares diferentes.

www.samsontech.com/samson/products/micropho…

Diverso

Dos servos que tenía por ahí, cuernos de servo que encontré en la canasta de $ 1 en la tienda de pasatiempos. Cables de extensión de servo, altavoz USB / Bluetooth, pernos de tuerca, MDF, pegamento caliente, tubos de vacío viejos, varias piezas y puntas de lámpara, un teléfono celular Samsung S5 antiguo, chapa de acero, alambre de cobre, cinta de cobre, clavos, pegamento normal, etc. etc.

Paso 2: ¿Por qué dos tartas de frambuesa?

¿Por qué dos tartas de frambuesa?
¿Por qué dos tartas de frambuesa?

Originalmente quería sincronizar las calaveras hablando con el discurso, pero después de instalar Jasper y determinar todo lo que quería hacer, todas las cosas moviéndose, pensé que sería mejor dividir todo el trabajo en dos Pies. Tenía una fecha límite para hacer esto y no quería tener que dar marcha atrás si tenía algún tipo de problema de rendimiento. Ahora que el trabajo está hecho, creo que podría haberlo hecho con un solo Pi, en ese momento pensé que era mejor dejar que un pi manejara a Jasper y un segundo pi manejara los servos y relés para poder tener una demarcación clara entre los trabaja. También fue más fácil para el desarrollo. Pude hacer todo correctamente en Jasper sin tener que preocuparme por los servos y los relés. En el otro pi, podría concentrarme en manejar los servos, el tiempo de las cosas: encender las luces, mover los servos, etc. y no tener que preocuparme por problemas relacionados con la voz / altavoz / micrófono.

La desventaja de esto es que perdí la capacidad de sincronizar el cráneo moviendo su mandíbula con el discurso, pero después de ver el trabajo de Grant Imahara para The Late Late Show creando 'Geoff' pensé que las cosas se verían lo suficientemente bien.

www.popularmechanics.com/science/a5473/4350…

Paso 3: ¿Cómo se comunican las dos tartas?

¿Cómo se comunican las dos tartas?
¿Cómo se comunican las dos tartas?
¿Cómo se comunican las dos tartas?
¿Cómo se comunican las dos tartas?

Hay algunas formas diferentes de hacer esto. Fui a la vieja escuela y decidí ir con una conexión en serie. Solo necesita tres cables entre los dos Pies (Tx, Rx & gnd) y una pequeña cantidad de código para abrir una conexión en serie de Pi # 1 a Pi # 2 y enviarle algo. Pi # 2 abre una conexión en serie para leer datos y establece una lectura de bucle cerrado desde su conexión en serie. Cuando recibe un mensaje de texto, ve si coincide con un comando (Hablar, encender luces, apagar luces, hablar apagadas, etc.) y hacer lo que tiene que hacer. La desventaja de la conexión en serie es que hay un ligero retraso entre el envío del comando y el proceso del comando. Pi # 2 está en un bucle con un pequeño retraso en la lectura. Así que tuve que ajustar el ritmo de las cosas. También para futuros proyectos multi-pi, es bueno saber que puedo tener dos Pies comunicados y NO necesito Internet para hacerlo.

Paso 4: subprocesos de Python

Hilos de Python
Hilos de Python

Para agregar algo de complejidad adicional a todo, terminé teniendo que usar subprocesos de Python en Pi # 2 para poder manejar múltiples solicitudes y procesarlas al mismo tiempo. Por ejemplo, necesitaba poder comenzar a hablar, moviendo la cabeza del cráneo hacia la izquierda / derecha mientras la mandíbula sube y baja, pero ¿qué pasa si Pi # 1 tiene un error por alguna razón y no puedo decirle a Pi # 2? para dejar de hablar, la calavera estaría hablando para siempre. Así que necesitaba que el cráneo se dijera a sí mismo que se apagara después de un tiempo. Para hacer esto, fue más fácil hacer girar un hilo. Dentro de la rutina del hilo para hablar hay un código que después de un tiempo máximo, deja de hablar, reinicia la cabeza y la mandíbula y sale. Lo mismo para la pandereta, necesitaba que comenzara justo antes de que la calavera dejara de hablar, así que giro otro hilo para la pandereta y todo funciona en conjunto y el código para el movimiento de la cabeza está totalmente separado del golpeteo de la pandereta, lo mismo para encender las luces y los ojos todos los hilos pueden funcionar todos simultáneamente.

La cantidad de código necesaria en Python para usar subprocesos es bastante pequeña, pero es obtusa y me tomó un tiempo entenderlo, pero resulta que funciona muy bien. La capacidad de usar subprocesos es una buena herramienta para tener en la caja de herramientas si eres un desarrollador de Raspberry Pi.

Paso 5: Jasper y modificaciones de Jasper

El sitio de Jasper es EL recurso para instalarlo en un pi, qué recortes de voz usar, cómo configurar, escribir nuevos módulos, todo, ¡y es gratis! Sin embargo, no es una instalación sencilla. Muchos pasos, muchos paquetes para instalar y configurar. Hago este tipo de trabajo para ganarme la vida y todavía era algo que consideraría un desafío. Cuando terminé con este proyecto, me sumergí bastante en Japer e hice muchas modificaciones para adaptarme a lo que estaba tratando de hacer.

Algunos cambios que hice:

Se eliminó la escucha pasiva y se usó un puerto GPIO para iniciar la escucha activa con un interruptor de corte casero. Esto hizo que fuera más un tipo de cosas "arcade" en comparación con el uso de la escucha pasiva.

Cambié los parámetros según fue necesario para trabajar con mi micrófono; tuve que pasar por tres micrófonos USB diferentes hasta que encontré uno que funcionara correctamente para mí. También tuve que ajustar algunos de los valores de umbral en el código. Esta fue la parte más dolorosa de usar a Jasper para mí personalmente.

Se agregó el código de conexión en serie en todos los módulos para abrir una conexión en serie, decirle al pi esclavo qué hacer "ojos", "hablar", "bang pandereta"

Se agregaron módulos "quiénes son mis amigos", "cuéntame un chiste", "lee mi agenda de mi calendario de CRM", "dime mi suerte". Algunos de los cuales requirieron hacer llamadas REST al software basado en la nube para obtener datos. Hay muchos de los módulos listos para usar que aproveché como ejemplos junto con la documentación en el sitio para ayudarme a hacer lo que necesitaba.

Paso 6: agregar dos ejes al cráneo

Añadiendo dos ejes al cráneo
Añadiendo dos ejes al cráneo
Añadiendo dos ejes al cráneo
Añadiendo dos ejes al cráneo
Añadiendo dos ejes al cráneo
Añadiendo dos ejes al cráneo

Empecé con el cráneo básico de Lindberg. Originalmente había pensado en un cráneo de 4/5 ejes, pero el tiempo que tomaría escribir el código de Python para coordinar los movimientos junto con la construcción del hardware para el movimiento excedería el tiempo que tenía para terminar el resto del proyecto. (No sé si ya existe, pero una pieza de software en un Pi o Ardunio para manejar un cráneo de varios ejes que sería un proyecto bastante bueno en sí mismo). Agregué el movimiento de la cabeza y con los ojos LCD funcionando, estoy contento con los resultados.

Entonces, al mirar el trabajo que otros han hecho con calaveras parlantes, descubrí lo que tenía que hacer, dos servos y cuernos de servo, un trozo de MDF, pegamento caliente, bridas, prueba y error: tenía la parte física en su lugar. La programación básica de Pi del movimiento en realidad tomó más tiempo. Tuve que averiguar los valores de PWM para ambos servos. Comencé con lo básico completamente abierto / cerrado, gire la cabeza completamente hacia la izquierda / derecha. Pero no se veía bien. Así que hice movimientos intermedios, mandíbula completamente abierta, retardo.1, mandíbula parcialmente cerrada, sin retardo, jarra parcialmente abierta, retardo,.etc, etc. se ve mejor.

Una cosa desafortunada en la que no tuve tiempo de trabajar es que todo el material que puse en la gorra del cráneo: la tira de metal, las puntas, la corona de cobre y el cableado hicieron que el cráneo en general fuera más pesado y le daría al servo interior un momento difícil, así que. se mueve más lento y no tan lejos. Un servo de par más alto probablemente ayudaría aquí, pero no tenía tiempo ni fondos …

Paso 7: Servocontrolador Adaifruit Hat

Servocontrolador Adaifruit Hat
Servocontrolador Adaifruit Hat

Adafruit tiene excelentes ejemplos de cómo utilizar sus productos. Lo que fue un desafío fue averiguar cuáles eran exactamente los valores para cada uno de los servos: centro, extremo izquierdo y derecho. No es 0, 90, 180 como pensarías. Era solo un programa de Python de un par de líneas de largo, pero tomó algunas horas de ajustes para superar esto para ambos servos.

Paso 8: tablero de relés

Tablero de relés
Tablero de relés

Recogí esto en Amazon. Muchos sitios web venden lo que parece ser exactamente la misma unidad. Tomó algo de experimentación aquí, pero cambiar los relés solo requiere un par de líneas de código y tiene conexiones NC y NO en los relés, lo que lo hace aún más fácil. Otro desafío aquí es que un puerto / pin GPIO no es una coincidencia 1: 1 con el pin en el Pi. Me tomó un poco de trabajo entender eso.

Paso 9: Teensy y los ojos

Teensy y los ojos
Teensy y los ojos

Tomé este 100% del sitio de Adafruit. Originalmente tenía algunas pelotas de ping pong con iluminación LED que iba a usar, pero una vez que vi esto en su sitio, tenía que tenerlo. No tenía experiencia con Ardunio antes de esto, pero seguí ciegamente los ejemplos en su sitio y los tuve funcionando en aproximadamente ½ de un día. Además, desde que le mostré el programa al pequeño, lo retiene y cuando lo enciendes. El Ardunio se enciende en unos 3 segundos e ilumina los ojos. Entonces, todo lo que tuve que hacer para que los ojos funcionaran fue conectar 12v a uno de los relés y encender los ojos y ¡la magia sucede!

Montar las pantallas LCD en el cráneo fue SUPER doloroso. 7 cables pequeños en cada LCD, por lo que 14 cables en total y tratar de esmerilar el cráneo y hacer que se monten rectos sin romper un cable, lo que pasa mucho, fue muy doloroso. Así que la programación es de dificultad moderada, cuesta mucho. Todo lo contrario de lo que esperaba. El Teensy se colocó detrás de los ojos debajo de la placa de MDF que sostiene los dos servos.

Paso 10: Pandereta

Pandereta
Pandereta
Pandereta
Pandereta

Bueno, siempre recuerdo la cabeza en la bola de cristal en la Mansión Encantada y la pandereta flotando golpeando mientras se contactaba con los espíritus, así que tenía que tener algo así para este proyecto. Dado que el cráneo era de un antiguo lector / vidente de mentes, los espíritus necesitan avisar a la gente cuando están presentes J. Encontré el relé push-pull más grande y poderoso que pude encontrar. Luego lo sobrevolté de su 12v a 24v con un cargador de computadora portátil de repuesto que tenía. Tuve que hacer un par de versiones diferentes del mecanismo, pero mi tercera iteración funcionó mejor. Tuve que meterme con la longitud de la palanca, la alineación, etc. Mi gran error fue hacer todo esto con madera / MDF. Cuando puse esto por primera vez funcionando a 24v, el solenoide golpeaba la pandereta con tanta fuerza que se estaba rompiendo. (A 12v no era lo suficientemente fuerte) Con el tiempo, tener un eje de madera montado en MDF y pintar todo se volvió más difícil / más difícil de mover, lo que significaba que el solenoide tenía más dificultades para empujar hacia afuera cuando estaba energizado Y más difícil para regresar.. Entonces tuve que agregar un resorte de retorno adicional, lo que requiere que el solenoide desperdicie energía cuando está energizado. Así que terminó golpeando la pandereta en el lado lento. La próxima vez que construya esa parte en metal: buje de bronce, eje de metal, etc., y evitaré este problema.

Paso 11: Lámpara de plasma

Lámpara de plasma
Lámpara de plasma
Lámpara de plasma
Lámpara de plasma

Como no iba a construir una escalera Jacobs o alguna otra fuente de energía de un científico loco malvado para el proyecto, necesitaba algún tipo de "energía" para impulsar el cráneo. Tomé mi viejo Samsung Galaxy S5, hice un restablecimiento de fábrica y cargué una aplicación de bola de energía en él. Tuve que cargar otra aplicación que no permitía que el teléfono entrara en modo de protector de pantalla para mantenerlo activo en la aplicación.

Paso 12: Cómo hacer que la luz de 120v parpadee

Cómo hacer que la luz de 120v parpadee
Cómo hacer que la luz de 120v parpadee

ADVERTENCIA -

Esto está jugando con el enchufe de 120 V CA en la toma de corriente de la pared aquí. Si no sabe lo que está haciendo, no lo haga

ADVERTENCIA -

halloweenpropmaster.com/u-build-it3.htm

Este sitio ofrece la mejor explicación de cómo hacer esto. El costo del motor de arranque es súper barato y destripé un cable de extensión de repuesto que tenía. He construido un par de estos y los he estado usando durante la época de Halloween y han funcionado muy bien, sin fusibles quemados, sin sobrecalentamiento, etc. Los he hecho funcionar durante horas seguidas sin problemas. Entonces, para este proyecto, tomé uno de los cables de extensión con el motor de arranque en línea y lo conecté a uno de los cuatro relés en la placa. Un par de líneas de código GPIO lo encenderán y apagarán. También comienza a funcionar de inmediato, sin tiempo de calentamiento.

Paso 13: la plataforma / mesa

La plataforma / mesa
La plataforma / mesa
La plataforma / mesa
La plataforma / mesa

He visto bastantes "calaveras sobre una mesa", "la cabeza de Frankenstein sobre una mesa", tipo de accesorios de científico loco y decidí que quería ir por ese camino. Me daría la oportunidad de probar algo más que el cráneo parlante. Calculé el tamaño básico de la mesa y la construí con ¼ de MDF. Usar una sierra de mesa hace que sea bastante fácil. Mis proyectos son típicamente de metal, por lo que construir con madera era algo nuevo para mí. Corté las piezas básicas e hice mis 4 lados de la caja y una tapa bastante rápido. Con lo que aprendí una lección difícil es con que usé una pistola de pegamento para ensamblarlos. Lo que descubrí es que, esta no es la manera de hacerlo. ¡Todas las piezas se rompieron tan pronto como levanté la maldita cosa! Así que corté algunas piezas extra de un cuadrado de 1”para reforzar las esquinas y la madera las pegué / clavé juntas. Lección aprendida. Coloqué una moldura entre la parte superior y los lados de la plataforma, la pegué y clavé en su lugar. Se puso masilla para llenar los huecos y estaba listo para tener el resto de los componentes montados en él.

Por lo demás, me inspiré en imágenes que vi en la web. Para "envejecer" el cráneo, intenté usar una mancha oscura. No funcionó; no se pegó al plástico. Así que intenté pintar el cráneo con un blanquecino y luego apliqué la mancha. Funcionó mucho mejor. Sé que hay muchas técnicas para hacer esto y estoy contento con la forma en que resultó. Cinta de cobre que tenía de otro proyecto que usé para el casquete y alrededor de los pómulos. Pinté la mancha en el resto de los elementos pintados que no eran de negro para darle ese aspecto envejecido / viejo.

El resto de las piezas y las bolitas las tenía de otros proyectos. Todas las piezas de latón son de una tienda de lámparas. Hice el interruptor de corte con algunos materiales de desecho y la perilla en el extremo es otra pieza de lámpara. Los tubos los encontré en un lugar de excedentes electrónicos junto con los aislantes. Picos de punk rocker que tuve de otro proyecto post-apocalíptico. Chapa de acero y alambre de cobre de la ferretería y un tubo de PVC para las vértebras.

Para el póster, encontré la imagen del póster de un viejo mago en la web y con algo de magia de Photo Shop cambié el nombre.

Paso 14: El resto

El resto
El resto
El resto
El resto
El resto
El resto
El resto
El resto

Me inspiré en imágenes que he visto en la Web. Para "envejecer" el cráneo, intenté usar una mancha oscura. No funcionó; no se pegó al plástico. Así que intenté pintar el cráneo con un blanquecino y luego apliqué la mancha. Funcionó mucho mejor. Sé que hay muchas técnicas para hacer esto y estoy contento con la forma en que resultó. Cinta de cobre que tenía de otro proyecto que usé para el casquete y alrededor de los pómulos. Pinté la mancha en el resto de los elementos pintados que no eran de negro para darle ese aspecto envejecido / viejo.

El resto de las piezas y las bolitas las tenía de otros proyectos. Todas las piezas de latón son de una tienda de lámparas. Hice el interruptor de corte con algunos materiales de desecho y la perilla en el extremo es otra pieza de lámpara. Los tubos los encontré en un lugar de excedentes electrónicos junto con los aislantes. Picos de punk rocker que tuve de otro proyecto post-apocalíptico. Chapa de acero y alambre de cobre de la ferretería y un tubo de PVC para las vértebras.

Paso 15: Montaje / Ajuste / Ajuste

Montaje / Afinación / Ajuste
Montaje / Afinación / Ajuste

Así que aquí estaba mi proceso de construcción:

# 1 Instale Jasper en un Pi y hágalo funcionar.

# 2 Compré varios micrófonos y ajusté hasta que tenga algo de éxito.

# 3 En el segundo Pi, instale el sombrero Adafruit y comprenda cómo mover los servos. Introduzca los servos en el cráneo y comprenda los valores que necesitaba usar para moverlos.

# 4 Construya una base de prueba para el cráneo para poder trabajar en él en mi oficina. Ajustar, volver a ajustar, ajustar un poco más.

# 5 Monte todos los componentes eléctricos en una placa de plexiglás. Empaques, tablero de relés, fuentes de alimentación USB y cables relacionados.

# 6 Construye los ojos de Adafruit. Demuéstreme a mí mismo que solo necesitan voltaje aplicado para que todo funcione. No sabía esto cuando comencé esta parte.

# 7 Haga una prueba de concepto de enviar y recibir datos en serie entre los dos Pies. Escriba una rutina de bucle para el segundo Pi con los comandos que necesitaba: hablar encendido / apagado, etc. Pruébelo con un código de muestra en Pi # 1. Aún no Jasper.

# 8 Agregue el código de serie al código de Jasper: demuestre que puedo obtener movimientos básicos cuando Jasper está hablando.

# 9 Comienza a jugar con la placa de relés. Agrega el código para encender los ojos.

# 10 Agregue código para encender el 120v. Construya el solenoide y la pandereta en una plataforma separada para averiguar cómo deberían funcionar.

# 11 Monta los ojos en el cráneo.

# 12 Construye la plataforma en la que se ensamblará todo. Reúna todas las piezas en la plataforma, haga la base de acero del cráneo para sostenerlo, agregue los componentes de la pandereta.

# 13 Intente llevar los pasteles y la tabla de la casa al garaje y descubra cómo meterlos dentro de la plataforma.

# 14 Comience a sintonizar. Más afinación, continúe afinando. Me doy cuenta de que necesito hacer que el código Python sea multiproceso para que todas las acciones funcionen juntas.

# 15 Decide agregar la bola de energía debajo de los tubos de vacío. Piensa que puedo hacer esto con un teléfono celular viejo. Hizo que funcionara en menos de un día.

# 16 Continúe agregando detalles. Pinchos, alambre de cobre, tubos, envejecen el cráneo. Sigue afinando y probando. Pinte, retoque y repare las cosas que se sueltan, rediseñe / refuerce las cosas que se están cayendo a pedazos.

# 17 Prueba y ajuste Prepárate para mostrárselo a otras personas.

Recomendado: