Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Esta peça de arte de parede interativa tem aproximadamente 39 "de altura e 24" de largura. Cortei a madeira a laser no Student Makerspace da Clemson University, depois pintei todos os triângulos à mão e instalei as luzes na parte de trás deles. Este instrutível explicará como eu fiz esta peça exata, espero que o conceito dela inspire alguém a fazer sua própria peça de arte única. Ele usa um microcontrolador ESP8266 com fitas LED WS2812B endereçáveis e fitas LED RGB regulares.
Peças e Materiais
- 1/4 "de madeira - 40" por 28 "(dimensões máximas para nosso cortador a laser)
- 1/8 "acrílico opaco - TAPPlastics (eu uso Lighting White, 69%)
- Pacote de bateria - pacote de bateria TalentCell 12V / 5V (usei o pacote de 12V / 6000mAh)
- Faixa de LED RGB - 6 pés ish (padrão de 4 fios, a versão 5050 onde a luz RGB está toda em um módulo)
- Transistor TIP122 para controle PWM de muitas luzes
- WS2812B LED strip - 2ft ish (usei a versão com 144 LEDs por metro)
- Microcontrolador ESP8266 NodeMCU
- Fio do conector de calibre 22 de núcleo sólido (link1 - link2 - link3 - link4)
- Alguns resistores ish de 300Ω
- Pincéis de pintura
- Tinta - Usei principalmente a tinta Craft Premium. Detalhes na etapa de pintura
Ferramentas
- Acesso a um cortador a laser (usei um na Clemson)
- Ferro de solda
- Pistola de cola quente (isso é essencial)
- Cortadores de fio / decapantes
- Adobe Illustrator
- Paciência
Etapa 1: Design no Illustrator
A imagem de origem é uma ilustração de William Teal, por favor, dê uma olhada em seu portfólio para outros grandes trabalhos dele: https://www.behance.net/tealeo93 (eu acho que é dele - eu segui a toca do coelho do GoogleImages, Pinterest, GraphicDesignJunction, Behance)
Encontrei a imagem de origem em uma pesquisa no Google por "Homem de Ferro Low-Poly" ou "Papel de Parede Geométrico do Homem de Ferro". Baixei a imagem e abri no Adobe Illustrator.
Em seguida, usei a ferramenta caneta do Illustrator para desenhar manualmente sobre cada linha da imagem. Fiz isso para que o cortador a laser pudesse gravar todas as linhas internas como um corte vetorial definido para baixa potência, em vez de ter que rasterizar a imagem inteira. Demorou algumas horas para fazer (também conhecido como cerca de 3 períodos de aula na escola)
Depois que a imagem estava totalmente delineada, agrupei todas essas linhas e desenhei formas para as mãos, o peito e os olhos. Coloquei todos eles em um grupo e defini a cor de preenchimento como azul para poder diferenciá-los facilmente. Copiei aqueles para um arquivo separado para o corte de acrílico.
Para a peça de acrílico, eu queria maximizar a eficiência da minha peça de acrílico, então carreguei no site https://svgnest.com/ e carreguei um arquivo apenas com as peças cortadas em acrílico e deixei "aninhar" as peças. Isso usa algumas iterações e algoritmos interessantes para determinar o layout mais eficiente de suas peças na folha para minimizar o desperdício. Ele produz a configuração que está no arquivo IronManAcrylic.ai.
Etapa 2: Corte a laser
Antes de cortar a madeira, pintei com spray de primer e depois lixei levemente para começar a alisar. Fiz isso para que a tinta mais tarde ficasse mais uniforme.
Quando cortei todo o contorno da madeira, usei 100% da potência e 6% da velocidade (acho) em nosso Epilog Fusion M2 40 de 60W no Clemson Makerspace. Isso funcionou na maior parte, mas a madeira estava muito empenada em um canto, então eu realmente tive que redirecionar o laser para aquele canto e executar aquela parte do corte novamente.
Como também desenhei linhas para todos os triângulos internos, também fui capaz de usar um corte vetorial para gravar rapidamente todas essas linhas, conforme mostrado no vídeo acima. Isso foi significativamente mais rápido do que teria sido para gravar o arquivo raster. Acho que usei 70% da velocidade e 50% da potência - mas você só terá que experimentar.
O acrílico de 1/8 cortei primeiro com 100% de potência e 8% de velocidade, o que era um pouco poderoso demais e deixou algumas marcas de queimado no acrílico desprotegido, então fiz isso com 14% de velocidade e funcionou perfeitamente.
Etapa 3: Pintura
Então. Muito. Quadro. Eu estimo que foram cerca de 20 horas de pintura.
Se você está pensando em fazer um projeto com tantos triângulos como este, não pinte você mesmo. Basta pagar para imprimir a imagem em metal ou madeira e depois recortá-la, ou imprimi-la em outra coisa e colar essa peça em algo sólido. Só não pinte você mesmo, a menos que ame pintar.
Usei a fita adesiva do FrogTape para delinear cada triângulo da peça enquanto pintava. Isso me deu resultados muito mais consistentes do que minhas primeiras tentativas de preencher cada triângulo à mão, sem bordas de fita.
A FrogTape fornece linhas muito mais nítidas do que a fita de pintura branca ou azul. Seu tempo e sanidade valem completamente os $ 2 extras / rolo de fita. Se você quiser que seja mais fino, você pode usar uma faca de exacto para cortar as poucas camadas superiores da fita em tiras ainda menores, de modo que, quando você delinear um triângulo, ele não cubra tantos triângulos vizinhos.
Sou barato e não tenho muita experiência com pintura, então usei garrafas de 2 onças de tinta do Michael's ou do Hobby Lobby. Descobri que a linha Craft Smart Premium cobria bastante bem e acabei usando a tinta CraftSmart Premium Metallic Festive Red misturada com branco ou preto para fazer 95% dos meus tons de vermelho. O amarelo era apenas o amarelo premium Craft Smart, com um pouco de ouro na tentativa de torná-lo ligeiramente brilhante.
Se você conhece alguma tinta barata que cubra melhor - por favor me avise nos comentários !! Freqüentemente, eu tinha que fazer duas demãos de tinta para que nada do branco abaixo aparecesse, e adoraria ter uma tinta melhor que evitasse isso.
Depois de pintar tudo (mas antes de colar as peças de acrílico), usei um spray de verniz brilhante para proteger a tinta e deixá-la toda brilhante.
Etapa 4: peças de acrílico e luzes de fundo de acrílico
Fixar as peças de acrílico foi um pouco desafiador porque minha bancada / escrivaninha e a peça de madeira estão ambas ligeiramente empenadas, então não havia como garantir que tudo ficaria plano por tempo suficiente para o meu epóxi endurecer. Para contornar o problema, pressionei a madeira contra a mesa perto da peça de acrílico que estava colando e usei primeiro a cola quente para segurar cada peça de acrílico no lugar. A cola quente é visível na frente do acrílico, então usei Gorilla Glue duas partes de epóxi aplicada com um palito para segurar as peças de acrílico permanentemente no lugar. Voltei com um pequeno alicate e tirei os pedaços originais de cola quente.
Fiz um módulo de luz separado para cada peça de acrílico. Primeiro cortei um pedaço de placa de espuma preta de 1/4 em um tamanho um pouco maior do que o necessário e desenhei um contorno da peça de acrílico nela. Em seguida, cortei e colei as tiras de LED para essa peça de uma forma que cobrisse a maior parte do acrílico área.
Essa etapa seria melhor realizada com uma placa de prototipagem e alguns terminais de parafuso, mas eu não os tinha em mãos quando estava pronto para começar a fiação. Como solução alternativa, cortei algumas tiras de pino de cabeçalho fêmea para 4 entradas - Terra, 5 V de entrada, entrada de dados, saída de dados. Eu colei a tira do coletor feminino na placa de espuma e comecei a soldar todas as luzes juntas.
A soldagem foi realmente muito desafiadora por causa de quão pequenas as almofadas de solda eram. Felizmente, tive duas chances para toda a alimentação e bases de aterramento porque cada faixa pode ser fornecida para qualquer extremidade. Eu coloquei as tiras para que o fio de dados fluísse em um padrão de serpentina. Eu uso um ferro de solda com temperatura ajustável e descobri que gosto que a temperatura esteja na extremidade superior da faixa colorida de verde - provavelmente gosto muito quente porque o ferro de solda que usei por anos era barato e não tinha controle de temperatura e correu quente.
Depois que tudo foi soldado, usei uma faca de exacto (com uma lâmina nova) para cortar tiras da placa de espuma para envolver as luzes e reduzir o sangramento. Usei branco em vez de preto porque tinha tiras mais compridas e na verdade foi uma coisa boa porque me permitiu ver facilmente na parte de trás se aquela seção de tiras de LED estava ligada durante a etapa de teste de fiação.
Etapa 5: o resto da eletrônica
Sempre tento conectar meus projetos colocando primeiro as entradas de energia, depois o controlador e, em seguida, os outros elementos da placa e periféricos. Eu colei a bateria no lugar e, em seguida, direcionei o cabo jack DC dividido para que a entrada de carga fosse facilmente acessível de uma extremidade do projeto para facilitar o carregamento. A bateria veio com o cabo dividido e as instruções diziam que não havia problema em carregá-la durante o uso.
Eu canibalizei um cabo micro-usb barato e substituí a extremidade micro USB por um conector de barril DC para que eu pudesse usar apenas a entrada de 5V. Eu coloquei 5 V em um trilho de tensão da placa de ensaio e no pino Vin ESP8266, em seguida, aterrei no trilho de aterramento e um pino de aterramento do ESP8266 (todos os aterramentos devem ser conectados internamente no controlador, então não importa qual)
As tiras de LED RGB padrão são controladas por um sinal PWM do controlador. No entanto, os microcontroladores podem fornecer apenas 20mA-50mA de corrente por pino, dependendo do controlador. Cada LED na tira requer cerca dessa quantidade de energia, então temos que usar algum tipo de transistor para controlar as tiras. Alguns lugares que apareceram em pesquisas no Google sugeriram o transistor TIP122, que pode alternar 5 amperes ou 40W de potência - mais do que o suficiente para nossa aplicação. Eles não são realmente projetados para caber em uma placa de ensaio, mas se você virar cada fio lateralmente 90 °, ele se encaixará nos slots da placa de ensaio. Eu planejei originalmente aparafusar um pequeno dissipador de calor em cada um, mas depois de alguns testes, concluí que eles não esquentam o suficiente para que seja necessário. Liguei cada entrada de transistor a um pino no ESP8266 designado para saída PWM
As tiras de LED RGB que eu tinha por acaso tinham o revestimento de borracha "resistente à água" e, como resultado, não ficavam coladas na madeira tão bem quanto eu gostaria. Como solução alternativa, cortei pequenos pedaços de placa de espuma e colei o pedaço de espuma na madeira e, em seguida, colei a faixa de LED neles.
Etapa 6: Visão geral da programação
Este projeto usa várias bibliotecas para que possa ser controlado a partir de um aplicativo de telefone chamado Blynk, ligado / desligado a partir de um Amazon Echo e o código possa ser atualizado por wi-fi. Algumas das bibliotecas usadas estão abaixo
Blynk -
Blynk é um serviço que permite o controle simples entre um microcontrolador ESP8266 e um aplicativo de telefone personalizável. O aplicativo de telefone permite que você crie um aplicativo com botões, controles deslizantes, seletores de cores RGB e muito mais. Cada "widget" altera um valor que pode ser obtido do aplicativo Blynk sempre que você executa uma determinada função.
Atualização OTA (Over the Air) - biblioteca padrão incluída no ESP8266
Alexa Wemo Emulator -
Leva o Amazon Echo a pensar que seu projeto é um interruptor de luz Wemo. O código permite definir uma função a ser executada quando Alexa envia o sinal de "ligar" e uma função separada para o sinal de desligar. Você pode emular vários dispositivos (até 10) com um único controlador que permite ainda mais flexibilidade. Meu código está configurado para que o Echo encontre dois dispositivos chamados "Homem de Ferro" e "Luz noturna". Eles são este projeto e este controlador, mas se eu ligar a "Luz noturna", ele executará uma função com luzes brancas fracas, onde ao ligar o "Homem de Ferro", as faixas externas de LED ficam vermelhas e as peças de acrílico ficam brancas.
Edição do Arduino no Visual Studio usando vMicro
Estou usando o Visual Studio no trabalho há alguns meses e adoro todas as ferramentas de preenchimento automático que ele possui, então, depois de algumas pesquisas, descobri que poderia realmente usar o Visual Studio em vez do IDE Arduino normal. Uma licença vMicro para um único computador custa US $ 15 para os alunos, o que, em minha opinião, vale muito a pena se você vai gastar mais do que algumas horas programando o código do Arduino.
FastLED vs Neopixel
Eu uso FastLED em meus projetos simplesmente porque encontrei mais funções online já feitas para ele, e neste ponto eu fiz muitos projetos usando-o, então tenho muito código para reutilizar. Tenho certeza que a biblioteca Neopixel funcionaria tão bem se você trabalhasse o suficiente. Estou planejando colocar todas as minhas funções personalizadas no GitHub para outras pessoas usarem, mas ainda não comecei a fazer isso.
Etapa 7: dicas de programação
Estrutura geral
Sou engenheiro de controles em meu trabalho e costumamos usar um estilo de programação chamado programação PLC. Este tipo é semelhante ao Arduino no sentido de que possui um loop que é executado constantemente a cada poucos milissegundos e lida com entradas / saídas, saltando entre diferentes "estados" no código. Por exemplo, o código pode atingir uma etapa lidando com um transportador onde se houver uma bandeja no transportador irá prosseguir para o estado 45, mas se não houver bandeja irá prosseguir para o estado 100. Este estilo de programação inspirou meu código, no entanto Fiz algumas alterações para poder ler apenas uma string em vez de um número de estado.
Eu uso uma variável global (commandString) para controlar em qual estado de luz o projeto está. Além disso, eu uso um booleano chamado "animate" para determinar se ele sairá de uma função ou não. Portanto, quando você pressiona o botão "Modo clássico" no Blynk, meu código define o animate como false (para que saia da função atual) e define commandString como "RunClassic". Cada função verifica constantemente a entrada de Blynk, Alexa e OTAUpdate executando uma função "CheckInput".
Variáveis globais
Eu uso variáveis globais para controlar algumas configurações em meu projeto. Essas variáveis são inicializadas antes do meu código de configuração, o que as torna acessíveis a qualquer função em meu código.
- globalBrightness (0-255)
- globalSpeed - a velocidade de animação de qualquer função animada. Este projeto só tem arco-íris esmaecidos
- globalDelayTime - FastLED precisa de cerca de 30 microssegundos para gravar informações em cada LED, então defino essa variável para NUM_LEDS * 30/1000 + 1; em seguida, adicione delay (globalDelayTime) depois de executar FastLED.show () na maioria das vezes para que o comando não seja interrompido.
- _r, _g, _b - valores RGB globais. Dessa forma, botões de esquema de cores diferentes podem apenas alterar os valores globais r / g / b e todos chamam a mesma função no final
Nomenclatura do controlador de atualização do Arduino OTA
Levei uma quantidade irritante de pesquisa até descobrir como nomear o controlador usando a função de atualização remota. Literalmente, apenas inclua esta linha na seção de configuração do seu código antes de "ArduinoOTA.onStart (" -
ArduinoOTA.setHostname ("IronMan");
dicas do vMicro com Visual Studio
Às vezes, o Visual Studio detecta alguns problemas com arquivos profundos, como os arquivos C ++ padrão, e lança alguns erros. Tente alternar os diferentes tipos de mensagens de erro entre ativado / desativado até que você apenas tenha erros com seu projeto aberto e nenhum arquivo de suporte. Você também pode abrir o código no IDE do Arduino e ver se ele será compilado lá ou se fornecerá um código de erro mais útil.
FastLED
Envie-me uma mensagem se este Instructable estiver ativo por mais de algumas semanas e eu ainda não descobri como colocar minhas funções personalizadas no GitHub.
FastLED está listado como compatível com o ESP8266, mas as definições dos pinos podem não estar corretas. Na documentação do FastLED, diz que você pode tentar incluir uma das seguintes linhas antes de #include
- // # define FASTLED_ESP8266_RAW_PIN_ORDER
- // # define FASTLED_ESP8266_NODEMCU_PIN_ORDER
- // # define FASTLED_ESP8266_D1_PIN_ORDER
No entanto, tentei todos os três e nunca tive todos os meus pinos iguais. Atualmente estou usando a última linha e acabei de aceitar que, quando digo ao FastLED para usar o pino D2, ele na verdade usa o pino D4 no meu controlador.
Mesmo que minhas luzes sejam apenas uma cópia chinesa barata de Neopixels, ainda digo ao FastLED para tratá-los como Neopixels na configuração
- FastLED.addLeds (leds, NUM_LEDS);
- FastLED.setCorrection (TypicalLEDStrip);
- //FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps); // Útil para projetos alimentados por bateria
- FastLED.setBrightness (globalBright);
Etapa 8: Produto Final
Ta-da!
Sinta-se à vontade para comentar ou enviar-me perguntas por email - adoro estas coisas e adoraria ajudar outras pessoas a fazerem projetos fantásticos. Confira meu site para alguns outros projetos que fiz e algumas das minhas fotografias: www.jacobathompson.com