第1步:在Illustrator中設計
源圖像是一個插圖William Teal,請給他的投資組合尋找他的其他偉大作品:https://www.behance.net/tealeo93(我認為這是他的 - 我跟著GoogleImages的兔子洞,Pinterest,GraphicDesignJunction,Behance)
我從谷歌搜索“Low-Poly Iron Man”或“Geometric Iron Man Wallpaper”中找到了源圖像。我下載了圖片并在Adobe Illustrator中打開了它。
接下來,我使用Illustrator中的鋼筆工具手動繪制圖像中的每一行。我這樣做是為了激光切割器能夠蝕刻所有內部線條,因為矢量切割設置為低功率而不是必須在整個圖像上進行光柵掃描。花了幾個小時的時間(在學校大約有3個課時)
一旦圖片完全被勾勒出來,我將所有這些線組合在一起,然后畫出手,胸部和眼睛的形狀。我將這些全部放在一個組中,并將其填充顏色設置為藍色,這樣我就可以輕松地將它們區分開來。我將它們復制到丙烯酸切割的單獨文件中。
對于丙烯酸部件,我想最大化我的丙烯酸片的效率,所以我上傳到這個網站http://svgnest.com/并上傳了一個只有丙烯酸切片的文件,讓它“筑巢“的部分。這使用了一些迭代和很酷的算法來確定工作表上零件的最有效布局,以最大限度地減少浪費。它輸出IronManAcrylic.ai文件中的配置。
步驟2:激光切割
在切割木材之前,我先用底漆噴涂,然后輕輕打磨,使其平滑。我這樣做是為了讓涂料后來更均勻地涂抹。
當我在整個木頭上切割輪廓時,我在60W Epilog Fusion M2上使用了100%的6%速度(我認為)克萊姆森創客空間40。這對大多數都有效,但是木頭在一個角落里非常翹曲,所以我實際上不得不將激光重新聚焦在那個角落并再次運行那部分切割。
由于我還繪制了所有內部三角形的線條,我還能夠使用矢量剪切快速蝕刻所有這些線條,如上面的視頻所示。這比光柵蝕刻文件要快得多。我想我使用了70%的速度和50%的功率 - 你只需要進行實驗。
1/8“丙烯酸我首先以100%的功率和8%的速度切割,這有點太強大了,在未受保護的丙烯酸樹脂上留下了一些焦痕,所以我以14%的速度做到了它就像一個魅力。
第3步:繪畫
那么。很多。繪畫。我估計這是大約20個小時的繪畫。
如果你正在考慮用這么多的三角形做一個項目,請不要自己畫畫。只需付錢就可以將圖像印在金屬或木頭上然后將其剪下來,或者將其打印在其他東西上并將其粘貼在堅固的東西上。除非你喜歡,否則不要自己畫畫。繪畫。
當我畫這幅畫時,我用FrogTape畫家的膠帶勾勒出作品上的每個三角形。這比我早期用手填充每個三角形而沒有任何膠帶邊框的結果更加一致。
FrogTape提供比白色或藍色畫家更清晰的線條 膠帶。您的時間和理智完全值得額外的2美元/卷膠帶。如果你想要它更瘦,你可以使用一把精確的刀將頂部幾層膠帶切成更小的條帶,這樣當你勾勒出一個三角形時,它就不會覆蓋那么多相鄰的三角形。
我很便宜并且沒有太多繪畫經驗所以我使用了2盎司的Michael‘s或Hobby Lobby的油漆。我發現Craft Smart Premium系列覆蓋得相當好,最后使用CraftSmart Premium金屬節日紅色涂料混合白色或黑色來制作95%的紅色調。黃色只是Craft Smart優質黃色,稍微拋出一點金色,試圖讓它略顯閃亮。
如果你知道一種更便宜的油漆,請在評論中告訴我!我經常不得不做兩層油漆,這樣下面的白色都不能顯示出來,我希望有一些更好的油漆可以避免這種情況。
一旦全部涂漆(但在粘合丙烯酸片之前),我使用光滑的透明涂層噴霧來保護涂料并使其全部有光澤。
第4步:亞克力片和亞克力背光
安裝丙烯酸片是一個挑戰,因為我的工作臺/桌子和木片都有輕微的翹曲,所以我無法保證它會保持足夠長的時間以保持我的環氧樹脂組。作為一種解決方法,我將木材壓到我正在粘合的丙烯酸片附近的桌子上,并首先使用熱膠將每個丙烯酸片固定到位。從丙烯酸樹脂的正面可以看到熱膠,因此我使用Gorilla Glue兩部分環氧樹脂涂上牙簽,將丙烯酸片永久固定到位。我用小鉗子回過去,撬出原來的熱膠片。
我為每個丙烯酸片制作了一個單獨的光模塊。首先,我將一塊1/4英寸的黑色泡沫板切成一個略大于所需尺寸的尺寸,然后在上面畫出丙烯酸片的輪廓。然后我用一種大部分覆蓋丙烯酸樹脂的方式切割并粘貼該條的LED條。區域。
使用原型板和一些螺絲端子可以更好地完成這一步,但是當我準備開始接線時,我手邊沒有那些。作為解決方法,我切了一些女性接頭引腳剝離到4個輸入 - 接地,5V輸入,數據輸入,數據輸出。我將母接頭條熱粘到泡沫板上并開始將所有燈焊接在一起。
焊接實際上真的很棒由于這些焊盤有多小,所以很有挑戰性。幸運的是,我有兩次機會用于所有電源和接地焊盤,因為每個焊盤都可以為兩端提供電源。我布置了條帶,使數據線以蛇形圖案流動。使用溫度可調的烙鐵,我發現我喜歡溫度在上端綠色的范圍 - 我可能喜歡它很熱,因為我使用多年的烙鐵很便宜,沒有溫度控制和熱。
一旦焊接完畢,我就用一把精確的刀(用新刀片)切割泡沫板的條帶以封閉燈光并減少滲透。我使用的是白色而不是黑色,因為我有更長的條帶,實際上它是一件好事,因為它讓我可以從背面輕松看到在開始接線的測試步驟中是否打開了LED條帶部分。
第5步:電子產品的其余部分
我總是嘗試通過首先輸入電源輸入,然后是控制器,然后是其他電路板元件和外圍設備來連接我的項目。我將電池組熱粘在適當位置,然后將分離式直流插孔電纜布線,以便從項目邊緣輕松接入充電輸入,以便于充電。電池組配有分體式電纜,說明書說在使用電池組時可以給它充電。
我使用便宜的micro-usb電纜,并用一個DC桶插孔取代微型USB端,這樣我就可以使用5V輸入。我將5V放在面包板的一個電壓軌上并插入ESP8266 Vin引腳,然后接地到ESP8266的接地導軌和接地引腳(所有接地都應該在控制器內部連接在一起,所以無論哪一個都無關緊要)
標準RGB LED燈條由來自控制器的PWM信號控制。但是,根據控制器的不同,微控制器每個引腳只能提供20mA-50mA的電流。條帶中的每個LED需要大約這么大的功率,因此我們必須使用某種晶體管來控制條帶。谷歌搜索中出現的一些地方建議TIP122晶體管可以切換5安培或40瓦的功率 - 足以滿足我們的應用需求。它們的設計并非真正適合面包板,但如果你將每根電線都側向轉動90°然后它將適合面包板插槽。我本來打算給每個散熱器擰一個小散熱器,但經過一些測試后我確定它們沒有足夠熱到必要。我將每個晶體管輸入連接到指定用于PWM輸出的ESP8266上的引腳
RGB LED條帶,我碰巧有“防水”橡膠涂層,因此不會粘在上面木頭以及我想要的。作為一種解決方法,我切割了一小塊泡沫板,并將泡沫塊粘在木頭上,然后將LED條粘在那些上面。
步驟6:編程概述
該項目使用各種庫,以便可以通過名為Blynk的手機應用程序控制它,從一個打開/關閉Amazon Echo,代碼可以通過wifi更新。使用的一些庫位于
Blynk - https://www.blynk.cc/
Blynk是一項服務,可以在ESP8266微控制器和可定制的手機應用程序之間進行簡單的控制。手機應用程序允許您使用按鈕,滑塊,RGB顏色選擇器等構建應用程序。每當您運行某個功能時,每個“小部件”都會更改可從Blynk應用程序中提取的值。
OTA(無線)更新 - ESP8266附帶的默認庫
Alexa Wemo模擬器 - https://github.com/witnessmenow/esp8266-alexa-wemo.。.
讓Amazon Echo認為您的項目是Wemo燈光開關。該代碼允許您定義在Alexa發送“開啟”信號時運行的功能以及關閉信號的單獨功能。您可以使用單個控制器模擬多個設備(最多10個),從而提供更大的靈活性。設置了我的代碼,以便Echo找到兩個名為“鋼鐵俠”和“夜燈”的設備。它們都是這個項目和這個控制器,但如果我打開“夜燈”,它將運行一個帶有暗淡白光的功能,其中打開“鋼鐵俠”將外部LED條設置為紅色,丙烯酸部件設置為白色。
使用vMicro在Visual Studio中進行Arduino編輯
我已經在工作中使用Visual Studio幾個月了,我喜歡所有自動完成工具它內置了,所以經過一些搜索我發現我實際上可以使用Visual Studio而不是普通的Arduino IDE。單個計算機vMicro許可證的費用為學生15美元,在我看來,如果你要花費超過幾個小時編程Arduino代碼,這是完全值得的。
FastLED與Neopixel
我在我的項目中使用FastLED只是因為我發現了更多在線功能,而且我已經制作了許多項目使用它,所以我有很多代碼可以重用。我相信如果你對它進行了足夠的努力,Neopixel庫也能正常工作。我打算將所有自定義功能放在GitHub上供其他人使用,我還沒有完成它。
第7步:編程提示
整體結構
我是我的控制工程師我們經常使用稱為PLC編程的編程風格。這種類型類似于Arduino,因為它有一個循環,每隔幾毫秒不斷運行,處理輸入/輸出,在代碼中的不同“狀態”之間跳轉。例如,代碼可能會遇到一個處理輸送機的步驟,如果輸送機上有托盤,它將進入狀態45,但如果沒有托盤,它將進入狀態100.這種編程風格激發了我的代碼,我做了一些更改,以便我只能讀取一個字符串而不是一個州號。
我使用全局變量(commandString)來跟蹤項目所處的光狀態。另外,我使用一個名為“animate”的布爾值來確定它是否會突破函數。因此,當您按下Blynk上的“經典模式”按鈕時,我的代碼會將動畫設置為false(以便它突破當前函數)并將commandString設置為“RunClassic”。每個函數通過運行“CheckInput”函數不斷檢查來自Blynk,Alexa和OTAUpdate的輸入。
全局變量
我使用全局變量來跟蹤項目中的某些設置。這些變量在我的設置代碼之前初始化,這使得我的代碼中的任何函數都可以訪問它們。
globalBrightness(0-255)
globalSpeed - 任何動畫的速度動畫功能。這個項目只有褪色的彩虹
globalDelayTime - FastLED需要大約30微秒才能將信息寫入每個LED,因此我將此變量設置為NUM_LEDS * 30/1000 + 1;然后在我執行FastLED.show()的大部分時間后添加延遲(globalDelayTime),以便命令不會中斷。
_r,_g,_b - 全局RGB值。這樣,不同的顏色方案按鈕可以只改變全局r/g/b值,并且最終都調用相同的函數
Arduino OTA更新控制器命名
在我弄清楚如何使用無線更新功能命名控制器之前,我花了很多煩惱。在“ArduinoOTA.onStart(” -
ArduinoOTA.setHostname(“IronMan”);
vMicro與Visual Studio之前,只需在代碼的設置部分中包含此行提示
有時,visual studio會檢測標準C ++文件等深層文件的某些問題并拋出一些錯誤。嘗試打開/關閉不同類型的錯誤消息,直到您的錯誤出現錯誤為止。打開項目而不是任何支持文件。您也可以在Arduino IDE中打開代碼,看看它是否會在那里編譯,或者它是否會提供更有用的錯誤代碼。
FastLED
如果這個Instructable已經使用了幾周而且我還沒有想出如何將我的自定義函數放在GitHub上,請給我發消息。
FastLED被列為與ESP8266兼容,但引腳定義可能不正確。在FastLED的文檔中,它說你可以在#include 之前嘗試包含以下行之一
//#define FASTLED_ESP8266_RAW_PIN_ORDER
//#define FASTLED_ESP8266_NODEMCU_PIN_ORDER
//#define FASTLED_ESP8266_D1_PIN_ORDER
然而,我嘗試了所有三個并且從來沒有讓我的所有引腳都匹配。目前我正在使用最后一行并且剛接受當我告訴FastLED使用引腳D2時它實際上使用了我的控制器上的引腳D4。
盡管我的燈光只是Neopixels的廉價中國版,我仍然告訴FastLED在設置中將它們視為Neopixels
FastLED.addLeds (leds,NUM_LEDS);
FastLED.setCorrection(TypicalLEDStrip);
//FastLED.setMaxPowerInVoltsAndMilliamps(5,maxMilliamps);//適用于電池供電的項目
FastLED.setBrightness(globalBright);
第8步:最終產品
-
led燈
+關注
關注
22文章
1595瀏覽量
109346
發布評論請先 登錄

評論