홈

현이의 개발 이야기

8키 키보드 만들기 - artsey.io

일상 2024. 05. 15. 00:14

회사에서 다른 엔지니어 분이 키보드 만들기 g2g를 열어주셔서 참여해보았다. g2g 세션에서 만든 8키 키보드g2g 세션에서 만든 8키 키보드
직접 납땜과 회로 연결을 했는데, 아주 재미있는 세션이었다.
키캡과 키보드 몸체는 3D 프린터로 뽑아주셨고, 나름 청축을 사용한 기계식 키보드이다.
8키 키보드는 장난감같이 생겼지만, 동시 입력을 활용해 사실상 모든 글자를 입력할 수 있다.
동시 입력을 어떻게 처리할지는 MCU에 설치하는 펌웨어에 따라 달렸는데, 이번 세션에서는 artsey.io에서 제공하는 펌웨어를 사용했다.
artsey.io의 키 조합artsey.io의 키 조합
납땜하는 과정납땜하는 과정

키보드 동작 원리

키보드의 회로 원리와 동작 방식을 설명해주셨는데, 아주 이해하기 쉽게 잘 알려주셨다.
키보드 회로 (키패드 버전)키보드 회로 (키패드 버전)
위 그림과 같이 키보드는 격자 모양으로 배열되어 있는데, 키가 눌렸을 때 눌린 행과 열을 MCU (Micro Controller Unit)에서 감지하여 어떤 키가 입력되었는지를 알 수 있다.

동시 입력은?

그런데 만약 위 그림에서 0과 F를 동시에 눌렀다고 가정하면, 0에 해당하는 X1, Y1과 F에 해당하는 X4, Y4에 신호가 잡히게 될 것이다. 이것을 (X1, Y4)와 (X4, Y1), 즉, 3과 C가 눌린 상황과 어떻게 구분할 수 있을까?
키 입력 감지가 병렬로 진행되는 것이 아니라, X쪽에서 신호를 내보내면, 눌린 키에 해당하는 Y쪽에 신호가 들어오게 되어 이러한 문제는 발생하지 않는다고 하셨다.
다시 말해, 0과 F가 눌린 상황은,
  1. X1에서 신호 보냄 -> Y1에서 신호 잡힘 -> "0"
  2. X2에서 신호 보냄 -> 아무것도 안 잡힘
  3. X3에서 신호 보냄 -> 아무것도 안 잡힘
  4. X4에서 신호 보냄 -> Y4에서 신호 잡힘 -> "F"
이와 같은 처리의 반복으로 동시 입력을 처리할 수 있다는 것이다.

고스팅 현상

각 키를 눌렀을 때 회로에서 어떤 일이 일어나는지를 살펴보자.
키보드의 키는 위 그림과 같이 스위치이다. 키가 눌렸을 때 해당 스위치가 닫혀 Col에서 보낸 신호를 Row에 전달할 수 있게 되는 것이다.
X2에서 보낸 신호가 Y3에서 감지되는 과정X2에서 보낸 신호가 Y3에서 감지되는 과정
그런데 이렇게 하면 고스팅 현상이라 불리는 문제가 발생한다.
(X2, Y2), (X2, Y3), (X3, Y2)의 세 키를 동시에 누른 상황을 생각해보자.
X2에서 신호를 보내는 경우, Y2와 Y3에서 정상적으로 감지할 수 있다.
X2 검사 시 Y2, Y3 감지X2 검사 시 Y2, Y3 감지
하지만 다음 그림과 같이, X3에서 신호를 보내는 경우에 문제가 발생한다.
X3 검사 시 Y2, Y3 감지X3 검사 시 Y2, Y3 감지
전기 신호가 닫힌 스위치들을 따라서 Y3에서도 신호가 감지되는 것이다.
결과적으로 (X3, Y3)는 키를 누르지 않았음에도 눌린 것 처럼 신호가 들어오게 된다.

고스팅 현상 해결

이러한 고스팅 현상은 전기 신호가 원래 우리가 의도했던 방향대로 흘러가지 않아서 발생한다.
따라서 스위치와 함께 다이오드를 연결해주면 해결 가능하다.
고스팅 현상을 해결하는 다이오드고스팅 현상을 해결하는 다이오드
이제 세 키가 동시에 눌리더라도, 저기가 우리가 의도한 방향대로만 흐르게 되어 고스팅 현상이 일어나지 않는다.
댓글 0

로그인이 필요합니다.
로그인