Featured

สร้างสีสันให้เสื้อ: ใส่ NeoPixels shirt board

สวัสดีครับ หลังจากที่ทิ้งไว้นานนนนนนนนน… มาก ในที่สุดก็ได้เวลาปัดฝุ่นกลับมาเขียน blog สักที (ฮา 😂😂)

โปรเจ็กที่เอามาเล่าให้ฟังวันนี้ก็ยังวนๆ อยู่กับ IOT และ ESP8266 ครับ จากหัวข้อก็คงรู้แล้วนะครับว่ามันคือ LED matrix ใส่เสื้อ ให้มันเจิดจ้ายิ่งกว่า disco floor!

ทำทำไม?

เรื่องมันมีอยู่ว่าที่บริษัที่ผมทำงานอยู่เค้าจัดทริปปาร์ตี้กันที่โรงแรม แล้วกำหนดธีม “Neon” ให้แต่งตัวกันไป ตอนแรกผมกะว่าน่าจะเอา EL wire แล้วทำให้มันเต้นๆ หรือแม้กระทั่งทำ electroluminiscent shirt (มันคือสีที่เรืองแสงเมื่อมีไฟฟ้าผ่าน ถ้านึกไม่ออก ลองดูตัวอย่างนี้ดูครับ) แต่พอเห็นราคาแล้วผมถึงกับต้องถอยเลยทีเดียว จังหวะเดียวกัน ผมเห็น video ของ Andreas Spiess เกี่ยวกับ NeoPixel แล้วน่าสนใจดี เลยตัดสินใจว่าจะทำอันนี้แหละ

ทำอะไร

สำหรับโปรเจ็กนี้ ผมทำ LED matrix ขนาด 12*8 ใส่ในเสื้อสีขาว แล้วใช้ ESP8266 ทำให้มันแสดงสีสันต่างๆ แล้วใช้โปรแกรม Jinx คุมรูปแบบสีสัน/รูปแบบการแสดงผลขึ้นมา

จริงๆ อยากทำเป็นแอพบนมือถือให้กดเปลี่ยนรูปแบบ (ต่อไปผมจะเรียกว่า scene) ด้วยซ้ำ แต่หลังจากที่ทำบอร์ด LED เสร็จตอนตี 3 เลยตัดออกไป กดเอาจาก notebook เอา (แต่ที่สุดก็กดผ่านมือถือได้อยู่ดี เดี๋ยวจะบอกว่าทำไงครับ 🙂)

อะไรคือ NeoPixel

จริงๆ มันก็คือ RGB LED นี่แหละครับ แต่ข้อดีที่เหนือกว่าแบบอื่นคือ

  • ใช้ไฟ 5V ได้ (นั่งคือเราสามารถต่อตรงจาก power bank ที่มีอยู่แล้วได้เลย)
  • ใช้สาย data แค่เส้นเดียว
  • มาเป็น LED strip (มาเป็นยาวๆ ตัดเอาได้ตามใจ)
  • ถูกมากกกกกกก… ผมซื้อจาก Aliexpress 4 เมตรแบบ 60 ดวง/เมตร แบบมีซิลิโคนบน LED กันน้ำสาด ราคาแค่ราวๆ 500 บาทเองครับ!

ทำยังไงไปบ้าง

หลักๆ ที่ผมต้องทำมี 3 ส่วนหลักๆ ครับ

ส่วนอุปกรณ์

อุปกรณ์ที่ใช้: LED board, controller, power bank

ส่วนนี้นอกจาก NeoPixel ที่ซื้อมาจาก Ali แล้ว ก็ใช้ของที่มีอยู่เดิมอยู่แล้วครับ ตัวบอร์ดที่รับข้อมูลและขับ LED ก็ใช้ ESP8266 ได้เลย ไฟก็เอามาจาก micro USB ที่ต้องต่อเพิ่มมีแค่ 2 อย่างครับ

  1. วงจรแปลงสัญญาณ 3.3V จาก ESP เป็น 5V เนื่องจากเราจ่ายไฟ USB ตรงให้ LED สาย data ที่จะต้องส่งให้ก็ต้องเป็น 5V เหมือนกัน ตรงนี้ผมใช้แค่ MOSFET กับตัวต้านทานช่วยแปลงให้ ถ้าใครสนใจ ผมแนบ schematic ใน Github ของโปรเจ็กแล้วครับ
  2. อุปกรณ์ “ป้องกัน LED เสียหาย” ตรงนี้จริงๆ ก็มีแค่ capacitor ที่ใหญ่นิดนึงเอาไว้กันไฟกระชากเวลาเปิดไฟกระพริบแบบสว่างมากๆ ครับ นึกถึงเวลาเราขับข้าๆ แล้วอยู่ดีๆ ก็เหยียบคันเร่งสุดเท้าครับ ถ้าไม่มีอะไรรั้งมีหัวคะมำแหง
board LED ครับ สายนี่อย่างเละ

ที่งานหยาบที่สุดน่าจะเป็นตัวบอร์ด LED นี่แหละครับ เนื่องจากเป็นงานไม่ซีเรียสมาก แถมออกจะรีบหน่อยๆ ด้วย เลยเอา LED แปะบนแผ่นไม้ขนาด A4 แล้วบัดกรีต่อสายบนนั้นเลย เวลาใช้ก็เอาแผ่นอะครีลิคปิดทับกันเผลอแตะขั้วไฟเข้า (ตรงนี้ใครอยากทำตาม ผมแนะนำว่าแผ่นรองควรเป็นพลาสติกที่จอตามร่างกายจะดีกว่าครับ ผมลองของผมแล้วมันเก้งก้างเหลือเกิน)

เวลาใส่ LED board จริงๆ
เวลาใส่ LED board จริงๆบอร์ดอยู่ใต้เสือขาว controller กับ power bank อยู่ในกระเป๋ากางเกง

เวลาใส่ในเสื้อ ตอนแรกผมลองใช้เชือกแขวนคอแล้วปรากฎว่ามันแกว่งไปมา ผมเลยเปลี่ยนมาใช้คลิปหนีบกระดาษหนีบมันกับเสื้อชั้นในมันซะเลย สุดท้ายก็เอาเสื้อขาวเนื้อผ้าบางๆ หน่อยมาปิดทับ วิธีนี้นอกจากจะช่วยกลบเกลื่อนสายไฟที่ระโยงระยางแล้ว ยังช่วยเกลี่ยแสงให้มันฟุ้งๆ หน่อยๆ ด้วยครับ

ตอนติดตั้งบอร์ด
ตอนติดตั้งบอร์ดตอนแรกใช้เชือกห้อยคอ แต่ลองแล้วมันแกว่งๆ เลยใช้คลิปหนีบเอา

ส่วน firmware

ส่วนนี้เนื่องจากผมต้องการให้การควบคุมแสงทั้งหมดมาจาก PC หรือมือถือไปเลย ก็เลยเพียงแต่เขียนแค่ให้มันเชื่อมต่อ Wi-Fi ที่ปล่อยมาจากมือถือ แล้วให้มันรับสตรีมข้อมูลผ่าน TPM2.net protocol ไปเลย ซึ่งเจ้า TPM2.net จริงๆ ก็ไม่มีอะไรมากเหมือนกับ แค่รับ packet ผ่าน UDP มี header กำหนดหน้าที่นิดหน่อย ที่เหลือก็เป็นข้อมูลสดๆ มาเลย ไม่มี error correction อะไรเลย 😅

ส่วน application

ตัวอย่างโปรแกรม Jinx

อย่างที่ผมบอกไปข้างต้นครับ ผมใช้โปรแกรม Jinx ควบคุมสัญญาณทั้งหมดเลย ตรงนี้จะวุ่นวายนิดหนึ่งตอน setup เพราะเราต้องหา IP address ของ ESP ที่เราใช้ฯ แล้วต้องกำหนดขนาดและวิธีการส่งข้อมูล แต่หลังจากที่กด Start output แล้วไฟขึ้น ที่เหลือก็ขึ้นอยู่กับความมันส์และจินตนาการของเราแล้วครับ ตัวโปรแกรมนี้เราสามารถสร้าง effect ได้หลายแบบมาก มันทั้งที่สุ่มมาเอง หรือเต้นตามเสียงเพลงก็ได้ จะเอามายำรวมกันก็ได้ แล้ว save เป็น scene ต่างๆ ไว้ให้กดเรียกใช้ง่ายๆ (?) ได้ด้วย เวลาใช้งานจริง ก็เพียงแต่เปิด show mode ขึ้นมา แล้วจะใช้อะไรก็กดเอาครับ

Show mode ของ Jinx

ส่วนที่ผมบอกว่ากดเอาจากมือถือได้ จริงๆ ก็คือใช้พวกโปรแกรม remote desktop เข้าไปกดจากหน้า show mode ของโปรแกรมของมันนั่นแหละครับ 😂😂 ถ้าไม่สนใจว่าจะอ่านชื่อ scene ออกก็ถือว่าใช้ง่ายอยู่ครับ กดปุ่ม scene ก็เปลี่ยนสวยๆ เลย

อยากเห็น demo แล้ว

จัดไปครับ!

แล้วสุดท้ายเป็นไงมั่ง

หลายคนก็ชมนะครับว่าดูน่าตื่นตาตื่นใจดี แต่หลายคนก็กังวลเรื่องความปลอดภัยของบอร์ดว่ามันจะทำไฟช็อตมั้ย ซึ่งเอาจริงๆ ผมก็ไม่แปลกใจเท่าไหร่นะ 🤔

อยากลองทำบ้าง/ขอดู code หน่อย

ใครสนใจพวกข้อมูลทางเทคนิคหรืออยากเห็น detail ผมอัพโหลดไว้ใน Github Poor-man-NeoPixel-board นะครับ ใครจะเอาไปยำต่อก็ตามสบายครับ เป็น MIT license

สุดท้ายนี้ ผมต้องขอบคุณหลายๆ คนที่แนะนำข้อมูล และต้องขอบใจพอสมากที่อุตส่าห์ไปหาอุปกรณ์ที่ขาดมาให้ ยอมน้ำใจจริงๆ

ใครมีข้อติชม หรืออยากถามอะไร ทิ้ง comment ไว้ได้เหมือนเคยครับ

แล้วพบกันใหม่ครับ