Tự chế Stream Deck/DJ Deck dùng Arduino
Tự tay làm một chiếc Stream Deck cực xịn với Arduino Pro Micro, switch cơ và máy in 3D. Hướng dẫn chi tiết cách lắp ráp, linh kiện cần thiết và mã code C++ để bạn tùy biến các chức năng điều khiển PC theo ý thích.
Mô tả
Đây là bộ Stream Deck tự chế, được mình lắp ráp bằng Arduino Pro Micro kết hợp cùng các switch cơ học và một núm vặn điều chỉnh âm lượng (potentiometer), tất nhiên là không thể thiếu sự trợ giúp từ máy in 3D Prusa rồi :)
Để hoàn thiện mẫu này, bạn sẽ cần chuẩn bị 12 switch cơ và 1 núm vặn (mình dùng loại 10K). Arduino Pro Micro thì mọi người cứ tìm mua trên Shopee hoặc các trang thương mại điện tử, giá rất rẻ.
Về phần in ấn, mình khuyến khích dùng nhựa PLA hoặc PETG. Để các phím bấm (keycap) trông đẹp nhất, nên in với layer height 0.10mm, các phần còn lại thì 0.15-0.20mm tùy vào độ chi tiết mà bạn muốn cũng như thời gian in.
Ngoài ra, bạn cần chuẩn bị thêm 4 con ốc M3x2 và 1 con ốc M3x10. Phần vỏ được thiết kế sẵn lỗ cắm cho cổng USB-C của Arduino. Nhớ chuẩn bị thêm núm xoay cho potentiometer và cáp USB-C dữ liệu nhé.
Cuối cùng là phần code C++ cho Arduino, bạn có thể tùy chỉnh chức năng của các nút tùy theo nhu cầu sử dụng của mình.
Riêng về phần nhãn dán trên các keycap, mình đặt làm riêng. Nếu bạn muốn tiết kiệm, có thể tự in ra giấy, dán lên phím rồi dùng băng keo trong dán đè lên để bảo vệ là được.
#include <HID-Project.h>
#include <HID-Settings.h>
#define MUTE 10
#define PREVIOUS 14
#define PLAY_PAUSE 15
#define SKIP 16
#define CTRL_ALT_F 6
#define CTRL_ALT_S 8
#define CTRL_ALT_P 7
#define CTRL_ALT_C 9
#define COPY 3
#define PASTE 4
#define ARROW_LEFT 2
#define ARROW_RIGHT 5
int potentiometerPin = A0;
int previousVolume = -1;
void setup() {
pinMode(MUTE, INPUT_PULLUP);
pinMode(PREVIOUS, INPUT_PULLUP);
pinMode(PLAY_PAUSE, INPUT_PULLUP);
pinMode(SKIP, INPUT_PULLUP);
pinMode(CTRL_ALT_F, INPUT_PULLUP);
pinMode(CTRL_ALT_S, INPUT_PULLUP);
pinMode(CTRL_ALT_P, INPUT_PULLUP);
pinMode(CTRL_ALT_C, INPUT_PULLUP);
pinMode(COPY, INPUT_PULLUP);
pinMode(PASTE, INPUT_PULLUP);
pinMode(ARROW_LEFT, INPUT_PULLUP);
pinMode(ARROW_RIGHT, INPUT_PULLUP);
Consumer.begin();
Keyboard.begin();
}
void loop() {
// Các nút nhấn
if (digitalRead(MUTE) == LOW) { Consumer.write(MEDIA_VOLUME_MUTE); delay(200); }
// ... phần còn lại của code
}
Giấy phép
Tác phẩm này được cấp phép theo
Creative Commons — Attribution — Noncommercial — NoDerivativesCC-BY-NC-ND
File mô hình
Chưa có bản in nào được khoe. Hãy là người đầu tiên!
Chưa có bình luận nào. Hãy là người đầu tiên!