USB 복합장치 제작

[INTERFACE]/USB | 2017.12.01 17:32
Posted by nexp
USB HID 복합장치 제작 하려고 하고 있다.
15년전에 제작 했던 자료를 꺼내서 해 보려고 했더니 너무 옛날 보드라 관련 자료도 없고 개발환경도 너무나 달라져서 별로 도움이 되지 않는다.

예전에는 USB 시퀀스 잘 알고 있었는데... HID 키보드, 마우스, 조이스틱 (복합장치)등의 장치를 잘 다루었는데..
새로하려니 쉽지가 않다.

우선 기존에 잘 동작 하던 보드에 레포트 디스크립터만 수정하면 되지 않을까?
-> 잘안된다.



TI 자료가 잘 정리되어 있는것 같다.

디스크립터 툴도 제공한다. 우선 기존에 만들었던 TI MSP430F5510 EVM 보드로 테스트 해보자




수정된 디스크립터를 이용해서 컴파일 했는데...  Custom HID는 잡히는데 키보드는 인식을 하지 못한다.
이상하다.
키보드 디스크립터만 만들어서 테스트 해보자
여전히 안된다.

뭐가 문제 이지?
코드에 수정해야 할부분이 또 따로 있나?
되는 코드와 안되는 코드를 비교해보자.

PID 부분이 다르다. PID를 바꾸니 잘 동작한다.
#define USB_VID               0x2047    // Vendor ID (VID)
#define USB_PID               0x0315        // Product ID (PID)

PID가 바뀐다고 안될이유는 없는데...
기존 드라이버를 지워보자

장치관리자에서 드라이버를 삭제하고 새로인식하니 잘 동작한다.
처음에 디스크립터 바꾸면서 잘못된 드라이버가 로딩되면서 문제가 된것 같다.



장치관리자에서 키보드, 커스텀 HID 복합 장치가 등록 되는것을 확인 할 수 있다.







기존 키보드 예제로 테스트 하려고 했는데...
HID 수신이 안된다.

그래서 HID 예제로 테스트 했다.
USB_Cconfig 폴더 내용만 복사하면 된다.
G:\DOC\MCU\MSP430\MSP430USBDevelopersPackage_5_20_06_02\MSP430_USB_Software\MSP430_USB_API\examples\HH1_hidDemo2hidDemo

HID는 TI제공 프로그램을 이용했고 HID로 'a' 'b' 보내면 LED 온 오프하고 'c'보내면 1초뒤에 키 값을 전송하도록 했다.



기본틀은 구성 됬고 필요에 따라 수정만 하면 될것 같다. 

TLC59108F  I2C LED Driver 보드 제작 - 카메라 모듈용


256-Step (8-Bit) Linear Programmable Brightness

Maximum Brightness Using a 97-kHz PWM

Maximum Output Current: 120 mA

Maximum Output Voltage: 17 V















MPSOC용 카메라 인터페이스 보드 제작

ZCU102 EVM 보드에 연결되는 3채널 카메라 인터페이스 보드를 제작 했다.
FMC_HPC Connector에 연결 가능하도록 했다.





보드 SMT 해서 왔는데 카메라 캐이블용 FFC 커넥터 방향 잘못됨
기존에 사용했던거라 확인하지 않았는데... 실제로 확인해 보니 반대로 납땜되어 있음
반드시 PCB에 프린트 해서 핀맵확인 필요

배치 정하기 전에 반드시 확인이 필요하다.
커넥터를 때내고 뒤집어 다시 납땜해서 해결


라즈베리파이 카메라 - opencv 테스트 (윈도우 개발자를 위주로)

리눅스 사용의 불편함( 윈도우즈환경에 익숙한 개발자를 위해..)이 있기 때문에 쉽게 윈도우즈 환경에서 테스트 하는 테스트를 진행 해 보도록 하겠다.
리눅스 명령어를 잘 몰라도 테스트 할수 있도록 해 보자.


기본적으로 VNC,  및 SAMBA가 설치 되어 있어야 한다.
(라즈베리파에서 VNC 설정 방법SAMBA 설치 방법 참고)


 

윈도우 탐색기를 이용하여 공유 폴더(SAMBA)에서 테스트 할 폴더 생성
 
\\Raspberrypi\pi\opencv_source\example\gray_test
 
  1. CMakeLists.txt 파일 생성(또는 기존 파일 복사)
  2. main.cpp 파일 생성(또는 기존 파일 복사)
  3. build 폴더 생성



main 코드 작성 및 수정



VNC 프로그램에서 라즈베리파이의 파일메니저 실행

예제 폴더 내에 있는 build 폴더에서 오른쪽 마우스 키를 눌러 터미널 실행



터미털 창에서 make 파일 생성
(make파일은 처음 한번만 생성해 주면 된다.)

pi@raspberrypi:~/opencv_source/example/gray_test/build $ cmake ..


make파일 생성 결과



예제파일 컴파일 하기
(코드 수정시 마다 컴파일 하면 된다.)

pi@raspberrypi:~/opencv_source/example/gray_test/build $ make
 
컴파일 결과 main 파일이 생성된것을 확인 할 수 있다.



프로그램 실행

파일메니저로 main 파일을 더블클릭해서 실행 하거나 터미널 창에서 프로그램 실행 하면 결과를 확인 할 수 있다.




테스트 결과

opencv를 이용하여 라즈베리파이 카메라에서 출력되는 영상을 그레이 영상으로 변환하여 출력 하는 예제가 실행 되는것을 확인 할 수 있다.





라즈베리파이3 -  VNC 설치 (윈도우에서 원격제어)

라즈베리파이 개발을 위해 모니터 및 키보드 연결없이 원격으로 접속해서 제어하면 편리한데 VNC 뷰어를 이용하면 된다.

(참고로 한번 설정하고 나면 다음부터는 자동으로 접속이 가능하다.)


VNC 서버 프로그램 설치

우선 라즈베리파이에 VNC 서버를 설치 해야 한다.

PUTTY와 같은 SSH를 이용하여 라즈베리파이 보드에 접속하여 x11vnc 패키지를 설치한다.

pi@raspberrypi:~ $ sudo apt-get install x11vnc xinetd



/boot/config.txt 파일을 편집기로 열어서 해상도 수정

pi@raspberrypi:~ $ sudo nano /boot/config.txt


해상도를 1280x720 으로 설정하고 저장한다.


바뀐 설정을 적용시키기 위해 라즈베리파이를 재부팅한다


VNC Server 프로그램을 실행한다.

pi@raspberrypi:~ $ x11vnc



VNC클라이언트 설치

PC상에는 VNC Viewer 프로그램을 실행해서 원격 제어 할 수 있다.

VNC Verwer는 https://www.realvnc.com/download/viewer/ 에서 다운로드 가능한다.


VNC 프로그램을 실행하고 라즈베리파이 IP로 접속한다.


 ID와 패스워드 입력하고 로그인



접속되면 윈도우 환경에서 라즈베리 파이제어가 가능해 진다.













블로그 이미지

nexp

카테고리

분류 전체보기 (1560)
[MyProject] (48)
[TI] (75)
[NXP] (51)
[ST_MICRO] (129)
[FreeScale] (31)
[MSP430] (140)
[Microchip] (131)
Cortex-M (36)
[ATMEL] (29)
[AnalogDevice] (22)
[Embedded] (2)
ARM9 (24)
[AVR] (80)
[DSP] (111)
[8051] (21)
[MCU] (50)
[INTERFACE] (213)
[AppBoard] (23)
[ROBOT] (25)
[MODULE] (129)
[SENSOR] (41)
[DATA] (21)
[FPGA] (32)
[EVB] (1)
[Proramming] (38)
[MyLog] (6)
[IDEA] (0)
[Utility] (19)
[Book] (24)
취미생활 (4)
[Link] (2)