Avenger ensamblado:casco de Iron Man y reactor de arco
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Herramientas y máquinas necesarias
|
Aplicaciones y servicios en línea
| ||||
| ||||
|
Acerca de este proyecto
Avenger ensamblado:casco de Iron Man y reactor de arco impreso en 3D y controlado por Arduino.
Introducción y motivación:
Mi motivación para hacer este casco comenzó con mi primer casco que hice. Era un casco de cartón de Antman de algunos videos que encontré en línea. Fue realmente genial (ser un gran fan de Marvel), así que decidí que realmente quería hacer un casco de Iron Man. Acababa de estar en la National Maker Faire en Washington D.C. y a todos les encantaba el casco Antman. Esto me motivó aún más a hacer de Iron Man uno. Pasé por varios prototipos, comenzando con otro casco de cartón. Ese casco era demasiado pequeño, así que diseñé mi propio casco, esta vez cuando lo monté parecía más una pelota en mi cabeza que la de la película. Finalmente, pasé a una maqueta en papel. Este modelo de papel resultó tener un aspecto fantástico, pero encontré un problema más. El modelo de papel era demasiado endeble. Traté de arreglarlo pero simplemente no funcionó, así que tomé la decisión de imprimir el casco en 3D. Finalmente hice uno que era lo suficientemente estable y también lo suficientemente grande como para adaptarse a mi cabeza y un motor.
- Fabricación del casco y el reactor de arco:
La impresión 3D:
1) Dividirlo en pedazos:software
El primer paso para crear este casco fue encontrar el archivo en línea y luego imprimirlo. El archivo que encontré fue un casco motorizado de Iron Man. El archivo que descargué de Thingiverse venía en tres partes:la parte principal, el mentón y la placa frontal. Dado que las tres piezas eran demasiado grandes para la placa de construcción de mi impresora, tuve que encontrar un software que pudiera cortar mi casco en partes. Mientras buscaba en línea, encontré un software gratuito en línea llamado netfabb basic. Descargué la herramienta y cargué mi archivo. Netfabb basic fue muy fácil de usar y pude cortar las partes del casco. Luego imprimí la pieza en el casco principal, la mentonera y la placa frontal. Mientras revisaba las impresiones, unía las piezas con cinta adhesiva y verificaba si el tamaño era bueno. Cuando todas las piezas se terminaron de imprimir y se agotaron 1 ½ rollos de filamento, tenía el casco de 24 piezas.
2) Seleccionar el adhesivo adecuado
El siguiente desafío fue encontrar el adhesivo adecuado para pegar las piezas. Para que el pegamento funcione, debe cumplir con tres requisitos:
- Tenía que mantener las piezas unidas con un vínculo fuerte,
- tener un tiempo de curación rápido
- fácil de lijar.
Probamos 4 tipos diferentes de pegamento, E6000, JB Weld KwikWeld, JB Weld Plastic Bonder y Loctite Plastic Bonder epoxi. Al final, terminamos usando KwikWeld porque cumplía con los tres requisitos. Para unir las piezas, los primeros pasos serían desbastar los lados que se iban a pegar. Usé una lima para raspar los lados lisos hasta que la pieza tuviera lados rugosos con pequeñas ranuras y bolsillos. Esto ayudaría a que la pieza se mantuviera unida. Luego mezclamos el JB KwikWeld junto con partes iguales del endurecedor y el acero y lo esparcimos uniformemente en ambos lados limados y los presionamos juntos. Si tiene una abrazadera, deslícela en la abrazadera y limpie el exceso de pegamento. Tarda unos 10 minutos en secarse, pero ayuda dejarlo más tiempo.
- 3) Diseño del servo mecanismo
El siguiente desafío en la fabricación del casco de Iron Man fue diseñar el mecanismo servo. Dado que estaba luchando por descubrir cómo conectar el servo al casco con las imágenes en la página de thingiverse , Decidí hacer el mío. Primero, planeé dónde iba a estar el servo y medí una línea recta desde el servo hasta el lugar de conexión. Luego calculé el ángulo que iba a tener el servo. El primer diseño estaba un poco desviado con un ángulo demasiado agudo. El siguiente lo arreglé y estaba casi bien. Luego atornillé el brazo en el servo y el lugar de fijación para ver si encajaba. ¡Lo hizo! Finalmente, diseñé una abrazadera para encajar alrededor del servo y la imprimí. Reuní todo e hicimos la primera prueba. Era inestable y la placa frontal no subía del todo de manera uniforme y uniforme. Para solucionar este problema, doblé un perchero de metal en forma rectangular y lo puse en las ranuras donde se suponía que debía ir la parte impresa en 3D. Luego diseñé clips para colocar debajo de la percha para evitar que se caiga. Corté ranuras en la parte superior del casco con una sierra para metales y luego volví a armar todo. ¡Lo probamos por segunda vez y funcionó muy bien!
4) Montaje y pintura
Finalmente, estaba listo para pintar. Desmonté todo e hice la primera capa de imprimación de blanco. Una vez que se hizo la imprimación, enmascaré parte de la pieza del mentón con cinta de pintor y pinté el casco de rojo. Para la placa frontal, lo pinté todo de oro. Como el oro se seca rápido, pronto se terminó, pero la pintura roja se seca muy lentamente, así que lo dejé secar. Después de que todas las partes se secaron, quité la cinta adhesiva de la pieza de la barbilla y enmascaré todo lo que estaba cerca de la pieza que aún estaba blanca. Luego, usé papel de aluminio y lo puse alrededor del resto del casco. Luego pinté la parte blanca de oro y esperé a que se secara. Luego volví a montar el casco otra vez y ponerlo todo junto. Luego hice la prueba final y ¡funcionó!
5) El reactor de arco:
Lo siguiente fue hacer el reactor de arco. Primero medí el tamaño del anillo de neopíxeles y diseñé un estuche para sostenerlo. Luego, para la tapa, utilicé un diseño de alguien en Thingiverse y lo modifiqué para satisfacer mis necesidades. Puede encontrar el modelo original aquí:http://www.thingiverse.com/thing:33021 El nuevo diseño tenía casi exactamente las mismas características, aunque algunas partes están un poco desproporcionadas. Imprimí el estuche y la tapa y encajaron bastante bien. El único problema era que el Neopixel era demasiado pequeño para el caso. resulta que había hecho mal mis cálculos, así que volví y lo cambié. Esta vez encajó. Luego, agregué dos orificios para que pasaran los cables y una barra en la parte superior para que entrara la cuerda para poder usarla alrededor de mi cuello. Finalmente, agregué un defusor hecho de filamento de abdominales translúcido que se ajusta perfectamente a la carcasa. ¡La parte de impresión finalmente estuvo lista!
La electrónica:
Una vez que se realizó la impresión en 3D, supimos que teníamos una gran plataforma para integrar algunos componentes electrónicos. Para este proyecto, nos gustaría controlar 1 servomotor que se adjunta a la placa frontal del casco. También nos gustaría controlar un anillo de Neopixel en el Arc Reactor. Usamos un Arduino Uno como base del sistema de control para este proyecto. Sin embargo, existen muchos otros tipos de placas que también podrían usarse y, por esta razón, hemos mantenido el software y el hardware genéricos. De hecho, hemos usado un Uno y un Arduino101 indistintamente en este proyecto. ¡Esto también permitirá una expansión futura y el potencial de hacer un casco conectado con el BLE integrado de 101!
Iron Man necesitará accionar el servomotor del casco y el anillo de neopixel del reactor de arco. Usamos el ROTURA DEL SENSOR TÁCTIL CAPACITIVO DE 12 TECLAS ADAFRUIT MPR121 para proporcionar una interfaz táctil. Esta placa de conexión permite 12 entradas diferentes y se comunica con el Uno mediante I2C. Los 12 contactos dejan mucho espacio para futuras expansiones e I2C es parte de los paquetes IDE estándar para la familia Arduino, lo que nos brinda la capacidad de intercambiar placas sin reprogramación. Está bien documentado y los ejemplos de software proporcionados facilitan la comprensión de cómo usarlo en nuestro boceto.
Conectamos cables con extremos desnudos para que actuaran como nuestros interruptores táctiles capacitivos. Si bien no vemos el "rebote del interruptor" tradicional como el que se observa con los interruptores mecánicos, un solo toque generará múltiples golpes como el bucle () en el boceto de arduino sondea el tablero. Para evitar el "parloteo" del servo en respuesta a estos golpes, implementamos un mecanismo de retardo de software de 1/4 de segundo al leer los toques. Después de probar el Uno y el MPR121, agregamos el servomotor y las fuentes de alimentación.
Teniendo en cuenta el uso de un servomotor bajo carga y el deseo de “implementar en el campo” este proyecto en la feria NYC Maker Faire 2016, una de las consideraciones más importantes de este proyecto es la fuente de alimentación. Se nos ha dicho que el diseño de fuentes de alimentación es una de las áreas más importantes, pero menos glamorosas, de la ingeniería eléctrica. Ninguno de los dos es ingeniero eléctrico, por lo que la solución que se nos ocurrió fue una combinación de lo que leímos funcionaría, lo que entendimos, lo que teníamos disponible y lo que hicimos funcionar. Por lo tanto, no afirmamos que esta sea la mejor solución y esperamos cualquier sugerencia de mejora.
Debido a la carga colocada en el servo, la posibilidad de contraer fem y las recomendaciones de https://www.arduino.cc/en/Reference/Servo, elegimos alimentar el servo por separado del Uno. La potencia y tierra del servomotor se conectaron a la potencia y tierra de un paquete de baterías 4XAA. Muy importante, la tierra del Uno, el servo y el paquete de baterías deben estar conectados para completar el circuito. Hacemos esto conectando el riel de tierra de la placa Perma-Proto, el paquete de baterías 4XAA y un cable del pin de tierra del Uno, todos juntos, como se puede ver en el esquema de Fritzing a continuación.
Originalmente también teníamos el anillo Neopixel también alimentado por el paquete de baterías 4XAA. Cambiamos esto ya que parecía haber un "parloteo" del servo cuando se activaba y desactivaba el anillo de Neopixel. Sin embargo, esto puede deberse a que las baterías están bajas en el momento en que realizamos la prueba. Desafortunadamente, lo notamos la noche anterior a la Maker Faire y ya estábamos en Perma-Proto. Decidimos conectar directamente el Neopixel Ring al Uno y cambiar a pilas nuevas al mismo tiempo. Esto solucionó el problema, pero no respondió la pregunta. Tal vez, mientras trabajamos para mejorar el proyecto en el futuro, lo haremos.
Todo el circuito se hizo un prototipo en una placa y luego simplemente se trasladó a una placa Adafruit ¼ Perma-Proto. Con un gabinete seguro, esta es una de las formas más sencillas de crear rápidamente un paquete implementable para su proyecto. Diseñamos e imprimimos una carcasa personalizada en filamento HIPS azul, que se ve a continuación. ¡Toda la unidad con baterías fue empaquetada en un estuche de cámara para la Maker Faire!
El software:
Actualmente hay 2 versiones del boceto, IronMan02.ino y IronMan04.ino . Ambos funcionarán con la configuración del hardware como se describe en este artículo.
El primero, IronMan02.ino es la versión “get-it-done” que sigue el espíritu de “La perfección es enemiga de la finalización”. Teníamos una fecha límite que cumplir y esta versión, aunque no elegante, hizo el trabajo. En esta versión, verá que creamos objetos para representar el casco y el reactor de arco. Esto se hizo antes de implementar la multitarea en el arduino en versiones futuras, por lo que no fue un trabajo apresurado. Recomendamos encarecidamente leer la serie de tres artículos sobre la multitarea arduino de Bill Earl de Adafruit. Nuestro código se basa, especialmente IronMan04.ino, se basa en los ejemplos, ideas y recomendaciones de este conjunto de 3 tutoriales. ¡Estos artículos lo llevarán más allá de los conceptos básicos de la programación arduino y permitirán que sus proyectos realmente despeguen!
Un problema al que nos enfrentamos fue que la placa frontal se abría y cerraba demasiado rápido. Resolvimos esto usando el delay () Función para ralentizar y suavizar el movimiento de la placa frontal. Sí, si el Dr. Reallyevilbadguy está a punto de dispararle a Iron Man en la cara con su súper láser mortal, querrás que el casco se cierre rápido, pero para fines de demostración, el movimiento más lento y suave se ve mucho mejor.
// mueve el casco hacia arriba, bloque de tiempo de 1/4 de segundo para evitar la vibración / rebote en la tapa táctil. switch void up () {if ((millis () - lastSwitched)> 250) {lastSwitched =millis (); if (! helmetUp int currPos =0; while (currPos
El problema con el uso de delay () La función es que el microcontrolador no puede hacer nada más durante el delay () . Resolvimos este problema utilizando la guía de los tutoriales de adafruit anteriores en la segunda versión, IronMan04.ino .
La segunda versión, IronMan04.ino , incluye 2 elementos principales que queríamos implementar, pero se nos acabó el tiempo para intentar lograrlo antes de la Maker Faire:
- Control de placa frontal con un botón / toque
- Multitarea
Cuando hablamos con la gente sobre nuestro proyecto inicial, la reacción de todos fue que solo debes tener un botón / sensor táctil para mover el casco hacia arriba y hacia abajo. No podríamos haber estado más de acuerdo y decidimos implementar esto cuando tuvimos tiempo. Nuestra solución implica el uso de varias variables de estado:
- voltear - para mantener el estado de la placa frontal
- voltear - para indicar si la placa frontal se encuentra actualmente en la posición de transición
- direccionalidad - para indicar mover la placa frontal hacia arriba o hacia abajo
En configuración () , siempre iniciamos el casco en la configuración abierta o hacia arriba. Esto no es absolutamente esencial. Independientemente del estado inicial, alternar el interruptor de la placa frontal lo llevará al estado correcto con la segunda presión. Sin embargo, hemos escrito el código para tener en cuenta que el estado inicial de la placa frontal es alto y, por lo tanto, no hay que desperdiciar una presión de botón al principio. Es esta la mejor manera? No estamos seguros, pero dado que algunas de las mentes científicas más importantes pasaron muchos años trabajando en la teoría del control, ¡creo que lo hicimos bien con este proyecto!
Dado que buscamos toques del MPR121 en el bucle, un toque percibido por el usuario generará muchas señales táctiles. Esto es similar al rebote de interruptor tradicional y lo manejamos por medio de software. Queremos una respuesta rápida al sensor táctil y queremos implementar la multitarea, así que en lugar de bloquear múltiples toques en el interruptor / caso del loop () función, colocamos un bloque de tiempo usando la millis () función en el Casco y ArcReactor objetos, como se ve en este fragmento de código del Casco objeto:
void flipFaceplate () {// bloque de tiempo para proteger contra la vibración / rebote if ((millis () - lastFlipped)> 500) {. . .
Nuevamente, al no usar delay () función preservamos la multitarea en nuestro proyecto. Podría ser más prudente usar una variable para el intervalo de retardo de 500 milisegundos para permitir cambios y pruebas, pero lo hicimos bien con nuestra segunda estimación de 500 y fuimos un poco descuidados aquí.
Para barrer suavemente el servo a través de su ángulo de rotación, necesitábamos incrementar la rotación de los servos lentamente. Colocando un bloque de tiempo en el paso de ángulo del servomotor verificando la hora actual con millis () función:
void Update () {if (voltear &(millis () - lastMoved)> =15) {lastMoved =millis (); if (direccionalidad ==ARRIBA) {currentPos =currentPos + 3; } else {currentPos =currentPos - 3; } Serial.print ("posición actual:"); Serial.print (currentPos); helmetServo.write (currentPos); } if ((currentPos> =upAngle) || (currentPos <=downAngle)) {voltear =falso; }}};
Una vez más, implementamos esto sin el delay () función. Si construye este proyecto y observa con atención, notará que con IronMan04.ino ejecutándose en el Uno, puede voltear la placa frontal y encender y apagar el Neopixel al mismo tiempo. Con IronMan02.ino, el delay () hace que se bloquee hasta que el servo deje de moverse. ¡Gracias Bill Earl!
Esta última línea de la función de actualización verifica que no excedamos la posición superior o inferior de la placa frontal, como el loop () la función llama a Update () Verificará esto continuamente después del último movimiento del casco y luego establecerá el volteo variable a falso para indicar que la placa frontal ha terminado de moverse hacia arriba o hacia abajo. En el siguiente ciclo, con voltear falso, la función completa esencialmente se omite.
if ((currentPos> =upAngle) || (currentPos <=downAngle)) {voltear =falso; }
Direcciones futuras:
¡Hay tantas cosas que podríamos hacer con este proyecto que no sabemos exactamente por dónde empezar! Los ojos brillantes es uno. ¿Quizás agregar conectividad BLE con el arduino101? ¿Una interfaz de voz? ¡Jarvis definitivamente está pidiendo este!
Código
¡Proyecto Iron Man Helmet y Arc Reactor!
https://github.com/lachendeKatze/Iron-ManEsquemas
Proceso de manufactura