개발 관련/프로젝트

Unity 블루투스 연동

by 소서리스25 2023. 11. 17.
반응형

지난번 음성인식 테스트 완료 후 블루투스 작업을 시작했다.

플러그인을 직접 만들기 시도를 했으나 원하는 데로 나오지 않는 관계로.. 그리고 생각보다 시간이 걸려서 적절히 최소한의 기능을 갖는 플러그인을 검색하였다.

 

괜찮은 분의 Git에서 블루투스 플러그인을 다운로드하여서 테스트를 안정적으로 진행하였다. 아래 것을 참고하시면 되겠다.

GitHub - bentalebahmed/BlueUnity: Plugin for using Bluetooth Low Energy (BLE) like HC-05 and HC-06 with Unity3d Android

 

GitHub - bentalebahmed/BlueUnity: Plugin for using Bluetooth Low Energy (BLE) like HC-05 and HC-06 with Unity3d Android

Plugin for using Bluetooth Low Energy (BLE) like HC-05 and HC-06 with Unity3d Android - GitHub - bentalebahmed/BlueUnity: Plugin for using Bluetooth Low Energy (BLE) like HC-05 and HC-06 with Unity...

github.com

 

다만 이 플러그인의 나름 최신? V2버전을 쓰려면 Unity 2020 버전 이상을 써야 한다. 

나는 2018.4.3을 사용하니 바로 되지 않아서 여기에 해당하는 것들을 플러그인만 로딩하고 UI 등을 만들어서 연결시켜주었다. 

그리고 AndroidManifest.xml와 일부 코드의 퍼미션 부분을 수정해 주었다.

 

AndroidManifest.xml는 아래와 같이 수정해 주면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.unity3d.player" >
 
  <uses-sdk
      android:minSdkVersion="21"
      android:targetSdkVersion="31" />
 
  <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
  <uses-permission android:name="android.permission.BLUETOOTH" />
  <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
  <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
 
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 
  <application android:label="@string/app_name" >
    <activity
        android:name="com.unity3d.player.UnityPlayerActivity"
        android:exported="true" >
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
 
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
    </activity>
  </application>
 
</manifest>
cs

 

그리고 유니티의 블루투스 실행시 퍼미션에서 오류가 난다면 기존것은 주석처리하고 간략하게 조금은 수정해줘야 한다.

위에서 이미 권한을 주었지만 혹시 모르니 기본적인 것만은 다시금 추가해 준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    void Start()
    {
    #if UNITY_ANDROID
        /*
        if (!Permission.HasUserAuthorizedPermission(Permission.CoarseLocation)
          || !Permission.HasUserAuthorizedPermission(Permission.FineLocation)
          || !Permission.HasUserAuthorizedPermission("android.permission.BLUETOOTH_SCAN")
          || !Permission.HasUserAuthorizedPermission("android.permission.BLUETOOTH_ADVERTISE")
          || !Permission.HasUserAuthorizedPermission("android.permission.BLUETOOTH_CONNECT"))
                    Permission.RequestUserPermissions(new string[] {
                        Permission.CoarseLocation,
                            Permission.FineLocation,
                            "android.permission.BLUETOOTH_SCAN",
                            "android.permission.BLUETOOTH_ADVERTISE",
                             "android.permission.BLUETOOTH_CONNECT"
                    });
        */
 
        if (!Permission.HasUserAuthorizedPermission("android.permission.BLUETOOTH_SCAN"))
        {
            Permission.RequestUserPermission("android.permission.BLUETOOTH_SCAN");
            Permission.RequestUserPermission("android.permission.BLUETOOTH_ADVERTISE");
            Permission.RequestUserPermission("android.permission.BLUETOOTH_CONNECT");
        }
    #endif
 
        IsConnected = false;
        BluetoothService.CreateBluetoothObject();       
    }
cs

 

 

자, 그럼 잘 작동하는지 동영상을 보면 아래와 같다. 우선은 PC(Bluetooth Dongle)와 Android간의 통신 테스트이다.

 

 

역시 원하는 기능으로 잘 작동한다.(수신되는 화면이 흐릿하지만 어쨌든 된다..)

Android에서 Control Unit Device(Arduino)로 string text로 전달하면 그걸 받아서 처리해 주도록 하는 것이 주된 목적이다.

 

이제 다음으로는 실제 하드웨어에서 음성인식으로 작동하는지 테스트하는 것이다. 음성인식과 블루투스 플러그인이 충돌만 안 일으키길 바라면서 해봐야겠다.

요런 것들은 예전부터 해왔지만 늘 재미있는 요소인 것 같다.

 

 

반응형

'개발 관련 > 프로젝트' 카테고리의 다른 글

Unity 프로젝트 점검  (0) 2023.12.03
Unity 음성인식과 블루투스  (0) 2023.11.24
Unity 음성인식 보완  (0) 2023.11.09
Unity 음성인식 진행상황  (0) 2023.11.04
Unity 음성인식 테스트  (0) 2023.10.29

댓글