UniversalSerialは、Unreal EngineでArduinoやマイコンとのシリアル通信を行うためのプラグインです。Blueprint(ビジュアルスクリプト)だけでハードウェアとの送受信を構成でき、C++のコードを書く必要はありません。
UniversalSerial最大の特徴は、Windows、Mac、Linuxの各OSが持つシリアル通信用APIを直接利用していることです。プラグインの導入だけで動作し、追加のドライバーや外部ライブラリのインストールは不要です。
受信処理はバックグラウンドスレッドで行われるため、ゲームのメインループに負荷をかけません。受信したデータはイベントで受け取ります。
| 最初に確認したいこと | 読むページ |
|---|---|
| まず1本、通信を完走させたい | クイックスタートでArduinoとの送受信を完走する |
| 導入手順と購入前の動作確認を知りたい | セットアップで導入とTesterアプリの利用方法を確認 |
| データ形式やポートの選び方を知りたい | ユースケースで目的別の選択表を確認 |
| ノードの入出力とイベントを調べたい | Blueprint APIリファレンスで公開APIを確認 |
基本用語
| 用語 | 説明 |
|---|---|
| シリアルポート | 1ビットずつ順番にデータをやり取りする通信口。USB接続のマイコンなどが該当する |
| ポート名 | OSがシリアルポートを識別する名前。WindowsはCOM3、Mac/Linuxは/dev/以下 |
| ボーレート | 1秒あたりの通信速度。対向デバイスと同じ値を指定する |
| SerialPortManager | シリアル通信全体を管理するオブジェクト。InitializeとOpenで通信を開始する |
UniversalSerialの構成を示します。SerialPortManagerがポートの設定・送受信・イベントの通知を担当し、OSのAPIを経由してデバイスと通信します。
flowchart LR
BP["Blueprint / C++"] --> M["SerialPortManager"]
M --> OS["OSのシリアルAPI"]
OS --> DEV["Arduino / マイコン"]
UniversalSerialでできること
- 利用可能ポートの自動検出(
Get Available Serial Ports) - 通信可能なシリアルポートの自動特定(v1.3.0以降。候補ポートを順に試し、最初に通信可能なポート名を返却)
- シリアル設定のカスタマイズ(ポート名、ボーレート、データビット、パリティ、ストップビット、フロー制御、書き込みタイムアウト、受信バッファサイズ、DTR、RTS)
- 3種類のデータ送受信方法(バイト配列、UTF-8エンコードされた文字列、16進数UTF-8エンコード文字列)
- 文字列送受信のための区切り文字設定(送信時に区切り文字を自動追加、受信時に区切り文字で文字列を復元)
- DTR/RTS信号の実行中の切り替え
- バックグラウンドスレッドでの受信処理(ゲームスレッドに重い負荷をかけない)
- C++とBlueprintの両方で全機能を利用可能
このようなプロジェクトにおすすめします
- Arduinoやマイコンと連携するIoTプロジェクト、インタラクティブアート
- ゲーム内の演出を現実世界のデバイス(センサー、ボタン、モーターなど)と連動させたいプロジェクト
- Windows、Mac、Linuxで同じBlueprint構成のまま動かしたいプロジェクト
- Blueprintを中心に開発を進めたいプロジェクト
基本的な使用手順
- プラグインを導入してUniversalSerialを有効にします。
Serial Port Managerを作成し、変数に保存します。Connected・Data Receivedなどのイベントをバインドします。Initializeでポート名と通信設定を指定し、Openで通信を開始します。- 終了時は
Closeを呼び出します。
具体的な手順はクイックスタートで説明します。
対応環境
Unreal Engine対応バージョン
UniversalSerialのプラグインバージョンごとの対応状況は以下のとおりです。
| プラグインバージョン | 対応UEバージョン |
|---|---|
| v1.3.0 | UE5.5 - 5.8 |
対応プラットフォーム
| 区分 | プラットフォーム |
|---|---|
| ターゲットプラットフォーム | Windows, Mac, Linux |
| 開発プラットフォーム | Windows, Mac, Linux |
動作確認環境
| プラットフォーム | 検証したOS |
|---|---|
| Windows | Windows 11 24H2 |
| Mac | macOS Sequoia 15.5 |
| Linux | Ubuntu 24.04 LTS |
現在の主な制約
- 対応プラットフォームはWindows、Mac、Linuxです。AndroidとiOSには対応していません。
- プラグインは各OSのAPIを直接使用しています。そのため、古いオペレーティングシステムでは予期しない動作が発生する可能性があります。購入前にTesterアプリで動作を確認することをお勧めします。
- ObjectDelivererとの連携プラグイン(UniversalSerialOD)は現在提供を一時中止しています。詳細はユースケースを参照してください。
- 詳細な制約と注意点はデータ形式と運用を参照してください。
販売とライセンス
UniversalSerialはFabで販売しています。本製品は、Fabで購入・取得した際に適用されるEpic Gamesのライセンス条件に基づいてご利用いただけます。GitHub版は提供していません。
購入前にシリアル通信の動作を確認できるTesterアプリをダウンロードページで公開しています。詳細はセットアップを参照してください。