[Research] Nvidia Jetson Nano 시리얼 통신

 

시리얼 통신으로 Jetson Nano 살리기 (feat. f1tenth 삽질기)

와, 진짜 오늘 하루, 아니 며칠 동안 뭘 한 건지 모르겠다. 평소처럼 내 애증의 F1TENTH 자율주행차, 그 안에 고이 모셔둔 Jetson Orin Nano 보드를 켜고 NoMachine으로 접속하려는데… 이게 왜 안될까? 첫째날은 3시간 동안 원인과 해결방안을 찾다가 IP 문제라고 판단, 이후 며칠 간 매일 30분은 넘게 붙잡고 씨름한 것 같은데, 와이파이를 못 잡는 건지 원격 접속 자체가 먹통이다.
F1tenth 메뉴얼에 따라 sudo systemctl disable gdm3 요걸 해놨더니, 보드에 모니터가 들어오지 않아 직접해결할 수 밖에 없는 상황. 진짜 총체적 난국. 리모트도 안 돼, 직접 연결도 안 돼. 이걸 어쩌란 말인가.

머릿속에는 ‘아… 그냥 밀어버릴까? 초기화가 답인가?’ 하는 생각만 스멀스멀 올라오는데, 그때 "시리얼 통신"을 알게 되었다! 마지막 희망, 당장 USB to Serial 모듈 주문했다.

모듈이 도착하고, 떨리는 마음으로 유튜브에서 찾은


영상을 보면서 따라 하기 시작했다. 근데… 왜 안돼? PuTTY 창은 깜깜무소식이고, 아무런 입력도 출력도 없었다. CP210x 드라이버 문제인가 싶어서 최신 버전으로 다시 깔아보고, 혹시나 윈도우가 문제인가 싶어서 우분투 깔린 다른 노트북까지 동원해서 시도해봤다. 진짜 별의별 짓을 다 한 것 같다. "띠링" 거리는 윈도우 에러음만 몇 번을 들었는지 모르겠다. 이벤트 뷰어까지 뒤져가면서 "드라이버 이름: null" 이딴 절망적인 메시지만 확인하고… 아, 진짜 포기할까?

한참을 멍하니 화면만 보다가, 문득 영상에서 스쳐 지나갔던 말이 떠올랐다. "각각 대응하는 곳에 연결하세요." 나는 당연히 TX는 TX끼리, RX는 RX끼리 연결하는 건 줄 알았다. 근데 혹시나 해서 구글링을 좀 더 해보니… 
UART 통신에서는 TX(송신)는 상대방의 RX(수신)에, RX(수신)는 상대방의 TX(송신)에 연결해야 하는 거였다!
서로 신호를 주고받아야 하니까 당연한 건데, 왜 이걸 생각 못 했을까! 내가 TX-TX, RX-RX로 꽂아놓고 안된다고 쌩쇼를 하고 있었던 거다. 하… 드디어 깨달은 공부의 중요성.


통신 성공!

밑져야 본전이지 하는 심정으로 TX랑 RX를 서로 엇갈리게 다시 꽂고 PuTTY를 연결하는 순간… 거짓말처럼 Jetson Nano의 부팅 로그가 주르륵 올라오기 시작했다. 와 소리가 절로 나왔다. 드디어 살아났구나, 내 Jetson!

GUI 환경 설정!
자세한 내용은 다음 글에..


혹시나 시리얼 통신 때문에 고통받는 분들, 그리고 미래의 나에게 또 삽질하지 말라고 해결 방법을 깔끔하게 정리해 본다.


[해결 방법] UART 시리얼 통신, 너 대체 뭐냐? (Jetson Nano와 PC 연결 가이드)

UART(Universal Asynchronous Receiver/Transmitter, 범용 비동기화 송수신기) 통신은 간단히 말해 두 장치 간에 한 번에 한 비트씩 직렬로 데이터를 주고받는 방식이다. Jetson Nano와 같이 GUI 없이 시스템에 접근해야 하거나, 네트워크 연결이 불가능할 때 최후의 보루처럼 사용할 수 있는 매우 유용한 방법이다.

1. 준비물:

  • USB to Serial (UART) 변환 모듈: CP210x, FTDI 등의 칩셋을 사용한 모듈이 일반적. (여기서는 CP210x 사용!)
  • 점퍼 와이어 (암수 또는 암암 타입): 모듈과 Jetson Nano의 핀을 연결할 때 필요.
  • 터미널 프로그램: Windows에서는 PuTTY, macOS나 Linux에서는 screen 또는 minicom 등을 사용.

2. 연결 방법 (★★★★★ 이게 핵심!)

가장 중요한 것은 TXD(Transmit Data)와 RXD(Receive Data) 핀의 연결이다. 신호를 보내는 쪽(TXD)은 받는 쪽(RXD)에, 신호를 받는 쪽(RXD)은 보내는 쪽(TXD)에 연결해야 한다.

  • PC (USB to Serial 모듈) <--> Jetson Orin Nano (40핀 헤더 기준)

    • 모듈의 GND <--> Jetson의 GND (예: Pin 6, 9, 14 등 아무 GND 핀)
    • 모듈의 TXD <--> Jetson의 RXD (예: Pin 10 - UART1_RXD)
    • 모듈의 RXD <--> Jetson의 TXD (예: Pin 8 - UART1_TXD)

    주의: Jetson Nano의 모델이나 개발자 키트 버전에 따라 UART 핀 번호가 다를 수 있으니, 반드시 해당 보드의 공식 문서를 확인이 필요하다! 내 Orin Nano는 위와 같았다.


3. PC에서 터미널 프로그램 설정:

  • 포트(Port): USB to Serial 모듈이 연결된 COM 포트를 선택.
    • Windows: 장치 관리자 > 포트 (COM & LPT) 에서 확인 (예: Silicon Labs CP210x USB to UART Bridge (COM6))
    • Linux: dmesg | grep tty 명령어로 확인 (예: /dev/ttyUSB0 또는 /dev/ttyS0)
  • 전송 속도 (Baud rate): Jetson Nano의 기본 시리얼 콘솔은 보통 115200 bps다. (가끔 다른 속도를 쓸 수도 있으니 확인 필요)
  • 데이터 비트 (Data bits): 8
  • 패리티 (Parity): None
  • 정지 비트 (Stop bits): 1
  • 흐름 제어 (Flow control): None
여러 시도를 통해 위 값을 조절해보았으나, 대부분 기본값으로 잘 설정되어 있어 건드릴 필요가 없었다. (전송 속도만 조절하면 됨)

4. 연결 및 확인:

모든 설정을 마치고 터미널 프로그램에서 'Open' 또는 'Connect' 버튼을 누르면, Jetson Nano가 부팅 중이라면 부팅 메시지가, 부팅이 완료되었다면 앞서 본 사진처럼 로그인 프롬프트가 나타난다. 만약 아무것도 나타나지 않는다면 다시 확인하자.

  • TX/RX 연결이 정말로 교차되었는지 (TX-RX, RX-TX)
  • GND 연결이 제대로 되었는지
  • COM 포트 번호 및 통신 설정(특히 Baud Rate)이 올바른지
  • USB to Serial 모듈의 드라이버가 PC에 정상적으로 설치되었는지 (이전의 삽질처럼 '띠링' 소리 나면 드라이버 문제일 확률 높음)
  • Jetson Nano 보드에 전원이 제대로 공급되고 있는지

아무튼, 갑자기 원격 접속이 안되는 바람에 며칠을 날린 건지… 그래도 결국 해결해서 정말 다행이다. 이제 다시 와이파이부터 잡아야겠다.

오늘의 교훈: 설명서는 똑바로 읽자. 그리고 기본부터 다시 보자. 휴…

hyeon_B

안녕하세요! AI 기술을 이용해 더 나은 세상을 만들어 나가고 싶은 과기원생 Hyeon이라고 합니다. 저는 앞으로 인공지능 시대에는 지식을 '활용'하는 능력이 중요해질 것이라고 생각합니다. 대부분의 일들은 인공지능이 뛰어난 모습을 보이지만, 인공지능은 데이터로 부터 연관관계를 학습하기 때문에 지식들을 새로 통합해서 활용하는 능력이 부족합니다. 인공지능이 뉴턴 전에 만들어졌다면 사과가 떨어지는 이유에 대답하지 못했을 것이고, 아인슈타인 전에 만들어졌다면 중력이 어떻게 생기는지 설명하지 못했을 것입니다. 따라서 앞으로 우리는 '본질'을 탐구하고 그 본질로부터 다른 곳에 적용하며 인공지능을 현명하게 활용해야 할 것입니다. 함께 인공지능 시대를 준비합시다!

댓글 쓰기

다음 이전

POST ADS1

POST ADS 2