재료

  • 점프와이어 8개
  • USB 케이블 1개
  • LED 1개
  • 블루투스 APK 1개
  • 브래드 보드 1개
  • 저항 1개
  • 아두이노 우노 1개
  • 블루투스 모듈 1개

 이제까지 설명드렸던 통신 방법들에 대해서는 많이 들어보지 못해서 생소하셨을 수도 있는데, 이번에는 익숙한 소재인 블루투스를 이용하여 통신을 해보도록 하겠습니다. 블루투스는 요즘에 블루투스 스피커나 이어폰같은 블루투스를 이용한 많은 제품들이 출시되고 있기도 하고, 주로 핸드폰을 이용해서 평상시에 사용하기도 하니 여러분에게는 익숙하신 이름일 거에요. 이번 프로젝트에서는 블루투스를 이용하여 통신을 해보도록 하겠습니다.



 이번 실습에서는 블루투스 기능이 있는 안드로이드 스마트 폰을 연결하여 스마트 폰에서 블루투스 응용 프로그램을 이용하여 아두이노 보드에 연결된 LED를 제어하는 실습을 해보도록 하겠습니다.




STEP1. 준비물

아두이노 보드, USB 케이블, 브래드 보드, 블루투스 모듈, LED, 저항, 점프와이어 8개



또 여러분은 이번 프로젝트를 위해서 안드로이드 블루투스 APK를 다운받아 주셔야 합니다. 제가 이번에 이용하게될 어플은 아래의 링크를 찾아가시면 다운받으실 수 있는 안드로이드 어플입니다. 

https://play.google.com/store/apps/details?id=com.makewith.mwcontroller

makewith 회사에서 개발한 블루투스 컨트롤러 어플인데 다운받으셔서 사용하시면 됩니다.

만약 아이폰을 사용하신다면 앱스토어에 가셔서 <Light Blue>라는 어플을 다운받으셔서 사용하시면 됩니다.


STEP2. 회로도



STEP3. 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <SoftwareSerial.h>
 
const int LED=9;
const int bluetoothTx=3;
const int bluetoothRx=2;
 
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
 
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  delay(1000);
  bluetooth.begin(9600);
  pinMode(LED, OUTPUT);
}
 
void loop() {
  // put your main code here, to run repeatedly:
  char cmd;
 
  if(bluetooth.available()){
    cmd=bluetooth.read();
    Serial.print("Command = ");
    Serial.println(cmd);
 
    if(cmd=='1'){
      Serial.println("LED ON");
      digitalWrite(LED, HIGH);
    }
    if(cmd=='2'){
      Serial.println("LED OFF");
      digitalWrite(LED, LOW);
    }
  }
}


STEP4. 결과 확인

위와 같이 코드를 업로드하시고 블루투스를 연결하신 후에 컨트롤러에 1을 입력하시면 LED가 켜지고, 2를 입력하시면 LED가 꺼지도록 구현하였고 그 결과를 아래의 동영상을 통해서 확인하실 수 있습니다.




STEP5. 응용

이제는 좀 더 복잡한 기능들을 추가해서 구현해보도록 합시다. 먼저 LED를 아래의 회로도를 따라서 추가로 연결해주세요.



그런 후에 아래의 코드를 업로드하신 후 블루투스로 연결해주세요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <SoftwareSerial.h>
 
const int LED1=11;
const int LED2=10;
const int LED3=9;
const int bluetoothTx=3;
const int bluetoothRx=2;
 
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
 
void brightness(const int LED){
  digitalWrite(LED, HIGH);
  delay(100);
  digitalWrite(LED, LOW);
}
 
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  delay(1000);
  bluetooth.begin(9600);
  
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
}
 
void loop() {
  // put your main code here, to run repeatedly:
  char cmd;
 
  if(bluetooth.available()){
    cmd=bluetooth.read();
    Serial.print("Command = ");
    Serial.println(cmd);
 
    if(cmd=='1'){
      Serial.println("YELLOW LED ON");
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, LOW);
      digitalWrite(LED3, LOW);
    }
    else if(cmd=='2'){
      Serial.println("GREEN LED ON");
      digitalWrite(LED1, LOW);
      digitalWrite(LED2, HIGH);
      digitalWrite(LED3, LOW);
    }
    else if(cmd=='3'){
      Serial.println("RED LED ON");
      digitalWrite(LED1, LOW);
      digitalWrite(LED2, LOW);
      digitalWrite(LED3, HIGH);
    }
    else{
     digitalWrite(LED1, LOW);
     digitalWrite(LED2, LOW);
     digitalWrite(LED3, LOW);
     
     if(cmd=='4'){
        Serial.println("Relay");
        for(int i=0; i<255; i++){
          analogWrite(LED1, i);
          delay(5);
        }
        for(int i=0; i<255; i++){
          analogWrite(LED1, 255-i);
          analogWrite(LED2, i);
          delay(5);
        }
        for(int i=0; i<255; i++){
          analogWrite(LED2, 255-i);
          analogWrite(LED3, i);
          delay(5);
        }
        for(int i=0; i<255; i++){
          analogWrite(LED3, 255-i);
          delay(5);
        }
      }
      if(cmd=='5'){
        Serial.println("Random");
        for(int i=0; i<10; i++){
          int val=random(3);
          switch(val){
           case 0: brightness(LED1); break;
           case 1: brightness(LED2); break;
           case 2: brightness(LED3); break;
           default: break;
          }
        }
      }
    }
  }
}


1은 노란색, 2는 초록색, 3은 빨간색 LED를 켜줄것이고, 4번을 누르면 순서대로 켜지도록, 5번을 누르면 랜덤으로 연속해서 켜지도록 구현해주었습니다.


 


블루투스를 이용한 통신. 어렵지 않죠?  여러분도 한 번 해보세요:-)


댓글 0

MADE BY

김민정

사물인터넷, 아두이노