본문 바로가기

V-USB와 C#용 LibUsbDotNet을 사용한 USB 테스트

by rudals.kim 2023. 6. 24. 댓글 개
반응형

AVR을 사용했던 분이라면  V-USB라는 것을 들어본 적이 있을 것입니다.

요즘 나오는 칩셋들은 USB가 칩셋에 기본적으로 내장되어 나오는 경우가 많은데 예전 AVR 칩셋의 경우에는 USB 자체가 제공되지 않습니다. 그래서 USB가 지원되지 않는 AVR 칩에서도 USB를 사용하기 위해 나온 것이 V-USB driver이며 SW적으로 USB를 컨트롤합니다. 보다 자세한 내용은 아래 사이트를 참고하시면 됩니다.

 

V-USB - A Firmware-Only USB Driver for Atmel AVR Microcontrollers

Discover powerful applications such as Little Snitch Mini, Little Snitch, LaunchBar and Micro Snitch.

www.obdev.at

V-USB 사이트에는 기본적인 V-USB를 사용하기 위한 회로도를 제공해 줍니다.

하나의 방법은 VCC에 다이오드 2개를 사용하여 전압을 낮춰서 사용하는 방법과 다른 하나는 5V를 사용하는데 데이터라인에 제너다이오드를 각 각 1개씩 연결하여 사용하는 방법이 있습니다.

저는 2번째 방법을 사용하여 아래와 같은 회로를 구성하였습니다.

위의 작성된 PCB의 거버파일을 생성하여 아래 JLCPCB 사이트에서 주문을 넣었습니다.

 

SMT PCB어셈블리 3D프린팅 - JLCPCB

JLCPCB, 더 빠른 PCB & SMT 어셈블리를 위한 것이다 모든 단계에서 시간과 비용 절감한다. 클릭하시면 동영상을 볼 수 있습니다.

jlcpcb.com

주문 페이지에서 다른 옵션은 그대로 두고 PCB 색상(적색으로 변경)과 주문번호 표시 삭제 옵션만 적용하였습니다.

참고로 PCB의 기본색상인 녹색을 다른 색으로 변경하면 제작 소요일이 1~2일이 추가됩니다.

주문 전에 Gerver Viewer에서 제공해 주는 3D viewer를 사용하여 잘못된 부분은 없는지 한 번 더 확인해 보았습니다.

아래는 배송된 PCB인데 PCB 색상 변경과 주말이 껴서 6일 정도 걸렸는데 만족스럽게 잘 나온 것 같습니다.

사용될 부품을 PCB 위에 대충 배치해 보았습니다.

최소한의 테스트에 필요한 부품만을 납땜 후 펌웨어를 올려 동작시켜 보았습니다.

V-USB 보드와 윈도우 PC를 USB로 연결하니 윈도우 PC에서 USB 장치를 제대로 인식합니다.

펌웨어 빌드시 장치명으로 rudals_vusb로 적용했더니 아래와 같이 잘 나오네요.

장치관리자에 보면 기타 장치로 인식되고(아래 왼쪽 이미지), libusb 드라이버를 설치하면 정상적인 디바이스로 인식됩니다.(아래 오른쪽 이미지) 

V-USB 동작 테스트를 하기 위해 간단히 C# 프로그램을 작성할 예정인데 LibUsbDotNet 라이브러리를 사용하면 쉽게 응용프로그램을 만들어서 USB 통신을 할 수 있습니다.

 

GitHub - LibUsbDotNet/LibUsbDotNet: My updates to LibUsbDotNet, an excellent library for cross-platform USB device control using

My updates to LibUsbDotNet, an excellent library for cross-platform USB device control using Mono/.NET - GitHub - LibUsbDotNet/LibUsbDotNet: My updates to LibUsbDotNet, an excellent library for cro...

github.com

제공되는 예제 파일을 참고하여 아래와 같이 간단한 윈도우용 프로그램을 작성하였습니다.

좀 더 자세한 내용은 아래 이미지를 참고하시기 바랍니다.

실행된 프로그램의 왼쪽 아래의 Open 버튼을 클릭하면 libusb driver에 연결된 장치의 드라이버 정보 및  관련 USB의 정보가 표시됩니다.

위 이미지의 아래 오른쪽의 'On' 버튼을 클릭하면 USB로 ON 명령을 전송하여 보드의 적색 LED가 켜지고 'Off' 버튼을 클릭하면 반대로 LED가 꺼집니다. 간단히 USB 컨트롤 테스트를 할 수 있는 프로그램을 작성했는데 잘 동작되네요.

 

간단한 USB 장치가 필요한 경우 이런 식으로 테스트를 하면 될 것 같습니다.

참고로 커스텀 키보드용 펌웨어인 QMK에서도 USB가 지원 안 되는 칩인 경우 이 드라이버를 사용하여 키보드로 인식 후 동작됩니다.

 

GitHub - qmk/qmk_firmware: Open-source keyboard firmware for Atmel AVR and Arm USB families

Open-source keyboard firmware for Atmel AVR and Arm USB families - GitHub - qmk/qmk_firmware: Open-source keyboard firmware for Atmel AVR and Arm USB families

github.com

 

반응형

댓글