Chào mọi người, đợt này tự dưng hứng lên muốn tự làm cái bàn phím cơ, từ khâu thiết kế PCB, hàn linh kiện cho đến custom phần mềm. Thế nhưng mà vì một vài lý do mà mình chỉ làm Macropad thôi. Trong lúc chờ cái PCB in xong thì mình lên đây luyên thuyên tí.
“Thế sao để tiêu đề là ‘bàn phím cơ’???"
“Thì Macropad cũng là bàn phím cơ mà :D, có điều nó nhỏ thôi. Để thế nghe cho nó sang mồm :D”
Thật ra ban đầu mình cũng chả quan tâm đến bàn phím. Đi làm công ty cấp cho cái gì thì dùng cái đó, mấy năm đi làm gõ bàn phím 100K vẫn ok. Cho đến khi mình cần mua một cái bàn phím, khi đó công ty lại có mấy bác dùng phím cơ gõ cạch cạch, nghe cũng vui. Tham khảo một hồi thế là lấy em Fuhlen m87s về trải nghiệm. Phải nói là cảm nhận của mình lúc đó thấy bình thường, cũng chỉ là cái bàn phím để gõ thôi mà, không có gì ấn tượng (giá rẻ mà ).
Cho đến một ngày mình thấy Keychron K2, đúng hợp gu thẩm mỹ, vừa nhìn đã thấy đẹp. Từ layout 75% compact, viền nhôm cho đến LED RGB . Thật lòng mà nói thì mình thuộc dạng dùng phím cơ vì nó đẹp chứ không quá quan trọng về cảm giác gõ.
Lý do dẫn đến hôm nay mình quyết định tự làm Macropad bắt nguồn từ việc gần đây mình mới mua Keychron K6. Mới dùng mà cứ sợ nó bị hư :)), mà hư thì chỉ có nước đi mua cái mới hoặc kit mới mà giá trị cũng hơn 1 nửa rồi. Và một lý do quan trọng nữa là Keychron thiết kế layout phím K6 ng* vãi, có mỗi việc đổi hiệu ứng LED mà làm nguyên một phím, thay bằng phím Del
có phải tốt hơn không. Ngoài ra mình cũng rất hay dùng Home
và End
. Thế là đánh đổi việc bảo hành, mình tháo ra đo đạc kích thước PCB và vị trí của switch. Rồi mày mò tìm hiểu phần mềm KiCad, cách vẽ mạch, đi dây. Với kỳ vọng nếu sau này có hư PCB thì chỉ việc đi in cái mới thay thế.
Đầu tiên là thành phần cơ bản của một bàn phím cơ
Sự thay đổi điện áp ở chân Microcontroller khi nhấn phím giúp nó nhận biết keycode nào nên được gửi. Tuy nhiên do giới hạn bởi số chân, ta không thể có 90 chân cho 90 phím được. Nên người ta đã nghĩ ra sơ đồ mạch dạng ma trận, lúc này mỗi phím được xác định bằng việc thay đổi điện áp ở 2 chân. Vậy là chỉ cần 19 (9 x 10
) chân là đáp ứng được 90
phím rồi.
Tuy nhiên với mạch ma trận cơ bản sẽ xảy ra 2 vấn đề Ghosting và Masking khi nhấn nhiều phím cùng lúc. Bạn có thể đọc bài viết này để hiểu kỹ hơn về vấn đề và cách họ giải quyết nó bằng Đi-ốt.
Để bắt đầu vẽ mạch, cần chọn vi điều khiển trước. Sau khi tham khảo thì mình chọn ProMicro vì nó sẵn có trên mấy sàn thương mại điện tử. Phần mềm mình dùng để vẽ mạch là KiCad. Nếu bạn muốn tìm hiểu KiCad có thể bắt đầu từ video này, rất chi tiết dễ hiểu. Một số linh kiện (symbol + footprint) không tồn tại sẵn trong KiCad, thì phải google để add thêm vào.
Rồi bắt đầu vẽ. Mình chọn Duplex Matrix vì PCB mình không có nhiều khoảng trống viền để đi dây.
Tiếp theo là công đoạn vẽ mạch. Giai đoạn này hơi khó ở việc sắp xếp vị trí linh kiện sao cho có không gian để đi dây cũng như chỗ để MountingHole. Mất mấy ngày hì hục mới vẽ xong.
Lưu ý, Ở bước này trước khi vẽ bạn cần xác định trước nơi in PCB họ hỗ trợ thông số độ rộng mạch đồng, khoảng cách tối thiểu, etc. Sau đó quay lại setting cho KiCad trước khi vẽ. Vì có những nơi họ không cho kích thước mạch đồng quá nhỏ, cũng như khoảng cách không quá gần.
Trước khi đem đi in, mình cẩn thận lên server MechKeys hỏi trước xem có vấn đề gì không cho chắc ăn. Thì được các tiền bối chỉ cho là K6 có thể nạp được QMK , really?? . May mà hỏi có đầu có đuôi, tránh XY problem. Cộng với việc sợ in xong không vừa vỏ của nó, mà 90% là không vừa, vì mình chỉ đo bằng thước kẻ, sai số khả năng rất lớn. Nên thôi tạm gác lại, mình nạp QMK để custom phím dùng đã, khi nào hư tính tiếp. Đọc đến đây thì mọi người cũng hiểu là không phải tự dưng hứng lên mà mục đích chính của mình là để tiết kiệm
.
Nhưng mọi chuyện không thể kết thúc đơn giản thế được. Để không phí công mấy ngày tìm hiểu, mình quay sang làm một cái nhỏ hơn - Macropad. Không làm được cái to, ta làm cái nhỏ vậy . Ban đầu khi thấy trên mạng bán cái Numpad, mình thấy buồn cười vãi, ai lại đi mua cái bàn phím 65% rồi lại bỏ tiền đi mua cái Numpad riêng. Thế rồi tìm hiểu mới biết mình có thể custom các macro cho nó, ví dụ nhấn 1 phím đã copy thay vì phải giữ Ctrl. Cũng hay ho đó chứ, làm thử thôi.
Macropad của mình có 6 phím, và 2 núm xoay có thể dùng chỉnh âm lượng hoặc độ sáng màn hình. Mình đặt tên nó là lmacro6
.
Các thành phần của nó gồm:
Tất cả đều có thể mua trên các trang thương mại điện tử.
Sau khi vẽ xong layout, để đem đi in được thì cần phải export ra file Gerber và Drill và gửi cho nơi in PCB. Cách export thì bạn có thể tham khảo rất nhiều bài hướng dẫn trên google.
Mình chọn QMK vì cộng đồng lớn, hỗ trợ nhiều vi điều khiển, ngoài ra còn hỗ trợ cả VIA - cung cấp phần mềm cho setting Keymap và Macro thay vì phải flash firmware mỗi lần muốn thay đổi.
May mắn là trong source của QMK đã có sẵn một số source của người khác, nên mình cũng đỡ công tìm hiểu từ đầu. Mình chỉ clone và chỉnh sửa thông số cho phù hợp vi điều khiển của mình. Source của lmacro6
mình để ở đây cho bạn nào muốn tham khảo.
Hiện tại thì đồ nghề, linh kiện đã đủ hiết rồi, chỉ thiếu mỗi em PCB . Thật sự thì đợi chờ chẳng bao giờ là hạnh phúc.
Tạm thời mình kết thúc bài này ở đây đã. Cảm ơn mọi người đã chịu khó đọc đến đây (hoặc có thể đã scroll xuống vì không đủ kiên nhẫn). Ở bài tới mình sẽ chia sẻ về quá trình lắp ráp và nạp firmware. Giờ thì buồn ngủ quá rồi. Good night!
Mà công nhận đợi cái PCB 10 ngày rồi chưa có khó chịu vãi
Update: phần 2