프로젝트들/메타버스게임

20221005 메타버스 2. Arduino 블루투스 & IR

Choi Jaekuk 2022. 10. 5. 07:16

Github : https://github.com/cjk09083/meta

 

GitHub - cjk09083/meta: 메타버스 게임 [Flutter(iOS), Arduino]

메타버스 게임 [Flutter(iOS), Arduino]. Contribute to cjk09083/meta development by creating an account on GitHub.

github.com

 

지난 포스트에서 테스트해본 Flutter blue plus 앱에 리모콘 신호를 수신할 수 있도록 Arduino를 연동하였다.

 

Arduino는 블루투스 연동을 위한 HC-06 모듈과 리모콘 적외선 신호 수신을 위한 KY-022모듈을 사용하였다.

HC-06(좌) 와 KY-022(우)

회로는 아래와 같다.

Arduino schematics

아래와 같이 코드를 작성 후 Arduino를 실행한다.

#include <IRremote.h>
#include <IRremoteInt.h>
#include <SoftwareSerial.h>
SoftwareSerial BT(4,3);

int RECV_PIN = 2;
String dir = "err";

void setup() {
  Serial.begin(9600);
  BT.begin(9600);
  IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK);

}

void dump(int val) {
  Serial.print(val);
  switch (val) {
    case 64:
      dir = "up";
      break;
    case 67:
      dir = "right";
      break;
    case 66:
      dir = "left";
      break;
    case 65:
      dir = "down";
      break;
    case 68:
      dir = "enter";
      break;
    default:
      dir = "err";
      break;
  }

  if(val==0) return;
  Serial.print(" (");
  Serial.print(dir);
  BT.println(dir);
  Serial.print(")");
  Serial.println();
}

void loop() {
  if (IrReceiver.decode()){
//    Serial.println(IrReceiver.decodedIRData.command);
    dump(IrReceiver.decodedIRData.command);
    IrReceiver.resume();
    return;                  
  }

  if(BT.available()>0){
    Serial.write(BT.read());  
  }

  delay(10);
}



현재 사용중인 LG U+ 리모콘의 방향키와 OK키의 코드를 확인하여 해당 코드가 입력되면 이를 변환하여 블루투스로 앱에 송신하도록 하였다.

 

실험결과 Arduino에는 아래와 같이 적외선 신호가 수신되었고 앱에서는 이전 포스트와 마찬가지로  left, up, down, right, enter 문자열이 수신되었다.

Arduino에서 수신된 리모콘 신호