M5Stack과 Unity간에 블루투스 시리얼 통신을 하자

최근 화제가 되고 있는 M5Stack에는 Bluetooth 모듈이 표준으로 붙어 있습니다.
이것 한 개 있으면 Unity로 개발할 수 있는 게임의 폭이 넓어지는 것 같아, Unity와 통신하려고 하면 상당히 넘어졌기 때문에, 방법을 공유하려고 합니다.

이 기사에서는 M5Stack에서 얻은 정보를 Bluetooth 시리얼 통신으로 PC로 보내 Unity에서 얻기까지 할 것입니다.

---개발 환경---


  • Unity2018.2.15f1
  • M5Stack Basic
  • Arduino IDE 1.8.7
  • UniRx

  • M5Stack측 준비



    Bluetooth 통신 방향은 BluetoothSerial.h이라는 라이브러리를 사용하여 수행됩니다.
    M5Stack의 첫 번째 설정에서이 라이브러리가 추가되었다고 생각하지만 찾을 수 없으면 다시 설치하십시오.

    아래 프로그램은 M5Stack에서 0에서 255까지의 숫자를 0.1초마다 Bluetooth로 PC로 보내는 프로그램입니다. 이것을 Arduino IDE의 스케치에 쓰십시오.
    컴파일하고 문제가 없으면 선택한 보드와 직렬 포트가 잘못되었는지 확인하여 M5Stack에 씁니다.

    BluetoothTest
    #include <M5Stack.h>
    #include "BluetoothSerial.h"
    
    
    byte counter;
    
    BluetoothSerial bts;
    
    void setup() {
      M5.begin();
      M5.Lcd.println("Bluetooth Now");
    
      Serial.begin(9600);
      bts.begin("M5Stack");//PC側で確認するときの名前
    
      counter = 0;
    }
    
    void loop() {
      bts.println(counter);
      counter++;
      delay(100);
    }
    

    여기서 일단 시리얼 모니터로 제대로 Bluetooth로 시리얼 통신할 수 있는지 확인합시다.
    Windows의 경우 設定>デバイス>Bluetoothとその他のデバイス를 열고 Bluetooth 장치를 추가합시다.
    장치 이름은 M5Stack입니다.
    안전하게 연결할 수 있으면 제어판에서 장치 관리자를 열고 포트를 확인합니다.
    확인하면 Bluetooth 링크를 통한 표준 시리얼(COMn)이라는 이름으로 포트가 두 개 열려 있을 것입니다.

    여기서 왜 두 개의 포트가 열리는지 아직 이해하지 못하네요 ... (죄송합니다 )
    우선 작은 숫자의 포트를 ArduinoIDE의 직렬 포트에서 선택하십시오.
    그렇다면 시리얼 모니터를 열어, 보레이트를 9600bps로 해, 1부터 255까지의 숫자가 표시되어 있으면 성공입니다. 무사히 PC와 Bluetooth를 통해 시리얼 통신이 가능했습니다.
    아무것도 표시되지 않으면 다른 포트를 선택하고 같은 것을 시도하십시오.

    Unity 측 준비



    그럼 Unity측의 준비입니다.
    여기에 대한 준비는 아래 인용 사이트 2의 장난감 실험실 기사입니다.
    기사에서 Unity 측 프로그램을 작성하기 위해 작성된 것을 그대로 실행하십시오.

    실행해보기



    이것도 장난감 실험실님의 기사내대로입니다만 여러가지 보충.
    마지막으로 Unity의 콘솔보기에서 여러 번 실행해도 아무 것도 표시되지 않거나 can not open serial port 될 때가 있습니다. 원인일 수 있습니다. 시리얼 모니터를 닫고 다시 시도해 봅시다.

    미해결 과제


  • 왜 하나의 M5Stack에서 포트가 두 개 열리는가.
  • M5Stack을 2개 사용해, Unity측에서 2개의 데이터를 받으려고 하면 불안정해 지나치게 사용물이 되지 않는다.

  • 2의 문제에 대해서입니다만,
    M5Stack을 2개 사용하여 Unity 측에서 2개의 데이터를 받는다는 것을 해 보았습니다. , 둘 다 가지고 가지 않을 수도 있습니다.

    1,2 모두 원인을 알게 되는 대로 추기합니다.

    개발, 집필에 있어서, 아래와 같은 사이트님을 참고, 인용했습니다.



     
    1. 【Unity】UniRx를 사용하여 Arduino와 시리얼 통신 - 장난감 실험실
    2. SerialPort 또는 Uniduino를 사용하여 Unity와 Arduino를 연결하는 방법을 살펴 보았습니다.
    3. ESP32로 BluetoothSerial 통신을 하자!

    좋은 웹페이지 즐겨찾기