Arduino로 나만의 사용자 지정 바로 가기 버튼 만들기

Arduino로 나만의 사용자 지정 바로 가기 버튼 만들기

겸손한 Arduino는 많은 일을 할 수 있지만 USB 키보드를 에뮬레이트할 수 있다는 것을 알고 계셨습니까? 이 간단한 회로로 기억하기 어려운 긴 키보드 단축키를 하나의 사용자 정의 단축키로 결합할 수 있습니다. 최종 결과는 다음과 같습니다.





이전에 Arduino를 사용한 적이 없습니까? 우리의 시작하기 가이드 첫 번째.





필요한 것

이 프로젝트를 만드는 데 필요한 것은 다음과 같습니다.





  • 1 x Arduino Pro 마이크로.
  • 순간 버튼 또는 키보드 버튼.
  • 10K 옴 저항.
  • 다양한 연결 와이어.
  • 1 x 220옴 저항.
  • 1 x 5mm(0.197인치) LED.
  • 1 x 5mm LED 홀더.

이 프로젝트에는 매우 특정한 Arduino가 필요합니다. 나는 사용하고있다 프로 마이크로 , 작고 저렴하기 때문에 프로세서(Atmega32u4)에 USB-Serial이 내장된 Arduino가 필요합니다. UNO 또는 Nano와 같은 다른 Arduinos로 이 프로젝트를 빌드하는 것이 가능하지만 BIOS를 다시 플래싱하고 작업을 수행하려면 많은 노력이 필요합니다. 다른 Arduino 모델의 클론은 일반적으로 전혀 작동하지 않지만 Pro Micro 클론도 괜찮습니다.

OSOYOO Pro Micro ATmega32U4 5V/16MHz 모듈 보드(2행 핀 헤더 포함) Arduino용 ATmega328 Pro Mini로 교체 지금 아마존에서 구매하세요

하나의 임시 버튼, 하나의 10K 옴 저항 및 사용하려는 각 버튼에 대한 적절한 연결 와이어가 필요합니다. 실제 바로 가기 버튼에는 Cherry MX 기계식 키보드 스위치를 사용하고 있지만 어느 스위치는 일시적이고 래칭이 아닌 경우 작동합니다.



이것을 구축하는 방법에 따라 몇 가지 다른 항목이 필요할 수 있습니다. 프로토타입을 만들려면 다음이 필요합니다. 납땜 없는 브레드보드 . 좋은 제품에 돈을 쓰는 것은 가치가 있습니다. 때로는 매우 신뢰할 수 없습니다. 이것을 상자에 넣고 싶다면 스트립 보드를 구입하고 싶을 것입니다.

구축 계획

작동 방식은 다음과 같습니다. Arduino는 컴퓨터에 관한 한 USB 키보드처럼 작동하도록 프로그래밍됩니다. Arduino에 연결된 여러 버튼은 주요 명령을 컴퓨터로 보냅니다. 하나의 버튼만 누르게 되지만 컴퓨터는 버튼을 눌렀다고 생각할 것입니다. 모든 것 > F4 , 예를 들어.





스위치 선택

MX 시리즈 스위치에는 여러 가지 변형이 있습니다. 이 웹사이트 훌륭한 소개를 제공하지만 본질적으로 소음과 압력으로 귀결됩니다. 일부 모델은 누르는 데 더 많은 힘이 필요하고 일부 모델은 누르면 기계적인 '딸깍' 소리가 납니다. 눌렀을 때 소리가 나지 않는 체리 MX 브라운을 사용했습니다. 모두 같은 치수이므로 걱정 없이 원하는(또는 믹스 앤 매치) 모델을 선택하십시오.

물론 키 캡도 구입해야 합니다. 맞춤형 디자인 선택할 수 있는 곳 -- 우리가 구매한 영국의 KeyboardCo





경우

이 케이스를 3D 인쇄했으며 다운로드할 수 있습니다. .STL 의 파일 싱기버스 . 3D 프린터가 없어도 걱정하지 마세요. 그래도 만들 수 있습니다. 많은 웹사이트는 다음과 같은 3D 프린팅 서비스를 제공합니다. 3D 허브 또는 셰이프웨이 . 또는 이것은 매우 간단한 경우입니다. 플라스틱, 방풍, 나무 또는 판지로 직접 만들 수 있습니다. 정말 절약하고 싶다면 Cherry MX는 스위치 테스터/샘플러 세트를 판매합니다. 아마존 ( 영국 ). M5 x 35mm 볼트 4개와 M5 너트 4개가 필요합니다. 물론 여러분이 가지고 있는 적절한 대안으로 이것들을 대체할 수 있습니다.

Max Keyboard Keycap, Cherry MX 스위치, 테스터 키트(9개 스위치 프로 샘플러 테스터 키트) 지금 아마존에서 구매하세요

자신의 케이스를 만드는 경우 알아야 할 중요한 세부 사항이 하나 있습니다. Cherry MX 스위치는 장착 구멍에 밀어넣는 것입니다. 14 x 14mm(0.551인치) 정사각형 장착 구멍이 필요하며 플레이트는 1.5mm(0.059인치)보다 두껍지 않습니다. 이 치수에서 너무 벗어나면 스위치가 더 이상 올바르게 장착되지 않을 수 있습니다.

3D 프린팅된 케이스는 상단과 하단의 두 부분으로 구성되어 있습니다. Cherry MX 스위치를 사각형 구멍에 밀어 넣습니다.

스위치를 올바른 방향으로 장착했는지 확인하십시오. 상단에는 'CHERRY'라는 글자가 있고 하단에는 약간의 노치가 있습니다. 이 작은 슬롯에 3mm LED를 삽입합니다.

LED가 '거꾸로' 장착된 것처럼 보일 수 있습니다. 이것은 내가 사용한 키캡의 경우이며 스위치에 전혀 영향을 미치지 않습니다.

이제 9개의 LED가 있는 9개의 스위치가 있어야 합니다. 이 부품을 붙일 필요가 없습니다. 땜납은 LED를 고정하고 마찰은 스위치를 고정합니다.

그런 다음 LED 마운트를 나사로 고정합니다(지금은 LED를 제거한 상태로 두십시오). 회로가 구축되면 나중에 케이스 조립을 완료합니다.

서킷

이 회로는 스트립보드에 내장되어 있습니다. 인쇄회로기판(PCB) 비용 없이 반영구적인 회로 구축에 탁월합니다. 그것은 한 방향으로 평행하게 달리는 구리 트랙이 있는 단순히 유리 섬유 조각입니다. 이 트랙은 납땜 및 절단이 가능합니다. 트랙 절단은 특수 도구 또는 작은 드릴 비트로 수행할 수 있습니다.

납땜에 자신이 없으신가요? 먼저 이 간단한 프로젝트를 살펴보십시오.

다음은 스트립보드 레이아웃입니다(후행 리드 제외).

저항과 Arduino 아래의 흔적을 잘랐는지 확인하십시오. 스트립보드 회로를 읽는 것이 매우 어려울 수 있으므로 다음은 브레드보드 버전입니다.

이 작은 공간에 모든 구성 요소를 압축하는 것이 꼭 맞습니다. 다음과 같이 스트립 보드의 모서리를 자릅니다.

이것은 케이스 바닥에 깔끔하게 맞아야 합니다.

트랙이 수직으로 달리고 있는지 확인하십시오.

양극( 긴 다리, 긍정적 ) LED의 200옴 저항에 연결한 다음 +5V에 연결합니다. 음극( 짧은 다리, 네거티브 ) 접지. 열수축 슬리브로 다리를 덮은 다음 LED 홀더에 밀어 넣습니다. 접착제가 필요하지 않지만 LED 홀더는 끼워맞춤이 아닐 수 있으므로 이 지침을 적용해야 할 수 있습니다.

여기에서 2색 LED를 대신 사용할 수 있습니다. 이렇게 하면 각 뱅크에 대해 다른 색상의 상태 LED를 사용하여 두 개 이상의 스위치 뱅크를 설정할 수 있습니다.

이제 키캡의 모든 LED를 납땜할 차례입니다. 이것들은 키를 빛나게 만드는 데만 사용되므로 원하는 경우 키를 건너뛸 수 있으며 디지털 핀에 연결할 필요 없이 전원에만 연결할 수 있습니다. 모든 양극을 함께 연결하고 모든 음극을 함께 연결합니다. 내 실수에서 배우십시오. 스위치를 배선하기 전에 이것을 하는 것이 훨씬 쉽습니다! 220옴 저항을 통해 양극을 +5V에 연결하고 음극을 접지에 연결합니다. 이 LED는 병렬로 연결됩니다. 다음은 이러한 LED에 대한 회로입니다.

작은 열 수축 튜브를 사용하여 LED와 Arduino 사이의 연결을 덮습니다.

Arduino의 전원을 켜서 모든 LED가 작동하는지 테스트합니다. 코드를 업로드할 필요가 없습니다. 작동하지 않는 LED가 있으면 배선을 다시 확인하십시오.

이제 스위치를 연결합니다. 이것들은 10k 저항을 통해 연결되어야 합니다. 그렇지 않으면 Arduino가 죽을 것입니다. 이것은 데드 쇼트(dead short)라고 합니다. +5V가 직접 접지에 연결되고 Arduino에 남아 있는 모든 것은 연기가 될 것입니다. 하나의 스위치에 대한 회로는 다음과 같습니다.

이 회로는 9개의 스위치 모두에 대해 동일합니다. 스위치를 디지털 핀 2~10에 연결하고 각각 접지에 대한 자체 10K 저항을 사용합니다. Cherry MX 스위치 납땜에 주의하십시오. 약간 깨지기 쉬울 수 있습니다. 여러 핀이 부러졌습니다. 더 많은 스트립보드에 직접 납땜할 수도 있지만 후행 리드가 여전히 적합합니다.

배선용입니다. USB B형 암 소켓을 장착하고 싶을 수도 있지만, 그 위에 있는 작은 핀은 종종 납땜하기가 상당히 어려울 수 있습니다. 이 작업을 수행하지 않으려면 걱정하지 마십시오. Arduino의 Micro USB 커넥터는 섀시의 구멍에 깔끔하게 맞습니다. 다른 USB 유형에 대해 약간 혼란스러우면 다음을 확인하십시오. 차이점을 이해 .

마지막으로 회로가 올바른지 다시 확인하십시오. 단락은 Arduino를 쉽게 파괴 할 수 있으며 스트립 보드를 사용하여 쉽게 할 수 있습니다.

코드

이제 회로가 올바른지 테스트하십시오. 계속하기 전에 이 작업을 수행하는 것이 좋으므로 가능한 한 지금 문제를 해결할 수 있습니다. 이 테스트 코드를 업로드하십시오(올바른 보드와 포트를 선택하는 것을 잊지 마십시오. 도구 > 판자 그리고 도구 > 포트 메뉴):

const int buttons[] = {2,3,4,5,6,7,8,9,10}; // array of all button pins
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
for(int i = 2; i <11; ++i) {
if(digitalRead(i) == HIGH) {
// software de-bounce improves accuracy
delay(10);
if(digitalRead(i) == HIGH) {
// check switches
Serial.print ('input');
Serial.println(i);
delay(250);
}
}
}
}

회로를 수정한 경우 핀을 변경해야 할 수도 있습니다.

업로드가 완료되면 직렬 모니터( 맨 위 오른쪽 > 직렬 모니터 ). 각 버튼을 하나씩 누릅니다. 직렬 모니터에 누른 버튼의 번호가 표시되어야 합니다. LED와 마찬가지로 컴퓨터가 너무 많은 전류를 소비한다고 불평하거나 버튼을 눌렀을 때 LED가 꺼지면 즉시 연결을 끊으십시오! 회로 어딘가에 단락이 있습니다. 회로가 올바른지, 연결 사이에 단락이 없는지 다시 확인하십시오.

모든 것이 작동하면 계속해서 회로를 상자에 넣으십시오. 회로를 제자리에 고정하기 위해 약간의 접착제를 사용할 수 있습니다(와이어가 잘 고정되어 있음에도 불구하고). 뚜껑도 볼트로 고정합니다.

Arduino를 키보드처럼 보이게 하는 것은 매우 간단합니다. Nano 또는 UNO를 사용하는 경우 다음을 사용하여 Arduino를 다시 프로그래밍합니다. 장치 펌웨어 업데이트 (DFU). 이것은 일반적으로 Arduino에 새 펌웨어를 플래시하는 데 사용됩니다. 키보드처럼 작동하게 하는 새 펌웨어로 Arduino를 플래시하는 데 사용할 것입니다. 이것은 상당히 복잡한 작업이므로 여기서는 다루지 않습니다. NS 아두이노 웹사이트 이에 대한 좋은 튜토리얼이 있습니다.

Arduino Pro Micro는 이 단계를 매우 쉽게 만듭니다. USB 키보드를 에뮬레이트하는 데 필요한 로직은 이미 프로세서에 내장되어 있으므로 코드를 작성하는 것만큼 간단합니다!

먼저 키를 설정합니다.

int keys[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};

이것은 버튼이 연결된 모든 핀을 포함하는 배열입니다. 더 많거나 적은 버튼을 사용했거나 다른 핀을 사용한 경우 여기에서 값을 변경하십시오.

배열은 생각이 비슷한 것들의 모음입니다. 컴퓨터는 코드에 빠르게 액세스할 수 있도록 코드를 최적화할 수 있으며 코드 작성 프로세스의 속도를 높일 수 있습니다.

이제 모든 핀을 입력으로 초기화합니다.

void setup() {
// put your setup code here, to run once:
Keyboard.begin(); // setup keyboard
for (int i = 2; i <11; ++i) {
// initilize pins
pinMode(i, INPUT);
}
}

이것은 배열의 모든 핀이 입력임을 Arduino에 알려줍니다. 이를 수행하기 위해 루프가 사용되므로 다음을 작성하는 것보다 핀모드(2, 입력) 아홉 번, 한 번만 쓰면 됩니다. 이것은 또한 호출 키보드.시작 . 이것은 키보드 에뮬레이션을 위해 특별히 설계된 Arduino 라이브러리에 내장된 기능을 설정합니다.

라는 메서드를 생성합니다. 읽기 버튼 :

boolean readButton(int pin) {
// check and debounce buttons
if (digitalRead(pin) == HIGH) {
delay(10);
if (digitalRead(pin) == HIGH) {
return true;
}
}
return false;
}

이것은 핀을 가져와서 눌렸는지 여부를 확인합니다. 그것은 단순히 반환 진실 또는 거짓 . 그것은 또한 일부 소프트웨어 디바운싱 -- 간단한 지연 후 스위치를 다시 확인하면 버튼이 실제로 눌렸는지 확인합니다.

이제 내부에서 또 다른 for 루프가 호출됩니다. 무효 루프() :

void loop() {
// put your main code here, to run repeatedly:
for (int i = 2; i <11; ++i) {
// check buttons
if(readButton(i)) {
doAction(i);
}
}
}

다시 말하지만, 이것은 배열의 모든 요소를 ​​살펴보고 눌렸는지 확인합니다. 호출하여 이를 수행합니다. 읽기 버튼 이전에 만든 메서드입니다. 버튼이 눌려지면 해당 핀 번호를 행동 :

void doAction(int pin) {
// perform tasks
switch (pin) {
case 2:
Keyboard.println('drive.google.com');
break;
case 3:
Keyboard.println('makeuseof.com');
break;
case 4:
// CMD + T (new tab, Chrome)
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('t');
delay(100);
Keyboard.releaseAll();
break;
case 5:
// your task here
break;
case 6:
// your task here
break;
case 7:
// your task here
break;
case 8:
// your task here
break;
case 9:
// your task here
break;
}
}

이것은 다음을 사용하여 핀 번호를 확인합니다. 스위치 성명. Switch 문(때때로 스위치 케이스 )와 유사하다 만약 명령문이지만 한 가지(이 경우 핀 번호)가 여러 다른 결과 중 하나와 같은지 확인하는 데 유용합니다. 기본적으로 계산 속도가 훨씬 빠릅니다.

주요 구성 요소는 이 switch 문 안에 있습니다. 키보드.println 물리적으로 모든 키를 입력한 것처럼 컴퓨터에 텍스트를 씁니다. 키보드.프레스 하나의 키를 길게 누릅니다. 다음을 사용하여 릴리스하는 것을 잊지 마십시오. Keyboard.release모두 잠시 후!

Mac에서 메시지를 재설정하는 방법

전체 코드는 다음과 같습니다.

int keys[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
void setup() {
// put your setup code here, to run once:
Keyboard.begin(); // setup keyboard
for (int i = 2; i <11; ++i) {
// initilize pins
pinMode(i, INPUT);
}
}
void loop() {
// put your main code here, to run repeatedly:
for (int i = 2; i <11; ++i) {
// check buttons
if(readButton(i)) {
doAction(i);
}
}
}
boolean readButton(int pin) {
// check and debounce buttons
if (digitalRead(pin) == HIGH) {
delay(10);
if (digitalRead(pin) == HIGH) {
return true;
}
}
return false;
}
void doAction(int pin) {
// perform tasks
switch (pin) {
case 2:
Keyboard.println('drive.google.com');
break;
case 3:
Keyboard.println('makeuseof.com');
break;
case 4:
// CMD + T (new tab, Chrome)
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('t');
delay(100);
Keyboard.releaseAll();
break;
case 5:
// your task here
break;
case 6:
// your task here
break;
case 7:
// your task here
break;
case 8:
// your task here
break;
case 9:
// your task here
break;
}
}

모든 숫자 및 문자 키 외에도 Arduino는 대부분의 특수 키를 누를 수 있습니다. 키보드 수정자 . 이는 키보드 단축키를 누를 때 특히 유용합니다. Arduino 웹 사이트에는 도움이 되는 목록 .

이제 몇 가지 바로 가기를 만드는 일만 남았습니다. 다음과 같은 기존 바로 가기에 매핑할 수 있습니다. 모든 것 + F4 (Windows에서 프로그램 닫기) 또는 명령 + NS (macOS 프로그램 종료). 또는 궁극의 키보드 단축키 가이드 , Windows 바로 가기를 만드는 방법 및 모든 크롬북 단축키 나만의 단축키 만들기를 시작합니다.

나만의 단축키 상자를 만드셨나요? 댓글로 알려주세요, 사진 몇 장 보고 싶어요!

우리가 추천하고 토론하는 항목이 마음에 드셨으면 좋겠습니다! MUO는 제휴 및 후원 파트너십을 가지고 있으므로 귀하의 구매 중 일부에서 수익의 일부를 받습니다. 이는 귀하가 지불하는 가격에 영향을 미치지 않으며 최고의 제품 추천을 제공하는 데 도움이 됩니다.

공유하다 공유하다 트위터 이메일 FBI가 하이브 랜섬웨어에 대한 경고를 발령한 이유

FBI는 특히 악성 랜섬웨어 변종에 대해 경고했습니다. Hive 랜섬웨어를 특히 조심해야 하는 이유가 여기에 있습니다.

다음 읽기
관련 항목
  • DIY
  • 건반
  • 키보드 단축키
  • 아두이노
저자 소개 조 코번(136건의 기사 게재)

Joe는 영국 링컨 대학교에서 컴퓨터 공학을 전공했습니다. 그는 전문 소프트웨어 개발자이며 드론을 날리거나 작곡을 하지 않을 때 종종 사진을 찍거나 동영상을 제작하는 모습을 볼 수 있습니다.

조 코번이 참여한 작품 더보기

뉴스레터 구독

뉴스레터에 가입하여 기술 팁, 리뷰, 무료 전자책 및 독점 거래를 확인하십시오!

구독하려면 여기를 클릭하세요.