Iron Man de baja poli con tiras de LED controladas por wifi: 8 pasos (con imágenes)
Iron Man de baja poli con tiras de LED controladas por wifi: 8 pasos (con imágenes)
Anonim
Iron Man de baja poli con tiras de LED controladas por wifi
Iron Man de baja poli con tiras de LED controladas por wifi
Iron Man de baja poli con tiras de LED controladas por wifi
Iron Man de baja poli con tiras de LED controladas por wifi
Iron Man de baja poli con tiras de LED controladas por wifi
Iron Man de baja poli con tiras de LED controladas por wifi
Iron Man de baja poli con tiras de LED controladas por wifi
Iron Man de baja poli con tiras de LED controladas por wifi

Esta obra de arte de pared interactiva mide aproximadamente 39 "de alto y 24" de ancho. Corté la madera con láser en el Student Makerspace de la Universidad de Clemson, luego pinté a mano todos los triángulos e instalé las luces en la parte posterior. Este instructivo explicará cómo hice esta pieza exacta, con suerte el concepto inspirará a alguien más a hacer su propia obra de arte única. Utiliza un microcontrolador ESP8266 con tiras de luces LED direccionables WS2812B y tiras de luces LED RGB regulares.

Partes y materiales

  • Madera de 1/4 "- 40" por 28 "(Dimensiones máximas para nuestro cortador láser)
  • Acrílico opaco de 1/8 "- TAPPlastics (yo uso Lighting White, 69%)
  • Paquete de baterías: paquete de baterías TalentCell de 12 V / 5 V (yo usé un paquete de 12 V / 6000 mAh)
  • Tira de LED RGB - 6 pies ish (estándar de 4 cables, la versión 5050 donde la luz RGB está en un solo módulo)
  • Transistor TIP122 para control PWM de muchas luces
  • Tira de LED WS2812B - 2 pies (utilicé la versión con 144 LED por metro)
  • Microcontrolador ESP8266 NodeMCU
  • Cable conector de núcleo sólido de calibre 22 (enlace1 - enlace2 - enlace3 - enlace4)
  • Algunas resistencias ish de 300Ω
  • Pinceles
  • Pintura: utilicé principalmente pintura Craft Premium. Detalles en el paso de pintura

Instrumentos

  • Acceso a una cortadora láser (usé una en Clemson)
  • Soldador
  • Pistola de pegamento caliente (esto es esencial)
  • Cortadores / pelacables
  • Ilustrador Adobe
  • Paciencia

Paso 1: diseño en Illustrator

Diseño en Illustrator
Diseño en Illustrator
Diseño en Illustrator
Diseño en Illustrator

La imagen original es una ilustración de William Teal, por favor, eche un vistazo a su portafolio para ver otras grandes obras de él: https://www.behance.net/tealeo93 (creo que es suya, seguí la madriguera de GoogleImages, Pinterest, GraphicDesignJunction, Behance)

Encontré la imagen de origen de una búsqueda en Google de "Low-Poly Iron Man" o "Geometric Iron Man Wallpaper". Descargué la imagen y la abrí en Adobe Illustrator.

A continuación, utilicé la herramienta de lápiz en Illustrator para dibujar manualmente sobre cada línea de la imagen. Hice esto para que el cortador láser pudiera grabar todas las líneas internas como un corte vectorial configurado a baja potencia en lugar de tener que rasterizar toda la imagen. Tomó algunas horas hacerlo (también conocido como 3 períodos de clase en la escuela)

Una vez que la imagen estuvo completamente delineada, agrupé todas esas líneas y luego dibujé formas para las manos, el pecho y los ojos. Los puse todos en un grupo y configuré su color de relleno en azul para poder distinguirlos fácilmente. Los copié en un archivo separado para el corte acrílico.

Para la parte acrílica, quería maximizar la eficiencia de mi pieza acrílica, así que la cargué en este sitio web https://svgnest.com/ y cargué un archivo con solo las piezas acrílicas cortadas y dejé que "anidara" las partes. Esto usa algunas iteraciones y algoritmos geniales para determinar el diseño más eficiente de sus partes en la hoja para minimizar el desperdicio. Genera la configuración que se encuentra en el archivo IronManAc Acrylic.ai.

Paso 2: corte por láser

Image
Image

Antes de cortar la madera, la pinté en aerosol con imprimación y luego la lijé ligeramente para comenzar a suavizarla. Hice esto para que luego la pintura saliera más uniformemente.

Cuando corté el contorno a través de la madera, usé 100% de potencia y 6% de velocidad (creo) en nuestra Epilog Fusion M2 40 de 60 W en Clemson Makerspace. Esto funcionó para la mayor parte, pero la madera estaba muy deformada en una esquina, así que tuve que volver a enfocar el láser para esa esquina y ejecutar esa parte del corte nuevamente.

Como también dibujé líneas para todos los triángulos interiores, también pude usar un corte vectorial para grabar rápidamente todas esas líneas como se muestra en el video de arriba. Esto fue significativamente más rápido de lo que hubiera sido rasterizar el archivo. Creo que usé un 70% de velocidad y un 50% de potencia, aunque solo tendrás que experimentar.

El acrílico de 1/8 lo corté primero al 100% de potencia y al 8% de velocidad, que era un poco demasiado potente y dejó algunas marcas de quemaduras en el acrílico sin protección, así que lo hice a un 14% de velocidad y funcionó a las mil maravillas.

Paso 3: pintura

Cuadro
Cuadro
Cuadro
Cuadro
Cuadro
Cuadro

Entonces. Mucho. Cuadro. Calculo que fueron unas 20 horas de pintura.

Si estás pensando en hacer un proyecto con tantos triángulos como este, no lo pintes tú mismo. Solo pague para imprimir la imagen en metal o madera y luego recórtela, o imprímala en otra cosa y pegue esa pieza en algo sólido. Simplemente no lo pintes tú mismo a menos que te guste pintar.

Usé cinta de pintor FrogTape para delinear cada triángulo en la pieza mientras pintaba esto. Esto me dio resultados mucho más consistentes que mis primeros intentos de completar cada triángulo a mano sin bordes de cinta.

FrogTape da líneas que son mucho más nítidas que la cinta de pintores blanca o azul. Su tiempo y cordura valen por completo los $ 2 adicionales por rollo de cinta. Si desea que sea más delgado, puede usar un cuchillo exacto para cortar las pocas capas superiores de cinta en tiras aún más pequeñas para que cuando delinee un triángulo no cubra tantos triángulos vecinos.

Soy barato y no tengo mucha experiencia pintando, así que usé botellas de pintura de 2 onzas de Michael's o Hobby Lobby. Descubrí que la línea Craft Smart Premium cubría bastante bien y terminé usando la pintura CraftSmart Premium Metallic Festive Red mezclada con blanco o negro para hacer el 95% de mis tonos rojos. El amarillo era solo el amarillo premium Craft Smart, con un poco de oro en un intento de hacerlo un poco brillante.

Si conoce una pintura barata que cubra mejor, ¡hágamelo saber en los comentarios! A menudo tenía que hacer dos capas de pintura para que nada del blanco de abajo se viera, y me encantaría tener una pintura más bonita que evitara eso.

Una vez que todo estuvo pintado (pero antes de pegar las piezas acrílicas) utilicé un spray de capa transparente brillante para proteger la pintura y hacerla brillante.

Paso 4: piezas acrílicas y retroiluminación acrílica

Piezas acrílicas y retroiluminación acrílica
Piezas acrílicas y retroiluminación acrílica
Piezas acrílicas y retroiluminación acrílica
Piezas acrílicas y retroiluminación acrílica
Piezas acrílicas y retroiluminación acrílica
Piezas acrílicas y retroiluminación acrílica
Piezas acrílicas y retroiluminación acrílica
Piezas acrílicas y retroiluminación acrílica

Colocar las piezas de acrílico fue un desafío porque mi mesa de trabajo / escritorio y la pieza de madera están ligeramente deformadas, por lo que no había forma de que pudiera garantizar que todo permanecería plano el tiempo suficiente para que mi epoxi se fijara. Como solución, presioné la madera contra la mesa cerca de la pieza acrílica que estaba pegando y primero usé pegamento caliente para mantener cada pieza acrílica en su lugar. El pegamento caliente es visible desde la parte frontal del acrílico, así que usé epoxi de dos partes Gorilla Glue aplicado con un palillo de dientes para mantener permanentemente las piezas de acrílico en su lugar. Volví a atravesarlo con unos alicates pequeños y saqué las piezas originales de pegamento caliente.

Hice un módulo de luz separado para cada pieza de acrílico. Primero corté un trozo de tablero de espuma negra de 1/4 a un tamaño un poco más grande de lo necesario y dibujé un contorno de la pieza de acrílico en él. Luego corté y pegué las tiras de LED para esa pieza de una manera que cubría principalmente el acrílico zona.

Este paso se haría mejor con una placa de creación de prototipos y algunos terminales de tornillo, pero no los tenía a mano cuando estaba listo para comenzar a cablearlo. Como solución temporal, corté algunas tiras de clavijas de encabezado hembra a 4 entradas: tierra, entrada de 5 V, entrada de datos, salida de datos. Pegué en caliente la tira del cabezal hembra al tablero de espuma y comencé a soldar todas las luces juntas.

La soldadura fue realmente un desafío debido a lo pequeñas que eran esas almohadillas de soldadura. Afortunadamente, tuve dos oportunidades para toda la energía y las almohadillas de tierra porque cada tira se puede suministrar energía a cualquier extremo. Coloqué las tiras de modo que el cable de datos fluyera en un patrón serpenteante. Utilizo un soldador con temperatura ajustable y descubrí que me gusta que la temperatura esté en el extremo superior del rango de color verde; probablemente me guste el calor porque el soldador que usé durante años era barato y no tenía controles de temperatura. y corrió caliente.

Una vez que todo estuvo soldado, usé un cuchillo exacto (con una hoja nueva) para cortar tiras de la tabla de espuma para encerrar las luces y reducir el sangrado. Usé blanco en lugar de negro porque tenía tiras más largas y en realidad fue algo bueno porque me permitió ver fácilmente desde la parte posterior si esa sección de tiras de LED estaba encendida durante el paso de prueba de cableado.

Paso 5: el resto de la electrónica

El resto de la electrónica
El resto de la electrónica
El resto de la electrónica
El resto de la electrónica
El resto de la electrónica
El resto de la electrónica

Siempre trato de cablear mis proyectos colocando primero las entradas de energía, luego el controlador, luego los otros elementos de la placa y periféricos. Pegué con pegamento caliente el paquete de baterías en su lugar y luego enrute el cable del conector de CC dividido para que la entrada de carga fuera fácilmente accesible desde un borde del proyecto para facilitar la carga. El paquete de baterías venía con el cable dividido y las instrucciones decían que estaba bien cargar el paquete de baterías mientras está en uso.

Canibalicé un cable micro-usb barato y reemplacé el extremo micro USB con un conector de barril de CC para poder usar la entrada de 5V. Puse 5V en un riel de voltaje de la placa de pruebas y en el pin ESP8266 Vin, luego conecto a tierra en el riel de tierra y un pin de tierra del ESP8266 (todas las conexiones a tierra deben estar conectadas internamente en el controlador, por lo que no importa cuál)

Las tiras de LED RGB estándar se controlan mediante una señal PWM del controlador. Sin embargo, los microcontroladores solo pueden suministrar 20 mA-50 mA de corriente por pin dependiendo del controlador. Cada LED en la tira requiere aproximadamente esa cantidad de energía, por lo que tenemos que usar algún tipo de transistor para controlar las tiras. Algunos lugares que aparecieron en las búsquedas de Google sugirieron el transistor TIP122 que puede cambiar 5 amperios o 40 W de potencia, más que suficiente para nuestra aplicación. En realidad, no están diseñados para caber en una placa de pruebas, pero si gira cada cable hacia los lados 90 °, encajará en las ranuras de la placa de pruebas. Originalmente planeé atornillar un pequeño disipador de calor a cada uno, pero después de algunas pruebas determiné que no se calientan lo suficiente como para que sea necesario. Conecté cada entrada de transistor a un pin en el ESP8266 designado para salida PWM

Las tiras de LED RGB que tenía por casualidad tenían el revestimiento de goma "resistente al agua" y, como resultado, no quedarían pegadas a la madera tan bien como me gustaría. Como solución, corté pequeños trozos de tablero de espuma y pegué la pieza de espuma a la madera y luego pegué la tira de LED a esos.

Paso 6: descripción general de la programación

Este proyecto utiliza varias bibliotecas para que se pueda controlar desde una aplicación de teléfono llamada Blynk, encender / apagar desde un Amazon Echo, y el código se puede actualizar a través de wifi. Algunas de las bibliotecas utilizadas se encuentran a continuación

Blynk:

Blynk es un servicio que permite un control simple entre un microcontrolador ESP8266 y una aplicación de teléfono personalizable. La aplicación del teléfono le permite crear una aplicación con botones, controles deslizantes, selectores de color RGB y mucho más. Cada "widget" cambia un valor que se puede extraer de la aplicación Blynk cada vez que ejecuta una determinada función.

Actualización OTA (Over the Air): biblioteca predeterminada incluida con el ESP8266

Emulador de Alexa Wemo:

Engaña a Amazon Echo para que piense que su proyecto es un interruptor de luz Wemo. El código le permite definir una función para que se ejecute cuando Alexa envía la señal de "encendido" y una función separada para la señal de apagado. Puede emular varios dispositivos (hasta 10) con un solo controlador, lo que permite aún más flexibilidad. Mi código está configurado para que Echo encuentre dos dispositivos llamados "Iron Man" y "Night Light". Son tanto este proyecto como este controlador, pero si enciendo "Night Light" ejecutará una función con luces blancas tenues, mientras que al encender "Iron Man" se establecen las tiras LED exteriores en rojo y las piezas acrílicas en blanco..

Edición de Arduino en Visual Studio usando vMicro

He estado usando Visual Studio en el trabajo durante algunos meses y me encantan todas las herramientas de autocompletado que tiene integradas, así que después de algunas búsquedas descubrí que en realidad podría usar Visual Studio en lugar del IDE de Arduino normal. Una licencia de vMicro para una sola computadora cuesta $ 15 para los estudiantes, lo que en mi opinión vale la pena si vas a pasar más de unas pocas horas programando código Arduino.

FastLED vs Neopixel

Utilizo FastLED en mis proyectos simplemente porque encontré más funciones en línea ya hechas para él, y en este punto he hecho muchos proyectos usándolo, así que tengo mucho código para reutilizar. Estoy seguro de que la biblioteca de Neopixel funcionaría igual de bien si trabajaras en ella lo suficiente. Estoy planeando poner todas mis funciones personalizadas en GitHub para que otras personas las usen, pero aún no lo he hecho.

Paso 7: Sugerencias de programación

Estructura general

Soy ingeniero de controles en mi trabajo y, a menudo, utilizamos un estilo de programación llamado programación de PLC. Este tipo es similar a Arduino en el sentido de que tiene un bucle que se ejecuta constantemente cada pocos milisegundos y se ocupa de las entradas / salidas, saltando entre diferentes "estados" en el código. Por ejemplo, el código puede llegar a un paso relacionado con un transportador donde si hay una bandeja en el transportador pasará al estado 45, pero si no hay bandeja procederá al estado 100. Aunque este estilo de programación inspiró mi código Hice algunos cambios para poder leer una cadena en lugar de un número de estado.

Utilizo una variable global (commandString) para realizar un seguimiento del estado de luz en el que se encuentra el proyecto. Además, utilizo un booleano llamado "animate" para determinar si saldrá de una función o no. Entonces, cuando presionas el botón "Modo clásico" en Blynk, mi código establecerá animate en falso (para que se salga de la función actual) y establecerá commandString en "RunClassic". Cada función comprueba constantemente la entrada de Blynk, Alexa y OTAUpdate ejecutando una función "CheckInput".

Variables globales

Utilizo variables globales para realizar un seguimiento de algunas configuraciones en mi proyecto. Estas variables se inicializan antes de mi código de configuración, lo que las hace accesibles a cualquier función en mi código.

  • globalBrightness (0-255)
  • globalSpeed: la velocidad de animación de cualquier función animada. Este proyecto solo tiene arcoíris que se desvanecen
  • globalDelayTime - FastLED necesita alrededor de 30 microsegundos para escribir información en cada LED, así que configuro esta variable en NUM_LEDS * 30/1000 + 1; luego agregue delay (globalDelayTime) después de la mayoría de las veces que hago FastLED.show () para que el comando no se interrumpa.
  • _r, _g, _b: valores RGB globales. De esa manera, los diferentes botones de combinación de colores pueden cambiar los valores globales de r / g / b y todos llaman a la misma función al final

Nombre del controlador de actualización de Arduino OTA

Me tomó una cantidad molesta de búsqueda hasta que descubrí cómo nombrar el controlador usando la función de actualización por aire. Literalmente, solo incluye esta línea en la sección de configuración de tu código antes de "ArduinoOTA.onStart (" -

ArduinoOTA.setHostname ("IronMan");

vMicro con sugerencias de Visual Studio

A veces, Visual Studio detectará algunos problemas con archivos profundos como los archivos C ++ estándar y arrojará algunos errores. Intente activar / desactivar los diferentes tipos de mensajes de error hasta que solo tenga errores con su proyecto abierto y no con archivos de soporte. También puede abrir el código en el IDE de Arduino y ver si se compilará allí o si dará un código de error más útil.

FastLED

Envíame un mensaje si este Instructable ha estado activo durante más de unas pocas semanas y todavía no he descubierto cómo poner mis funciones personalizadas en GitHub.

FastLED figura como compatible con el ESP8266, pero es posible que las definiciones de los pines no sean correctas. En la documentación de FastLED dice que puede intentar incluir una de las siguientes líneas antes de #include

  • // # define FASTLED_ESP8266_RAW_PIN_ORDER
  • // # define FASTLED_ESP8266_NODEMCU_PIN_ORDER
  • // # define FASTLED_ESP8266_D1_PIN_ORDER

Sin embargo, probé los tres y nunca coincidí con todos mis pines. Actualmente estoy usando la última línea y acabo de aceptar que cuando le digo a FastLED que use el pin D2, en realidad usa el pin D4 en mi controlador.

Aunque mis luces son solo la imitación china barata de Neopixels, todavía le digo a FastLED que las trate como Neopixels en la configuración

  • FastLED.addLeds (leds, NUM_LEDS);
  • FastLED.setCorrection (TypLEDStrip);
  • //FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps); // Útil para proyectos que funcionan con baterías
  • FastLED.setBrightness (globalBright);

Paso 8: Producto final

Producto final
Producto final
Producto final
Producto final
Producto final
Producto final

¡Ta-da!

No dude en comentar o enviarme preguntas por correo electrónico: me encantan estas cosas y me encantaría ayudar a otras personas a hacer proyectos geniales. Visite mi sitio web para ver algunos otros proyectos que he realizado y algunas de mis fotografías: www.jacobathompson.com