10-2 블루투스 통신

공부하는 학생 A·2024년 2월 20일
0

아두이노 

목록 보기
51/74

우리가 인터넷을 사용하거나 스마트폰에서 정보를 검색할 때 통신을 사용한다. 일반적인 통신 방법에는 유선통신무선통신 방법이 있다. 유선 통신은 선을 이용하는 것으로 컴퓨터에서 인터넷 선을 연결하여 사용하는 방법을 예로 들 수 있다. 반면에 무선통신은 최근 수년 동안 급격하게 발전하여 대부분의 통신 기기들은 무선통신을 이용하고 있다. 블루투스, 와이파이, NFC 등 일상생활에서 이루어지는 많은 영역에서 무선통신 방법을 사용한다.

블루투스 통신

블루투스(Bluetooth)는 근거리 무선통신 중 하나로 주로 수십 미터 이내에서 통신이 이루어진다. 최근에는 IOT(사물인터넷) 제품이 다양하게 출시되면서 스마트폰과의 통신에 자주 이용된다. 스마트폰에는 블루투스 모듈이 내장되어 있어서 일상에서 사용하는 통신에 쉽게 적용할 수 있다. 블루투스는 1994년 에릭슨이 최초로 개발한 개인 근거리 무선통신 산업표준이다. 이어폰, 스피커, 가정용 전자제품 등 실내에서 주로 이용하거나 가까운 거리의 통신에 편리하게 적용된다. 블루투스 IEEE의 규격명은 IEEE 802.15.1로 등재되어 있다. 블루투스는 Bluetooth Special Interest Group(SIG)를 통해 관리되고 SIG의 표준 규격을 만족해야 블루투스 장비로 인증받을 수 있다.

회로 만들기

스케치 10-2 블루투스에서 데이터 받기

#include <SoftwareSerial.h>  //소프트웨어시리얼 설정
SoftwareSerial mySerial(10, 11); // RX, TX
void setup() {
  mySerial.begin(9600);    // 전송 속도를 9600 bps로 설정
  pinMode(4, OUTPUT);   // 4번 LED를 출력으로 설정
}
int a;
void loop() {
  if (mySerial.available() > 0) {
    String m =  mySerial.readString();
    //문자열로 읽은 값을 m에 저장
    if (m.indexOf("1") == 0) digitalWrite(4, HIGH);
    // ‘1’이면 HIGH 신호 보냄(LED 켬)
    if (m.indexOf("0") == 0) digitalWrite(4, LOW);
    // ‘2’이면 LOW 신호 보냄(LED 끔)
    }
}

스케치 10-2 분석

  1. #include <SoftwareSerial.h>
    해더파일 SoftwareSerial.h를 포함한다. 소프트웨어 시리얼을 시작하기 위한 라이브러리이다.
  2. SoftwareSerial mySerial(10, 11);
    시리얼 통신 이름을 'mySerial'로 선언한다. 이 이름은 변경할 수 있다.
    시리얼 통신 수신, 송신 핀을 선언한다. 10번은 RX, 11번은 TX이다.
  3. mySerial.begin(9600);
    시리얼 통신을 9600bps 속도로 시작하는 것을 의미한다.
  4. if (mySerial.available() > 0)
    시리얼 통신으로 신호가 들어올 때 다음 명령을 실행시킨다.
  5. String m = mySerial.readString();
    m을 문자열로 지정한다.
    mySerial로 저장된 값을 문자열 m에 저장한다.
  6. if (m.indexOf("1") == 0);
    m.indexOf는 m에 저장된 문자열의 순서 값을 의미한다.
    m.indexOf("1") == 0은 m에 저장된 첫 번째 문자열의 값이 "1"을 의미한다. 즉 시리얼 통신으로 읽은 값의 첫번째 글자가 '1'이라는 의미이다. 앱에서 '1'을 보내면 아두이노 블루투스에서 받은 숫자 중에 첫 번째 글자가 '1'로 참일 때 다음 명령을 수행한다.
  7. digitalWrite(4, HIGH);
    4번 핀에 HIGH 신호를 보낸다 (LED ON).

스케치 10-2 실행결과

모바일 블루투스로 검색하면 해당 블루투스가 뜨는 것을 확인할 수 있다.

profile
Shine like a star, Just like a star

0개의 댓글