สวัสดีครับสายคราฟต์และชาว Maker ทุกคน! ปกติแล้วเวลาเราอยากได้ Macropad (คีย์บอร์ดปุ่มลัด) ไว้ทำงานกราฟิก ตัดต่อวิดีโอ หรือเขียนโค้ด เรามักจะต้องซื้อของสำเร็จรูป หรือไม่ก็ต้องสั่งทำแผ่น PCB แบบเฉพาะเจาะจงซึ่งแก้ไขดัดแปลงได้ยาก แต่วันนี้ Globalbyte จะพามาฉีกกฎเดิมๆ ด้วยการสร้าง Macropad ดีไซน์สุดเท่ แบบไม่ต้องง้อแผ่น PCB เลยแม้แต่น้อย!
โปรเจกต์นี้เป็นการนำบอร์ดไมโครคอนโทรลเลอร์ขนาดจิ๋วมาประกอบร่างเข้ากับเคสที่พิมพ์ขึ้นรูปด้วย 3D Printer โดยใช้วิธีต่อสายไฟเข้าด้วยกันโดยตรง (Hand-wired) ซึ่งทำให้เราสามารถถอดประกอบ ซ่อมแซม และปรับแต่งการทำงานได้อย่างอิสระ เตรียมหัวแร้งให้พร้อม แล้วมาลุยกันเลยครับ!
ขั้นตอนที่ 1: เลือกสวิตช์ Mechanical ที่ใช่สำหรับคุณ
ความฟินของการสร้าง Macropad เองคือเราเลือกสัมผัสการกด (Typing feel) ได้ตามใจชอบครับ สำหรับโปรเจกต์นี้ แนะนำให้ใช้ สวิตช์ Outemu แบบ Mechanical จำนวน 9 ตัว โดยคุณสามารถเลือกสีของสวิตช์ได้ตามสไตล์การใช้งาน:
-
Blue Switches (สายพิมพ์มันส์): มีเสียงคลิกชัดเจน สัมผัสแบบ 2 จังหวะ (Tactile) เหมาะมากสำหรับการตั้งเป็นปุ่มลัดหรือ Macro เพราะคุณจะรู้สึกลงน้ำหนักชัดเจนทุกครั้งที่กด
-
Red Switches (สายสมูท-เงียบ): กดลงไปได้ตรงๆ แบบลื่นไหล (Linear) ไม่มีเสียงคลิกกวนใจ เหมาะกับคนที่ต้องกดรัวๆ หรือใช้ในออฟฟิศที่ต้องการความเงียบ
-
Brown Switches (สายบาลานซ์): ลูกผสมที่ให้สัมผัสการกดแบบมีจังหวะ แต่ไม่มีเสียงคลิกดังเท่า Blue ปลอดภัยและใช้ได้กับทุกสถานการณ์
ขั้นตอนที่ 2: สมองกลจิ๋วแต่แจ๋ว DFRobot Beetle RP2350
เพื่อรักษาขนาดของ Macropad ให้เล็กกะทัดรัด เราจึงเลือกใช้บอร์ด DFRobot Beetle RP2350 ซึ่งเป็นบอร์ดพัฒนาที่ใช้ชิป Raspberry Pi RP2350 ขนาดเล็กเท่าเหรียญเท่านั้น! แต่สเปกนั้นไม่ธรรมดา เพราะมาพร้อมชิป Dual-core, แรม 520KB, พอร์ต USB Type-C และที่สำคัญคือมีราคาจับต้องได้ง่ายสุดๆ
ขั้นตอนที่ 3: แฟลชเฟิร์มแวร์ง่ายๆ ด้วย CircuitPython
ยุคนี้ไม่ต้องมานั่งปวดหัวกับการคอมไพล์โค้ดให้ยุ่งยาก เพราะเราจะใช้ CircuitPython ในการรันระบบ วิธีทำก็ง่ายแสนง่าย:
- กดปุ่ม BOOTSEL บนบอร์ดค้างไว้ แล้วเสียบสาย USB เข้าคอมพิวเตอร์
- ลากไฟล์
.uf2 ของ CircuitPython ไปวางในไดรฟ์ที่เด้งขึ้นมา บอร์ดจะทำการรีบูตตัวเองอัตโนมัติ
- จากนั้นดาวน์โหลด ไลบรารี Adafruit CircuitPython Bundle นำโฟลเดอร์ไลบรารีที่จำเป็น (เช่น
adafruit_hid, adafruit_displayio_ssd1306) ไปวางในไดรฟ์ CIRCUITPY
- นำไฟล์
boot.py และ code.py จาก ซอร์สโค้ด Macropad บน GitHub ไปวางทับ เพียงเท่านี้ก็พร้อมใช้งาน!
ขั้นตอนที่ 4 & 5: ออกแบบ 3D และสั่งพิมพ์
ส่วนของตัวเคสนั้นถูกออกแบบมาอย่างพอดีเป๊ะด้วยโปรแกรม Autodesk Fusion 360 โดยแบ่งออกเป็น 4 ชิ้นส่วนหลักๆ ได้แก่ ฝาครอบบน (Top Cover) ที่รองรับการยึดสวิตช์แบบ Snap-fit, ตัวถังด้านล่าง (Housing), ปุ่มหมุน (Knob), และปุ่มกด (Keycaps) โดยตั้งค่าพลาสติก PLA แบบมาตรฐานก็สามารถพิมพ์ออกมาประกอบได้เลยครับ
📥 ดาวน์โหลดไฟล์ 3D โมเดล (STL) สำหรับโปรเจกต์นี้:
💡 ทริคจาก Globalbyte: ไม่มี 3D Printer หรือหาบอร์ดไม่ได้ ไม่ใช่ปัญหา! สำหรับเพื่อนๆ ที่อยากทำโปรเจกต์นี้แต่ไม่มีเครื่องพิมพ์ 3D ไม่ต้องเสียใจไปครับ เพราะที่
Globalbyte เรามีบริการรับปริ้นท์ 3D (3D Printing Service) คุณภาพสูง งานเนียนกริบ ทนทาน ส่งแบบ STL ด้านบนมาให้เราประเมินราคาได้เลย! นอกจากนี้ หากกำลังตามหา
บอร์ด RP2350, จอแสดงผล OLED 0.96 นิ้ว, สวิตช์ Outemu หรือสายไฟคุณภาพดี ทางร้านก็มีจำหน่ายครบจบในที่เดียวครับ สนใจชิ้นไหนทักแอดมินมาได้เลยน้า!
ขั้นตอนที่ 6-11: ประกอบร่างและบัดกรีวงจร
เมื่อชิ้นส่วนพร้อมแล้ว ให้นำสวิตช์ทั้ง 9 ตัวกดลงไปในช่องของ Top Cover ให้ลงล็อก (จะได้ยินเสียงคลิก) จากนั้นทำการขันน็อตยึดจอ OLED และ Rotary Encoder จากด้านหลัง
หัวใจหลักคือการ "บัดกรี (Soldering)" เราจะต่อสายไฟแบบ Matrix โดยไม่ใช้ PCB ให้ทำตามผังวงจรดังนี้:
-
Matrix ปุ่มกด: แถวตั้ง (Column) 1-3 ต่อเข้ากับพิน 9, 16, 18 และ แถวนอน (Row) 1-3 ต่อเข้ากับพิน 19, 26, 27 ตามลำดับ
-
Rotary Encoder: VCC ต่อ 3.3V, ขา A ไปพิน 0, ขา B ไปพิน 1 และขา Switch ไปพิน 8
-
จอ OLED: สื่อสารผ่านระบบ I2C ให้ต่อ VCC ไป 3.3V, GND คู่กัน, SCL ไป SCL และ SDA ไป SDA ของบอร์ด
⚠️ ทริคสำหรับมือใหม่ (คำเตือนเนื้อหาซับซ้อน): โปรเจกต์นี้มีรายละเอียดเชิงเทคนิคที่ค่อนข้างซับซ้อน โดยเฉพาะการบัดกรีเดินสายไฟแบบ Matrix ในพื้นที่แคบๆ และการคัสตอมโค้ดเชิงลึก หากเพื่อนๆ อ่านแล้วรู้สึกว่าเข้าใจยาก หรืออยากเห็นภาพประกอบการต่อสายไฟแบบช็อตต่อช็อต แนะนำให้วาร์ปไปศึกษาเพิ่มเติมที่
บทความต้นฉบับบน Instructables ได้เลยครับ ผู้สร้างเขาอธิบายและมีภาพประกอบไว้ละเอียดยิบ รับรองว่าช่วยให้ประกอบตามได้ง่ายขึ้นชัวร์!
ขั้นตอนที่ 12-14: การใช้งานและการคัสตอมโค้ด (Custom Modes)
เมื่อประกอบฝาปิด ขันน็อต และสวม Keycaps เข้าไปเรียบร้อยแล้ว ก็นำไปเสียบ USB ใช้งานได้เลย! ทันทีที่เปิดเครื่อง จอ OLED จะแสดงผลชื่อโหมดและฟังก์ชันของแต่ละปุ่มแบบ Real-time คุณสามารถกดปุ่มหมุน 1 ครั้งเพื่อเข้าโหมดสลับการใช้งาน (เช่น Windows, VS Code, Fusion 360 หรือ Media Controls)
ที่เจ๋งที่สุดคือ คุณสามารถเพิ่มโหมดคีย์ลัดสำหรับโปรแกรมอะไรก็ได้ในโลกนี้ เพียงแค่เปิดไฟล์ code.py บนไดรฟ์ของ Macropad แล้วแก้ไขโค้ด Dictionary ที่ชื่อว่า MODES ตามตัวอย่างด้านล่างนี้ครับ:
# ตัวอย่างการเขียนเพิ่มโหมด "Photoshop" ในไฟล์ code.py
{
"name": "Photoshop",
"icon": "PHT",
"enc_label": "ZOOM",
"enc_cw": lambda: tap(KC.CONTROL, KC.EQUALS),
"enc_ccw": lambda: tap(KC.CONTROL, KC.MINUS),
"keys": [
("BRS", "Brush", lambda: tap(KC.B)),
("ERS", "Eraser", lambda: tap(KC.E)),
("UND", "Undo", lambda: tap(KC.CONTROL, KC.Z)),
("RDO", "Redo", lambda: tap(KC.CONTROL, KC.SHIFT, KC.Z)),
("SAV", "Save", lambda: tap(KC.CONTROL, KC.S)),
("CPY", "Copy", lambda: tap(KC.CONTROL, KC.C)),
("PST", "Paste", lambda: tap(KC.CONTROL, KC.V)),
("SEL", "Select", lambda: tap(KC.V)),
("TRN", "Transform", lambda: tap(KC.CONTROL, KC.T)),
],
}
เมื่อแก้ไขเสร็จแล้ว แค่กด Save (เซฟ) บอร์ดจะทำการรีบูตตัวเอง และโหมดใหม่ที่คุณเพิ่งเขียนก็จะไปโผล่บนหน้าจอ OLED พร้อมใช้งานทันที!
คำเตือนและความรับผิดชอบ (Disclaimer): เนื้อหาในบทความนี้ได้รับการแปล สรุป และเรียบเรียงข้อมูลมาจากแหล่งข้อมูลภาษาอังกฤษต้นฉบับ ข้อมูลด้านเทคนิค การใช้ความร้อนในการบัดกรี และผังวงจรอาจมีความเสี่ยงหากปฏิบัติงานไม่ถูกต้อง โปรดศึกษาหาข้อมูลเพิ่มเติมจากเว็บไซต์ต้นฉบับและใช้ความระมัดระวังในการต่ออุปกรณ์อิเล็กทรอนิกส์เพื่อความปลอดภัยของตัวคุณและอุปกรณ์ครับ
🛠️ สนใจบริการ 3D Print หรือหาซื้อบอร์ด/เซนเซอร์อยู่ใช่ไหม?
เตรียมอุปกรณ์ให้พร้อมแล้วมาลุยโปรเจกต์กัน! สอบถามเรื่องสั่งพิมพ์ 3D, เช็คสต๊อกสินค้า หรือเข้ามาพูดคุยแลกเปลี่ยนไอเดียกับคอมมูนิตี้ของเราได้เลยตามช่องทางด้านล่างนี้ครับ