스마트 무선 조명 스위치 컨트롤러: 아두이노 기반 원격 스위치 조작기
부품 및 소모품
| 아두이노 우노 |
2개 (송신부/수신부 각각 1개) |
| 서보 모터 (Tower Pro MG996R) |
1개 |
| 433MHz 송수신 모듈 |
1세트 |
필요 도구 및 장비
앱 및 온라인 서비스
프로젝트 소개
기획 의도
누워서 조명 끄기 귀찮을 때, 키가 작아 스위치에 손이 안 닿을 때, 거동이 불편한 분들을 위해 433MHz 무선으로 기존 벽면 스위치를 물리적으로 눌러주는 장치를 만들었습니다.
프로젝트 구성
- 마스터 (리모컨): 아두이노 + 433MHz 송신기 + 버튼
- 슬레이브 (스위치 조작기): 아두이노 + 433MHz 수신기 + 서보 모터 + 3D프린트 마운트
코드 내 임계값(upperThreshold, lowerThreshold)을 환경에 맞게 조정해야 안정적으로 동작합니다.
배선
프로젝트 페이지의 배선도 이미지 참고. 버튼은 송신측 아두이노에, 서보는 수신측 아두이노에 연결.
벽면 마운트
서보를 벽면 스위치 위에 고정할 3D프린트 마운트(OpenSCAD 설계 파일 제공)를 출력해 양면테이프나 명령 스트립으로 부착. 스위치 커버 형태에 맞게 구멍 위치 수정 가능.
완성 및 향후 개선
- 아두이노 케이스 출력해 벽면에 고정하면 더 깔끔
- ESP8266 기반으로 변경해 와이파이/음성 제어(Alexa 등) 연동 예정
- 스위치 커버 일체형 디자인으로 개선
코드
Slave_Servo.ino (수신부)
#define rfReceivePin A0
#define ledPin 13
#include
Servo servo;
unsigned int data = 0;
const unsigned int upperThreshold = 70;
const unsigned int lowerThreshold = 50;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
servo.attach(9);
}
void loop() {
data = analogRead(rfReceivePin);
if (data < upperThreshold) {
digitalWrite(ledPin, LOW);
servo.write(0); // 스위치 OFF 위치
}
if (data > lowerThreshold) {
digitalWrite(ledPin, HIGH);
servo.write(90); // 스위치 ON 위치
}
}
Master_Remote.ino (송신부)
#define rfTransmitPin 4
#define buttonPin 2
#define led 13
void setup() {
pinMode(rfTransmitPin, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(rfTransmitPin, HIGH);
digitalWrite(led, HIGH);
Serial.println("transmit");
delay(10);
} else {
digitalWrite(rfTransmitPin, LOW);
digitalWrite(led, LOW);
Serial.println("no");
}
}
3D 모델 파일
- 스위치 마운트:
mhacks_lightswitchv4.stl (OpenSCAD 소스 포함)
- 아두이노 케이스: Thingiverse 링크 참고
회로도
프로젝트 페이지의 회로도 이미지 2종 참고 (송신부/수신부 각각).