Indholdsfortegnelse:

Lavpoly jernmand med wifi-kontrollerede LED-strimler: 8 trin (med billeder)
Lavpoly jernmand med wifi-kontrollerede LED-strimler: 8 trin (med billeder)

Video: Lavpoly jernmand med wifi-kontrollerede LED-strimler: 8 trin (med billeder)

Video: Lavpoly jernmand med wifi-kontrollerede LED-strimler: 8 trin (med billeder)
Video: Ремонт на балконе Ошибки монтажа теплого пола. #37 2024, November
Anonim
Lavpoly jernmand med Wifi-kontrollerede LED-strimler
Lavpoly jernmand med Wifi-kontrollerede LED-strimler
Lavpoly jernmand med Wifi-kontrollerede LED-strimler
Lavpoly jernmand med Wifi-kontrollerede LED-strimler
Lavpoly jernmand med Wifi-kontrollerede LED-strimler
Lavpoly jernmand med Wifi-kontrollerede LED-strimler
Lavpoly jernmand med Wifi-kontrollerede LED-strimler
Lavpoly jernmand med Wifi-kontrollerede LED-strimler

Dette interaktive vægkunstværk er cirka 39 "højt og 24" bredt. Jeg laserskåret træet på Clemson Universitys Student Makerspace, derefter håndmalede jeg alle trekanterne og installerede lysene på bagsiden af det. Denne instruktive vil gå igennem hvordan jeg lavede dette nøjagtige stykke, forhåbentlig vil konceptet med det inspirere en anden til at lave deres eget unikke kunstværk. Den bruger en ESP8266 mikrokontroller med adresserbare WS2812B LED -striplys og almindelige RGB LED -striplys.

Dele og materialer

  • 1/4 "træ - 40" x 28 "(maks. Dimensioner til vores laserskærer)
  • 1/8 "uigennemsigtig akryl - TAPPlastics (jeg bruger Lighting White, 69%)
  • Batteripakke - TalentCell 12V/5V batteripakke (jeg brugte 12V/6000mAh pakke)
  • RGB LED strip - 6ft ish (Standard 4 wire, 5050 versionen hvor RGB lyset er alt i et modul)
  • TIP122 -transistor til PWM -styring af mange lys
  • WS2812B LED -strip - 2ft ish (jeg brugte versionen med 144 LED'er pr. Meter)
  • ESP8266 NodeMCU mikrokontroller
  • Solid core 22 gauge stikledning (link1 - link2 - link3 - link4)
  • Nogle 300Ω ish modstande
  • Pensler
  • Maling - jeg brugte mest Craft Premium maling. Detaljer i maletrin

Værktøjer

  • Adgang til en laserskærer (jeg brugte en hos Clemson)
  • Loddekolbe
  • Varm limpistol (dette er vigtigt)
  • Trådskærere/strippere
  • Adobe Illustrator
  • Tålmodighed

Trin 1: Design i Illustrator

Design i Illustrator
Design i Illustrator
Design i Illustrator
Design i Illustrator

Kildebilledet er en illustration af William Teal, giv venligst hans portfolio et kig efter andre store værker af ham: https://www.behance.net/tealeo93 (jeg tror, det er hans - jeg fulgte kaninhullet i GoogleImages, Pinterest, GraphicDesignJunction, Behance)

Jeg fandt kildebilledet fra en google-søgning efter "Low-Poly Iron Man" eller "Geometric Iron Man Wallpaper". Jeg downloadede billedet og åbnede det i Adobe Illustrator.

Dernæst brugte jeg penværktøjet i Illustrator til manuelt at tegne over hver linje i billedet. Jeg gjorde dette, så laserskæreren kunne ætse alle de indvendige linjer som et vektorsnit indstillet til lav effekt i stedet for at skulle raster over hele billedet. Det tog et par timer at lave (også cirka 3 klasseperioder i skolen)

Når billedet var helt skitseret, grupperede jeg alle disse linjer sammen og tegnede derefter former til hænder, bryst og øjne. Jeg lagde dem alle i en gruppe og indstillede deres fyldfarve til at være blå, så jeg let kunne skille dem fra hinanden. Jeg kopierede dem til en separat fil til akrylskåret.

Til akryldelen ville jeg maksimere effektiviteten af mit akrylstykke, så jeg uploadede det til dette websted https://svgnest.com/ og uploadede en fil med kun de akrylskårne stykker og lod det "rede" delene. Dette bruger nogle iterationer og fede algoritmer til at bestemme det mest effektive layout af dine dele på arket for at minimere spild. Det udsender konfigurationen, der er i filen IronManAcrylic.ai.

Trin 2: Laserskæring

Image
Image

Inden jeg skærede træet, sprøjtede jeg det med primer og slibede det let for at starte det glat. Jeg gjorde dette, så malingen senere skulle komme mere jævnt ud.

Da jeg skar omridset hele vejen igennem træet, brugte jeg 100% effekt 6% hastighed (tror jeg) på vores 60W Epilog Fusion M2 40 i Clemson Makerspace. Dette virkede for det meste, men træet var meget skævt i et hjørne, så jeg var faktisk nødt til at fokusere laseren igen for det hjørne og køre den del af snittet igen.

Da jeg også tegnede linjer for alle de indvendige trekanter, var jeg også i stand til at bruge et vektorsnit til hurtigt at ætse alle disse linjer som vist i videoen ovenfor. Dette var betydeligt hurtigere, end det ville have været at rase etse filen. Jeg tror, jeg brugte 70% hastighed og 50% effekt - du skal dog bare eksperimentere.

Den 1/8 akryl skar jeg først med 100% effekt og 8% hastighed, som var lidt for kraftig og efterlod nogle svedmærker på den ubeskyttede akryl, så så gjorde jeg det med 14% hastighed, og det virkede som en charme.

Trin 3: Maleri

Maleri
Maleri
Maleri
Maleri
Maleri
Maleri

Så. Meget. Maleri. Jeg ville anslå, at det var omkring 20 timers maleri.

Hvis du overvejer at lave et projekt med så mange trekanter som dette, skal du ikke male det selv. Bare betal for at få billedet trykt på metal eller træ og derefter skære det ud, eller få det trykt på noget andet og lim det stykke på noget fast. Bare mal det ikke selv, medmindre du elsker at male.

Jeg brugte FrogTape malere tape til at skitsere hver trekant på stykket, da jeg malede dette. Dette gav mig meget mere konsekvente resultater end mine tidlige forsøg på at udfylde hver trekant i hånden uden båndgrænser.

FrogTape giver linjer, der er meget mere sprøde end den hvide eller blå malertape. Din tid og forstand er fuldstændig de ekstra $ 2/tape tape værd. Hvis du vil have det til at være tyndere, kan du bruge en exacto -kniv til at skære de øverste få lag tape i endnu mindre strimler, så når du skitserer en trekant, dækker den ikke så mange nabotrekanter.

Jeg er billig og har ikke meget erfaring med at male, så jeg brugte 2 oz flasker maling fra Michael's eller Hobby Lobby. Jeg fandt ud af, at Craft Smart Premium -linjen dækkede rimelig godt og endte med at bruge CraftSmart Premium Metallic Festive Red -maling blandet med hvid eller sort til at lave 95% af mine røde nuancer. Gul var bare Craft Smart premium gul, med lidt guld kastet ind som et forsøg på at gøre det lidt glitrende.

Hvis du kender en billig maling, der dækker bedre - lad mig det vide i kommentarerne !! Jeg var ofte nødt til at lave to lag maling, så ingen af de hvide nedenunder skulle komme igennem, og jeg ville elske at have en pænere maling, der ville undgå det.

Når det hele var malet (men inden limning i akrylstykkerne) brugte jeg en blank klar coat spray til at beskytte malingen og gøre det hele skinnende.

Trin 4: Akrylstykker og baggrundsbelysning i akryl

Akrylstykker og baggrundsbelysning i akryl
Akrylstykker og baggrundsbelysning i akryl
Akrylstykker og baggrundsbelysning i akryl
Akrylstykker og baggrundsbelysning i akryl
Akrylstykker og baggrundsbelysning i akryl
Akrylstykker og baggrundsbelysning i akryl
Akrylstykker og baggrundsbelysning i akryl
Akrylstykker og baggrundsbelysning i akryl

At fastgøre akrylstykkerne var lidt af en udfordring, fordi mit arbejdsbord/skrivebord og træstykket begge er lidt skævt, så der var ingen måde, jeg kunne garantere, at det hele ville forblive fladt længe nok til, at min epoxy kunne hærde. Som en løsning pressede jeg træet ned til bordet nær det akrylstykke, jeg limede i, og brugte først varm lim til at holde hvert akrylstykke på plads. Den varme lim er synlig fra forsiden af akrylen, så jeg brugte derefter Gorilla Glue todelt epoxy påført med en tandstikker til permanent at holde akrylstykkerne på plads. Jeg gik tilbage med en lille tang og lirede de originale varme limstykker ud.

Jeg lavede et separat lysmodul til hvert akrylstykke. Først skar jeg et stykke 1/4 sort skumplade til en størrelse lidt større end nødvendigt og tegnede en kontur af akrylstykket på det. Derefter skar jeg og tapede LED -strimlerne for det stykke på en måde, der for det meste dækkede akryl areal.

Dette trin ville være bedre udført med et prototypebord og nogle skrueterminaler, men jeg havde dem ikke ved hånden, da jeg var klar til at begynde at tilslutte det. Som en løsning skar jeg nogle kvindelige header pin strips til 4 input - Ground, 5V in, data in, data out. Jeg varmlimede den kvindelige headerstrimmel til skumpladen og begyndte at lodde alle lysene sammen.

Lodningen var faktisk virkelig udfordrende på grund af hvor små disse loddepuder var. Heldigvis havde jeg to chancer for al strøm og jordpuder, fordi hver strimmel kan forsynes med strøm til hver ende. Jeg lagde strimlerne ud, så datatråden flød i et serpentinmønster. Jeg bruger et loddejern med justerbar temperatur, og jeg har fundet ud af, at jeg kan lide at temperaturen er i den øvre ende af området farvet grønt - jeg kan godt lide det varmt, fordi loddejernet jeg brugte i årevis var billigt og ikke havde nogen temperaturkontroller og løb varmt.

Når alt var loddet på, brugte jeg en exacto-kniv (med et frisk blad) til at skære strimler af skumpladen for at omslutte lysene og reducere gennemblødning. Jeg brugte hvid i stedet for sort, fordi jeg havde længere strimler af den, og faktisk var det en god ting, fordi det gjorde det let for mig at se fra bagsiden, om den del af LED -strimler var tændt under testtrinnet med at koble det hele sammen.

Trin 5: Resten af elektronikken

Resten af elektronikken
Resten af elektronikken
Resten af elektronikken
Resten af elektronikken
Resten af elektronikken
Resten af elektronikken

Jeg forsøger altid at forbinde mine projekter ved først at sætte strømindgange i, derefter controlleren, derefter de andre kortelementer og periferiudstyr. Jeg varmlimede batteripakken på plads og dirigerede derefter det delte DC -jackkabel, så opladningsindgangen var let tilgængelig fra en kant af projektet for let opladning. Batteriet fulgte med det opdelte kabel, og instruktionerne sagde, at det var fint at oplade batteriet, mens det er i brug.

Jeg kannibaliserede et billigt mikro-usb-kabel og erstattede mikro-USB-enden med et DC-tønde-stik, så jeg bare kunne bruge 5V-indgangen. Jeg lagde 5V på en spændingsskinne på brødbrættet og ind i ESP8266 Vin -stiften, derefter jordet i jordskinnen og en jordstift på ESP8266 (alle grunde skal forbindes internt i controlleren, så det er ligegyldigt hvilken)

Standard RGB LED -strimler styres af et PWM -signal fra controlleren. Imidlertid kan mikrokontrollere kun levere 20mA-50mA strøm pr. Stift afhængigt af controlleren. Hver LED i strimlen kræver omkring så meget strøm, så vi er nødt til at bruge en slags transistor til at styre strimlerne. Et par steder, der dukkede op ved Google -søgninger, foreslog TIP122 -transistoren, der kan skifte 5 ampere eller 40W strøm - mere end nok til vores applikation. De er ikke rigtig designet til at passe ind i et brødbræt, men hvis du vender hver ledning 90 ° sidelæns, vil den passe ind i brødbrætsslidserne. Jeg planlagde oprindeligt at skrue en lille køleplade til hver enkelt, men efter nogle test fandt jeg ud af, at de ikke bliver varme nok til, at det var nødvendigt. Jeg tilsluttede hver transistorindgang til en pin på ESP8266, der er beregnet til PWM -output

De RGB LED -strimler, som jeg tilfældigvis havde den "vandafvisende" gummibelægning, og som et resultat ikke ville forblive limet til træet så godt, som jeg gerne ville. Som en løsning skar jeg små stykker skumplade og limede skumstykket til træet og limede derefter LED -strimlen til dem.

Trin 6: Oversigt over programmering

Dette projekt bruger forskellige biblioteker, så det kan styres fra en telefon -app kaldet Blynk, tændes/slukkes fra et Amazon Echo, og koden kan opdateres via wifi. Nogle af de anvendte biblioteker er nedenfor

Blynk -

Blynk er en service, der tillader enkel kontrol mellem en ESP8266 mikrokontroller og en telefonapp, der kan tilpasses. Telefonappen giver dig mulighed for at opbygge et program med knapper, skydere, RGB -farvevalgere og meget mere. Hver "widget" ændrer en værdi, der kan trækkes fra Blynk -appen, når du kører en bestemt funktion.

OTA (Over the Air) opdatering- standardbibliotek inkluderet i ESP8266

Alexa Wemo Emulator-https://github.com/witnessmenow/esp8266-alexa-wemo…

Tricker Amazon Echo til at tro, at dit projekt er en Wemo -lyskontakt. Koden giver dig mulighed for at definere en funktion, der skal køres, når Alexa sender "tænd" -signalet og en separat funktion til slukkesignalet. Du kan efterligne flere enheder (op til 10) med en enkelt controller, hvilket giver endnu mere fleksibilitet. Min kode er konfigureret, så ekkoet finder to enheder med navnet "Iron Man" og "Night Light". De er både dette projekt og denne controller, men hvis jeg tænder "Night Light", vil det køre en funktion med svagt hvidt lys, hvor der ved at tænde "Iron Man" indstilles de ydre LED -strimler til rødt og akrylstykker til hvide.

Arduino -redigering i Visual Studio ved hjælp af vMicro

Jeg har brugt Visual Studio på arbejde i et par måneder nu, og jeg elsker alle de autofuldførelsesværktøjer, det har indbygget, så efter lidt søgning fandt jeg ud af, at jeg faktisk kunne bruge Visual Studio i stedet for den normale Arduino IDE. En enkelt computer vMicro -licens koster $ 15 for studerende, hvilket efter min mening er det hele værd, hvis du skal bruge mere end et par timer på at programmere Arduino -kode.

FastLED vs Neopixel

Jeg bruger FastLED i mine projekter, simpelthen fordi jeg fandt flere funktioner online allerede lavet til det, og på dette tidspunkt har jeg lavet mange projekter ved hjælp af det, så jeg har masser af kode til at genbruge. Jeg er sikker på, at Neopixel -biblioteket ville fungere lige så godt, hvis du arbejdede nok på det. Jeg planlægger at lægge alle mine brugerdefinerede funktioner på GitHub, som andre mennesker kan bruge, jeg har bare ikke nået det endnu.

Trin 7: Programmeringstip

Overordnet struktur

Jeg er kontrolingeniør på mit job, og vi bruger ofte en programmeringsstil, der kaldes PLC -programmering. Denne type ligner Arduino, idet den har en loop, der løbende kører hvert par millisekund og beskæftiger sig med input/output, der springer mellem forskellige "tilstande" i koden. For eksempel kan koden ramme et trin, der omhandler en transportør, hvor hvis der er en bakke på transportøren, vil den fortsætte til tilstand 45, men hvis der ikke er nogen bakke, vil den fortsætte med at angive 100. Denne programmeringsstil inspirerede min kode, selvom Jeg lavede nogle ændringer, så jeg bare kan læse en streng i stedet for et statstal.

Jeg bruger en global variabel (commandString) til at holde styr på, hvilken lystilstand projektet er i. Derudover bruger jeg en boolean kaldet "animation" for også at afgøre, om den vil bryde ud af en funktion eller ej. Så når du trykker på knappen "Klassisk tilstand" på Blynk, vil min kode sætte animationen til falsk (så den bryder ud af den aktuelle funktion) og indstille commandString til "RunClassic". Hver funktion kontrollerer konstant input fra Blynk, Alexa og OTAUpdate ved at køre en funktion "CheckInput".

Globale variabler

Jeg bruger globale variabler til at holde styr på nogle indstillinger i mit projekt. Disse variabler initialiseres før min opsætningskode, hvilket gør dem tilgængelige for enhver funktion i min kode.

  • globalBrightness (0-255)
  • globalSpeed - animationshastigheden for alle animerede funktioner. Dette projekt har bare falmende regnbuer
  • globalDelayTime - FastLED har brug for cirka 30 mikrosekunder for at skrive information til hver LED, så jeg indstiller denne variabel til NUM_LEDS * 30/1000 + 1; Tilføj derefter forsinkelse (globalDelayTime) efter de fleste gange, jeg laver FastLED.show (), så kommandoen ikke afbrydes.
  • _r, _g, _b - globale RGB -værdier. På den måde kan forskellige farveskema -knapper bare ændre de globale r/g/b -værdier og alle kalde den samme funktion i sidste ende

Navngivelse af Arduino OTA -opdateringscontroller

Det tog mig en irriterende mængde søgning, indtil jeg fandt ud af at navngive controlleren ved hjælp af over -air opdateringsfunktionen. Inkluder bogstaveligt talt denne linje i opsætningsdelen af din kode før "ArduinoOTA.onStart (" -

ArduinoOTA.setHostname ("IronMan");

vMicro med Visual Studio -tip

Nogle gange vil visual studio opdage nogle problemer med dybe filer som standard C ++ filer og smide nogle fejl. Prøv at slå de forskellige typer fejlmeddelelser til/fra, indtil du bare har fejl med dit åbne projekt og ikke nogen understøttende filer. Du kan også åbne koden i Arduino IDE og se, om den vil kompilere derinde, eller om den vil give en mere nyttig fejlkode.

FastLED

Send mig en besked, hvis denne Instructable har været i gang i mere end et par uger, og jeg stadig ikke har fundet ud af, hvordan jeg placerer mine brugerdefinerede funktioner på GitHub.

FastLED er angivet som kompatibel med ESP8266, men pin -definitionerne er muligvis ikke korrekte. I dokumentationen til FastLED står der, at du kan prøve at inkludere en af følgende linjer inden #include

  • //#definere FASTLED_ESP8266_RAW_PIN_ORDER
  • //#definere FASTLED_ESP8266_NODEMCU_PIN_ORDER
  • //#definere FASTLED_ESP8266_D1_PIN_ORDER

Jeg prøvede dog alle tre og havde aldrig alle mine pins matchet. I øjeblikket bruger jeg den sidste linje og accepterede lige, at når jeg fortæller FastLED at bruge pin D2, bruger den faktisk pin D4 på min controller.

Selvom mine lys bare er den billige kinesiske knockoff af Neopixels, fortæller jeg stadig FastLED at behandle dem som Neopixels i opsætningen

  • FastLED.addLeds (leds, NUM_LEDS);
  • FastLED.setCorrection (TypicalLEDStrip);
  • //FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps); // Nyttig til batteridrevne projekter
  • FastLED.setBrightness (globalBright);

Trin 8: Slutprodukt

Slutprodukt
Slutprodukt
Slutprodukt
Slutprodukt
Slutprodukt
Slutprodukt

Ta-da!

Du er velkommen til at kommentere eller e -maile mig spørgsmål - jeg elsker disse ting og vil meget gerne hjælpe andre mennesker med at lave fede projekter. Tjek mit websted for nogle andre projekter, jeg har lavet, og nogle af mine fotografier: www.jacobathompson.com

Anbefalede: