ソフトウェアは、Windows、Mac、Linuxで実行できるIDE開発環境であり、ユーザーはArduino用のプログラムをC / C ++で作成できます。
次の記事では、ArduinoをUnityに接続する方法、Arduinoボードに接続されているセンサーの値を取得する方法を示します。 Unityに接続すると、多くのアプリケーションに拡張できます。たとえば、BLE(Bluetooth Low Energy)を介してArduinoに接続されたHololens(ホロレンズ)を使用して、周囲のデバイスを制御します。
UNITYでのARDUINO開発入門
次の記事では以下を使用します。
Arduino R3ボード以外は、ESP8266またはESP32組み込みのBluetoothおよびwifiも含めて使用できます。 または、M5Stackの中にBluetooth、Wifi、加速度センサー、バッテリー、TFTスクリーンという統合モジュールを全部入って使用できます。 すべてがC ++およびArduinoIDEを使用してプログラミングまたはVisual Studioコードをプログラミングしますが、PlatformIOプラグインをインストールする必要があります。
ダウンロードおよびインストール方法
1. Arduino IDEをインストールする
以下のリンクから、OSに適切なバージョンを選択してインストールをダウンロードします。
https://www.arduino.cc/en/Main/Software
2. Javaをインストールする
以下のリンクから、該当なOSバージョンを選択してインストールします。
今回の実例ではWindows-x64環境を使用しているので、画像のようなJavaバージョンを選択します。
https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
3. 初期設定
ArduinoIDEのインストール後、初期設定を行います。
「Tools」→「Board」→「Arduino Uno」を選択します。
「Tools」→「Serial Port」→「COM3」使用しているUSBポートを選択します。
最後「Tools」→「Programmer」→「AVR ISP」を選択します。
4. 超音波距離計センサー・ボード設定
ピン[GND] ↔ [POWER/-]
ピン[VCC] ↔ [POWER/+]
ピン[TRIG] ↔ [INPUT (digitalport)]
ピン[ECHO] ↔ [OUTPUT (Analogport)]
距離測定のため、センサ [TRIG] から非常に短いパルス信号 (5マイクロ秒 – ピーク) を放出します。 その後、センサーはPINから反射信号を受信するまでセンサ [ECHO] でHIGHパルスを生成します。 パルス幅は、超音波がセンサーから送信されて戻ってくる時間に相当します。
空気中の音速は340 m / s (物理定数)で、29,412マイクロ秒/ cm (106 /(340 * 100))に相当します。 時間を計算したのち、29,412で除算して距離を算出します。
5. ArduinoIDEでのプログラミング
const int trig = 12;
const int echo = 11;
void setup()
{
Serial.begin(9600);
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
}
void loop()
{
unsigned long duration;
int distance;
digitalWrite(trig,0);
delayMicroseconds(2);
digitalWrite(trig,1);
delayMicroseconds(5);
digitalWrite(trig,0);
duration = pulseIn(echo,HIGH);
distance = int(duration/2/29.412);
Serial.print(distance);
Serial.println("cm");
delay(200);
}
6. シリアルモニタで結果を確認
7. Unity環境へのArduinoを接続する
Unityを起動します。
「File」→「Build Settings…」→「Player Settings」→「Api Compatibility Level」を選択し、「Api Compatibility Level」 で「.NET2.0」を「.NET4.0」に変更します。
UI背景を作るため、「Hierarchy」のラベルの下にある「Create」ボタンを選択し、「UI」→「Image」を選択します。
そのままだと追加した「Image」は小さいので、全面に拡大します。
Hierarchy」内の「Image」を選択し、右側の「Inspector」内に表示されている「Anchor」の画像を選択します。
「Alt」キーを長押ししたまま、下図に示す画像を選択します。
超音波センサの値を表示するため、UIの上にテキストを追加します。
背景を追加するステップと同様に、「Hierarchy」のラベルの下にある「Create」ボタンを選択し、「UI」→「Text」を選択します。
そのままだと追加した「Text」は小さいので、下図赤枠内のように設定して「Text」を大きくしてください。
「Project」タブの下にある「Create」ボタンを選択し、「C# Script」を選択して「C# Script」ファイルを作成します。
任意のファイル名を設定してください。
以下のコードを記述します。
public class ArduinoController : MonoBehaviour
{
private Text m_DistanceText; //距離の表示するテキスト
private SerialPort m_SerialPort; //USBポート
void Start()
{
m_DistanceText = FindObjectOfType<Text>(); //シンでのテキストを探す
m_SerialPort = new SerialPort(“COM5”, 9600); //ポートを指定する
m_SerialPort.Open(); //ポートを開く
}
void Update()
{
if (m_SerialPort.IsOpen) // Arduinoと接続することを確認
{
string data = m_SerialPort.ReadLine(); // Arduinoからのデータを取得する
float dis = 0;
if (float.TryParse(data, out dis)) //Arduinoからのデータは数かどうか確認する
{
m_DistanceText.text = dis + “cm”; //画面に表示する
}
}
}
private void OnApplicationQuit()
{
m_SerialPort.Close();//アプリを閉める時ポートを閉める
}
}
最後に「Canvas」オブジェクトに先ほど記述したスクリプトを追加します。
「Hierarchy」内の「Canvas」を選択し、右側に表示される「Add Component」ボタンを選択して先ほど作成したスクリプトを選択します。
再生ボタンを押下すると、センサ~対象物までの距離が結果として表示されます。
デモ動画
Arduino UNO R3とHC SR04のデモ動画
以下の動画は超音波距離計センサーの値を取得してリアルタイムでUnityに表示します。さらにHC-05やHC-10(BLE)というブルートゥースモジュールを利用してケーブルなしデータを伝送することができますが、回路の電源として追加のバッテリーモジュールが必要なのでM5Stackのほうがお勧めします。
Arduino UNO R3およびHC SR04超音波センサーを使用したUnityによる近接センサー回路のArduinoデモ