Main Content

NVIDIA Jetson プラットフォームのシリアル ポート経由でのデータの読み取りと書き込み

この例では、MATLAB® Coder™ Support Package for NVIDIA® Jetson® and NVIDIA DRIVE® を使用して、Jetson ボードの UART ポート経由でシリアル データの読み取りと書き込みを行う方法を示します。

この例を使用すると、次のことができる Simulink® モデルを作成して展開できます。

  • ホスト コンピューターからシリアル通信でデータを受信。

  • ホストコンピューターにシリアル通信でデータを送信。

必要条件

  • NVIDIA Jetson Nano 組み込みプラットフォーム。

  • ターゲット ボードとホスト PC を接続するイーサネット クロスオーバー ケーブル (ターゲット ボードをローカル ネットワークに接続できない場合)。

  • USB シリアル コンバーター。

  • コンパイラおよびライブラリ用の、ターゲット ボード上のツール、ライブラリ、および環境変数。詳細については、Install and Setup Prerequisites for NVIDIA Boardsを参照してください。

シリアル通信のための Jetson の設定

USB シリアル コンバーターの Tx ピンと Rx ピンを Jetson ボードの Rx ピンと Tx ピンに接続します。

USB シリアル コンバーターをホスト コンピューターに接続します。

シリアル通信用の Simulink モデル

この例では、事前構成された jetsoncpu_serial_communication モデルを使用します。このモデルは、Serial Read ブロックと Serial Write ブロックを使用し、Jetson ボードの UART ポート経由でデータを交換します。このモデルでは、Jetson ボードは、USB シリアル コンバーターを使用してホスト コンピューターからシリアル データを受信し、データを操作した後、ホスト コンピューターに送り返します。

mdlName = "jetsoncpu_serial_communication";
open_system(mdlName);

モデルのボード パラメーターの構成

Jetson ボードへのライブ接続を設定するには、Jetson Nano ボードのデバイス アドレス、ユーザー名、およびパスワードを指定します。

  • [コンフィギュレーション パラメーター] ダイアログ ボックスを開き、[ハードウェア実行] ペインに移動します。

  • [ハードウェア ボード] ドロップダウン リストからターゲット ハードウェアを選択します。

  • [ハードウェア ボード][NVIDIA Jetson] に設定します。

  • [Target Hardware Resources] セクションで、[Board Parameters] ペインを開き、Jetson ボードのデバイス アドレス、ユーザー名、およびパスワードを入力します。

  • [適用] をクリックした後、[OK] をクリックしてダイアログ ボックスを閉じます。

シリアル ブロックの構成

Simulink モデルで、次のブロックをダブルクリックし、指定されたパラメーター値が以下に示すものと同じであることを確認します。

  • Jetson Serial Communication モデルの Serial Read ブロック

  • Enabled subsystem の Serial Write ブロック

ホスト スクリプトの構成

この例では、jetsoncpu_serial スクリプトを使用して、ホスト コンピューターが Jetson ボードにデータを送信し、シリアル ポート経由でボードからのデータを読み取り、シリアル データを表示できるようにします。

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 ブロックを他の計算ブロックに置き換えます。