[오늘의 타겟] 블루투스 통신 모듈
RXD : 데이터 수신을 하는 핀
TXD : 데이터 송신을 하는 핀
출처 : https://m.blog.naver.com/boilmint7/221900933326
[실습 1] 아두이노(시리얼 통신) 과 스마트폰(블루트스 터미널) 간 데이터 송수신
- 회로 구성
춯처 : https://m.blog.naver.com/sisosw/221518483163
- 스마트폰 준비
블루투스 모듈에서 빨간불이 깜빡이나요?
-> 블루투스 연결을 기다리고 있다는 뜻이에요.
* 스마트폰 설정에서 HC-06 이란 블루투스 모듈을 먼저 연결해 줍시다.
* 블루투스 터미널 설치
-> 블루투스 신호를 송수신 할수 있는 [블루투스 터미널] 이란 어플리케이션을 설치해주어야 합니다.
[ 안드로이드 ]
1. 플레이스토어에서 [블루투스 터미널] 라고 검색해 보시고 아무거나 다운 받아주세요. 거의다 비슷해요.
2. 어플을 설치 한뒤 열어보세요.
왼쪽 위에 3줄 짜리 설정 창이 보이나요? 클릭해 주세요.
HC-06 블루투스 연결 -> 블루투스 모듈이 깜빡이다가 빨간불이 그냥 쭉 들어오면 연결완료
- 프로그래밍 코드
- 시리얼 모니터로 통신 확인
[실습 2] 아두이노(시리얼 통신) 과 스마트폰(블루트스 터미널) 간 데이터 송수신
- 아두이노 회로도
출처 : https://codingrun.com/114#content
- 안드로이드 블루투스 어플리케이션 제작
-> 제작 방법은 아래 url 내용을 쭉 따라가면 된다.
https://m.blog.naver.com/godlife1203/221359724037
- 코드 : 초록색 led 블루투스 통신을 통해 껐다 켰다하는 코드
#include <SoftwareSerial.h> //블루투스 시리얼 통신 라이브러리 추가
SoftwareSerial BTSerial(2, 3); //블루투스 설정 BTSerial(Tx, Rx)
int Green = 5;
int Yellow = 7;
int Red = 9; //led 핀 설정
void setup() {
BTSerial.begin(9600); //블루투스 통신 시작
pinMode(Green, OUTPUT);
pinMode(Yellow, OUTPUT);
pinMode(Red, OUTPUT);
}
void loop() {
if(BTSerial.available()) //값이 들어오면
{
char bt; //제어할 변수 bt선언
bt = BTSerial.read(); //들어온 값을 bt에 저장
if(bt == '0') //bt가 a면
digitalWrite(Green, HIGH); //초록불 ON
if(bt == '1')
digitalWrite(Green, LOW);
}
}
[추가 과제]
- 안드로이드 어플과 아두이노 프로그래밍 코드를 수정하여 led 3가지 색을 껐다켰다 할수 있도록 변경하시오.
- 아두이노 회로는 그대로 사용.
[도전과제] 아래 자료를 참고하여. 블루투스 통신을 통해 dc 모터 전진 후진 좌회전, 우회전을 제어 하시오.
- 회로
- 참고 코드
#include <SoftwareSerial.h> //시리얼 통신 라이브러리 호출
//모터 PIN 설정
#define LEFT_A1 7 //왼쪽 바퀴
#define LEFT_B1 8 //왼쪽 바퀴
#define RIGHT_A2 4 //오른쪽 바퀴
#define RIGHT_B2 2 //오른쪽 바퀴
const int ENA = 6;
const int IN1 = 8;
const int IN2 = 7;
const int IN3 = 2;
const int IN4 = 4;
const int ENB = 3;
//블루투스 PIN 설정
#define BLUE_TX 12 //블루투스 TX
#define BLUE_RX 13 //블루투스 RX
SoftwareSerial mySerial(BLUE_TX, BLUE_RX); //시리얼 통신을 위한 객체선언
char value; //블루투스에서 받는 값
void setup() {
Serial.begin(9600); //시리얼모니터
mySerial.begin(9600); //블루투스 시리얼 개방
pinMode(LEFT_A1, OUTPUT);
pinMode(RIGHT_A2, OUTPUT);
pinMode(LEFT_B1, OUTPUT);
pinMode(RIGHT_B2, OUTPUT);
Serial.println("Arduino Bluetooth Car is ready to start");
}
void loop() {
while(mySerial.available()) //mySerial에 전송된 값이 있으면
{
value = mySerial.read(); //전송값 읽음
Serial.print(value);
if(value == 'l'){ //좌회전(강)
Serial.println("left");
left();
}else if(value == 'r'){ //우회전(강)
// 직접 코딩하시오...
}else if(value == 'f'){ //전진
Serial.println("forward");
forward();
}else if(value == 'b'){ //후진
// 직접 코딩하시오...
}else if(value == 'w'){ //우회전(약)
Serial.println("slow right");
sRight();
}else if(value == 'q'){ //좌회전(약)
Serial.println("slow left");
sLeft();
}else if(value == 'c'){ //우회전(뒷)
Serial.println("back right");
bRight();
}else if(value == 'z'){ //좌회전(뒷)
Serial.println("back left");
bLeft();
}else if(value == 's'){ //정지
// 직접 코딩하시오...
}
}
}
// 자동차 움직임 정의 Function 들
void forward(){
digitalWrite(LEFT_A1, HIGH);
digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, HIGH);
digitalWrite(RIGHT_B2, LOW);
analogWrite(ENB, 255);
analogWrite(ENA, 255);
}
void backward(){
// 직접 코딩하시오...
}
void left(){
digitalWrite(LEFT_A1, LOW);
digitalWrite(LEFT_B1, HIGH);
digitalWrite(RIGHT_A2, HIGH);
digitalWrite(RIGHT_B2, LOW);
analogWrite(ENB, 255);
analogWrite(ENA, 255);
}
void right(){
// 직접 코딩하시오...
}
void sLeft(){
digitalWrite(LEFT_A1, LOW);
digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, HIGH);
digitalWrite(RIGHT_B2, LOW);
analogWrite(ENB, 255);
analogWrite(ENA, 255);
}
void bLeft(){
digitalWrite(LEFT_A1, LOW);
digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, LOW);
digitalWrite(RIGHT_B2, HIGH);
analogWrite(ENB, 255);
analogWrite(ENA, 255);
}
void sRight(){
digitalWrite(LEFT_A1, HIGH);
digitalWrite(LEFT_B1, LOW);
digitalWrite(RIGHT_A2, LOW);
digitalWrite(RIGHT_B2, LOW);
analogWrite(ENB, 255);
analogWrite(ENA, 255);
}
void bRight(){
digitalWrite(LEFT_A1, LOW);
digitalWrite(LEFT_B1, HIGH);
digitalWrite(RIGHT_A2, LOW);
digitalWrite(RIGHT_B2, LOW);
analogWrite(ENB, 255);
analogWrite(ENA, 255);
}
void stop(){
// 직접 코딩하시오...
}
끝.
'메이커 프로젝트 > 아두이노 +' 카테고리의 다른 글
젯슨나노 웹캠 이미지 받아오기 (2) | 2021.12.28 |
---|---|
아두이노 서보모터 제어(심화) (2) | 2021.09.28 |
아두이노 DC 모터 제어하기 (0) | 2021.09.03 |
[모듈 1-6] 아두이노 부저로 소리내기(feat. 전자 피아노 만들기) (2) | 2020.09.22 |
[ 모듈 1-5 ] 아두이노 초음파 센서 제어하기(feat. processing 아두이노 시각화) (2) | 2020.09.22 |