กลับไปหน้ารวมไฟล์
a-christmas-tree-pcb-ornament-fe5d4d.md

ชื่อโปรเจกต์: ต้นคริสต์มาส, แผงวงจร PCB ประดับ

แนวคิด

เรื่องราวต่อไปนี้เผยแพร่ครั้งแรกบน บล็อก ของผม คุณสามารถดูคำแนะนำโดยละเอียดเพิ่มเติมเกี่ยวกับวิธีสร้างโปรเจกต์นี้ได้ที่ Instructables.

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

อุปกรณ์เหล่านี้เหมาะสำหรับโอกาสนี้: มีความรื่นเริง, ทำง่าย, พิเศษ และด้วยความช่วยเหลือจาก เครื่องพิมพ์ 3D ที่เพิ่งได้มาใหม่ มันสามารถปรับแต่งเฉพาะบุคคลได้! ก่อนที่จะเริ่มต้น ผมได้รวบรวมข้อกำหนดที่ระบบควรจะทำได้:

  • ควรจะดูน่าดึงดูด
  • ต้องใช้งานง่าย
  • ต้องใช้แบตเตอรี่ โดยยิ่งเล็กและถูกยิ่งดี
  • ควรใช้อุปกรณ์ราคาถูกและหาได้ง่าย
  • ควรจะสามารถปรับแต่ง (hackable) และตั้งโปรแกรมใหม่ได้ เพื่อส่งเสริมการทดลองสร้าง

จากข้อมูลข้างต้น จึงได้สร้างแผงวงจร PCB รูปต้นคริสต์มาสพร้อม [microcontroller] ATTiny25 ที่ควบคุมหลอด LED ต่างๆ! ประการแรก รูปร่างต้นไม้ [tree shape] ออกแบบได้ง่ายและเข้ากับเทศกาลเป็นอย่างมาก ถัดไป ผมจำเป็นต้องเลือก [microcontroller]

วัสดุ

ในตอนแรกผมต้องการบางอย่างที่ราคาถูก ดังนั้นความคิดแรกของผมคือการใช้ ATMega32A-AU คุณอาจคิดว่าเป็นการเลือกที่แปลก แต่ผมต้องแจ้งให้ทราบว่าผมมี [microcontroller] นี้อยู่แล้วหลายตัว เพราะผมซื้อมาโดยบังเอิญ (เข้าใจผิดว่าเป็น ATMega32U4) จาก Huaqiangbei ในขณะที่ผมอยู่ที่เซินเจิ้น อย่างไรก็ตาม ความคิดนี้ถูกยกเลิกอย่างรวดเร็ว เนื่องจาก [MCU] รุ่นนี้ไม่ได้ประหยัดพลังงานเป็นพิเศษ และเนื่องจากมันไม่ใช่รุ่นที่ใช้กันอย่างแพร่หลายที่สุด ผมจะต้องใช้เวลามากในการศึกษา [datasheet] เพื่อตั้งโปรแกรม ดังนั้น แม้ว่ามันอาจจะเป็นโซลูชันที่ถูกที่สุด แต่ก็จะไม่ประหยัดพลังงานที่สุดหรือไม่เป็นมิตรต่อ [hacker] ที่สุด แทนที่จะเป็นเช่นนั้น ผมไปที่ร้านค้าอิเล็กทรอนิกส์ในท้องถิ่นและมองหา [AVR microcontroller] ที่ถูกที่สุดที่มีในสต็อก นั่นคือ ATTiny25 ในแพ็คเกจ DIP-8 ซึ่งจะทำให้สามารถบัดกรีและถอดออกได้ง่ายหากใช้ซ็อกเก็ต ATTiny25 เป็นเหมือนญาติของ ATTiny85 ยอดนิยมที่ผมเคยใช้มาก่อน ([1], [2]) โดยมีหน่วยความจำน้อยกว่า ในกรณีนี้ หน่วยความจำที่น้อยไม่ใช่ปัญหาสำหรับเรา เนื่องจากไม่จำเป็นต้องดำเนินการที่ซับซ้อนหรือมากเกินไป

พลังงานต่ำ

เพื่อตอบสนองความต้องการพลังงานต่ำของระบบในพื้นที่จำกัด ทางเลือกหนึ่งคือการใช้แบตเตอรี่ LiPo ขนาดเล็ก อย่างไรก็ตาม แบตเตอรี่เหล่านั้นค่อนข้างแพงและจะต้องใช้อุปกรณ์เสริมเพื่อชาร์จ ทางเลือกที่สะดวกกว่ามากคือแบตเตอรี่แบบเหรียญ CR2032 ซึ่งถูกเลือกให้เป็นแหล่งพลังงาน นอกจากนี้ [microcontroller] ควรจะอยู่ในโหมด [deep sleep] เสมอ จนกว่าผู้ใช้จะกดปุ่ม จากนั้นลำดับการกะพริบของแสงจะเริ่มต้นขึ้น หลังจากนั้น [MCU] จะกลับเข้าสู่โหมด [sleep] ผมไม่เคยทำให้ ATTiny เข้าสู่โหมด [sleep] มาก่อน และไม่เคยทำให้มันตื่นขึ้นโดยใช้ [external interrupt] แต่โชคดีที่ Nick Gammon ได้กล่าวถึงหัวข้อนั้นไว้แล้วสำหรับผม นอกจากนี้ เนื่องจากผมไม่ต้องการขับเคลื่อน LED 7 ดวงโดยตรงจาก [pin] ของ [microcontroller] (แม้ว่านั่นอาจจะไม่ใช่ปัญหา เนื่องจาก LED ไม่ได้เปิดพร้อมกันทั้งหมด) จึงมีการใช้ 2N7000 MOSFET โดยเลือกใช้ MOSFET แทน [NPN transistor] เนื่องจาก MOSFET ไม่ได้ใช้พลังงานที่สำคัญในขณะที่ไม่ได้ถูกทริกเกอร์

สรุป

แค่นั้นเอง! ข้อกำหนดทั้งหมดได้รับการตอบสนองโดยระบบและโค้ดก็แทบจะเขียนให้ผมเรียบร้อยแล้ว แผงวงจร PCB ได้รับการออกแบบอย่างรวดเร็วใน [Eagle] และไฟล์ [Gerber] ถูกส่งไปยังประเทศจีนเพื่อผลิต สำหรับส่วนนี้ของโปรเจกต์ ผมใช้ PCBway. ผมเคยใช้บริการของพวกเขาหลายครั้งในอดีต เนื่องจากพวกเขาราคาถูก ผลิตแผงวงจรคุณภาพสูง มีบริการลูกค้าที่ตอบสนองรวดเร็วมาก (พร้อมภาษาอังกฤษที่ดีมาก!) แต่ที่สำคัญที่สุดคือ รวดเร็วมากจริงๆ กระบวนการผลิตปกติของพวกเขาใช้เวลาเพียงไม่กี่วัน ดังนั้นเมื่อใดก็ตามที่ผมเลือกให้แผงวงจรของผมถูกจัดส่งด้วยบริการจัดส่ง ผมจะได้รับมันภายในหนึ่งสัปดาห์หลังจากสั่งซื้อ! บนแผงวงจรเอง ซึ่งถูกตัดอย่างประณีตโดย PCBway คุณสามารถอ่านข้อความ "Happy New Year" ในภาษาแม่ที่แตกต่างกันของแฟนสาวและผม; กรีก, สวีเดน, โรมาเนีย และเซอร์เบีย โปรดทราบว่าตัวอักษรกรีกเป็นตัวพิมพ์ใหญ่ เนื่องจากผมมีปัญหาในการใช้ตัวอักษรเฉพาะของกรีก ตัวอย่างเช่น สิ่งที่ดูเหมือน "Λ" คือ "V" คว่ำ :-)

เนื่องจากต้นไม้ดูน่าตื่นเต้นกว่าเมื่อตั้งตรง ผมจึงใช้ [เครื่องพิมพ์ 3D] ของผมเพื่อพิมพ์ฐานสำหรับมัน เมื่อมอบเป็นของขวัญ ชื่อของผู้รับจะถูกพิมพ์ลงบนฐาน เพื่อปรับแต่งให้เป็นส่วนตัวมากยิ่งขึ้น! สรุปแล้ว ผมถือว่านี่เป็นของขวัญที่ทำง่าย ราคาไม่แพงนัก และมีความเป็นส่วนตัวสูง ผมพบว่าการออกแบบ PCB ให้ดูสวยงามนั้นค่อนข้างท้าทาย เช่นเดียวกับการเขียนโค้ดเพื่อทำให้ [microcontroller] เข้าสู่โหมด [deep sleep] ซึ่งน่าสนใจมาก ผมควรจะใช้เทคนิคนี้บ่อยขึ้นนับจากนี้

ซอร์สโค้ดที่เกี่ยวข้องทั้งหมดสำหรับ [firmware], PCB และฐานที่สามารถพิมพ์ด้วย [3D printer] ได้ สามารถดูได้ที่ project's repo on GitHub, ซึ่งเผยแพร่ภายใต้ใบอนุญาต MIT สุดท้าย มาดู Xmas PCB tree ในการทำงานจริง!

รายละเอียดทางเทคนิคเพิ่มเติม

การออกแบบฮาร์ดแวร์เชิงศิลปะ

โปรเจกต์นี้เน้นการรวมอิเล็กทรอนิกส์เข้ากับการออกแบบ PCB (Printed Circuit Board) ในรูปแบบธีมวันหยุดอย่างสวยงาม

  • การบัดกรีส่วนประกอบ SMD: ออกแบบมาสำหรับ Surface Mount Devices (SMD). Arduino (มักจะเป็น ATtiny85) ควบคุมรูปแบบดาวของ LED ขนาด 0805 หรือ 1206
  • แหล่งจ่ายไฟแบตเตอรี่แบบรวม: มีช่องใส่แบตเตอรี่แบบเหรียญ (CR2032) อยู่ด้านหลัง Arduino ถูกตั้งโปรแกรมด้วยโหมด "Low Power" สุดขีด โดยใช้ [deep-sleep interrupt] เพื่อปลุกให้ตื่นและกะพริบ LED สองครั้งต่อวินาที ทำให้เกิดแสงเรืองรองในวันหยุดได้นานหลายสัปดาห์

ลำดับภาพ

  • แอนิเมชันจางช้า: ใช้ [software PWM] เพื่อสร้างเอฟเฟกต์แสง "หายใจ" ทำให้เครื่องประดับดูเป็นมืออาชีพและลื่นไหลกว่าของเล่นเชิงพาณิชย์ที่กะพริบทั่วไป

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

title: "A Christmas Tree, PCB Ornament"
description: "No more getting troubled on what Christmas gifts to get! These personalized PCB ornaments will leave everybody satisfied & inspired to hack!"
author: "platisd"
category: ""
tags:
  - "lights"
  - "energy efficiency"
  - "art"
views: 2653
likes: 1
price: 25
difficulty: "Intermediate"
components:
  - "6x 5 mm LED: Red"
  - "1x ATtiny85"
  - "1x Coin Cell Battery CR2032"
  - "1x 3D Printer (generic)"
  - "1x 5 mm LED: Yellow"
  - "1x Soldering iron (generic)"
  - "1x Logic Level FET N-Channel"
  - "4x Resistor 22.1 ohm"
  - "1x Pushbutton switch 12mm"
  - "1x Coin Cell Battery Holder"
  - "1x Resistor 10k ohm"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://github.com/platisd/xmas-pcb-tree"
  - "https://github.com/platisd/xmas-pcb-tree"
documentationLinks: []
passwordHash: "d39d8fc41242c3ceada5f604262fded8dfe1c1fd0a309098912aa2b447aeb4ad"
encryptedPayload: "U2FsdGVkX190kEUcbg8JDMgaj7cO11PcmGku/bTq8hhkfva7X5riWlljM2r6zzUuq9qfgzB/22ky6nS4HKX0qrQgi7hfVFG/io+m73G21KA="
seoDescription: "Create unique Christmas Tree PCB Ornaments. The perfect personalized gift to inspire hacking and creativity this holiday season."
videoLinks:
  - "https://www.youtube.com/embed/vAbHDiy3ev4"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/a-christmas-tree-pcb-ornament-fe5d4d_cover.jpg"
lang: "th"