Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Tác phẩm nghệ thuật trên tường tương tác này cao khoảng 39 "và rộng 24". Tôi cắt laser trên gỗ tại Student Makerspace của Đại học Clemson, sau đó tôi vẽ tay tất cả các hình tam giác và lắp đèn ở mặt sau của nó. Người hướng dẫn này sẽ hướng dẫn cách tôi tạo ra tác phẩm chính xác này, hy vọng khái niệm về nó sẽ truyền cảm hứng cho những người khác tạo ra tác phẩm nghệ thuật độc đáo của riêng họ. Nó sử dụng vi điều khiển ESP8266 với dải đèn LED WS2812B có thể định địa chỉ và dải đèn LED RGB thông thường.
Bộ phận và Vật liệu
- 1/4 "gỗ - 40" x 28 "(Kích thước tối đa cho máy cắt laser của chúng tôi)
- Acrylic trắng đục 1/8 "- TAPPlastics (Tôi sử dụng Ánh sáng trắng, 69%)
- Bộ pin - Bộ pin TalentCell 12V / 5V (Tôi đã sử dụng gói 12V / 6000mAh)
- Dải đèn LED RGB - 6ft ish (Dây 4 tiêu chuẩn, phiên bản 5050 trong đó ánh sáng RGB nằm trong một mô-đun)
- Bóng bán dẫn TIP122 để điều khiển PWM của nhiều đèn
- Dải đèn LED WS2812B - 2ft ish (Tôi đã sử dụng phiên bản có 144 LED trên mỗi mét)
- Bộ vi điều khiển ESP8266 NodeMCU
- Dây đầu nối 22 gauge lõi rắn (link1 - link2 - link3 - link4)
- Một số điện trở ish 300Ω
- Những cây chổi sơn
- Sơn - Tôi chủ yếu sử dụng sơn Craft Premium. Chi tiết trong bước sơn
Công cụ
- Tiếp cận máy cắt laser (tôi đã sử dụng máy cắt ở Clemson)
- Hàn sắt
- Súng bắn keo nóng (đây là điều cần thiết)
- Máy cắt dây / máy thoát y
- Adobe Illustrator
- Kiên nhẫn
Bước 1: Thiết kế trong Illustrator
Hình ảnh nguồn là hình minh họa của William Teal, vui lòng cung cấp cho danh mục đầu tư của anh ấy những tác phẩm tuyệt vời khác của anh ấy: https://www.behance.net/tealeo93 (Tôi nghĩ đó là của anh ấy - Tôi đã theo dõi lỗ thỏ của GoogleImages, Pinterest, GraphicDesignJunction, Behance)
Tôi đã tìm thấy hình ảnh nguồn từ một tìm kiếm trên google cho "Người sắt Low-Poly" hoặc "Hình nền Người sắt hình học". Tôi đã tải xuống hình ảnh và mở nó trong Adobe Illustrator.
Tiếp theo, tôi sử dụng công cụ bút trong Illustrator để vẽ thủ công trên mọi đường trong hình ảnh. Tôi đã làm điều này để máy cắt laser có thể khắc tất cả các đường bên trong như một hình cắt vector được đặt thành công suất thấp thay vì phải quét toàn bộ hình ảnh. Phải mất vài giờ để làm (còn gọi là khoảng 3 tiết học ở trường)
Khi bức tranh đã được phác thảo hoàn toàn, tôi nhóm tất cả các đường nét đó lại với nhau và sau đó vẽ các hình dạng cho bàn tay, ngực và mắt. Tôi đặt tất cả những thứ này vào một nhóm và đặt màu tô của chúng là màu xanh lam để tôi có thể dễ dàng phân biệt chúng. Tôi đã sao chép chúng vào một tệp riêng để cắt acrylic.
Đối với phần acrylic, tôi muốn tối đa hóa hiệu quả của miếng acrylic của mình nên tôi đã tải nó lên trang web này https://svgnest.com/ và tải lên một tệp chỉ có các miếng acrylic đã cắt và để nó "lồng" các phần. Điều này sử dụng một số lần lặp lại và các thuật toán thú vị để xác định bố cục hiệu quả nhất của các bộ phận của bạn trên trang tính nhằm giảm thiểu lãng phí. Nó xuất ra cấu hình có trong tệp IronManAcrylic.ai.
Bước 2: Cắt Laser
Trước khi cắt gỗ, tôi phun sơn lót rồi đánh nhám nhẹ để bắt đầu nhẵn. Tôi đã làm điều này để sơn sau đó sẽ ra đều hơn.
Khi tôi cắt toàn bộ đường viền qua gỗ, tôi đã sử dụng 100% sức mạnh 6% tốc độ (tôi nghĩ) trên Epilog Fusion M2 40 60W của chúng tôi trong Clemson Makerspace. Điều này có hiệu quả với hầu hết nó, nhưng gỗ rất cong vênh ở một góc, vì vậy tôi thực sự phải tái tập trung tia laser cho góc đó và chạy lại phần đó của vết cắt.
Vì tôi cũng đã vẽ các đường cho tất cả các hình tam giác bên trong, nên tôi cũng có thể sử dụng phương pháp cắt vector để nhanh chóng khắc tất cả các đường đó như thể hiện trong video ở trên. Điều này nhanh hơn đáng kể so với việc quét tệp tin. Tôi nghĩ rằng tôi đã sử dụng 70% tốc độ và 50% sức mạnh - mặc dù vậy bạn sẽ chỉ phải thử nghiệm.
Chiếc acrylic 1/8 đầu tiên tôi cắt ở 100% công suất và 8% tốc độ hơi quá mạnh và để lại một số vết cháy trên lớp acrylic không được bảo vệ, vì vậy tôi đã làm nó ở tốc độ 14% và nó hoạt động như một sự quyến rũ.
Bước 3: Vẽ tranh
Vì thế. Nhiều. Bức tranh. Tôi ước tính khoảng 20 giờ vẽ.
Nếu bạn đang nghĩ đến việc thực hiện một dự án với nhiều hình tam giác như thế này, xin đừng tự sơn nó. Chỉ cần trả tiền để có được hình ảnh được in trên kim loại hoặc gỗ và sau đó cắt hình ảnh đó ra, hoặc in hình ảnh đó lên một thứ khác và dán mảnh đó lên một thứ gì đó chắc chắn. Đừng tự vẽ nó trừ khi bạn yêu thích hội họa.
Tôi sử dụng băng của họa sĩ FrogTape để phác thảo từng hình tam giác trên mảnh khi tôi vẽ bức tranh này. Điều này đã mang lại cho tôi kết quả phù hợp hơn nhiều so với những nỗ lực đầu tiên của tôi là điền vào từng tam giác bằng tay mà không có bất kỳ đường viền băng nào.
FrogTape cho đường nét sắc nét hơn nhiều so với băng vẽ màu trắng hoặc xanh lam. Thời gian và sự tỉnh táo của bạn hoàn toàn xứng đáng với khoản thêm $ 2 / cuộn băng. Nếu bạn muốn nó mỏng hơn, bạn có thể sử dụng một con dao chính xác để cắt một vài lớp băng trên cùng thành những dải nhỏ hơn nữa để khi bạn phác thảo một hình tam giác, nó không che mất nhiều hình tam giác lân cận.
Tôi ham rẻ và không có nhiều kinh nghiệm về sơn nên tôi đã sử dụng 2 lọ sơn oz của Michael's hoặc Hobby Lobby. Tôi nhận thấy rằng dòng Craft Smart Premium có độ phủ khá tốt và kết thúc bằng cách sử dụng màu sơn CraftSmart Premium Metallic Festive Red pha với trắng hoặc đen để tạo ra 95% sắc thái màu đỏ của tôi. Màu vàng chỉ là màu vàng cao cấp của Craft Smart, với một chút vàng được ném vào như một nỗ lực để làm cho nó hơi lấp lánh.
Nếu bạn biết loại sơn ish giá rẻ nào có thể che phủ tốt hơn - vui lòng cho tôi biết trong phần bình luận !! Tôi thường phải sơn hai lớp sơn để không có màu trắng nào bên dưới lộ ra ngoài, và tôi muốn có một số lớp sơn đẹp hơn để tránh điều đó.
Sau khi sơn tất cả (nhưng trước khi dán các miếng acrylic), tôi sử dụng một lớp sơn phủ bóng trong để bảo vệ sơn và làm cho tất cả đều sáng bóng.
Bước 4: Miếng acrylic và đèn nền acrylic
Việc gắn các miếng acrylic là một chút khó khăn vì bàn làm việc / bàn làm việc và miếng gỗ của tôi đều hơi cong vênh, vì vậy không có cách nào tôi có thể đảm bảo rằng tất cả sẽ phẳng đủ lâu để lớp sơn epoxy của tôi đông kết. Để giải quyết vấn đề này, tôi ấn miếng gỗ xuống bàn gần miếng acrylic mà tôi đang dán và trước tiên dùng keo nóng để giữ từng miếng acrylic tại chỗ. Keo nóng có thể nhìn thấy từ mặt trước của acrylic, vì vậy tôi sau đó sử dụng Gorilla Glue hai phần epoxy bôi bằng tăm để giữ cố định các miếng acrylic tại chỗ. Tôi quay lại bằng kìm nhỏ và cạy những miếng keo nóng ban đầu.
Tôi đã tạo một mô-đun ánh sáng riêng biệt cho mỗi mảnh acrylic. Đầu tiên, tôi cắt một miếng ván xốp đen 1/4 với kích thước lớn hơn một chút so với mức cần thiết và vẽ đường viền của miếng acrylic trên đó. Sau đó, tôi cắt và dán các dải đèn LED cho miếng đó theo cách chủ yếu phủ lên acrylic khu vực.
Bước này sẽ được thực hiện tốt hơn với bảng tạo mẫu và một số thiết bị đầu cuối vít, nhưng tôi không có sẵn chúng khi tôi sẵn sàng bắt đầu đấu dây. Để giải quyết vấn đề, tôi cắt một số dải chân cắm đầu cái thành 4 đầu vào - Nối đất, 5V đầu vào, đầu vào dữ liệu, đầu ra dữ liệu. Tôi dán nóng dải tiêu đề cái vào bảng xốp và bắt đầu hàn tất cả các đèn lại với nhau.
Quá trình hàn thực sự rất khó khăn vì những miếng hàn đó nhỏ như thế nào. May mắn thay, tôi đã có hai cơ hội cho tất cả các tấm đệm nguồn và mặt đất vì mỗi dải có thể được cung cấp điện cho cả hai đầu. Tôi đặt các dải sao cho dây dữ liệu chảy theo hình ngoằn ngoèo. Tôi sử dụng một mỏ hàn có nhiệt độ điều chỉnh được và tôi thấy rằng tôi thích nhiệt độ ở đầu trên của dải có màu xanh lá cây - Tôi có thể thích nó nóng vì mỏ hàn tôi đã sử dụng trong nhiều năm rẻ và không có điều khiển nhiệt độ và chạy nóng.
Khi mọi thứ đã được hàn vào, tôi sử dụng một con dao chính xác (với một lưỡi dao mới) để cắt các dải của bảng xốp để bao quanh đèn và giảm chảy máu. Tôi đã sử dụng màu trắng thay vì màu đen vì tôi có dải dài hơn và thực sự đó là một điều tốt vì nó cho phép tôi dễ dàng nhìn thấy từ phía sau nếu phần đó của dải LED được bật trong bước thử nghiệm nối dây toàn bộ.
Bước 5: Phần còn lại của thiết bị điện tử
Tôi luôn cố gắng kết nối các dự án của mình bằng cách đầu tiên đặt đầu vào nguồn, sau đó là bộ điều khiển, sau đó là các phần tử bo mạch và thiết bị ngoại vi khác. Tôi dán nóng bộ pin vào vị trí và sau đó định tuyến cáp giắc cắm DC đã chia để có thể dễ dàng tiếp cận đầu vào sạc từ một cạnh của dự án để dễ dàng sạc. Bộ pin đi kèm với cáp tách và hướng dẫn cho biết bạn có thể sạc bộ pin khi đang sử dụng.
Tôi đã loại bỏ một cáp micro-usb rẻ tiền và thay thế đầu micro USB bằng giắc cắm thùng DC để tôi chỉ có thể sử dụng đầu vào 5V. Tôi đặt 5V trên một thanh ray điện áp của bảng mạch và vào chân ESP8266 Vin, sau đó nối đất vào thanh nối đất và chân nối đất của ESP8266 (tất cả các đế phải được nối với nhau bên trong bộ điều khiển nên không quan trọng cái nào)
Các dải LED RGB tiêu chuẩn được điều khiển bằng tín hiệu PWM từ bộ điều khiển. Tuy nhiên, vi điều khiển chỉ có thể cung cấp dòng điện 20mA-50mA trên mỗi chân tùy thuộc vào bộ điều khiển. Mỗi đèn LED trong dải yêu cầu khoảng công suất lớn như vậy, vì vậy chúng ta phải sử dụng một số loại bóng bán dẫn để điều khiển các dải. Một số vị trí xuất hiện trên các tìm kiếm của google đã gợi ý bóng bán dẫn TIP122 có thể chuyển đổi công suất 5 ampe hoặc 40W - quá đủ cho ứng dụng của chúng tôi. Chúng không thực sự được thiết kế để vừa với breadboard, nhưng nếu bạn xoay mỗi dây sang một bên 90 ° thì nó sẽ vừa với các khe của breadboard. Ban đầu tôi dự định vặn một bộ tản nhiệt nhỏ cho mỗi cái, nhưng sau một số thử nghiệm, tôi xác định rằng chúng không đủ nóng để cần thiết. Tôi đấu dây từng đầu vào bóng bán dẫn vào một chân trên ESP8266 được chỉ định cho đầu ra PWM
Các dải đèn LED RGB mà tôi đã tình cờ có lớp phủ cao su "chống nước", và kết quả là sẽ không dính vào gỗ tốt như tôi muốn. Để giải quyết vấn đề, tôi cắt những miếng ván xốp nhỏ và dán miếng xốp vào gỗ, sau đó dán dải đèn LED vào chúng.
Bước 6: Tổng quan về lập trình
Dự án này sử dụng các thư viện khác nhau để có thể điều khiển nó từ một ứng dụng điện thoại có tên Blynk, bật / tắt từ Amazon Echo và mã có thể được cập nhật qua wifi. Dưới đây là một số thư viện được sử dụng
Blynk -
Blynk là một dịch vụ cho phép điều khiển đơn giản giữa vi điều khiển ESP8266 và một ứng dụng điện thoại có thể tùy chỉnh. Ứng dụng điện thoại cho phép bạn tạo một ứng dụng với các nút, thanh trượt, bộ chọn màu RGB và hơn thế nữa. Mỗi "widget" thay đổi một giá trị có thể được lấy từ ứng dụng Blynk bất cứ khi nào bạn chạy một chức năng nhất định.
Cập nhật OTA (Qua mạng) - thư viện mặc định đi kèm với ESP8266
Alexa Wemo Emulator -
Đánh lừa Amazon Echo nghĩ rằng dự án của bạn là một công tắc đèn Wemo. Mã cho phép bạn xác định một chức năng để chạy khi Alexa gửi tín hiệu "bật" và một chức năng riêng biệt cho tín hiệu tắt. Bạn có thể mô phỏng nhiều thiết bị (tối đa 10) với một bộ điều khiển duy nhất cho phép linh hoạt hơn. Mã của tôi được thiết lập để Echo tìm thấy hai thiết bị có tên "Iron Man" và "Night Light". Chúng vừa là dự án này vừa là bộ điều khiển này, nhưng nếu tôi bật "Night Light", nó sẽ chạy một chức năng với đèn trắng mờ, khi bật "Iron Man" sẽ đặt các dải LED bên ngoài thành màu đỏ và các miếng acrylic thành màu trắng.
Chỉnh sửa Arduino trong Visual Studio bằng vMicro
Tôi đã sử dụng Visual Studio tại nơi làm việc được vài tháng và tôi yêu thích tất cả các công cụ tự động hoàn thành mà nó tích hợp sẵn, vì vậy sau một số tìm kiếm, tôi nhận thấy rằng tôi thực sự có thể sử dụng Visual Studio thay vì Arduino IDE thông thường. Một giấy phép vMicro máy tính duy nhất có giá 15 đô la cho sinh viên, theo ý kiến của tôi là hoàn toàn xứng đáng nếu bạn sẽ dành hơn vài giờ để lập trình mã Arduino.
FastLED vs Neopixel
Tôi sử dụng FastLED trong các dự án của mình đơn giản vì tôi tìm thấy nhiều chức năng trực tuyến hơn đã được tạo cho nó và tại thời điểm này, tôi đã thực hiện nhiều dự án bằng cách sử dụng nó nên tôi có rất nhiều mã để sử dụng lại. Tôi chắc rằng thư viện Neopixel sẽ hoạt động tốt nếu bạn làm việc đủ. Tôi đang lên kế hoạch đưa tất cả các chức năng tùy chỉnh của mình lên GitHub để người khác sử dụng, chỉ là tôi vẫn chưa hiểu.
Bước 7: Mẹo lập trình
Cấu trúc tổng thể
Tôi là một kỹ sư điều khiển tại công việc của mình và chúng tôi thường sử dụng một phong cách lập trình gọi là lập trình PLC. Loại này tương tự như Arduino ở chỗ nó có một vòng lặp chạy liên tục sau mỗi vài mili giây và xử lý các đầu vào / đầu ra, nhảy giữa các "trạng thái" khác nhau trong mã. Ví dụ: mã có thể chạm đến một bước xử lý băng tải trong đó nếu có khay trên băng tải, nó sẽ chuyển sang trạng thái 45, nhưng nếu không có khay, nó sẽ chuyển sang trạng thái 100. Tuy nhiên, phong cách lập trình này đã truyền cảm hứng cho mã của tôi Tôi đã thực hiện một số thay đổi để tôi có thể chỉ đọc một chuỗi thay vì một số trạng thái.
Tôi sử dụng một biến toàn cục (commandString) để theo dõi dự án đang ở trạng thái nhẹ nào. Ngoài ra, tôi sử dụng boolean có tên "animate" để xác định xem nó có thoát ra khỏi một hàm hay không. Vì vậy, khi bạn nhấn nút "Chế độ cổ điển" trên Blynk, mã của tôi sẽ đặt hoạt ảnh thành sai (để nó thoát ra khỏi chức năng hiện tại) và đặt commandString thành "RunClassic". Mỗi chức năng liên tục kiểm tra đầu vào từ Blynk, Alexa và OTAUpdate bằng cách chạy một chức năng "CheckInput".
Biến toàn cục
Tôi sử dụng các biến toàn cục để theo dõi một số cài đặt trong dự án của mình. Các biến này được khởi tạo trước mã thiết lập của tôi, điều này làm cho chúng có thể truy cập được vào bất kỳ hàm nào trong mã của tôi.
- globalBrightness (0-255)
- globalSpeed - tốc độ hoạt ảnh của bất kỳ chức năng hoạt hình nào. Dự án này chỉ có cầu vồng đang mờ dần
- globalDelayTime - FastLED cần khoảng 30 micro giây để ghi thông tin vào mỗi đèn LED, vì vậy tôi đặt biến này thành NUM_LEDS * 30/1000 + 1; sau đó thêm độ trễ (globalDelayTime) sau hầu hết thời gian tôi thực hiện FastLED.show () để lệnh không bị gián đoạn.
- _r, _g, _b - giá trị RGB toàn cục. Bằng cách đó, các nút phối màu khác nhau chỉ có thể thay đổi các giá trị r / g / b chung và cuối cùng tất cả đều gọi cùng một hàm
Đặt tên bộ điều khiển cập nhật Arduino OTA
Tôi đã phải mất một khoảng thời gian tìm kiếm khó chịu cho đến khi tôi tìm ra cách đặt tên cho bộ điều khiển bằng chức năng cập nhật qua mạng. Theo nghĩa đen, chỉ cần bao gồm dòng này trong phần thiết lập mã của bạn trước "ArduinoOTA.onStart (" -
ArduinoOTA.setHostname ("IronMan");
vMicro với các mẹo Visual Studio
Đôi khi visual studio sẽ phát hiện một số vấn đề với các tệp sâu như tệp C ++ tiêu chuẩn và đưa ra một số lỗi. Hãy thử bật / tắt các loại thông báo lỗi khác nhau cho đến khi bạn chỉ gặp lỗi với dự án đang mở của mình chứ không phải bất kỳ tệp hỗ trợ nào. Bạn cũng có thể mở mã trong Arduino IDE và xem liệu nó có được biên dịch trong đó hay không hoặc nó có đưa ra mã lỗi hữu ích hơn không.
FastLED
Hãy nhắn tin cho tôi nếu Bản có thể hướng dẫn này đã xuất hiện được hơn một vài tuần và tôi vẫn chưa tìm ra cách đặt các chức năng tùy chỉnh của mình trên GitHub.
FastLED được liệt kê là tương thích với ESP8266, nhưng định nghĩa chân có thể không chính xác. Trong tài liệu cho FastLED, nó nói rằng bạn có thể thử bao gồm một trong các dòng sau trước khi #include
- // # xác định FASTLED_ESP8266_RAW_PIN_ORDER
- // # xác định FASTLED_ESP8266_NODEMCU_PIN_ORDER
- // # xác định FASTLED_ESP8266_D1_PIN_ORDER
Tuy nhiên, tôi đã thử cả ba và không bao giờ có tất cả các chân của tôi phù hợp. Hiện tại tôi đang sử dụng dòng cuối cùng và chỉ chấp nhận rằng khi tôi yêu cầu FastLED sử dụng chân D2, nó thực sự sử dụng chân D4 trên bộ điều khiển của tôi.
Mặc dù đèn của tôi chỉ là hàng nhái rẻ tiền của Neopixels của Trung Quốc, tôi vẫn bảo FastLED coi chúng như Neopixels trong thiết lập
- FastLED.addLeds (đã dẫn, NUM_LEDS);
- FastLED.setCorrection (Tiêu biểuLEDStrip);
- //FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps); // Hữu ích cho các dự án chạy bằng pin
- FastLED.setBrightness (globalBright);
Bước 8: Sản phẩm cuối cùng
Ta-da!
Vui lòng bình luận hoặc gửi email cho tôi câu hỏi - Tôi thích nội dung này và rất muốn giúp những người khác thực hiện các dự án thú vị. Kiểm tra trang web của tôi để biết một số dự án khác mà tôi đã thực hiện và một số bức ảnh của tôi: www.jacobathompson.com