- Adafruit 5X8 NeoPixel Shield สำหรับ Arduino
- การทำความเข้าใจกระบวนการสื่อสารระหว่าง Blynk App และ Arduino
- ส่วนประกอบที่จำเป็น
- Adafruit RGB LED Shield และ Arduino - การเชื่อมต่อฮาร์ดแวร์
- การกำหนดค่าแอปพลิเคชัน Blynk
- รหัส Arduino ควบคุม Adafruit WS2812B RGB LED Shield
- อัปโหลดรหัสไปยังบอร์ด Arduino
ในช่วงไม่กี่ปีที่ผ่านมาไฟ LED RGBกำลังได้รับความนิยมในแต่ละวันเนื่องจากมีสีที่สวยงามความสว่างและเอฟเฟกต์แสงที่ดึงดูดใจ นั่นคือเหตุผลว่าทำไมจึงถูกนำมาใช้เป็นของตกแต่งในหลาย ๆ สถานที่ตัวอย่างเช่นอาจเป็นบ้านหรือพื้นที่สำนักงาน นอกจากนี้เรายังสามารถใช้ไฟ RGB ในห้องครัวและในเครื่องเล่นเกมได้อีกด้วย พวกเขากำลังยังดีในห้องเด็กเล่นของเด็กหรือห้องนอนในแง่ของแสงอารมณ์ก่อนหน้านี้เราใช้ WS2812B NeoPixel LED และไมโครคอนโทรลเลอร์ ARM เพื่อสร้าง Music Spectrum Visualizer ดังนั้นอย่าลืมตรวจสอบว่าสิ่งนั้นน่าสนใจสำหรับคุณหรือไม่
นั่นคือเหตุผลที่ในโปรเจ็กต์นี้เราจะใช้แอพพลิเคชั่น Neopixel Based RGB LED matrix shield, Arduino และ Blynk เพื่อสร้างเอฟเฟกต์ภาพเคลื่อนไหวและสีสันที่น่าสนใจมากมายซึ่งเราจะสามารถควบคุมได้ด้วยแอพ Blynk มาเริ่มกันเลย !!!
Adafruit 5X8 NeoPixel Shield สำหรับ Arduino
NeoPixel Shield ที่เข้ากันได้กับ Arduino มีไฟ LED RGB ที่สามารถระบุแอดเดรสแยกกันสี่สิบดวงแต่ละอันมีไดรเวอร์ WS2812b ในตัวซึ่งจัดเรียงในเมทริกซ์ 5 × 8 เพื่อสร้างNeoPixel Shieldนี้ นอกจากนี้ยังสามารถเชื่อมต่อ NeoPixel Shields หลายตัวเพื่อสร้าง Shield ที่ใหญ่ขึ้นได้หากเป็นข้อกำหนด ในการควบคุมไฟ LED RGB จำเป็นต้องใช้ขา Arduino เดียวดังนั้นในบทช่วยสอนนี้เราจึงตัดสินใจใช้พิน 6 ของ Arduino เพื่อทำเช่นนั้น
ในกรณีของเราไฟ LED ใช้พลังงานจากขา 5V ในตัวของ Arduino ซึ่งเพียงพอสำหรับการเปิดไฟประมาณ "หนึ่งในสามของ LED" ที่ความสว่างเต็มที่ หากคุณต้องการจ่ายไฟ LED ให้มากขึ้นคุณสามารถตัดร่องรอยในตัวและใช้แหล่งจ่ายไฟ 5v ภายนอกเพื่อจ่ายไฟให้กับโล่โดยใช้ขั้ว 5V ภายนอก
การทำความเข้าใจกระบวนการสื่อสารระหว่าง Blynk App และ Arduino
เมทริกซ์ LED RGB 8 * 5 ที่ใช้ที่นี่มีไฟ LED RGB ที่กำหนดแอดเดรสแยกกันสี่สิบรายการโดยอิงตามไดรเวอร์ WS2812B มีการควบคุมสี 24 บิตและ 16.8 ล้านสีต่อพิกเซล สามารถควบคุมได้ด้วยวิธีการ "One wire control" นั่นหมายความว่าเราสามารถควบคุมพิกเซล LED ทั้งหมดได้โดยใช้พินควบคุมเดียว ในขณะที่ทำงานกับ LED ฉันได้อ่านแผ่นข้อมูลของ LED เหล่านี้ซึ่งฉันพบว่าช่วงแรงดันไฟฟ้าในการทำงานของโล่คือ 4 V ถึง 6 V และปริมาณการใช้กระแสไฟฟ้าพบได้ 50 mA ต่อ LED ที่ 5 V โดยมีสีแดงสีเขียว และสีน้ำเงินที่ความสว่างเต็มที่ มีการป้องกันแรงดันย้อนกลับบนพินไฟภายนอกและปุ่มรีเซ็ตบน Shield เพื่อรีเซ็ต Arduino นอกจากนี้ยังมีขาอินพุตแหล่งจ่ายไฟภายนอกสำหรับ LED หากไม่มีกำลังไฟเพียงพอผ่านวงจรภายใน
ดังที่แสดงในแผนภาพด้านบนเราจำเป็นต้องดาวน์โหลดและติดตั้งแอปพลิเคชัน Blynkบนสมาร์ทโฟนของเราซึ่งสามารถควบคุมพารามิเตอร์ต่างๆเช่นสีความสว่างได้ หลังจากตั้งค่าพารามิเตอร์แล้วหากมีการเปลี่ยนแปลงเกิดขึ้นกับแอปจะเป็นไปยังระบบคลาวด์ Blynk ที่พีซีของเราเชื่อมต่ออยู่และพร้อมที่จะรับข้อมูลที่อัปเดต Arduino Uno เชื่อมต่อกับพีซีของเราผ่านสาย USB โดยเปิดพอร์ตการสื่อสารด้วยพอร์ตสื่อสาร (COM Port) นี้สามารถแลกเปลี่ยนข้อมูลระหว่าง Blynk cloud และ Arduino UNO ได้ พีซีกำลังขอข้อมูลจาก Blynk cloud ในช่วงเวลาคงที่และเมื่อได้รับข้อมูลที่อัปเดตแล้วเครื่องจะโอนไปยัง Arduino และทำการตัดสินใจที่กำหนดโดยผู้ใช้เช่นการควบคุมความสว่างและสี RGB led RGB LED shield วางอยู่บน Arduino LED และเชื่อมต่อผ่านพินข้อมูลเดียวสำหรับการสื่อสารโดยค่าเริ่มต้นจะเชื่อมต่อผ่านพิน D6 ของ Arduinoข้อมูลอนุกรมที่ส่งจาก Arduino UNO จะถูกส่งไปยัง Neopixel shied ซึ่งจะสะท้อนบนเมทริกซ์ LED
ส่วนประกอบที่จำเป็น
- Arduino UNO
- 8 * 5 RGB LED Matrix shield
- สาย USB A / B สำหรับ Arduino UNO
- แล็ปท็อป / พีซี
Adafruit RGB LED Shield และ Arduino - การเชื่อมต่อฮาร์ดแวร์
WS2812B ไฟ LED Neopixelมีสามหมุดหนึ่งสำหรับข้อมูลและอีกสองใช้สำหรับอำนาจ แต่นี้เฉพาะ Arduino โล่ทำให้การเชื่อมต่อฮาร์ดแวร์ง่ายมากทุกสิ่งที่เราต้องทำคือสถานที่เมทริกซ์ Neopixel LED ที่ด้านบนของ Arduino UNO ในกรณีของเรา LED ใช้พลังงานจาก Arduino 5V Rail เริ่มต้น หลังจากวาง Neopixel Shield แล้วการตั้งค่าจะมีลักษณะดังนี้:
การกำหนดค่าแอปพลิเคชัน Blynk
Blynk เป็นแอปพลิเคชันที่สามารถทำงานบนอุปกรณ์ Android และ IOSเพื่อควบคุมอุปกรณ์ IoTและอุปกรณ์ต่างๆโดยใช้สมาร์ทโฟนของเรา ก่อนอื่นต้องสร้างอินเทอร์เฟซผู้ใช้แบบกราฟิก (GUI) เพื่อควบคุมเมทริกซ์ RGB LED แอปพลิเคชันจะส่งพารามิเตอร์ที่เลือกทั้งหมดจาก GUI ไปยัง Blynk Cloud ในส่วนของเครื่องรับเรามี Arduino เชื่อมต่อกับพีซีผ่านสายสื่อสารแบบอนุกรม ดังนั้นพีซีจึงขอข้อมูลจากคลาวด์ Blynk และข้อมูลเหล่านี้จะถูกส่งไปยัง Arduino เพื่อการประมวลผลที่จำเป็น เริ่มต้นด้วยการตั้งค่าแอปพลิเคชัน Blynk
ก่อนการตั้งค่าให้ดาวน์โหลดแอปพลิเคชัน Blynk จาก Google Play store (ผู้ใช้ IOS สามารถดาวน์โหลดได้จาก App Store) หลังจากการติดตั้งลงทะเบียนโดยใช้รหัสอีเมลและรหัสผ่านของคุณ
การสร้างโครงการใหม่:
หลังจากติดตั้งสำเร็จให้เปิดแอปพลิเคชั่นจากนั้นเราจะได้หน้าจอพร้อมตัวเลือก“ โครงการใหม่ ” คลิกที่มันและจะปรากฏหน้าจอใหม่ซึ่งเราต้องตั้งค่าพารามิเตอร์เช่นชื่อโครงการบอร์ดและประเภทการเชื่อมต่อ ในโครงการของเราเลือกอุปกรณ์ที่เป็น“ Arduino UNO ”และประเภทการเชื่อมต่อเป็น“ USB ” และคลิกที่“ สร้าง”
หลังจากสร้างโครงการสำเร็จเราจะได้รับID รับรองความถูกต้องทางไปรษณีย์ลงทะเบียนของเรา บันทึก ID การพิสูจน์ตัวตนเพื่อใช้อ้างอิงในอนาคต
การสร้างส่วนต่อประสานกราฟิกกับผู้ใช้ (GUI):
เปิดโครงการใน Blynk คลิกที่เครื่องหมาย "+" ซึ่งเราจะได้รับวิดเจ็ตที่เราสามารถใช้ในโครงการของเรา ในกรณีของเราเราต้องใช้ RGB Color Picker ซึ่งแสดงเป็น "zeRGBa" ดังที่แสดงด้านล่าง
การตั้งค่าวิดเจ็ต:
หลังจากลากวิดเจ็ตไปยังโปรเจ็กต์ของเราตอนนี้เราต้องตั้งค่าพารามิเตอร์ที่ใช้ในการส่งค่า RGB สีไปยัง Arduino UNO
คลิกที่ ZeRGBa จากนั้นเราจะได้หน้าจอที่มีชื่อว่าZeRGBa setting จากนั้นตั้งค่าตัวเลือกเอาต์พุตเป็น“ ผสาน ” และตั้งค่าพินเป็น“ V2” ซึ่งแสดงในภาพด้านล่าง
รหัส Arduino ควบคุม Adafruit WS2812B RGB LED Shield
หลังจากเสร็จสิ้นการเชื่อมต่อฮาร์ดแวร์รหัสจะต้องถูกอัปโหลดไปยัง Arduino คำอธิบายทีละขั้นตอนของรหัสแสดงอยู่ด้านล่าง
ขั้นแรกให้รวมไลบรารีที่จำเป็นทั้งหมด เปิด Arduino IDE แล้วไปที่แท็บSketchและคลิกที่ตัวเลือก รวม Library-> จัดการห้องสมุด จากนั้นค้นหา Blynk ในช่องค้นหาจากนั้นดาวน์โหลดและติดตั้งแพ็คเกจ Blynk สำหรับ Arduino UNO
ที่นี่ไลบรารี“ Adafruit_NeoPixel.h ” ใช้เพื่อควบคุม RGB LED Matrix หากต้องการรวมไว้คุณสามารถดาวน์โหลดไลบรารี Adafruit_NeoPixel ได้ จากลิงค์ที่ให้มา เมื่อคุณได้รับแล้วคุณสามารถรวมเข้ากับตัวเลือกรวม ZIP Library
#define BLYNK_PRINT DebugSerial #include #include
จากนั้นเรากำหนดจำนวน LED ซึ่งจำเป็นสำหรับเมทริกซ์ LED ของเราและเรากำหนดหมายเลขพินที่ใช้ในการควบคุมพารามิเตอร์ LED
# กำหนด PIN 6 # กำหนด NUM_PIXELS 40
จากนั้นเราต้องใส่ ID การพิสูจน์ตัวตนแบบกะพริบในอาร์เรย์ รับรอง ความถูก ต้อง ซึ่งเราได้บันทึกไว้ก่อนหน้านี้
ถ่าน auth = "HoLYSq-SGJAafQUQXXXXXXXX";
ที่นี่หมุดอนุกรมของซอฟต์แวร์ใช้เป็นคอนโซลดีบัก ดังนั้นหมุด Arduino จึงถูกกำหนดให้เป็นอนุกรมดีบักด้านล่าง
# รวม
ภายในการตั้งค่าการสื่อสารแบบอนุกรมจะเริ่มต้นโดยใช้ฟังก์ชัน Serial.begin , blynk เชื่อมต่อโดยใช้ Blynk.begin และใช้ pixels.begin () LED Matrix จะเริ่มต้น
การตั้งค่าเป็นโมฆะ () { DebugSerial.begin (9600); pixels.begin (); Serial.begin (9600); Blynk.begin (Serial, auth); }
ภายใน วง () เราได้ใช้ Blynk.run () ,ซึ่งการตรวจสอบสำหรับคำสั่งเข้ามาจาก blynk GUI และดำเนินการการดำเนินงานตาม
ห่วงเป็นโมฆะ () { Blynk.run (); }
ในขั้นตอนสุดท้ายพารามิเตอร์ที่ส่งมาจากแอปพลิเคชัน Blynk จะต้องได้รับและประมวลผล ในกรณีนี้พารามิเตอร์ถูกกำหนดให้กับพินเสมือน“ V2” ตามที่กล่าวไว้ก่อนหน้านี้ในส่วนการตั้งค่า ฟังก์ชัน BLYNK_WRITE เป็นฟังก์ชัน inbuilt ที่ถูกเรียกใช้เมื่อใดก็ตามที่สถานะ / ค่าของพินเสมือนที่เกี่ยวข้องเปลี่ยนไป เราสามารถรันโค้ดภายในฟังก์ชันนี้ได้เช่นเดียวกับฟังก์ชัน Arduino อื่น ๆ
ที่นี่ฟังก์ชัน BLYNK_WRITE ถูกเขียนขึ้นเพื่อตรวจสอบข้อมูลขาเข้าที่พินเสมือน V2 ดังที่แสดงในส่วนการตั้งค่ากะพริบข้อมูลพิกเซลสีจะถูกรวมเข้าด้วยกันและกำหนดให้กับพิน V2 ดังนั้นเราจึงต้องยกเลิกการรวมอีกครั้งหลังจากถอดรหัส เนื่องจากในการควบคุมเมทริกซ์พิกเซล LED เราจึงต้องการข้อมูลพิกเซลสีทั้ง 3 สีเช่นแดงเขียวและน้ำเงิน ดังแสดงในโค้ดด้านล่างดัชนีสามตัวของเมทริกซ์ถูกอ่านเช่น param.asInt () เพื่อรับค่าของสีแดง ในทำนองเดียวกันค่าอื่น ๆ ทั้งหมดสองค่าได้รับและจัดเก็บไว้ในตัวแปร 3 ตัว จากนั้นค่าเหล่านี้จะถูกกำหนดให้กับเมทริกซ์พิกเซลโดยใช้ฟังก์ชัน pixels.setPixelColor ดังที่แสดงในโค้ดด้านล่าง
ที่นี่ มีการใช้ฟังก์ชัน pixels.setBrightness () เพื่อควบคุมความสว่างและ ฟังก์ชัน pixels.show () ใช้เพื่อแสดงสีที่ตั้งไว้ใน Matrix
BLYNK_WRITE (V2) { int r = param.asInt (); int g = param.asInt (); int b = param.asInt (); pixels.clear (); pixels.setBrightness (20); สำหรับ (int i = 0; i <= NUM_PIXELS; i ++) { pixels.setPixelColor (i, pixels.Color (r, g, b)); } pixels.show (); }
อัปโหลดรหัสไปยังบอร์ด Arduino
ก่อนอื่นเราต้องเลือก PORT ของ Arduino ภายใน Arduino IDE จากนั้นเราต้องอัปโหลดรหัสไปยัง Arduino UNO หลังจากอัปโหลดสำเร็จให้จดหมายเลขพอร์ตซึ่งจะใช้สำหรับการตั้งค่าการสื่อสารแบบอนุกรมของเรา
หลังจากนี้ค้นหาโฟลเดอร์สคริปต์ของไลบรารี Blynk บนพีซีของคุณ ได้รับการติดตั้งเมื่อคุณติดตั้งไลบรารีของฉันอยู่ใน
“ C: \ Users \ PC_Name \ Documents \ Arduino \ libraries \ Blynk \ scripts”
ในโฟลเดอร์สคริปต์ควรมีไฟล์ชื่อ“ blynk-ser.bat”ซึ่งเป็นไฟล์แบตช์ที่ใช้สำหรับการสื่อสารแบบอนุกรมซึ่งเราจำเป็นต้องแก้ไขด้วย notepad เปิดไฟล์ด้วย notepad และเปลี่ยนหมายเลขพอร์ตเป็นหมายเลขพอร์ต Arduino ของคุณซึ่งคุณได้บันทึกไว้ในขั้นตอนสุดท้าย
หลังจากแก้ไขแล้วให้บันทึกไฟล์และเรียกใช้ไฟล์แบตช์โดยดับเบิลคลิกที่ไฟล์ จากนั้นคุณจะต้องเห็นหน้าต่างดังที่แสดงด้านล่าง:
หมายเหตุ: หากคุณไม่สามารถเห็นหน้าต่างนี้ที่แสดงด้านบนและได้รับแจ้งให้เชื่อมต่อใหม่อาจเป็นเพราะข้อผิดพลาดในการเชื่อมต่อพีซีกับ Arduino shield ในกรณีนั้นให้ตรวจสอบการเชื่อมต่อ Arduino ของคุณกับพีซี หลังจากนั้นตรวจสอบว่าหมายเลขพอร์ต COM แสดงอยู่ใน Arduino IDE หรือไม่ หากแสดงพอร์ต COM ที่ถูกต้องแสดงว่าพร้อมดำเนินการต่อ คุณควรเรียกใช้ไฟล์แบตช์อีกครั้ง
การสาธิตขั้นสุดท้าย:
ถึงเวลาทดสอบวงจรและการทำงานของวงจร เปิดแอปพลิเคชัน Blynk และเปิด GUI แล้วคลิกที่ปุ่ม Play หลังจากนั้นคุณสามารถเลือกสีที่คุณต้องการเพื่อให้แสดงบน LED Matrix ดังที่แสดงด้านล่างในกรณีของฉันฉันได้เลือกสีแดงและสีน้ำเงินมันจะแสดงบนเมทริกซ์
ในทำนองเดียวกันคุณสามารถลองสร้างภาพเคลื่อนไหวที่แตกต่างกันโดยใช้เมทริกซ์ LED เหล่านี้โดยปรับแต่งการเข้ารหัสเล็กน้อย