Mạch Bàn Phím Cơ

Sau khi dứt hai phần trước, họ đã có những kiến thức cơ bạn dạng về chiếc keyboard cơ, không để các bạn chờ lâu, ở phần này bọn họ đang thực thụ hợp tác vào có tác dụng một cái bàn phím hoàn chỉnh.

Bạn đang xem: Mạch bàn phím cơ

TL;DR: Các bước để build một chiếc keyboard cơ

Tđắm say khảo thiệt các layout, xây dựng của cùng đồngThiết kế cho khách hàng một layout đúng theo lýĐặt mua linh kiện, keycaps, switches, giảm plate trường hợp bắt buộc thiếtHàn mạch bằng tay thủ công, hoặc kiến thiết mạch in rồi new hànHàn controller, viết firmware hoặc modify từ những firmware gồm sẵn nhỏng QMK xuất xắc TMKDone

Trước khi bắt đầu thì các bạn hãy để mình khoe hàng tí đang, cái bàn phím bốn chnóng ko, à nhầm 40% có thương hiệu dramrajani.comMini Keyboard một thành phầm kết tinch của ý thức tư chnóng ko, của trí tuệ Việt và nền technology tiên tiến của Đế quốc Tư bản Huê Kỳ, cùng với mối cung cấp hỗ trợ sản phẩm kinh nghiệm, linh kiện phân phối dẫn phong phú của người anh to Trung Quốc, một sản phẩm của fan Việt, giành cho khắp cơ thể Việt lẫn người không Việt, được nghiên cứu và phân tích, kiến thiết và về tối ưu giành cho những software developer, một... ấy ấy ấy, thôi chúng ta chớ tắt mà lại, ở lại đọc tiếp đi cơ mà, mình lặng rồi phía trên

*

Bài viết sẽ mang tính chất hóa học ghi chnghiền lại quy trình mình tiến hành loại bàn phím, một số nguyên tố kỹ năng sẽ được lượt quăng quật hoặc tối giản, xịt ra nhưng mà không tồn tại phân tích và lý giải tuyệt chú giải, buộc phải có thể bài viết sẽ sở hữu phần lớn đoạn cạnh tranh hiểu. Nếu sau thời điểm hiểu dứt series bài viết này và chúng ta gồm ý muốn tự bản thân có tác dụng một mẫu bàn phím cơ, và gồm thắc mắc, xin đừng mắc cỡ bình luận hoặc còn lại tin nhắn, mình sẽ cố gắng trả lời trong phạm vi đọc biết của bản thân.

Thiết kế layout

Việc trước tiên đề xuất có tác dụng khi bắt đầu bất kì một dự án công trình như thế nào chính là xây dựng. Chúng ta cần phải xây đắp bố cục tổng quan (layout) Làm Hartware ko y như ứng dụng, chỉ cần một sai sót nhỏ vào bố cục tổng quan hoặc một điểm bất phù hợp vào xây cất thì bọn họ yêu cầu trả giá bằng cả thời hạn lẫn tiền tài và công sức của con người, những sai lạc hay rất nặng nề hay là quan yếu sửa chữa, làm lại. của mẫu bàn phím, đoạn này khôn cùng quan trọng đặc biệt với yên cầu các bạn yêu cầu tìm hiểu thêm thiệt những, quan tâm đến một bí quyết thật kĩ lưỡng nhằm tuyển chọn được một bố cục cùng kiến tạo vừa lòng.

Nếu chưa chắc chắn bạn thích gì, thì các bạn có thể xem thêm qua những chủng loại bàn phím khác biệt bên trên những cộng đồng dân nghịch phím cơ nlỗi Reddit /r/MechanicalKeyboards, Geekhachồng, Deskthority, bên trên đông đảo xã hội này cũng liên tục có những bàn luận về câu hỏi tự build keyboard, siêu bổ ích. Ngoài ra thì còn nhiều xã hội không giống, ví như VietnamMechKey.

Ý tưởng của mình là thi công bộ dòng bàn phím gồm layout 40% bắt buộc đã và đang tìm hiểu thêm nhiều trường đoản cú trang 40percent.club. Một số yên cầu thiết kế của bản thân trường đoản cú đặt ra là nhỏng sau:

Sau một thời hạn xài layout 60% thì mình thấy cho dù sao bàn phím bao gồm mặt hàng phím mũi thương hiệu vẫn nhân tiện hơn hết, chính vì thế loại keyboard bé dại gọn gàng sắp build cũng nên gồm 4 phím mũi tên.Tiếp theo, vì chưng các bước chính của bản thân mình là code, đề nghị nhằm có thể thực hiện loại bàn phím này hằng ngày, thì mình vẫn cần giữ giàng những phím cơ phiên bản tốt dùng nhỏng < > ( ) ; : , ., hoặc Tab.Sau một thời gian sử dụng Emacs thì mình sử dụng phím Ctrl khá thường xuyên, vì vậy phím này rất cần được đặt ở một địa điểm nào đó cho tiện thể bấm duy nhất.Cụm phím Cmd, Alt, Shift mặt phía tay nên bản thân chưa từng như thế nào đề nghị chạm tới trong veo bao nhiêu năm xài máy tính xách tay, đề nghị cực tốt là quăng quật nó đi.Layout vừa bé dại bắt buộc sẽ không đủ nơi nhằm mua hàng phím số vào, vì thế giỏi hơn cả là giấu nó vào sản phẩm phím QWERTY thông sang một phím Fn, lúc nhấn phím này thì bàn phím đã chuyển sang layout phím số.

Sau khi ra quyết định xong các thưởng thức bên trên, thì mình hợp tác vào thiết kế layout bằng trang web http://www.keyboard-layout-editor.com, layout tất cả dạng giống như như keyboard Minivan Arrow:

Bàn phím mặc định sinh sống bên trên, cùng bàn phím khi thừa nhận nút Fn sinh sống dưới:

*

Sau Lúc chấm dứt công đoạn này, các chúng ta có thể export layout này ra định hình JSON với chuyển qua http://builder.swillkb.com/ nhằm thi công plate với case, nếu như chúng ta có ý muốn làm bàn phím plate mount. Tại đây tôi chỉ xài PCB mount đề nghị bỏ qua mất đoạn này.

Bên cạnh đó, các bạn còn rất có thể vào tab Summary giúp xem danh sách và số lượng các phím phải sử dụng, ví dụ đây là danh sách những phím phải sử dụng đến layout của mình:

*

Thiết kế mạch in

Đến trên đây, bọn họ vẫn gồm layout, bước tiếp theo sau là xây đắp mạch in (PCB) nhằm hàn những linh kiện vào. Thực ra vấn đề này đối với nhiều người khó khăn rộng là hàn mạch bằng tay (handwired), với mình thì... trước đây bản thân đã và đang có tác dụng một bạn dạng prototype handwired, mặc dù nhờ vào năng lực hàn mạch thần sầu, bản thân nướng chín luôn phần lớn diode trên mạch và sau cùng thì phiên bản này bị bỏ xó.

*

Sau khi xem xét những phương pháp, thì Việc từ xây đắp PCB là khả thi tốt nhất, do như vậy mang lại quy trình hàn linh kiện vào đỡ vất vả hơn, và bớt tđọc được buổi tối nhiều nguy hại xẩy ra lỗi. Mỗi tội tốn chi phí nhiều hơn thế nữa.

Để kiến thiết PCB thì mình cần sử dụng phần mềm KiCad bởi vì nó trực quan lại, vừa đủ nhiều công dụng, có công dụng render ra board mạch hoàn hảo trông siêu rất đẹp, open source cùng miễn tổn phí, và đặc biệt quan trọng tốt nhất là phần lớn các cửa hàng sản xuất mạch phần đa cung cấp format file của KiCad.

Cái khó khăn duy nhất khi dùng KiCad là bối cảnh của chính nó không được hoàn hảo mang lại lắm, hay nói trực tiếp ra nó luôn là giao diện dại dột như . điều đặc biệt là bên trên macOS. Đó là chưa tính hiệ tượng thống trị tlỗi viện footprint và component của chính nó khá rối. Trước lúc bắt tay vào có tác dụng thì các bạn đề xuất phát âm qua bài gợi ý áp dụng của Deskthority, đây là nội dung bài viết dễ hiểu tốt nhất mà bản thân có thể tra cứu thấy, tuy nhiên tương đối cũ.

Cái khó đồ vật hai, là ban đầu như vậy nào? một chiếc switch gồm có chân nào, bắt buộc đục rất nhiều lỗ nào? khoảng cách giữa các switch là bao xa? để thay được những lên tiếng này thì bạn phải bươi tung những wiki cùng các diễn bầy về phím cơ lên. Tại trên đây bản thân sẽ nói sơ qua, vày các bạn tất cả phát âm trước cũng bắt buộc ghi nhớ được cho tới lúc các bạn bắt tay vô làm cùng trường đoản cú mình va nên các vấn đề đó

À, cũng nên nói thêm, bản thân thực hiện Teensy 3.2 có tác dụng controller cho chiếc bàn phím này, vày nguyên do nó dễ cài đặt, dễ lập trình sẵn, cung cấp tiếp xúc với máy tính xách tay nhỏng là một trong vật dụng USB, với có sẵn bộ tlỗi viện Teensyduino xài hơi tiện.

Sau vài ba ngày hì hục cùng với KiCad thì đấy là kết quả này, quan sát rối nhỏng tơ vò, dẫu vậy là một chiếc PCB 2 mặt:

*

Ngày xưa bản thân từng có thời hạn từ làm PCB trên miếng đồng sử dụng máy in laser, giấy color, bàn ủi, bàn chải đánh răng với thuốc Fe FeCl3, không lúc nào mình dám mơ tới chuyện làm cho một chiếc PCB gồm đường mạch mỏng rộng 2mm, chứ đừng nói tới một cái PCB 2 phương diện.

Xem thêm: 174 Món Hè Ngon Miệng Dễ Làm Từ Các Đầu Bếp Tại Gia, Tổng Hợp 10 Loại Mâm Cơm Gia Đình Cho Mùa Hè

Quên nói, 4 mẫu lỗ sinh hoạt 4 góc board có 2 lần bán kính 2.5milimet, đầy đủ cho một nhỏ M2 standoff gặm vào.

Sau Lúc xong, thì mình mừng húm xuất file ra với gửi đến công ty in, đây là một đơn vị sinh sống China, sở dĩ chọn Trung Quốc là do hôm đó dịp nghỉ lễ ngơi nghỉ Mỹ, không có nhà in như thế nào của Mỹ thao tác làm việc cả.

Có bạn hỏi ý muốn hiểu biết thêm chi tiết về công đoạn này, thì như thế này: lúc thao tác làm việc với những cửa hàng in mạch, các bạn sẽ đề nghị gửi tệp tin mang lại bọn họ, chúng ta có thể nén và gửi cục bộ project KiCad mang lại chúng ta, hoặc đơn giản hơn nữa thì hoàn toàn có thể xuất project ra thành những file gerber (mỗi một tệp tin gerber sẽ là một layer của board, ví dụ layer mạch đồng, layer khoan lỗ, layer mẫu vẽ trên mạch,...) rồi nén tất cả lại thành một tệp tin zip nhằm gửi. Trong repo Github ngơi nghỉ cuối bài xích, bản thân tất cả để sẵn file dramrajani.commini-manufacturing-submission.zip trong thư mục hardware, đựng các file gerber này, rất có thể gửi thẳng tệp tin này tới nhà in. Còn dịch vụ bản thân sử dụng là đơn vị JLCPCB, bọn họ bao gồm đội hình support cực kỳ tận tâm, thương lượng với confirm qua mail thường xuyên, từng tội giờ Anh của chúng ta này tương đối bị dỏm, được chiếc giá thành tương đối ổn với thời gian gia công hơi nhanh khô.

Vì vội vàng đề xuất mình lựa chọn in vội, chỉ tốn 2 ngày gia công với 3 ngày để mấy mẫu mạch bơi lội từ bỏ bên kia qua bên này, trung bình 50 USD ra đi đến 10 mẫu board mạch đen cóng ngầu xì dầu:

*

Trong thời gian chờ in mạch thì mình cũng đặt download luôn các linh phụ kiện quan trọng, bao gồm:

1 board mạch Teensy 3.2 loại gồm hàn sẵn header50 switch Cherry MX Black100 diode 1N4148Keycaps thì đã tất cả sẵn, góp nhặt lại cũng đủ quân số, tuy nhiên lố nhố

Hầu hết những phím mình cần sử dụng đầy đủ không thật 2.5u, và cũng quên ko đục lỗ cắm stabilizer, cần mình bỏ qua nó luôn luôn, gõ thấy cũng hơi kì kì cơ mà kệ đi.

Việc tiếp theo sau là lôi switches với diodes ra hàn, bản thân cần sử dụng Cherry Black, ban đầu gõ thấy tương đối nặng trĩu vày vẫn thân quen xài Brown, nhưng mà dần dần cũng thân quen.

*

Hàn controller vô mặt sau, tại chỗ này thì tất cả một vấn đề, kia là vì hại Teensy vẫn đụng vào switch, mình nên dùng header nhằm tạo ra khoảng cách, với hàn ngược con Teensy lại cho chỗ chân cắm vào phần bụng của PCB, vấn đề đó không nên cùng với thi công lúc đầu. Rất may lỗi này hoàn toàn có thể hạn chế được bởi phần mềm:

*

Hàn xong xuôi đâu ra đấy thì mới thấy Lúc xây dựng mạch, bản thân thừa cẩn thận khi đã dành ra 1 phần diện tích S tương đối béo mang lại viền bên ngoài của board, về sau khi coi mạch thực tiễn và xem những bạn dạng xây đắp khác thì hơi tiếc nuối, vày đúng ra không có phần viền, bàn phím trông đã nhỏ gọn hơn.

Đâu ra đấy xong thì gắn key caps vào:

*

Thế là hoàn thành phần cứng. Tiếp theo là đến firmware.

Viết Firmware

Nếu chúng ta ko gọi các bài bác trước, thì lý do bản thân đưa ra quyết định từ bỏ viết firmware chỉ đơn giản là do mình không compile được những firmware bao gồm sẵn như QMK giỏi TMK cho Teensy 3.2 nếu như các bạn áp dụng controller khác, hoàn toàn có thể các bạn sẽ compile được và không cần phải đâm nguồn vào con phố mờ ám này. Suy đến thuộc, từ viết firmware cũng đều có dòng tốt của chính nó, cùng bản thân học tập được không hề ít từ các việc này. Dưới đấy là một vài ba ghi chxay của mình trong quy trình viết, còn nếu không thực thụ quan tâm, các chúng ta có thể bỏ lỡ cũng khá được.

Mãi cho đến lúc dứt hoàn thành phần hardware thì bản thân mới hợp tác vào viết firmware hoàn chỉnh (chđọng chưa phải là dòng firmware điều khiển 4 nút ít nlỗi vào bài trước). Về cơ bản thì không không giống những mấy đối với trong bài xích trước, mình cần sử dụng một mảng phong cách unit8_t nhằm lưu giữ thông báo về layout keyboard, đây là một mảng 3 chiều, nó bao gồm gồm 2 mảng 2D, từng một mảng 2 chiều là một trong những layout:

uint8_t keyLayout<> = { // Default layout { { KEY_TAB , KEY_Q , KEY_W , KEY_E , KEY_R , KEY_T , KEY_Y ,... { NULL_KEY , KEY_A , KEY_S , KEY_D , KEY_F , KEY_G , KEY_H ,... { NULL_KEY , KEY_Z , KEY_X , KEY_C , KEY_V , KEY_B , KEY_N ,... KEY_TILDE, NULL_KEY, NULL_KEY, NULL_KEY, NULL_KEY, NULL_KEY, NULL_KEY,... , // Fn layout { { KEY_ESC , KEY_1 , KEY_2 , KEY_3 , KEY_4 , KEY_5 , KEY_6 ,... { NULL_KEY, NULL_KEY, NULL_KEY, NULL_KEY, NULL_KEY, NULL_KEY, NULL_KEY,... NULL_KEY, NULL_KEY, NULL_KEY, NULL_KEY, NULL_KEY, NULL_KEY, NULL_KEY,... NULL_KEY, NULL_KEY, NULL_KEY, NULL_KEY, NULL_KEY, NULL_KEY, NULL_KEY,... ;Code mang đến Việc chuyển layout bằng phím Fn:

if (keys.code == FN_KEY) layoutId = FN_LAYOUT; break;submitLayout(keys, keyLayout);Một chuyển đổi nữa đối với bài viết trước, sẽ là thuật toán thù debounce, sau khoản thời gian thí điểm với tham khảo từ bỏ những firmware khác, thì bản thân đưa ra quyết định làm đơn giản hơn, như là với các firmware phổ cập nhỏng QMK/TMK, là quét nhịp nhàng sau mỗi 15 milli giây, dễ dàng mang đến không thôi bệnh được:

#define DEBOUNCE_DELAY 15void loop() unsigned long timeNow = millis(); if (timeNow - lastFrame > DEBOUNCE_DELAY) lastFrame = timeNow; // Scan key lúc compile và upload firmware vào keyboard, thuở đầu thì hầu như vật dụng có vẻ vận động vô cùng suôn sẻ tru, cơ mà khi bản thân demo gõ một đoạn văn bản dài vào, thì xảy ra triệu chứng mất phím, ví dụ gõ:

Hello I am Huy

thì lại thành ra:

Helo I m Hy

Thế là tốn thêm một ngày để debug, nguim nhân thì hết sức lẩn thẩn vị trong những lúc viết firmware, mình lười và chỉ khiến cho chiếc bàn phím gọi từng một phím nhất sinh sống 1 thời điểm, cùng khi gõ nkhô nóng, làm việc 1 thời điểm hoàn toàn có thể đang có nhiều phím được nhận xuống. Cũng dựa vào thay và lại biết thêm được quan niệm NKRO (n-key roll over), một công dụng giúp cho bàn phím có thể ghi nhấn được nhiều phím trong 1 thời điểm. Đối cùng với các keyboard áp dụng cổng tiếp nối USB, thì buổi tối nhiều bỏ ra ghi nhận được 6 phím, trong những lúc đó keyboard cần sử dụng cổng PS/2 thì xả láng.

Việc implement tác dụng này cũng ko mấy khó khăn, dựa vào những hàm Keyboard.set_key1, Keyboard.set_key2, Keyboard.set_key3,... của Teensyduino. Về ý tưởng thì nghỉ ngơi mỗi lần quét, mình tạo ra một mảng gồm 6 bộ phận nhằm giữ theo thứ tự quý hiếm các phím dìm được:

#define MAXIMUM_STROKES 6struct Key* readKey() { struct Key* result = (Key*)malloc(MAXIMUM_STROKES * sizeof(struct Key)); int currentFinger = 0; for (int row = 0; row Rồi sau đó theo lần lượt áp dụng các hàm Keyboard.set_key để gán quý hiếm mang lại từng phím, và gửi đi một lần bởi hàm Keyboard.send_now():

void submitLayout(struct Key* keys, uint8_t layout) { int currentFinger = 0; ... for (int i = 0; i Một số bàn phím còn cho phép người tiêu dùng từ bỏ thông số kỹ thuật layout bằng phần mềm trên máy tính, xét sống khía cạnh firmware, điều này không thực sự cực nhọc, chỉ vấn đề đưa mảng keyLayout về một kết cấu không giống rất có thể lưu được vào bộ lưu trữ của Teensy, trường đoản cú đó ta có thể load ra mọi khi bàn phím được khởi rượu cồn. lấy một ví dụ lưu giữ vào EEPROM thông qua hàm EEPROM.read() với EEPROM.write(), mặc dù cần lưu ý, EEPROM của Teensy 3.2 chỉ có 2KB, tương đối không nhiều, tuy nhiên có thể trọn vẹn xài. Nhưng giả dụ vẫn từ bỏ build được firmware, thì chả yêu cầu làm cho vậy đến mất công, chỉ việc customize layout bằng phương pháp customize luôn luôn source code

Mấy bây giờ ngồi coi kĩ lại firmware QMK, thấy nó gồm vài ba features hơi độc đáo, như Grave Escape Key, Key Loông xã, Tap Dance tuyệt Mouse Key,... hôm làm sao gồm thời hạn mình vẫn ngồi clone lại và viết thêm về chủ đề này.

Chỉ đề xuất chừng kia máy thì bạn đã sở hữu thể từ mình viết được firmware mang đến chiếc bàn phím của mình rồi. Nếu quyên tâm, những bạn có thể xem thêm mã nguồn rất đầy đủ của firmware lẫn hardware cho bàn phím này tại đây https://github.com/huytd/dramrajani.commini-keyboard/

Xin cảm ơn chúng ta vẫn kiên trì gọi mang lại tận trên đây (tui nói vậy thôi chứ đọng tui biết chúng ta scroll xuống trên đây từ đầu trang, chỉ tốn có 3 giây). Nếu bạn cũng là dân đùa mech, hy vọng nội dung bài viết này giúp các bạn hiểu thêm về các cái bàn phím chi phí triệu nhưng mà tôi đã cài. Nếu các bạn không phải là dân nghịch, mong muốn bài viết này làm nhụt chí cùng ngnạp năng lượng bạn dấn thân tuyến phố tốn kém nhẹm này. Nếu đang phát âm không còn mà lại vẫn quyết định vẫn mua hoặc từ bỏ làm một loại bàn phím cơ, thì mình xin chúc mừng và chúc các bạn như mong muốn luôn luôn.

P/S: Nếu các bạn làm sao đã sinh hoạt US, thì bản thân còn dư vài mẫu PCB, ví như có hứng thú thì cứ PM bản thân qua Facebook, mình sẽ gửi Tặng.