이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
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 Read
및 Serial 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 포트를 찾으려면 다음과 같이 하십시오.
Windows에서 장치 관리자를 엽니다.
포트 탭(Windows의 장치 관리자 > 포트(COM 및 LTP))을 확장합니다.
USB-직렬 컨버터와 연결된 COM 포트를 확인합니다.
Linux® 컴퓨터에서 USB-직렬 컨버터와 연결된 COM 포트를 찾으려면 다음과 같이 하십시오.
터미널을 엽니다.
터미널에
ls /dev/tty*
를 입력하고 Enter 키를 누릅니다.USB-직렬 컨버터와 연결된 COM 포트를 확인합니다.
모델을 모니터링하고 조정하기
Jetson Serial Communication 모델을 모니터링하고 조정할 때 호스트 컴퓨터는 생성된 실행 파일이 실행되는 타깃과 통신합니다.
모델을 모니터링하고 조정하려면 하드웨어 탭을 열고 모니터링 및 조정을 클릭합니다. 진단 뷰어에서 모델에 대한 코드가 생성되었고 생성된 실행 파일을 불러온 후 호스트가 타깃에 연결된 것을 확인할 수 있습니다.
jetsoncpu_serial.m
스크립트를 실행합니다.
스크립트가 Pi 값을 Jetson 보드로 전송합니다.
Jetson 보드는 이 값을 모델에 지정된 Gain 블록 값과 곱한 후 호스트로 전송합니다.
스크립트가 이 값을 수신하여 명령 창에 표시합니다.
Gain 블록의 값을 변경하고 스크립트를 다시 실행합니다. 명령 창에서 새 값을 확인합니다.
외부 시뮬레이션을 중지하려면 하드웨어 탭으로 이동한 후 중지 버튼을 클릭하여 외부 모드 시뮬레이션을 종료합니다.
그 외 시도해 볼 작업
Gain 블록을 다른 계산 블록으로 교체