본문 바로가기
Arduino

[아두이노] 스마트홈 시스템 제작 과정 (블루투스)

by TaeSeok_Yang 2020. 2. 9.

 

부품

우드락 
아두이노 우노
브레드 보드
블루투스 모듈
점퍼 케이블
초음파 센서 X2
모터 X3
피에조 부저
LED X7

 

제작 과정

 

1. 작품 구상

 

구현할 기능

- 전등 ON OFF

- 창문 열기 닫기

- 로봇 청소기 ON OFF

- 보안 시스템

- 자동차 시동

 

2. 외관 제작 

 

3. 아두이노, 브레드 보드, 모터 장착

* 초기에는 건전지를 이용하여 무선으로 제작하려 했지만

USB로 전력을 공급하기로 변경

장착한 모터는 로봇청소기를 움직이기 위한 모터

 

4. 센서 매립

 

5. 모터 부착

 

6. LED, 블루투스 모듈 연결후 배선 

2층 전등 & 1층 전등 - 백색 총 2개

장식 - 초록, 주황, 파랑 총 3개

차 라이트 - 주황 2개

 

7. 코딩

#include <SoftwareSerial.h>
#include<Servo.h> 
SoftwareSerial BTSerial(6,7);
Servo left; //창문 좌
Servo right;//창문 우
Servo cleaner; // 청소기

unsigned long previousMillis = 0;
long interval = 100;
int echo2 = 13; 
int trig2 = 12;  
int echo1 = 11;
int trig1 = 10;
int light2=9;
int light1=8;
int carlight=2;
int grean=A0;
int orange=A1;
int blue=A2;
int piezo=A3;
int lopen=180;
int ropen=0;
int lrclose=90;
int bs;
int ch=0;
int secumode=0;
int clch=0;
int i=1;
int a=1;

void setup() {
  BTSerial.begin(9600);
  left.attach(5);
  right.attach(4);
  cleaner.attach(3);
  
  pinMode(carlight, OUTPUT);
  pinMode(light2, OUTPUT);
  pinMode(light1, OUTPUT);
  pinMode(trig2, OUTPUT);
  pinMode(echo2, INPUT);
  pinMode(trig1, OUTPUT);
  pinMode(echo1, INPUT);
  pinMode(A0,OUTPUT);
  pinMode(A1,OUTPUT);
  pinMode(A2,OUTPUT);
  pinMode(A3,OUTPUT);
  Serial.begin(9600);
  left.write(lrclose); // 창문 초기화
  right.write(lrclose);// 창문 초기화
  digitalWrite(A0,HIGH); //장식 LED
  digitalWrite(A1,HIGH); //장식 LED
  digitalWrite(A2,HIGH); //장식 LED
}

void loop() {
  if(secumode==1){  // 보안모드
    long currentMillis = millis(); 
    digitalWrite(trig2, LOW);
    delayMicroseconds(2); 
    digitalWrite(trig2, HIGH);
    delayMicroseconds(10);
    digitalWrite(trig2, LOW);
    int duration2 = pulseIn(echo2, HIGH);
    int dis2 = duration2*17/1000;
     
    digitalWrite(trig1, LOW);
    delayMicroseconds(2); 
    digitalWrite(trig1, HIGH);
    delayMicroseconds(10);
    digitalWrite(trig1, LOW);
    int duration1 = pulseIn(echo1, HIGH);
    int dis1 = duration1*17/1000;
    
    Serial.print("2층");       
    Serial.print(dis2);
    Serial.print("cm ");
    Serial.print("1층"); 
    Serial.print(dis1);
    Serial.println("cm");
    delay(50);
  
    if(currentMillis - previousMillis >= interval) { 
      previousMillis=currentMillis;
      if(ch==0){
        ch=1;
      }
      else{
        ch=0;
      }
    }
  
    if((dis2<11||dis2>16)||(dis1<11||dis1>16)){
      if(ch==0){
        tone(piezo,1500);
      }
      else{
        tone(piezo,500);
      }
    }
    else{
     noTone(piezo);
     ch=1;
    }
  }

  if(clch==1){ // 청소기 작동
    if(a==1){
      if(i==16){
        a=0;
      }
      cleaner.write(i*10);
      delay(50);
      i++;
    }
    else{
      if(i==2){
        a=1;
      }
    cleaner.write(i*10);
    delay(50);
    i--;
    }
  }
  
  
  if(BTSerial.available()){ // 블루투스
    bs=BTSerial.read();
    switch(bs){
      case 97://a
        digitalWrite(light2,HIGH);
        break;
      case 98://b
        digitalWrite(light2,LOW);
        break;
      case 99://c
        digitalWrite(light1,HIGH);
        break;
      case 100://d
        digitalWrite(light1,LOW);
        break;
      case 101://e
        digitalWrite(carlight,HIGH);
        break;
      case 102://f
        digitalWrite(carlight,LOW);
        break;
      case 103://g
        left.write(lopen);
        right.write(ropen);
        break;
      case 104://h
        left.write(lrclose);
        right.write(lrclose);
        break;
      case 105://i
        clch=1;
        break;
      case 106://j
        clch=0;
        break;
      case 107://k
        secumode=1;
        break;
      case 108://l
        secumode=0;
        break;
      default:
        break;
    }
  }
}

 

8. 앱 제작

앱 인벤터 사용

 

작품 시연

 

'Arduino' 카테고리의 다른 글

[자료]모형건축 전등제어 자료  (0) 2021.05.18