รูปแสดงหลอด NeoPixel ในลักษณะต่างๆ

[ESP32] การใช้งาน NeoPixel บน ESP32

ESP32 Apr 16, 2019

สวัสดีครับผม หลังจากห่างหายกันไปเกือบปี 555+ นานไป ผมขอโทษผู้ที่สนใจและติดตามผมด้วยน่ะครับ ผมขอแก้ตัวไว้ก่อนเลยว่าช่วงนั้นเป็นช่วงที่ผมมีกิจกรรมแน่นมากไม่มีเวลาเลยผนวกกับมีงานแข่งขันมากกกมายย แต่ตอนนี้ผมจบ ม.6 ล่ะครับ และก็มีที่เรียนแล้วหล่ะครับ เพราะฉะนั้นจึงว่างๆ หน่อย รอเปิดเทอม ก็เลยมาขอแชร์ประสบการณ์และองค์ความรู้ที่ผมพอมีอยู่บ้างให้กับคนที่สนใจเรื่องราวต่างๆ เหล่านี้ครับ

เอาล่ะหลังจากแก้ตัวเสร็จ วันนี้ผมมีสิ่งหนึ่งมานำเสนอนั่นก็คือ Neopixel LED ครับ จริงๆ มันก็คือหลอด LED 3 สี RGB นั่นแหละครับเพียงแต่มันมีตัวประมวณผลของมันเล็กๆอยู่ (จุดเล็กๆ ดำๆ ในหลอดอ่ะครับ ลองสังเกตจากภาพด้านบนดูก็ได้) มันจะคอยทำหน้าที่ผสมแสงให้เราเพียงแค่เราเขียนโปรแกรมสั่งมันก็พอ โดยในวันนี้ผมจะมาแสดงให้ดูเชิญชมครับผม

รูปแสดงหลอด NeoPixel LED รุ่น WS2812B

คุณสมบัติ

ในท้องตลาดก็จะมีอยู่หลายรุ่นอยู่เหมือนกันครับแต่ส่วนมากที่พบเจอกันบ่อยๆ ก็จะเป็น WS2812 กับ WS2812B โดยผมจะอิง WS2812B เป็นหลักล่ะกันน่ะครับ

  • มันสามารถแสดงเฉดสีของหลอด R G B ต่อหลอด คือ 256 เฉดสี แต่เมื่อนำมาผสมแสงกันแล้วท่านจะได้เฉดสีทั้งหมด 256³ = 16,777,216 เฉดสี สุดยอดๆไปเลย
  • ตัวหลอดใช้การสื่อสารแบบ single line คือใช้สายเดียวในการสื่อสารข้อมูลน่ะครับ (ถ้าว่างผมจะเขียนแยกให้เกี่ยวกับระบบการสื่อสาร 1 สาย 2 สาย หรือ มากกว่านั้น)
  • ระยะทางในการสื่อสารระหว่างหลอด 2 หลอด ได้มากกว่า 5 เมตรครับ โดยไม่ต้องใช้วงจรขยายสัญญาณหรือวงจรอื่นๆ เลย
  • ความเร็วในการสื่อสารของ single line ในการส่งข้อมูลคือ 800 Kbps
  • ใช้งานที่แรงดันไฟ 3.5 ถึง 5.3 V (แนะนำให้ใช้งานที่ 5 V ครับผม) กินกระแสไม่เกิน 1 uA ครับ
  • คุณสมบัติอื่นๆ ก็ตามใน datasheet เลยครับ ตามนี้

ต่อไปก็เป็นวิธีการเชื่อมต่อใช้งาน

การต่อใช้งานก็ไม่ยากเลยครับเพราะมีแค่ 3 เส้นแค่นั้นแล้วก็ต่อแบบนี้เหมืแนกันหมดไม่ว่าจะกี่หลอดก็ตามครับ

อันนี้เป็นการต่อของผมผมใช้ terminal ต่อลงบอร์ดแล้วเอาสาย jumper ต่อกับ esp32 อีกที

ต่อไปติดตั้ง Library น่ะครับ

เริ่มแรกเปิด Library Manager ขึ้นมา โดยเข้าไปที่ Sketch > Incude Library > Manage Librarise …

เสร็จปุ๊บก็พิมพ์ที่ช่องค้นหา ค้นคำว่า “ neopixel ” เสร็จแล้วก็เลือก lib ที่เป็นของ Adafruit ที่เขียนว่า “ Adafruit NeoPixel ” จากนั้นคลิกปุ่ม Install ตรงมุมขวา รอติดตั้งสักแปบแล้ว กด Close เปิด Library Manager อีกครั้งเพื่ออัปเดต

Programming Time !

เอาหล่ะครับมาเริ่มกันที่โปรแกรม example เอาไว้ทดสอบก่อนว่าหลอด NeoPixel ของเรานั้นปกติโดยเริ่มที่ File > Examples > Adafruit NeoPixel > strandtest

โดยเราจะทำกสรแก้ไขในส่วนของหมายเลย pin ตามที่ท่านได้ต่อไว้บน esp32 และก็แก้ไขในส่วนของจำนวนหลอด NeoPixel ตอนนี้ผมใช้ 1 หลอด ผมก็แก้ไขจาก 60 เป็น 1 แล้วก็ลองกดอัปโหลดดูครับ

ผลลัพธ์ที่ได้ก็จะประมาณนี้ครับคือตัวหลอดจะส่องแสงออกมาหลายๆ สี

มาดูตัวโปรแกรมกันมั้งดีกว่า#include <Adafruit_NeoPixel.h>
#define PIN 6 // กำหนด pin สำหรับเชื่อมต่อAdafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800); // แทนที่ 60 ด้วยจำนวนหลอดvoid setup() {
strip.begin();
strip.show(); // สั่งให้ทุกหลอดโชว์สีออกมา(Defualt คือไม่แสดงอะไรเลย)
}void loop() {
strip.Color(255, 0, 0); //จะสั่งให้หลอดเป็นสี แดง
strip.Color(0, 255, 0); //จะสั่งให้หลอดเป็นสี เขียว
strip.Color(0, 0, 255); //จะสั่งให้หลอดเป็นสี น้ำเงิน
strip.Color(255, 255, 255); //จะสั่งให้หลอดเป็นสี ขาว
}

[บทสรุปส่งท้าย]

ก็ตามหัวข้อเลยครับท่านสามารถเอาไปใช้ได้เกือบเเทบทุกบอร์ดเลย Arduino , ESP หรือบอร์ดต่างๆ เพราะ Neopixel LED มีการสื่อสารแบบ single line หรือ monorail จึงใช้ได้กับทุกบอร์ดที่มี digital pin ครับ ทั้งนี้ทั้งนั้นการสั่งงานที่ผมแสดงให้ดูขั้นต้นก็เป็นพื้นฐานให้ชม แต่ขอเกริ่นไว้เลยว่ามันยังสามารถทำอะไรได้อีกเยอะเลยแล้วแต่ท่านนำไปใช้งาน ข้อดีของมันคือมันกินกระแสน้อยและใช้งานครอบคลุมได้มากกว่า ตัวอย่าง เช่น ทำไฟ led บอกสถานะเป็นต้นเมื่อก่อนอาจใช้หลอด led แบบเดิมๆ สีละหลอด แต่ตอนนี้ท่านสามารถใช้ neopixel เพียงหลอดเดียวแต่แสดงผลสีได้มากกว่ากันเยอะ

สุดท้ายนี้ก็ตามเดิมครับบอกแหล่งซื้อหาเอามาลองเล่นกันได้ที่ ArduinoAll ตาม LINK (arduinoall เป็นร้านที่ผมสั่งประจำครับ แหะๆ มียังอีกหลายร้านหรือสั่งจากจีนก็ถูกครับ) ราคาไม่แพงเลยครับถ้าเป็นหลอดเดียวแบบผมก็ 10 บาท และก็มีอีกหลายรูปแบบเลยครับทั้ง bar strip ring แล้วแต่เลือกมาใช้งานครับ สำหรับบทความหน้าจะเป็นเรื่องอะไรนั้นก็สามารถติดตามต่อกันได้ครับ ใครชอบหรืออยากแนะนำอะไรก็สามารถ comment ได้ครับ หรือหากต้องการสอบถามเพิ่มเติมก็ยินดีครับที่ FACEBOOK สำหรับวันนี้สวัสดีครับ …… สุขสันต์วันสงกรานต์ : )

Tags