กลับไปหน้ารวมไฟล์
christmas-tree-with-150-digital-led-pixels-e55c53.md

ชื่อโปรเจกต์: ต้นคริสต์มาสพร้อม LED Pixel แบบดิจิทัล 150 ดวง

0. The Project

อยู่มาวันหนึ่ง ผมตัดสินใจเปลี่ยนหลอดไฟบนต้นคริสต์มาสของผม เพื่อปรับแต่งสีของหลอดไฟและสร้างแอนิเมชันของตัวเอง!

บนเว็บไซต์ของ Adafruit ผมพบว่า LED pixel WS2801 ดิจิทัล RGB แบบบาง ขนาด 12 มม. ชนิด diffused นั้นเป็นแบบ addressable (คุณสามารถสั่งการ LED แต่ละดวงได้ว่าจะให้ทำอะไรและเมื่อไหร่!) และสามารถควบคุมได้ด้วยบอร์ด Arduino MEGA 2560 rev3 (ผมซื้อ LED มาจากผู้จำหน่ายรายอื่น)

ผมได้เพิ่ม Real Time Clock (RTC) chip เข้าไปในโปรเจกต์ของผม เพื่อให้ Arduino ได้เวลาจริง สายไฟจะเสียบปลั๊กไฟไว้ตลอดเวลา แต่ต้นไม้จะเปิดไฟเฉพาะตั้งแต่ 17.00 น. ถึง 8.00 น. เท่านั้น!

Adafruit ได้ช่วยให้ผมทำโปรเจกต์นี้สำเร็จด้วยบทช่วยสอนเฉพาะสำหรับ LED WS2801! ลองดูสำหรับรายละเอียดเพิ่มเติมและข้อมูลที่แม่นยำยิ่งขึ้น!

หากคุณใช้ LED รุ่นอื่น โปรดอ้างอิงจากคู่มือ/คำแนะนำสำหรับการเดินสายไฟและการเขียนโค้ด หาก LED เหล่านั้นเข้ากันได้กับ FastLED โค้ดจะต้องมีการเปลี่ยนแปลงเพียงเล็กน้อยเท่านั้น!

1. Assembling and wiring

ผมแนะนำให้คุณทดสอบโปรเจกต์ก่อนที่จะนำ LED ไปติดตั้งบนต้นไม้!

เชื่อมต่อสาย LED เข้าด้วยกันโดยใช้ขั้วต่อ อินพุต 4 ขาบนแถบควรเป็น:

  • RED -> 5V
  • WHITE -> GND
  • BLUE -> DATA
  • GREEN -> CLOCK

เชื่อมต่อขา DATA ของสายเข้ากับ PIN 2 ของ Arduino และขา CLOCK เข้ากับ PIN 3 ของ Arduino ( หมายเหตุ: สีของสาย data และ clock อาจสลับกันได้ ให้ดูเครื่องหมายบน LED chip แต่ละดวง)

Real Time Clock ( RTC ) DS3231 ช่วยให้ Arduino ได้เวลาจริง เนื่องจากชิปบนบอร์ดไม่แม่นยำพอที่จะรักษาเวลาได้นานหลายชั่วโมงและหลายวัน เชื่อมต่อขา SDA เข้ากับ PIN 20 ของ Arduino และขา SCL เข้ากับ PIN 21 ของ Arduino

2. Power

พาวเวอร์ซัพพลาย 5V 10A เหมาะสำหรับ LED 150 ดวง LED WS2801 แต่ละดวงต้องการกระแส 60mA ดังนั้น LED 50 ดวงต้องการ 3A; LED 150 ดวงต้องการ 9A

เชื่อมต่อแจ็ค 2.1 มม. ของพาวเวอร์ซัพพลายเข้ากับอะแดปเตอร์ตัวเมีย ("2.1mm to screw/terminal block") เชื่อมต่อ สายไฟ 6 เส้นเข้ากับอะแดปเตอร์ (หรือใช้ BREADBOARD เพื่อแยกสายไฟด้วยวิธีที่ง่ายกว่า):

  • 2 เส้น ( 1 เส้น 5V และ 1 เส้น GND) สำหรับ LED 75 ดวงแรก -> ระหว่าง LED ดวงที่ 50 และ 51 ควรมีสายไฟคู่หนึ่ง มิฉะนั้น ให้เชื่อมต่อที่ขั้วต่อของสายไฟ;
  • 2 เส้น ( 1 เส้น 5V และ 1 เส้น GND) สำหรับ LED 75 ดวงสุดท้าย -> เสียบ ระหว่าง LED ดวงที่ 100 และ 101;
  • 2 เส้น ( 1 เส้น 5V และ 1 เส้น GND) ไปยัง BREADBOARD เพื่อจ่ายไฟให้ Arduino และ RTC.

หมายเหตุ: ตรวจสอบให้แน่ใจว่าได้เชื่อมต่อขั้วบวก (+) เข้ากับ 5V และขั้วลบ (-) เข้ากับ GND. สายไฟสามารถบัดกรีได้ โดยเฉพาะอย่างยิ่งในกรณีของโปรเจกต์ที่ถาวร/ภายนอกอาคาร คุณสามารถใช้ Header Pin Housing Kit เพื่อสร้างสายจัมเปอร์ของคุณเองได้! สาย Clock และ data ต้องเชื่อมต่อที่จุดเริ่มต้นของสายเท่านั้น การจ่ายไฟควรแบ่งตลอดทั้งสายอย่างน้อย 2 จุด ด้วยวิธีนี้ LED แต่ละดวงจะมีกำลังไฟเพียงพอ!

เมื่อใช้ BREADBOARD ให้เชื่อมต่อ สายไฟ เข้ากับสายจัมเปอร์อื่นๆ ไปยัง Arduino (ขา 5V และขา GND ) และไปยัง RTC (ขา 5V และขา GND )

3. Code

เพื่อให้โค้ดทำงานได้อย่างถูกต้อง คุณต้อง ติดตั้ง ไลบรารีต่อไปนี้บนคอมพิวเตอร์ของคุณ:

  • FastLED by FastLED (click Clone or download then Download ZIP)

3.1 การตั้งค่าเวลา

อัปโหลดไฟล์ Example ชื่อ TimeRTCSet ไปยัง Arduino ( File -> Examples -> Time -> TimeRTCSet ) หรือดาวน์โหลดและรันไฟล์ RTC_set.ino ( ดูในส่วน Code ) จากนั้นเปิด Serial Monitor ( Tools -> Serial monitor ) ซึ่งจะคัดลอกเวลาจากคอมพิวเตอร์ของคุณไปยัง RTC คุณต้องทำขั้นตอนนี้เพียงครั้งเดียวเท่านั้น

หมายเหตุ: จะมีข้อผิดพลาดเล็กน้อยประมาณสองสามวินาทีในเวลาของ RTC เนื่องจากการซิงโครไนซ์ระหว่าง PC และบอร์ด นอกจากนี้ ผมแนะนำให้คุณใช้โค้ดนี้ มันเป็นวิธีที่ง่ายที่สุดที่ผมเจอในอินเทอร์เน็ต แต่คุณสามารถใช้ตัวอย่างที่มาพร้อมกับไลบรารีได้

คุณสามารถตรวจสอบเวลาที่บันทึกไว้ได้โดยการรันไฟล์ RTC_read.ino (ดาวน์โหลดได้ที่ส่วนท้ายของหน้านี้)

3.2 การเขียนโค้ดสำหรับแอนิเมชัน

ตอนนี้คุณสามารถดาวน์โหลดไฟล์ Christmas_tree.ino
(นี่คือโค้ดหลัก) และอัปโหลดไปยัง Arduino ได้เลย มันพร้อมใช้งานแล้ว แต่คุณสามารถปรับแต่งได้! สีต่างๆ ถูกตั้งค่าผ่าน named HTML web colors

มี 3 แอนิเมชัน ( ผมคิดว่าที่ดีที่สุดคือแบบ Adafruit's rainbow ) ผมได้สร้างแอนิเมชันอีกสองแบบ: ทุก 300 ms (= 0.3 วินาที) LED บนต้นไม้จะเปลี่ยนสีเป็นสีแดง, ส้ม, เหลือง, เขียว, น้ำเงิน ฯลฯ ผมชอบต้นไม้ที่มีแอนิเมชันที่ค่อนข้างช้า; ทุกๆ วินาทีที่คุณมองต้นคริสต์มาส ไฟบางดวงจะมีสีที่แตกต่างจากเดิม แต่คุณจะไม่ถูกไฟที่กระพริบตาบอด

โค้ดจะเปิดไฟ LED ตอน 17.00 น. และจะปิดตอน 8.00 น. ในตอนเช้า ระหว่างวัน Arduino จะตรวจสอบเวลาทุก 10 นาทีเพื่อดูว่าเป็นเวลา 17.00 น. หรือไม่! (นี่เป็นวิธีที่ดีที่สุดในการแก้ปัญหาการไม่มีรีเลย์)

ผมเขียนโค้ดเวอร์ชันที่อัปเดตแล้ว

ข้อมูล Frontmatter ดั้งเดิม

title: "Christmas Tree with 150 Digital LED Pixels"
description: "Arduino-controlled Christmas Tree lit by 150 digital RGB LED pixels. The RTC chip switches on and off the tree at the planned hours!"
author: "martinoghisleni"
category: "Lights & LEDs"
tags:
  - "rtc"
  - "pixels"
  - "led"
  - "christmas"
  - "digital led pixels"
views: 23008
likes: 12
price: 2450
difficulty: "Easy"
components:
  - "1x Real Time Clock (RTC) DS3231"
  - "1x Jumper Wires"
  - "1x Electronic Wire (20AWG)"
  - "1x Arduino Mega 2560"
  - "1x (External) Junction Box"
  - "1x Soldering iron (generic)"
  - "3x 12mm Diffused Thin Digital RGB LED Pixels WS2801 (Strand of 50)"
  - "1x Half-size Breadboard"
  - "1x DC Power supply - 5V 10A"
  - "1x Christmas Tree"
  - "1x Female DC Power adapter - 2.1mm jack to screw terminal block"
  - "1x Insulating tape"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://projects.arduinocontent.cc/0a931904-e8e0-43ac-9727-0c26890b3b98.ino"
  - "https://projects.arduinocontent.cc/d3f8dd9f-c03e-4534-af24-9649fe26b3e9.ino"
  - "https://projects.arduinocontent.cc/4ddcdf78-4a0c-44f6-be77-592266f250f8.ino"
  - "https://projects.arduinocontent.cc/4ddcdf78-4a0c-44f6-be77-592266f250f8.ino"
  - "https://projects.arduinocontent.cc/d3f8dd9f-c03e-4534-af24-9649fe26b3e9.ino"
documentationLinks: []
passwordHash: "6999b178fa2bbbb7aeff05fdbb8ce67a3f7d18608ad9510e47cbcf6b61265fdf"
encryptedPayload: "U2FsdGVkX19aZiat0SrXB2qwqLG0SL3htAycQc/Q0TF0wLXyuWMuxH7IOx667dxvrydUDM1ic3CgaMqgWUnYU6HwjOnJFetM7WpG+5DNlK4="
seoDescription: "Build an Arduino-controlled Christmas Tree with 150 digital RGB LED pixels and an RTC chip for automated power scheduling."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/christmas-tree-with-150-digital-led-pixels-e55c53_cover.jpg"
lang: "th"