본문 바로가기
코딩/아두이노

아두이노와 블루투스모듈 ZS-040로 스마트폰과 통신하기

by DIYver 2021. 4. 30.

 

 

<목표>

 

- 아두이노와 스마트폰간의 통신을 하려면 블루투스 모듈을 사용해야 한다.

이번 시간에는 ZS-040 블루투스 모듈을 사용하여 아두이노에서 스마트폰으로 신호를 보내고, 수신하는 방법을 알아보자.


<준비물>

 

 

- 아두이노, 점퍼케이블, 블루투스모듈(ZS-040, HC-06)

 

 

ZS-040 은 HC-06과 사용법이 같다.


<회로도>

 

블루투스 모듈의 TX 는 아두이노의 2번핀

RX 는 아두이노의 3번핀에 연결을 해준다.

 

 


<코드>

 

 

#include <SoftwareSerial.h>
int ledPin1 = 13;
char order[100];
bool led_state = 0;

SoftwareSerial BTSerial(2,3);   //bluetooth module Tx:Digital 2 Rx:Digital 3

void setup() {
  pinMode(13, OUTPUT);
  digitalWrite(13,LOW);
  
  Serial.begin(9600);
  BTSerial.begin(9600);
  //Serial.write("ATcommand");  //ATcommand Start
}

void loop() {

  
  if (BTSerial.available())
{
  Serial.write(BTSerial.read());
  if(BTSerial.read() == 'l')
  {
    if(led_state == 0)
    {
      digitalWrite(13,HIGH);
      led_state = 1;
    }
    else
    {
      digitalWrite(13,LOW);
      led_state = 0;
    }
    
 
  }
}
  if (Serial.available())
{
  BTSerial.write(Serial.read());   
}


}

 


<실행 결과>

 

업로드가 완료되었다면 

시리얼창을 열고

보드레이트는 9600으로

그리고 line ending 없음으로 설정해준다.

 

그리고 위 이미지처럼 AT 를 입력하면

OK 라고 뜨는것을 확인하면 된다.

 

 

그다음으로 확인해야 할 것은 블루투스의 버전이다.

위의 이미지처럼 AT+VERSION 을 입력하여

버전을 알아내야 올바른 AT COMMAND를 사용할 수 있다.

 

잘 안 된다면, AT+ROLE=S 라고 입력하고

잠깐 기다린 후에 아두이노의 전원을 끊었다가 다시 연결해주고 버전을 확인해보면 된다.

 

 

 

 

 

 

이번에는 블루투스의 이름을 바꿔보자.

위 이미지처럼 

AT+NAME"블루투스 이름"

으로 입력하면 블루투스 이름이 바뀌게 된다.

 

 

스마트폰에서 Serial Bluetooth Terminal 어플을 설치해준다.

(아이폰은 다른 비슷한 어플 설치하면 됨)

 

스마트폰에서 블루투스 장치목록으로 들어가서

연결 가능한 디바이스에 자신의 블루투스 모듈이 뜨는지 확인한다.

필자의 경우 ZS-040-1 라는 블루투스 모듈이 잘 뜨는 것을 확인할 수 있었다.

 

블루투스 장치로 등록해주고 어플로돌아와서 connect 해주면 된다.

 

 

 

 

 

Connected 라는 문구가 뜨면 아두이노와 스마트폰은 블루투스로 서로 연결된 상태라는 뜻이다.

 

이제 아두이노 시리얼창에서 문구를 입력하거나

스마트폰에서 문구를 입력하고 보내보면 된다.

 

스마트폰에서 보내면 파란 글씨체로 뜨고

아두이노 시리얼모니터에서 전송된 문구는 초록색으로 뜨는 것을 확인할 수 있다.

 

한글도 된다는게 신기하긴 하다.

다른 어플에서도 한글이 정상적으로 송수신이 될지는 직접 확인해봐야 알 듯 하다.

 

아두이노 시리얼창에서는 시리얼모니터로 보낸 문구는 뜨지 않고, 수신된 문구만 뜨는것을 확인할 수 있었다.

 

 

이정도만해도 아두이노로 센서값들을 스마트폰에 실시간으로 송수신 할 수 있고,

아두이노에게 특정문구를 입력받아서 아두이노에서 특정 액션을 하게끔 할 수도 있다.

 

다음에는 앱인벤터로 센서값을 확인해보는 것을 다뤄보도록 하겠다.

 

 


※ 궁금하시거나 질문사항이 있으시면 댓글로 작성해주시면 답변해 드릴 수 있는 부분에서 친절히 답변드리겠습니다!

 

 

 

 

댓글