Arduino 블루투스

블루투스는 가상으로 핀(RX, TX)을 만들어서 구성할것이다.

예시

이렇게 말이다

 

블루투스 모델은 ZS-040 모델을 이용할거다

RXD - 3번핀

TXD - 2번핀

GND - GND 연결

VCC - 5V 연결

 

#include <SoftwareSerial.h>
//블루투스 통신을 할 수 있는 SoftwareSerial 객체를 생성
SoftwareSerial myBTSerial(2,3); //SoftwareSerial(rxPin, txPin)
void setup() {
  Serial.begin(9600);
  myBTSerial.begin(9600); //블루투스 통신을 시작
}

void loop() {
  //블루투스 통신으로 수신된 데이터가 있으면
  if(myBTSerial.available()) {
    //블루투스 통신을 통해 읽은 데이터를 시리얼모니터로 출력
    Serial.write(myBTSerial.read());
  }
  //시리얼 통신으로 수신된 데이터가 있으면
  if(Serial.available()) {
    //시리얼 통신으로 입력된 데이터를 블루투스로 출력
    myBTSerial.write(Serial.read());
  }
}

그리고 시리얼 모니터에 보면

Both NL & CR로 바꿔주고 AT를 입력하면 OK가 나오게 된다.

 

그리고 AT+NAME MyBT_HC06이라고 입력하면 

         (명령어)      (BT NAME)

 

+NAME= MyBT_HC06

OK

라고 뜬다

 

버전 확인법 : AT+VERSION 입력하면 자기 버전이 나온다

 

<AT명령>

1> 2.0

    시리얼모니터에서 전송옵션 선택 : line ending없음

    통신할 수 있는 상태인지 확인 명령어 : AT(전송) -> OK(응답)

    블루투스 이름을 변경 : AT+NAME (장치명) -> OKname(응답)

2> 3.0

    시리얼모니터에서 전송옵션 선택 : Both NL & CR

    통신할 수 있는 상태인지 확인 명령어 : AT(전송) -> OK(응답)

    블루투스 이름을 변경 : AT+NAME (장치명) -> OK(응답)

 

 

그리고 이제 핸드폰으로 블루투스를 키고 기기검색을 눌러보자

그럼 내가 설정했던 MyBT_HC06이 있다 페어링을 해주자.

PIN번호는 보통 1234 이거나 0000이다.

 

그리고 이 앱을 다운받고

페어링 된것을 선택하면 터미널 모드가 있다 선택해주자.

 

그리고 핸드폰에서 입력을 하면 시리얼 모니터에 뜬다

마찬가지로 시리얼모니터에 입력하면 핸드폰에 뜬다

신기하다

 

아두이노에서 전송

1. 아두이노 TX를 통해서(유선)

2. 블루투스 RX로 받고(유선)

3. RX가 핸드폰 TX로 받는다(무선)

 

핸드폰에서 전송

1. 핸드폰 TX를 통해서(무선)

2. 블루투스 RX로 받고(무선)

3. 블루투스 TX로 아두이노 RX로 받는다(유선)

 

 

#include <SoftwareSerial.h>
SoftwareSerial myBTSerial(2,3);
String mystr="";
void setup() {
  Serial.begin(9600);
  myBTSerial.begin(9600);
  Serial.println("통신준비...");
}

void loop() {
  //블루투스 모듈이 데이터를 읽을 준비를 할 수 있도록 delay
  delay(1000);
  while(myBTSerial.available()) {
    char myChar = myBTSerial.read();
    mystr += myChar;
  }

  Serial.println("input Val :"+mystr);
  mystr = ""; //mystr 초기화

  if(Serial.available()) {
    //시리얼 통신으로 입력된 데이터를 블루투스로 출력
    myBTSerial.write(Serial.read());
  }
}

스트링으로 하는 작업

 

 

문제)

블루투스 통신을 통해서 장비를 제어할 수 있도록 작업

- on/off 메시지를 보내서 led를 블루투스를 통해서 켜고 끌 수 있도록 제어하기

- 조도센서의 값을 블루투스 통신을 이용해서 전송하기

더보기
#include <SoftwareSerial.h>
SoftwareSerial myBTSerial(2,3);
String mystr="";
int value;
void setup() {
  Serial.begin(9600);
  myBTSerial.begin(9600);
  Serial.println("통신준비...");
  pinMode(10, OUTPUT);
}

void loop() {
  delay(1000);
  while(myBTSerial.available()) {
    char myChar = myBTSerial.read();
    mystr += myChar;
  }
  led(mystr);
  mystr = "";
  
  delay(1000);
  value = analogRead(A0);
  myBTSerial.println("Senor:"+(String)value);
}
void led(String mystr) {
  if(mystr == "on")
    digitalWrite(10, HIGH);
  else if(mystr == "off")
    digitalWrite(10, LOW);
}

 

 

 

댓글

Designed by JB FACTORY