주요 콘텐츠

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

NVIDIA Jetson 플랫폼에서 직렬 포트를 통해 데이터 읽고 쓰기

이 예제에서는 MATLAB® Coder™ Support Package for NVIDIA® Jetson® and NVIDIA DRIVE®를 사용하여 Jetson 보드의 UART 포트를 통해 직렬 데이터를 읽고 쓰는 방법을 보여줍니다.

이 예제를 사용하여 다음 작업을 수행할 수 있는 Simulink® 모델을 생성하고 배포할 수 있습니다.

  • 직렬 통신을 통해 호스트 컴퓨터로부터 데이터를 수신합니다.

  • 직렬 통신을 통해 호스트 컴퓨터로 데이터를 전송합니다.

선행 조건

  • NVIDIA Jetson Nano 임베디드 플랫폼.

  • 타깃 보드와 호스트 PC를 연결하는 이더넷 크로스오버 케이블(타깃 보드를 로컬 네트워크에 연결할 수 없는 경우).

  • USB-직렬 컨버터.

  • 컴파일러와 라이브러리를 위해 타깃 보드에서 필요한 툴, 라이브러리 및 환경 변수. 자세한 내용은 Prerequisites for Generating Code for NVIDIA Boards 항목을 참조하십시오.

직렬 통신을 위해 Jetson 설정하기

USB-직렬 컨버터의 Tx 및 Rx 핀을 Jetson 보드의 Rx 및 Tx 핀에 연결합니다.

USB-직렬 컨버터를 호스트 컴퓨터에 연결합니다.

직렬 통신을 위한 Simulink 모델

이 예제에서는 Serial ReadSerial Write 블록을 사용하여 Jetson 보드의 UART 포트를 통해 데이터를 교환하는 사전 구성된 jetsoncpu_serial_communication 모델을 사용합니다. 이 모델에서 Jetson 보드는 USB-직렬 컨버터를 사용하여 호스트 컴퓨터로부터 직렬 데이터를 수신하여 데이터를 조작한 후 다시 호스트 컴퓨터로 전송합니다.

mdlName = "jetsoncpu_serial_communication";
open_system(mdlName);

모델의 보드 파라미터 구성하기

Jetson 보드와의 실시간 연결을 설정하려면 Jetson Nano 보드의 장치 주소, 사용자 이름 및 비밀번호를 지정합니다.

  • 구성 파라미터 대화 상자를 열고 하드웨어 구현 창으로 이동합니다.

  • 하드웨어 보드 드롭다운 목록에서 타깃 하드웨어를 선택합니다.

  • 하드웨어 보드NVIDIA Jetson으로 설정합니다.

  • 타깃 하드웨어 리소스 섹션에서 보드 파라미터 창을 열고 Jetson 보드의 장치 주소, 사용자 이름 및 비밀번호를 입력합니다.

  • 적용을 클릭한 다음 확인을 클릭하여 대화 상자를 닫습니다.

직렬 블록 구성하기

Simulink 모델에서 다음 블록을 더블 클릭하고 지정된 파라미터 값이 아래 표시된 값과 동일한지 확인합니다.

  • Jetson Serial Communication 모델의 Serial Read 블록

  • Enabled Subsystem 내부의 Serial Write 블록

호스트 스크립트 구성하기

이 예제는 호스트 컴퓨터가 Jetson 보드로 데이터를 전송하고, 직렬 포트를 통해 보드로부터 들어오는 데이터를 읽고, 직렬 데이터를 표시하는 작업을 수행하기 위해 jetsoncpu_serial 스크립트를 사용합니다.

type jetsoncpu_serial.m
function jetsoncpu_serial()
%   Copyright 2021 The MathWorks, Inc.

% Enter the COMPort of the USB-Serial converter connected to the host.
comPort = 'COM3';

% Enter the Baud rate at which the data is sent and received. Make sure
% this is the same value as the one used by the Jetson board.
baudRate = 57600;

% Create a serial object to start the communication
serObj = serialport(comPort, baudRate);

% sendVal is the number to be sent to the target.
sendVal = pi;
disp(['Send number: ' num2str(sendVal)]);
write(serObj, sendVal, 'double');

% recVal is the number received from the target.
recVal = read(serObj, 1, 'double');
disp(['Received number: ' num2str(recVal)]);

end

스크립트에서 USB-직렬 컨버터와 연결된 comPort를 지정합니다.

Windows® 컴퓨터에서 USB-직렬 컨버터와 연결된 COM 포트를 찾으려면 다음과 같이 하십시오.

  1. Windows에서 장치 관리자를 엽니다.

  2. 포트 탭(Windows의 장치 관리자 > 포트(COM 및 LTP))을 확장합니다.

  3. USB-직렬 컨버터와 연결된 COM 포트를 확인합니다.

Linux® 컴퓨터에서 USB-직렬 컨버터와 연결된 COM 포트를 찾으려면 다음과 같이 하십시오.

  1. 터미널을 엽니다.

  2. 터미널에 ls /dev/tty*를 입력하고 Enter 키를 누릅니다.

  3. USB-직렬 컨버터와 연결된 COM 포트를 확인합니다.

모델을 모니터링하고 조정하기

Jetson Serial Communication 모델을 모니터링하고 조정할 때 호스트 컴퓨터는 생성된 실행 파일이 실행되는 타깃과 통신합니다.

모델을 모니터링하고 조정하려면 하드웨어 탭을 열고 모니터링 및 조정을 클릭합니다. 진단 뷰어에서 모델에 대한 코드가 생성되었고 생성된 실행 파일을 불러온 후 호스트가 타깃에 연결된 것을 확인할 수 있습니다.

jetsoncpu_serial.m 스크립트를 실행합니다.

  • 스크립트가 Pi 값을 Jetson 보드로 전송합니다.

  • Jetson 보드는 이 값을 모델에 지정된 Gain 블록 값과 곱한 후 호스트로 전송합니다.

  • 스크립트가 이 값을 수신하여 명령 창에 표시합니다.

Gain 블록의 값을 변경하고 스크립트를 다시 실행합니다. 명령 창에서 새 값을 확인합니다.

외부 시뮬레이션을 중지하려면 하드웨어 탭으로 이동한 후 중지 버튼을 클릭하여 외부 모드 시뮬레이션을 종료합니다.

그 외 시도해 볼 작업

Gain 블록을 다른 계산 블록으로 교체