USB to UART 모듈 사용법, stk500_getsync 문제 해결법
1. USB to UART 모듈
아두이노 UNO, Nano 버전에는 이미 USB 모듈이 탑재되어 있어 USB to UART 모듈의 필요성을 잘 느끼지 못하지만 초소형 pro mini 보드와 같은 경우 가격을 낮추기 위해 USB 모듈을 빼버려서 소스 업로드, 시리얼 통신으로 디버깅을 하기 위해 이 모듈이 필요합니다. PC에 가상 시리얼 포트(Virtual COM port)를 만들어서 시리얼 통신을 가능하게 해주는 역할을 합니다. Pro mini 의 경우 이베이에서 4$ 정도에 구할 수 있으므로 USB to UART 모듈 하나와 Pro mini 보드 다수를 구비하는 방법이 유용합니다. 매번 다른 작업 할 때 마다 보드 해체하는 것도 아깝잖아요.
USB to UART 모듈은 칩셋에 따라 종류도 다양하게 있습니다. FT232RL, CP2102 등등.. 칩에 따른 차이는 잘 모르겠네요. 모듈을 구입하면 PC에서 장치 인식을 위해 칩셋에 맞는 드라이버를 설치해 줘야 합니다. 아래 링크에서 드라이버를 다운로드 받아서 설치합니다.
FT232RL 드라이버 : http://www.ftdichip.com/Drivers/VCP.htm
CP2102 드라이버 : http://www.silabs.com/products/interface/usbtouart/Pages/usb-to-uart-bridge.aspx
2. 연결방법
USB 모듈에서 지원하는 핀도 제품에 따라 제각각인데 보통 기본으로 TX, RX, 5V, 3.3V, GND 핀을 기본으로 갖추고 있으며 이 핀만 연결해도 정상동작은 됩니다. 그리고 추가로 DTR 핀이 있는 경우 아두이노의 DTR 핀에 연결하면 오토리셋 기능이 활성화 됩니다. 오토리셋 기능은 아두이노 보드에 바이너리를 업로드 하는 경우 보드에 있는 리셋 버튼을 자동으로 활성화 시켜주는 기능을 합니다. UNO 등의 USB 지원 보드에서는 이런 기능이 이미 있어서 별도로 사용자가 리셋버튼을 누르지 않아도 됩니다만, 이 핀이 없는 USB 모듈을 사용하는 경우는 직접 해줘야 합니다. 아래에서 다시 설명 하겠습니다.
핀을 아래와 같이 보드와 연결합니다. Pro mini 등의 보드에는 짧은 쪽 면 끝에 Serial 통신을 위한 핀들이 모여 있습니다. 여길 사용하세요. 굳이 납땜할 필요없이 4핀 헤더를 접촉 잘 되게 눌러주면서 쓰셔도 됩니다.
USB Serial 통신을 할 때 D0, D1 핀이 TX, RX 용으로 사용되므로 다른 센서 등이 사용하고 있다면 빼둬야합니다. 모듈에 따라 틀리겠지만 일반적으로 RX, TX 가 서로 twist 된다는 점에도 유의하세요.
USB to UART 모듈 | 아두이노 (Pro mini 등) |
5V | VCC |
TXD | RXD |
RXD | TXD |
GND | GND |
PC – USB 모듈 – 보드 연결 후 보드에 전원이 들어오면 일단 정상.
3. 연결 확인, 소스 업로드
아두이노 IDE 를 실행시켜서 아무 소스코드나 불러옵니다. 그리고 업로드 버튼을 누르면 USB 모듈의 TX/RX 상태를 나타내는 LED에 별 반응이 없으면서 아래와 같은 에러 메시지가 아두이노 IDE 하단에 뜰겁니다.
avrdude: stk500_getsync(): not in sync: resp=0x00
이런 메시지가 뜨는 이유는 다양하겠지만 주로 다음과 같은 원인이 있습니다.
- 아두이노 IDE에서 선택된 보드와 물리적으로 연결된 보드가 다른 경우
- TX, RX 핀 연결이 잘못되어 있는 경우
- 아두이노 보드의 시리얼 TX, RX 로 예약된 핀이 다른 용도로 사용되는 경우
- 타겟 보드의 부트로더에 이상이 있는 경우
- 오토리셋 기능이 지원되지 않는 USB 모듈을 사용할 때 사용자가 리셋을 적절히 하지 않는 경우
먼저 1번의 경우 아두이노 IDE에서 [도구 > 보드] 메뉴를 통해 적절한 보드를 선택함으로써 해결 가능. 2번의 경우 TX, RX 핀이 제대로 연결되었는지 확인합니다. 3번의 경우에 해당하는지 확인하고 D0, D1 핀 연결을 제거.
5번의 경우 사용자가 직접 리셋 버튼을 눌러줘야 합니다. 아두이노 IDE에서 업로드 버튼을 누르고 유심히 IDE 하단에 뜨는 메시지를 체크하세요. 컴파일.. 진행하다가 업로딩으로 넘어가는 순간이 있을 겁니다. 이 타이밍에 맞춰서 보드의 리셋 버튼을 눌러줘야 합니다. 그러면 USB 모듈의 TX/RX LED가 마구 깜빡거리면서 업로드가 정상적으로 진행될 겁니다. 이후 Serial 창을 열어 시리얼 메시지도 정상적으로 수신이 되는지 확인해보세요.
드물게 4번의 문제가 있는 경우도 있다고 합니다. 이때는 정상적으로 업로딩이 가능한 아두이노 UNO 보드를 이용해 문제가 있는 보드의 부트로더를 구워줘야 합니다. 내용이 많고 여기서 자세히 설명할 주제는 아닌지라 링크로 대체합니다.