Cuprins:

Iron Man low-poly cu benzi LED controlate prin Wifi: 8 pași (cu imagini)
Iron Man low-poly cu benzi LED controlate prin Wifi: 8 pași (cu imagini)

Video: Iron Man low-poly cu benzi LED controlate prin Wifi: 8 pași (cu imagini)

Video: Iron Man low-poly cu benzi LED controlate prin Wifi: 8 pași (cu imagini)
Video: 40 полезных автотоваров с Aliexpress, которые упростят жизнь любому автовладельцу #3 2024, Iulie
Anonim
Low-Poly Iron Man cu benzi LED controlate de Wifi
Low-Poly Iron Man cu benzi LED controlate de Wifi
Low-Poly Iron Man cu benzi LED controlate de Wifi
Low-Poly Iron Man cu benzi LED controlate de Wifi
Low-Poly Iron Man cu benzi LED controlate de Wifi
Low-Poly Iron Man cu benzi LED controlate de Wifi
Low-Poly Iron Man cu benzi LED controlate de Wifi
Low-Poly Iron Man cu benzi LED controlate de Wifi

Această piesă interactivă de artă de perete are aproximativ 39 "înălțime și 24" lățime. Am tăiat cu laser lemnul la Student Makerspace de la Universitatea Clemson, apoi am pictat manual toate triunghiurile și am instalat luminile pe spatele acestuia. Acest instructiv va parcurge modul în care am realizat această piesă exactă, sperăm că conceptul ei va inspira pe altcineva să-și facă propria piesă de artă unică. Acesta folosește un microcontroler ESP8266 cu benzi cu LED-uri WS2812B adresabile și benzi cu LED-uri RGB obișnuite.

Piese și materiale

  • 1/4 "lemn - 40" pe 28 "(dimensiuni maxime pentru tăietorul nostru laser)
  • 1/8 "acrilic opac - TAPPlastics (folosesc Lighting White, 69%)
  • Acumulator - TalentCell 12V / 5V acumulator (am folosit 12V / 6000mAh)
  • Banda LED RGB - 6 ft ish (4 fire standard, versiunea 5050 unde lumina RGB este totul într-un singur modul)
  • Tranzistor TIP122 pentru controlul PWM al multor lumini
  • Banda LED WS2812B - 2ft ish (am folosit versiunea cu 144 LED-uri pe metru)
  • Microcontroler ESP8266 NodeMCU
  • Sârmă de conectare cu miez solid de 22 calibre (link1 - link2 - link3 - link4)
  • Unele rezistențe ish de 300Ω
  • Pensule
  • Vopsea - am folosit mai ales vopsea Craft Premium. Detalii în pasul picturii

Instrumente

  • Acces la un dispozitiv de tăiat cu laser (am folosit unul la Clemson)
  • Ciocan de lipit
  • Pistol de lipit fierbinte (acest lucru este esențial)
  • Mașini de tăiat / decupat sârme
  • Adobe Illustrator
  • Răbdare

Pasul 1: Proiectați în Illustrator

Proiectare în Illustrator
Proiectare în Illustrator
Proiectare în Illustrator
Proiectare în Illustrator

Imaginea sursă este o ilustrație a lui William Teal, vă rugăm să aruncați portofoliului său alte lucrări minunate ale lui: https://www.behance.net/tealeo93 (cred că este a lui - am urmat gaura de iepure din GoogleImages, Pinterest, GraphicDesignJunction, Behance)

Am găsit imaginea sursă dintr-o căutare pe Google pentru „Low-Poly Iron Man” sau „Geometric Iron Man Wallpaper”. Am descărcat fotografia și am deschis-o în Adobe Illustrator.

Apoi, am folosit instrumentul stilou în Illustrator pentru a desena manual fiecare linie din imagine. Am făcut acest lucru, astfel încât dispozitivul de tăiat cu laser să poată grafica toate liniile interioare ca o tăiere vectorială setată la putere redusă, în loc să trebuiască să treacă peste întreaga imagine. A durat câteva ore (de exemplu, aproximativ 3 perioade de curs la școală)

Odată ce imaginea a fost complet conturată, am grupat toate acele linii și apoi am desenat forme pentru mâini, piept și ochi. Le-am pus pe toate într-un grup și le-am setat culoarea de umplere să fie albastră, astfel încât să le pot distinge cu ușurință. Le-am copiat într-un fișier separat pentru tăietura acrilică.

Pentru partea acrilică am vrut să maximizez eficiența piesei mele acrilice, așa că am încărcat-o pe acest site https://svgnest.com/ și am încărcat un fișier cu doar piesele tăiate acrilic și l-am lăsat să „cuibărească” părțile. Aceasta folosește câteva iterații și algoritmi cool pentru a determina aspectul cel mai eficient al pieselor dvs. pe foaie pentru a minimiza risipa. Se afișează configurația care se află în fișierul IronManAcrylic.ai.

Pasul 2: tăierea cu laser

Image
Image

Înainte de a tăia lemnul, l-am vopsit cu grund și apoi l-am șlefuit ușor pentru a-l începe neted. Am făcut asta pentru ca vopseaua ulterioară să iasă mai uniform.

Când am tăiat conturul prin tot lemnul, am folosit 100% putere 6% viteză (cred) pe Epilog Fusion M2 40 de 60W din Clemson Makerspace. Acest lucru a funcționat pentru cea mai mare parte, dar lemnul a fost foarte deformat într-un colț, așa că a trebuit să reorientez laserul pentru acel colț și să rulez din nou acea parte a tăieturii.

Deoarece am trasat și linii pentru toate triunghiurile interioare, am putut, de asemenea, să folosesc o tăietură vectorială pentru gravarea rapidă a tuturor acestor linii, așa cum se arată în videoclipul de mai sus. Acest lucru a fost semnificativ mai rapid decât ar fi fost rasterul de gravare a fișierului. Cred că am folosit 70% viteză și 50% putere - totuși va trebui doar să experimentați.

Acrilicul de 1/8 l-am tăiat mai întâi la o putere de 100% și o viteză de 8%, ceea ce a fost puțin prea puternic și a lăsat niște urme de ardere pe acrilul neprotejat, așa că apoi l-am făcut cu o viteză de 14% și a funcționat ca un farmec.

Pasul 3: Pictură

Pictura
Pictura
Pictura
Pictura
Pictura
Pictura

Asa de. Mult. Pictura. Aș estima că au fost aproximativ 20 de ore de pictură.

Dacă te gândești să faci un proiect cu tot atâtea triunghiuri ca acesta, te rog să nu-l pictezi singur. Plătiți doar pentru a obține imaginea tipărită pe metal sau lemn și apoi decupați-o sau imprimați-o pe altceva și lipiți acea piesă pe ceva solid. Doar nu-l pictați singur decât dacă vă place să pictați.

Am folosit bandă de pictori FrogTape pentru a contura fiecare triunghi pe piesă în timp ce pictam acest lucru. Acest lucru mi-a dat rezultate mult mai consistente decât încercările mele timpurii de a completa fiecare triunghi cu mâna, fără margini de bandă.

FrogTape oferă linii mult mai clare decât banda albă sau albastră pentru pictori. Timpul și sănătatea ta merită complet suma suplimentară de 2 USD / ruletă de bandă. Dacă doriți să fie mai subțire, puteți folosi un cuțit exact pentru a tăia câteva straturi superioare de bandă în benzi chiar mai mici, astfel încât atunci când conturați un triunghi să nu acopere cât mai multe triunghiuri învecinate.

Sunt ieftin și nu am prea multă experiență cu pictura, așa că am folosit sticle de vopsea de 2 oz de la Michael's sau Hobby Lobby. Am constatat că linia Craft Smart Premium acoperea destul de bine și am ajuns să folosesc vopseaua CraftSmart Premium Metallic Festive Red amestecată cu alb sau negru pentru a face 95% din nuanțele mele roșii. Galbenul a fost doar galbenul premium Craft Smart, cu puțin aur aruncat ca o încercare de a-l face ușor sclipitor.

Dacă știți o vopsea ieftină care acoperă mai bine - vă rog să-mi spuneți în comentarii !! De multe ori a trebuit să fac două straturi de vopsea, astfel încât niciunul dintre albii de mai jos să nu se vadă și mi-ar plăcea să am o vopsea mai frumoasă care să evite acest lucru.

Odată ce a fost vopsit (dar înainte de a lipi piesele acrilice), am folosit un spray cu strat transparent lucios pentru a proteja vopseaua și a face totul strălucitor.

Pasul 4: Piese acrilice și lumini de fundal acrilice

Piese acrilice și lumini de fundal acrilice
Piese acrilice și lumini de fundal acrilice
Piese acrilice și lumini de fundal acrilice
Piese acrilice și lumini de fundal acrilice
Piese acrilice și lumini de fundal acrilice
Piese acrilice și lumini de fundal acrilice
Piese acrilice și lumini de fundal acrilice
Piese acrilice și lumini de fundal acrilice

Atașarea pieselor acrilice a fost o provocare, deoarece bancul meu de lucru / biroul și piesa de lemn sunt ambele ușor deformate, așa că nu am putut garanta că totul va rămâne plat suficient pentru ca epoxidul meu să se stabilească. Ca soluție, am apăsat lemnul pe masă lângă piesa acrilică pe care o lipeam și am folosit mai întâi clei fierbinte pentru a ține fiecare piesă acrilică în loc. Adezivul fierbinte este vizibil din partea din față a acrilului, așa că am folosit apoi Gorilla Glue epoxidică în două părți aplicată cu o scobitoare pentru a ține permanent piesele acrilice în poziție. M-am întors cu un clește mic și am scos bucățile originale de lipici fierbinți.

Am realizat un modul de lumină separat pentru fiecare piesă acrilică. Mai întâi am tăiat o bucată de placă de spumă neagră de 1/4 la o dimensiune puțin mai mare decât este necesar și am desenat o contur a piesei acrilice pe ea. Apoi am tăiat și am lipit benzile LED pentru acea piesă într-un mod care acoperea în mare parte acrilul zonă.

Acest pas ar fi mai bine realizat cu o placă de prototipare și câteva terminale cu șurub, dar nu le aveam la îndemână când eram gata să încep să-l conectez. Ca o soluție, am tăiat niște benzi de pin pentru antet feminin la 4 intrări - masă, 5V intrare, intrare date, ieșire date. Am lipit la cald fâșia de antet feminin de placa de spumă și am început să lipesc toate luminile împreună.

Lipirea a fost de fapt foarte provocatoare din cauza cât de mici erau aceste tampoane de lipit. Din fericire am avut două șanse pentru toate plăcile de alimentare și de masă, deoarece fiecărei benzi i se poate furniza energie la ambele capete. Am așezat benzile astfel încât firul de date să curgă într-un model serpentin. Folosesc un fier de lipit cu temperatură reglabilă și am constatat că îmi place ca temperatura să fie la capătul superior al gamei colorate în verde - probabil îmi place fierbinte, deoarece fierul de lipit pe care l-am folosit ani de zile a fost ieftin și nu avea control de temperatură și a fugit fierbinte.

Odată ce totul a fost lipit, am folosit un cuțit exacto (cu o lamă proaspătă) pentru a tăia fâșiile din placa de spumă pentru a închide luminile și a reduce scurgerea. Am folosit alb în loc de negru pentru că aveam benzi mai lungi și, de fapt, a fost un lucru bun, deoarece îmi permitea să văd cu ușurință din partea din spate dacă acea secțiune de benzi LED a fost activată în timpul etapei de testare a cablării.

Pasul 5: Restul componentelor electronice

Restul aparatelor electronice
Restul aparatelor electronice
Restul aparatelor electronice
Restul aparatelor electronice
Restul aparatelor electronice
Restul aparatelor electronice

Încerc întotdeauna să îmi conectez proiectele introducând mai întâi intrările de putere, apoi controlerul, apoi celelalte elemente ale plăcii și perifericele. Am lipit la cald pachetul de baterii și apoi am direcționat cablul divizat al mufei DC astfel încât intrarea de încărcare să fie ușor accesibilă de la o margine a proiectului pentru o încărcare ușoară. Acumulatorul a venit cu cablul divizat și instrucțiunile spuneau că este bine să încărcați acumulatorul în timp ce este utilizat.

Am canibalizat un cablu micro-usb ieftin și am înlocuit capătul micro USB cu o mufă DC, astfel încât să pot folosi doar intrarea de 5V. Am pus 5V pe o șină de tensiune a panoului de rulare și în pinul ESP8266 Vin, apoi împământat în șina de sol și un pin de masă al ESP8266 (toate terenurile ar trebui să fie conectate împreună intern în controler, astfel încât să nu conteze care)

Benzile LED standard RGB sunt controlate de un semnal PWM de la controler. Cu toate acestea, microcontrolerele pot furniza doar 20mA-50mA de curent per pin în funcție de controler. Fiecare LED din bandă necesită o putere atât de mare, așa că trebuie să folosim un fel de tranzistor pentru a controla benzile. Câteva locuri care au apărut în căutările Google au sugerat tranzistorul TIP122 care poate comuta 5 amperi sau 40W de putere - mai mult decât suficient pentru aplicația noastră. Nu sunt concepute cu adevărat pentru a se încadra într-o placă de prindere, dar dacă rotiți fiecare fir lateral 90 °, atunci se va potrivi în sloturile pentru placă de prindere. Inițial am planificat să înșurub un mic radiator la fiecare, dar după unele testări am stabilit că nu se încălzesc suficient pentru a fi necesar. Am conectat fiecare intrare de tranzistor la un pin de pe ESP8266 desemnat pentru ieșirea PWM

Fâșiile LED RGB pe care le-am avut se întâmplă să aibă un strat de cauciuc "rezistent la apă" și, ca urmare, nu ar rămâne lipite de lemn, așa cum aș vrea. Ca soluție, am tăiat bucăți mici de placă de spumă și am lipit piesa de spumă pe lemn și apoi am lipit banda LED de acestea.

Pasul 6: Prezentare generală a programării

Acest proiect folosește diverse biblioteci, astfel încât să poată fi controlat dintr-o aplicație telefonică numită Blynk, activată / dezactivată de pe un Amazon Echo, iar codul poate fi actualizat prin intermediul wifi. Unele dintre bibliotecile utilizate sunt mai jos

Blynk -

Blynk este un serviciu care permite controlul simplu între un microcontroler ESP8266 și o aplicație telefonică personalizabilă. Aplicația pentru telefon vă permite să creați o aplicație cu butoane, glisoare, selector de culori RGB și multe altele. Fiecare „widget” modifică o valoare care poate fi extrasă din aplicația Blynk ori de câte ori rulați o anumită funcție.

Actualizare OTA (Over the Air) - biblioteca implicită inclusă cu ESP8266

Emulator Alexa Wemo -

Îl înșeală pe Amazon Echo să creadă că proiectul tău este un comutator de lumină Wemo. Codul vă permite să definiți o funcție care să ruleze atunci când Alexa trimite semnalul „pornire” și o funcție separată pentru semnalul de oprire. Puteți emula mai multe dispozitive (până la 10) cu un singur controler care permite și mai multă flexibilitate. Codul meu este configurat astfel încât Echo să găsească două dispozitive numite „Iron Man” și „Night Light”. Acestea sunt atât acest proiect, cât și acest controler, dar dacă pornesc „Night Light” va rula o funcție cu lumini albe slabe, în timp ce pornirea „Iron Man” setează benzile LED exterioare pe roșu și piesele acrilice pe alb.

Editarea Arduino în Visual Studio folosind vMicro

Folosesc Visual Studio la locul de muncă de câteva luni și îmi plac toate instrumentele de completare automată pe care le-a încorporat, așa că după câteva căutări am constatat că aș putea folosi Visual Studio în loc de ID-ul normal Arduino. O licență vMicro pentru un singur computer costă 15 USD pentru studenți, ceea ce, în opinia mea, merită în totalitate dacă veți petrece mai mult de câteva ore programând codul Arduino.

FastLED vs Neopixel

Folosesc FastLED în proiectele mele pur și simplu pentru că am găsit mai multe funcții online deja create pentru el și, în acest moment, am făcut multe proiecte folosindu-l, așa că am o mulțime de cod de reutilizat. Sunt sigur că biblioteca Neopixel ar funcționa la fel de bine dacă ai lucra suficient la ea. Plănuiesc să pun toate funcțiile mele personalizate pe GitHub pentru ca alte persoane să le folosească, pur și simplu nu m-am descurcat încă.

Pasul 7: Sfaturi de programare

Structura generală

Sunt inginer de control la locul de muncă și folosim adesea un stil de programare numit programare PLC. Acest tip este similar cu Arduino prin faptul că are o buclă care rulează constant la fiecare câteva milisecunde și se ocupă de intrări / ieșiri, sărind între diferite „stări” din cod. De exemplu, codul ar putea atinge un pas care se referă la un transportor în cazul în care dacă există o tavă pe transportor va trece la starea 45, dar dacă nu există tavă va trece la starea 100. Acest stil de programare a inspirat codul meu, deși Am făcut câteva modificări, astfel încât să pot citi doar un șir în loc de un număr de stare.

Folosesc o variabilă globală (commandString) pentru a ține evidența stării de lumină în care se află proiectul. În plus, folosesc și un boolean numit „animate” pentru a determina dacă va ieși dintr-o funcție sau nu. Deci, atunci când apăsați butonul „Mod clasic” de pe Blynk, codul meu va seta animate la fals (astfel încât să iasă din funcția curentă) și să seteze comandaString la „RunClassic”. Fiecare funcție verifică în mod constant intrările de la Blynk, Alexa și OTAUpdate executând o funcție „CheckInput”.

Variabile globale

Folosesc variabile globale pentru a urmări unele setări din proiectul meu. Aceste variabile sunt inițializate înainte de codul meu de configurare, ceea ce le face accesibile oricărei funcții din codul meu.

  • globalBrightness (0-255)
  • globalSpeed - viteza de animație a oricărei funcții animate. Acest proiect are curcubee care se estompează
  • globalDelayTime - FastLED are nevoie de aproximativ 30 de microsecunde pentru a scrie informații pe fiecare LED, așa că am setat această variabilă la NUM_LEDS * 30/1000 + 1; apoi adauga delay (globalDelayTime) dupa ce de cele mai multe ori fac FastLED.show () astfel incat comanda sa nu fie intrerupta.
  • _r, _g, _b - valori RGB globale. În acest fel, diferite butoane de schemă de culori pot schimba doar valorile r / g / b globale și toate apelează aceeași funcție în final

Denumirea controlerului de actualizare Arduino OTA

Mi-a luat o mulțime de căutări enervante până când am aflat cum să numesc controlerul folosind funcția de actualizare over-air. Includeți literalmente această linie în secțiunea de configurare a codului înainte de „ArduinoOTA.onStart („ -

ArduinoOTA.setHostname ("IronMan");

vMicro cu sfaturi Visual Studio

Uneori, Visual Studio va detecta unele probleme cu fișierele profunde, cum ar fi fișierele C ++ standard și va arunca unele erori. Încercați să activați / dezactivați diferitele tipuri de mesaje de eroare până când aveți doar erori cu proiectul deschis și nu cu fișiere de sprijin. De asemenea, puteți deschide codul în IDE-ul Arduino și puteți vedea dacă se va compila acolo sau dacă va da un cod de eroare mai util.

FastLED

Trimiteți-mi un mesaj dacă acest Instructable funcționează de mai mult de câteva săptămâni și încă nu mi-am dat seama cum să pun funcțiile mele personalizate pe GitHub.

FastLED este listat ca fiind compatibil cu ESP8266, dar este posibil ca definițiile pinului să nu fie corecte. În documentația pentru FastLED scrie că puteți încerca să includeți una dintre următoarele linii înainte de #include

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

Cu toate acestea, le-am încercat pe toate trei și niciodată nu mi s-au potrivit toate pinii. În prezent, folosesc ultima linie și tocmai am acceptat că, atunci când spun FastLED să folosească pinul D2, acesta folosește de fapt pinul D4 pe controlerul meu.

Chiar dacă luminile mele sunt doar knockoff-ul chinezesc ieftin al Neopixels, totuși îi spun FastLED să le trateze ca Neopixels în configurare

  • FastLED.addLeds (leduri, NUM_LEDS);
  • FastLED.setCorrection (TypicalLEDStrip);
  • //FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps); // Util pentru proiectele alimentate cu baterii
  • FastLED.setBrightness (globalBright);

Pasul 8: Produsul final

Produs final
Produs final
Produs final
Produs final
Produs final
Produs final

Ta-da!

Simțiți-vă liber să comentați sau să-mi trimiteți prin e-mail întrebări - Îmi plac aceste lucruri și aș vrea să ajut alte persoane să facă proiecte interesante. Consultați site-ul meu web pentru alte proiecte pe care le-am făcut și câteva dintre fotografiile mele: www.jacobathompson.com

Recomandat: