키보드및 트랙볼 인코더 컨트롤러 보드

리뷰&리뷰 2018. 8. 19. 16:32 Posted by D-E-C-E-M-B-E-R
반응형



키보드및 트랙볼 인코더 보드



참조

*******************************************************************************************************

*******************************************************************************************************

1. 아케이드용 트랙볼 제품 리뷰

    3인치 제품  http://december.tistory.com/1434

    4.5Cm 제품 https://december.tistory.com/1435

2 키보드및 트랙볼 컨트롤러

   http://december.tistory.com/1430

3. 조이스틱 컨트롤러 보드 SKY-Q4T

   http://december.tistory.com/1460

4. 나만의 조이스틱 만들기 

   http://december.tistory.com/1358

5. 키보드와 마우스를 이용한 트랙볼 조이스틱 만들기 

     http://december.tistory.com/1454

6. 올인원 조이스틱 만들기

   http://december.tistory.com/1428

7. 레이저마우스를 이용한 알카노이드 스피너 (다이알 컨트롤러) 만들기

   (광마우스도 가능함 -작업이 필요함)

    http://december.tistory.com/1427   알카노이드용 스피너 만들기

8. 마우스 광센서를 이용한 로터리 레버 만들기 

   http://december.tistory.com/1456

   https://december.tistory.com/1463

9.  2인용 조이스틱 만들기

    https://december.tistory.com/1500

*********************************************************************************************************





키보드및 트랙볼 컨트롤러 보드


알리에서 처음 이제품을 받았을때 아무것도 작동하지 않았다.

컨트롤러 보드와 제공된 USB케이블이 불량이다.

이러면 불량 찾기가 참 힘들다.

장치 관리자에 정상적으로 올라오면서 작동은 하지 않는 증상

개발자에게 도움요청을 했지만 아무런 도움도 얻지 못했다.

이 개발자는  사용자를 무시하는 듯한 발언을 잘 한다.

제대로 된 매뉴얼도 없고...홈페이지도 아주 허름한데..

자신의 홈페이지 메뉴얼을 참조 안했다고 구박한다.

판매자 홈페이지만 봐도 이 제품에 대한 특징을 이해 할수는 있다.

작동 방법도 쉽게 따라 할수 있다.

하지만 동작하지 않는 고장난 제품인데...

매뉴얼을 봐도 홈페이지를 따라해도 살아나지는 않는다.

결국은 환불을 했다.

오랫동안 부품정보로 가지고 있다가 고민하고 구입한 제품인데...매우 아쉽다.

환불후에 안 사실이지만 장치도 올라왔다 사라졌다 한다.

이것때문에 냉납을 의심하게 되었다.

버리는 샘 치고 냉납 작업을 해보았다.

결국 칩셋 냉납인 것으로 확인 되었긴 하지만 이때도 고쳐진것을 확인하기 어려웠다.

USB 부분도 USB 포트 4귀퉁이가 납땜이 되어 있지 않아 끼다가 USB포트가 위로 들썩이는 현상이 발생한다.

이부분도 납땜해 준다.

USB 컨넥터 고정 부분은 왜 납땜이 안되어 있는지 이해가 안간다??

보드는 어짜피 내부에 있을거라 저런 포트는 필요없다.

USB 컨넥터 부분은 일반 4핀으로 만들면 된다.


냉납 때문에 프로그램이 초기화 된건지 날아간건지 모르겠지만 ???

냉납후에도 작동하지 않아 그냥 버릴뻔 했다.

(내부 프로그램이 날아간 것이다.)

냉납후 PYTHON 프로그램을 다시 업로드 해주니 정상 작동 한다.

프로그램 업로드 과정이 아주 어렵다.

뒤에 다시 설명하겠지만 프로그램모드로 셋팅하고(27-28) 

LIBUSB 드라이버를 올려줘야 프로그램 업로드 준비가 끝난다.

LIBUSB 드라이버 올리는 것도 쉬운 작업이 아니다.

여기서 한번  버릴 뻔 했다.

이렇게 해도 사용하다보면 가끔 멈춘다.

그냥 USB 재연결 하고 사용한다. (불량은 불량이다.)

여러모로 까다로운 제품이다.

어짜피 버리기 전에 한번 해본 작업인데 다행히 프로그램모드까지 들어가진다.

프로그램모드만 들어가고 프로그램업로드까지만 하면 이제품은 매력적인 제품이 된다.


1. 침셋냉납

2. USB 포트 고정부분 납땜

3. USB 케이블 교체

4. PYTHON 프로그램 업로드 



이제품은 참 독특한 제품이다.

불량만 없었으면....

제품 아이디어는 칭찬해줄만한 제품이다.

이제품 덕분에 PYTHON 도 알아보고..여러가지 공부도 하게 되었다.


1. 싱글 조이스틱

2. 듀얼 조이스틱

3. 키보드&트랙볼






 보드의 특징

  • USB 2.0 프로토콜 인터페이스
  • 빠른 응답 속도
  • 마이크로 USB 타입 B타입 암 커넥터
  • 여유있게  많은 핀들
  • 3 가지 종류의 LED 효과 ( UP + MODE 버튼 )
  • 8 가지 방식의 아날로그 입력과 모든 방식은 12 비트 (0 --- 2 ^ 12-1)의 정확도를 가진다.
  • 구성 소프트웨어는 오픈 소스이므로 계속 개발할 수 있다.(사용자 정의 수정이 가능하다.)
  • 디폴트로 그대로 사용해도 되고 사용자가 수정해서 사용할수도 있다.

구성 소프트웨어는 Python 3에 의해 작성되었다 

Python 2와 호환 되지 않는다  

Python3용 program  다운로드 . ( XM-SETUP.py )


PROGRAM 모드


이 제품은 디폴트 상태에서 4 가지 장치로 변경할수 있다. 

27-28번 핀을 쇼트 시키면 program 모드로 작동한다.

PROGRAM 모드일때 장치 



PYthon 에 대해 공부 한다면 더 다양하게 변경 구성 할 수도 있다.

일단 디폴트는 4가지 모드 변환이다.

초보 사용자가 사용할수 있는 모드는 3가지 이다.


CUSTOM HID 는  모르겠다.

Windows+R 키를 누르고 cmd 입력

python xm_setup.py 엔터


=========================================

Please select a device type:

1.Keyboard+TrackBall;                     사용자 정의 키보드 및 트랙볼

2.Single Player controller with LED;   

LED가있는 싱글 플레이어 게임 컨트롤러

3.Dual players controller;                듀얼 플레이어 게임 컨트롤러

4.Custom HID;                              사용자 정의 HID;

=========================================

장치를 키보드 및 트랙볼로 구성하면 원하는대로 키보드의 키 값을 사용자 정의 할 수 있다.


===========================================================

LIBUSB 설치  = PDF 파일을 잘 읽어 봐야 한다. =

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

PROGRAM 모드일때 보드의 libusb 드라이버를 설치해 줘야 한다. 

    Windows 시리즈 플랫폼에서 libusb를 설치하는 방법은 다음과 같다.

    windows.pdf에 libusb를 설치하는 방법


서명안된 드라이버 설치 방법

http://december.tistory.com/1439


How to Install Libusb Driver.pdf

libusb-win32-bin-1.2.6.0.zip



PDF 설명대로 inf-wizard.exe 를 실행시켜 드라이버를 만들어준다.

드라이버는 만들었으므로 압축 풀고 설치만 해주면 된다.

드라이버는 만들었으니...장치 관리자에 추가만 해주면 된다.

다시 한번 말하지만 서명 안된 드라이버라는 것을 알고 설치해야 한다.


Xin-Mo Proframmer Driver.7z


LIBUSB32 Driver 를 성공적으로 설치하면, 

프로그래머 모드로 장치를 만들고 다음 xm_setup.py를 실행한다. 

Windows+R 키를 누르고 cmd 입력

python xm_setup.py 엔터



이 화면이 표시되면 USB 프로토콜을 통해 장치와 통신이 성공한 것이다. 

이 장치를 키보드 + 트랙볼 및 사용자 정의 키보드 키로 사용하려면 xm_setup.py를 편집 한 다음 실행해야 한다. 

일단 초보자에게는 다른모드는 편집해서 수정이 어렵다.

xm 마메최적화.py

xm_setup.py

Hut1_12v2.pdf

키보드 키값을 편집할 경우 PDF 파일의 53페이지를 참고한다.

PYTHON 에서 USB 모듈 없음 에러가 나오면 

아래  usb module not found error 를 참조 한다.


PROGRAM 모드에서 USB 라이브러리를 설치하는 방법

PDF 파일에 설명이 있지만 설치하다 보면 살짝 다르게 설치 된다.

설명대로 만든 드라이버에 추가적으로 다시 만든 드라이버를 합친 화일이다.


Xin-Mo Proframmer Driver.7z

설명대로 만든 드라이버는 설치가 안 될수도 있다.

두번째 드라이버를 새로 만들어 설치해야 한다.

두번째 드라이버는 설명과는 다르게 하드웨어 아이디가 다르게 만들어진다.

설명서대로 만든 드라이버를 컴퓨터가 인식하고 있는 하드웨어 아이디만 변경해 주면 정상드라이버가 된다.

하드웨어 아이디가 다르면 XM-setup.py 화일도 수정해 줘야 한다.

자신의 컴퓨터에서  인식하는 하드웨어 아이디값을 넣어주고 수정해야만 한다.

이드라이버는 서명 안된 드라이버이므로 그대로 설치가 안된다.

서명 안된 드라이버 설치방법을 확인하고 설치해야 한다.

http://december.tistory.com/1439

===========================================================



    

xm_setup.py

xm 마메최적화.py


자신의 컴퓨터에서  인식하는 하드웨어 아이디값을 넣어주고 수정해야만 한다.

===========================================================

수정내용

===========================================================


# 장치 검색 

# 컴퓨터에따라 idVendor = 0x16c0, idProduct = 0x5710      // 바뀔수 있으니 확인하여 바꿔준다.

# dev =  usb.core.find(idVendor = 0x0483, idProduct = 0x5710)  // default 값

# PDF 설명 idVendor = 0x0483    이지만 컴퓨터에서 인식하는 값은 0x16c0 이다 .


dev =  usb.core.find(idVendor = 0x16c0, idProduct = 0x5710)  

# 설치된 컴퓨터에 맞게 바꾸어 줘야 한다.



usb module not found  ERROR

import  usb.core    usb module not found  에러가 나오는경우 해결방법

https://github.com/walac/pyusb/blob/master/docs/tutorial.rst 


USB 통신 섹션은 PyUSB에 의해 구현된다. 

그러므로 Python USB module을 설치해 준다.


pyusb-1.0.0a2.zip


이화일 압축을 풀어준다.

==============================================

Installing PyUSB on Windows

===========================

 

Now that PyUSB is 100% written in Python, you install it on Windows

in the same way you do on Linux::

 

    python setup.py install

 

Remember that you need libusb (1.0 or 0.1) or OpenUSB running on your

system. For Windows users, libusb 1.0 is still experimental, so it is

recommended libusb-win32 package. Check the libusb website for updates

(http://www.libusb.org).

==================================


C:\.....\Python\pyusb-1.0.0a2


Window+R  cmd

Python setup.py install    실행







 아래 그림처럼 실행되면 정상적으로 USB 모듈이 설치되었다고 보면 된다.

  

아래와 같이 정상적으로 실행되면 성공한 것임

Windows+R 키를 누르고 cmd 입력

python xm_setup.py 엔터




 


프로그래밍 모드로 들어가는 방법?

 어떤 종류의 디바이스 모드이든, 디바이스의 전원이 프로그래밍 모드로 들어가기 전에

 P2의 28 번째 핀을 GND에 연결 한다. (27-28 연결)

디바이스 타입 변경은 프로그램 모드에서만 할수있다. 

Windows+R 키를 누르고 cmd 입력

python xm_setup.py 엔터





LED가있는 싱글 플레이어 게임 컨트롤러




아날로그 인풋과 디지탈 인풋 사이의 전환이 상당히 번거롭다.

다른제품에서 모드버튼으로 해결되는데 이제품은 27-28번핀을 쇼트시켜야만 전환이 가능하다.

모드버튼은 단지 LED 변화에만 관여한다.

개발자가 조이스틱 컨트로러를 만들면서 조이스틱의 기능 변경은 어렵게 하고 

LED 변경 을 쉽게 하기위해 mode 버튼을 LED 쪽으로 기능을 할당해 버렸다.



아날로그 인풋 선택시



디지탈 인풋 선택시





특징

17 개의 버튼과 17 개의 LED가 있다. 

모든 버튼은 LED를 제어 한다. 

LED 는 3 가지 다른 효과를 줄수 있다. 

  • 항상 켜져 있음.
  • 버튼을 누르면 LED가 켜짐.
  • 버튼을 누르면 LED가 꺼짐.

 LED 효과 구성은 전원이 꺼저도 장치에 저장된다. 

 UP + MODE 를 사용하여 LED 효과를 전환한다.

 장치의 전원이 켜지면 모든 LED가 몇 번 깜박인다. 

 이것은 LED의 배선이 올바르게 연결 되었는지 확인하는 데 도움이 된다. 

 

 기기의 전원을 끄더라도 선택 사항은 모두 저장 된다.


LED 배선 방법 :


 USB 포트 제공 전류는 최대 100mA 이다. 

       

 

듀얼 플레이어 게임 컨트롤러







Player 1

Player 2




특색:

    동시에 2 명의 플레이어를 지원 한다. 

    플레이어 1에는 20 개의 버튼이 있고 플레이어 2에는 18 개의 버튼이 있다. 


 사용자 정의 키보드 + 트랙볼


Hut1_12v2.pdf

xm_setup.py

xm 마메최적화.py






key_test

xm 마메최적화.py






조이스틱에서 사용하는 키만 모아서 설정

MAME 에서 사용하는키중 Ctrl 키와  Space 키를 추가 해 주었다.

===============================================

수정내용

===============================================

# 장치를 키보드로 정의하려면, 실행하기 전에 원하는대로 키 값을 수정하십시오.

# 그냥 수정하거나 무조건 추가하지 마십시오.

# 첨부된 Hut1_12v2.pdf 파일 53 페이지 표 12를 참조하십시오.

#     예 : 0x04는 키보드가 문자 'a'를 입력 함을 의미합니다.

#         'a '  0x04

#         'b'   0x05

=============================================

keyvalue =array.array

('B', [0x04, 0x16, 0x07, 0x1D, 0x1B, 0x06, 0x13, 0xE0,0x0C, # A S D Z X C P Ctrl I

      0x50, 0x4F, 0x52, 0x51, 0x14, 0x1A, 0x08, 0x15,0x0B,  # LEFT RIGHT UP DOWN Q W E R H 

      0x20, 0x1E, 0x1F, 0x22, 0x23, 0x21, 0x24, 0x25,0x26,  # 3 1 2 5 6 4 7 8 9

      0x27, 0x05, 0x2B, 0x2C, 0x28, 0x29, 0x17, 0x0D,0x0E, # 0 B TAP SPACE ENTER ESC T J K

      0x0A, 0x18, 0x19, 0x1C  ] )                                   # G U V Y



#

# 장치를 키보드로 정의하려면, 실행하기 전에 원하는대로 다음 키 값을 수정하십시오.

# 그냥 수정하거나 무조건 추가하지 마십시오.

# 첨부된 Hut1_12v2.pdf 파일 53 페이지 표 12를 참조하십시오.

#     예 : 0x04는 키보드가 문자 'a'를 입력 함을 의미합니다.

#         'a '  0x04

#         'b'   0x05

#  노트

#    : 0x04는 키보드가 'a'를 입력 함을 의미하고, 0x05는 'b'를 의미합니다.

#      0x04는 문자 'a'의 ASCII 값이 아닙니다.

#      이것은 USB 프로토콜 규칙입니다.

#      PageUp     0x4B

#      PageDown   0x4E

#      UpArrow      52        <===  0x10(M)

#      DownArrow    51        <===  0x11(N)

#      LeftArrow    50        <===  0x0E(K)

#      RightArrow   4F        <===  0x0F(L)

#      Enter        28

#      ESC          29

#      TAP          2B        <===  0X2A (BackSpace)

#      Space        2C

#      Home         4A

#      END          4D

#      LEFT CTRL    0xE0



# 내용을 정확하게 파악하기전에는 변경하지 마세요.


# 장치로 로 전송 된 데이터

mydata = array.array('B',[0x01])


# 장치에서 수신 한 데이터

recdata = None                         


# 장치 검색 

# 컴퓨터에따라 idVendor = 0x16c0, idProduct = 0x5710 바뀔수 있으니 확인하여 바꿔준다.

# dev =  usb.core.find(idVendor = 0x0483, idProduct = 0x5710)  // DEFAULT 값


dev =  usb.core.find(idVendor = 0x16c0, idProduct = 0x5710)  

# was it found?   장치를 못 찾으면 ID VENDER 값이 드라이버와 맞는지 확인한다.

if dev is None:

    raise ValueError('Device not found')

else:

    # Set the active configuration. With no arguments, the first configuration will be the active one

    dev.set_configuration()

    print ("Device connected.")

=============================================

MAME KEBOARD  최적화

=============================================



특징

  • USB 2.0 프로토콜을 사용.
  • win10 / win8 / win7 / vista / XP / 2000 / 98, Linux, PS3, Linux, MAC, Android, Raspberry Pi와 호환 된다.
  • 사용자 정의 키보드 사용 가능
  • 엔코더 트랙볼 인터페이스
  • 마우스의 오른쪽버튼  중간버튼  왼쪽 버튼 지원

=================================================

배열 데이터에는 40 개의 요소가 있다. 

색인 번호는 0에서 39까지 이다. 

이것은 keyvalue 배열의 구성 파일을 나타낸다. 

콜론 뒤에있는 문자는 기본 키보드 입력 문자이다. 

xm_setup.py 파일을 편집하여 필요한 입력 문자를 사용자 정의 할수 있다. 

편안한 기능이다.

이문자들은 ASCII 문자가 아니고 USB 프로토콜 지원 문자를 의미한다. 

따라서 전용 입력 키보드를 직접 사용자 정의 할 수도 있다.

다양한 센서를 연결하여 입력 핀을 통해 데이터를 수집하거나 

출력 핀을 통해 다른 장치에 제어 신호를 보낼 수 있다. 


파이썬으로 간단한 데모 프로그램이 제공된다. 

코드는 매우 간단 하다.


먼저 명령 0x03을 보내면 나중에 데이터가 제어 데이터임을 의미한다. 

OUT 데이터는 총 32 비트이므로 제어 데이터는 4 바이트 이다. 

데모 파일에서 제어 데이터는 0x04, 0x05, 0x06, 0x07 이다. 

비트가 1이면 출력 고전압, 0이면 저전압을 의미 한다. 
명령 0x03을 보낸 후 장치가 데이터를 다시 전송  한다. 

송신 데이터는 총 6 바이트 이다. 

모든 실행이 실제로 완료되었는지 확인하기 위해 다시 읽은 후

0x03 제어 데이터가 전송 된 후 처음 4 바이트가 뒤 따른다.

 




엔코더 신호란?

    한 쌍의 신호는 두 개의 동일한 펄스 신호를 포함하며 1/4주기만큼 위상이 다르다. 

    따라서 X 축에는 X1( CLUCK ,PULSE )과 X2( Direction ) 의 두 핀이 있다. 

    마찬가지로 Y 축에는 Y1( CLUCK ,PULSE )과 Y2( Direction )의 두 핀이 있다.  

    이 인터페이스 트랙볼을 사용하는 것이 좋다. 





X-AXIS ( 좌우 이동 )

    X Direction

    X Pulse

Y-AXIS ( 위 아래 이동 )

   Y Direction

   Y Pulse



핀 1 =  수직(수평) CLK1 (PULSE)

핀 2 = 5V + 

핀 3 = GND 

핀 4 = 수직(수평)  DIR1 (Direction)









제품 이름 : 키보드 & 트랙볼 보드



 http://www.xin-mo.com/trackball.html


https://www.aliexpress.com/item/Xinmotek-Trackball-Board-Arcade-Game-Controller-USB-Encoder-Board-Game-Machine-Accessories/32868476695.html?spm=a2g0s.9042311.0.0.a4f14c4dLGMK7M


PYTHON 3설치

https://www.python.org/downloads/


오리지널 화일

xm_setup.zip


키보드 관련 최종 수정 화일

TAP,UP,DOWN,LEFT,RIGHT추가  키보드 M,N,K,L,BackSpace 제외 

xm_setup.py



USB 모듈 에러 나올경우 설치 (100% , 설치해야함)

pyusb-1.0.0a2.zip


라이브러리 64 드라이버 설치

프로그램 모드에서 보드의 드라이버 만들어 설치하기 ( PDF 파일을 참조해야함)

libusb-win32-bin-1.2.6.0.zip

How to Install Libusb Driver.pdf


편집프로그램

https://www.sublimetext.com/3

Sublime Text Build 3176 x64 Setup.exe



=========================================

=========================================




반응형