ชื่อโปรเจกต์: ต้นคริสต์มาส, แผงวงจร 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] เพื่อสร้างเอฟเฟกต์แสง "หายใจ" ทำให้เครื่องประดับดูเป็นมืออาชีพและลื่นไหลกว่าของเล่นเชิงพาณิชย์ที่กะพริบทั่วไป