블루투스란?
- 근거리 무선통신기술(줄여서 BT --> Bluetooth)
블루투스 모듈이란?
- 아두이노에서 시리얼 통신을 하여 데이터 값을 주고 받을 수 있는 모듈
- *직렬 포트 패스스루 모듈과 *오디오 모듈로 나뉩니다.

*직렬 포트 통과 응용 프로그램? --> 블루트스 프린터, 바코드 스캐너 등 데이터 정송으로 블루투스를 사용하는 장치
*오디오 응용 프로그램? --> 블루투스 스피커, 헤드셋 등
<연결예시>

블루투스모듈을 쓰는 이유?
--> 아두이노는 유선 통신인 시리얼(Serial)통신을 필요로 합니다. 따라서 무선통신을 하기 위해 무선 통신을 시리얼 통신으로 바꿔주는 모듈(블루투스모듈)이 필요합니다.
<코드>
#include <SoftwareSerial.h> //Sofware~을 헤더파일로 추가
#define BT_TXD 7 //BT_TXD를 7번으로 저장 --> 송신
#define BT_RXD 8//BT_RXD를 8번으로 저장 --> 수신
SoftwareSerial bluetooth(BT_RXD, BT_TXD);
void setup() {
Serial.begin(9600);
bluetooth.begin(9600);
}
void loop() { //반복
if(bluetooth.available()){//블루투스모듈에 입력한 값
Serial.write(bluetooth.read());//시리얼모니터에 출력
}
if(Serial.available()){//시리얼모니터에 입력한 값
bluetooth.write(Serial.read());//블루투스모듈에 전달
}
}
<동아리 수업에서>
- 동아리수업에서 한 Terminal mode에서 o가 입력될 경우 led를 키고 f를 입력받으면 led를 꺼보자!
<회로도>

단 블루투스모듈이 연결 되어 있는 상태!
<코드>
#include <SoftwareSerial.h> //Sofware~을 헤더파일로 추가
#define BT_TXD 7 //BT_TXD를 7번으로 저장 --> 송신
#define BT_RXD 8//BT_RXD를 8번으로 저장 --> 수신
#define led 2
SoftwareSerial bluetooth(BT_RXD, BT_TXD);
void setup() {
Serial.begin(9600);
bluetooth.begin(9600);
pinMode(led, OUTPUT);
}
void loop() { //반복
char v = bluetooth.read(); //문자형 변수에 입력받은 값을 저장함
if(v == 'o'){
digitalWrite(led, HIGH); //v 가 'o'라고 입력받으면 led가 켜짐
}
if(v == 'f'){
digitalWrite(led, LOW); //v가 'f'라고 입력되면 led가 꺼짐
}
}
<과제>
: 블루투스 센서를 이용해 부저센서 켜고 꺼보기
<회로도>

<코드>
#include <SoftwareSerial.h> //Sofware~을 헤더파일로 추가
#define BT_TXD 7 //BT_TXD를 7번으로 저장 --> 송신
#define BT_RXD 8//BT_RXD를 8번으로 저장 --> 수신
#define bu 2
SoftwareSerial bluetooth(BT_RXD, BT_TXD);
void setup() {
Serial.begin(9600);
bluetooth.begin(9600);
pinMode(bu, OUTPUT);
}
void loop() { //반복
char v = bluetooth.read();//문자형 변수에 입력받은 값을 저장함
if(v == 'o'){
tone(bu, 1100); //v 가 'o'라고 입력받으면 bu가 켜짐
}
if(v == 'f'){
noTone(bu);//v가 'f'라고 입력되면 bu가 꺼짐
}
}
.
.
.
.
.
.
.
블루투스 모듈이 안되서 하는 새로운 과제!
--> 서브모터를 사용하여 부저 출력하기
<회로도>

<코드>
int bu = 2;
void setup()
{
Serial.begin(9600); //시리얼통신
pinMode(bu, OUTPUT); //bu출력
}
void loop()
{
int poten = analogRead(A0);
int mapp = map(poten, 0, 1023, 0, 180); //poten의 값을 0~1023에서 0~1000 으로 바꿈
Serial.println(mapp); //저항값을 시리얼모니터에 출력
tone(bu, mapp); //저항값이 바뀜에 따라 저항이 달라짐 --> 그에 따라 bu의 밝기를 조절 할 수 있음
}
<영상>