1. 프로젝트 제작 동기
잘 때 불을 끄기 위해 스위치를 눌러야 하는 불편함이 있었습니다. 또한, 방 밖에 누군가 있을 때 불을 꺼야 하는 상황이나, 외출할 때 불을 꺼야 하는 상황에서도 손쉽게 전등을 제어할 수 있는 방법이 필요하다고 생각했습니다. 이에 아두이노를 활용하여 스마트폰으로 전등을 제어하고, 움직임 감지 시 자동으로 불을 꺼주는 시스템을 제작하게 되었습니다.
2. 프로젝트 설명
이 프로젝트는 아두이노와 다양한 센서를 활용하여 스마트 전등 스위치를 구현하는 것입니다. 주요 기능은 다음과 같습니다.
- 블루투스 모듈을 이용해 스마트폰으로 전등을 원격 제어 가능
- 초음파 센서를 이용해 일정 거리 내에서 움직임 감지 시 자동으로 전등 소등
- 서보모터를 활용하여 기존 전등 스위치를 물리적으로 눌러 동작
3. 제작 과정
- 하드웨어 연결
- 아두이노와 블루투스 모듈, 서보모터, 초음파 센서를 연결
- 블루투스 모듈과 스마트폰을 페어링
- 하드웨어 연결 상세 정보
- 블루투스 모듈
- VCC 핀 → 아두이노 5V 핀
- GND 핀 → 아두이노 GND 핀
- TX 핀 → 아두이노 디지털 핀 2
- RX 핀 → 아두이노 디지털 핀 3
- 서보모터
- 신호 핀 → 아두이노 디지털 핀 9
- VCC 핀 → 아두이노 5V 핀
- GND 핀 → 아두이노 GND 핀
- 초음파 센서
- VCC 핀 → 아두이노 5V 핀
- GND 핀 → 아두이노 GND 핀
- Trig 핀 → 아두이노 디지털 핀 12
- Echo 핀 → 아두이노 디지털 핀 11
- 블루투스 모듈
- 소프트웨어 개발
- 초음파 센서를 이용하여 물체와의 거리 측정
- 물체가 30cm 이내에 감지되면 서보모터가 작동하여 전등을 끄도록 설정
- 스마트폰에서 블루투스를 통해 0을 전송하면 전등이 꺼지고, 1을 전송하면 원래 상태로 복귀
- 코드 구현
#include <Servo.h> #include <SoftwareSerial.h> #define SERVO_PIN 9 #define BT_RX 2 #define BT_TX 3 #define TRIG_PIN 12 #define ECHO_PIN 11 Servo servo; SoftwareSerial BTSerial(BT_RX, BT_TX); void setup() { servo.attach(SERVO_PIN); BTSerial.begin(9600); Serial.begin(9600); pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); servo.write(0); } void loop() { long distance = measureDistance(); if (distance > 0 && distance <= 30) { Serial.println("Object detected within 30cm, switching OFF light."); toggleSwitch(); delay(1000); servo.write(0); Serial.println("Switch returning to original position"); } if (BTSerial.available()) { char command = BTSerial.read(); if (command == '0') { Serial.println("Bluetooth command received: Switch OFF"); toggleSwitch(); } else if (command == '1') { servo.write(0); Serial.println("Bluetooth command received: Switch returning to original position"); } } } long measureDistance() { digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); long duration = pulseIn(ECHO_PIN, HIGH); long distance = duration * 0.034 / 2; return distance; } void toggleSwitch() { servo.write(90); delay(1000); }
- 서보모터 장착 및 테스트
- 서보모터를 벽에 부착하여 실제 스위치를 누를 수 있도록 고정
- 초음파 센서를 이용해 자동 소등 테스트 진행
- 블루투스 모듈을 활용한 원격 조작 테스트 수행
4. 시연 영상 및 사진
프로젝트의 동작 과정을 시각적으로 확인할 수 있도록 시연 영상을 준비하였습니다.
- 시연 영상 및 사진: (영상 및 사진 첨부 예정)
5. 개선방안 모색
- 스마트폰 앱 개발을 통해 더욱 직관적인 UI 제공
- 초음파 센서의 감지 범위를 조절하여 오작동 방지
- 음성 인식을 활용한 음성 명령 기능 추가
- 서보모터 대신 릴레이 모듈을 활용하여 직접 전등을 제어하는 방식 개선
6. 감상
더 발전된 IoT 시스템을 만들고 싶었지만, 현재 실력으로 구현할 수 있는 최적의 방법을 고민하며 프로젝트를 완성했습니다. 초음파 센서, 서보모터 등 동아리에서 배운 개념들을 실제로 활용하면서 더욱 깊이 이해할 수 있었습니다.
또한, 블루투스 모듈을 처음 사용하면서 인터넷 자료를 찾아가며 코드 작성 및 스마트폰과의 연결 방법을 익힐 수 있었습니다. 이 프로젝트를 통해 IoT 기술에 대한 관심이 더욱 커졌으며, 앞으로 더 발전된 스마트 시스템을 만들어보고 싶습니다.