아두이노 기반 원격 제어 펫 피더: DIY 키트 및 제작 가이드
부품 및 소모품
| 부품 |
수량 |
비고 |
| 아두이노 우노 |
1 |
유사 보드 사용 가능 |
| SG90 마이크로 서보 모터 |
1 |
강력한 것 필요 없음 |
| IR 수신기 (일반, TSOP1738) |
1 |
|
| JustBoom IR 리모컨 |
1 |
어떤 IR 리모컨이든 사용 가능 |
| 점퍼 와이어 (일반) |
1 |
|
| 브레드보드 (일반) |
1 |
|
필수 도구 및 장비
앱 및 온라인 서비스
프로젝트 개요
이 간단한 아두이노 프로젝트로 리모컨을 사용해 반려동물에게 먹이를 줄 수 있습니다. 아두이노 우노(또는 유사 보드), 플라스틱 병, 서보 모터(강력할 필요 없음), TV 리모컨, IR 수신기(TSOP1738), 작은 골판지 조각만 있으면 됩니다.
IR 라이브러리 설치
가장 먼저 아두이노 IR 라이브러리를 다운로드해야 합니다.
IR 신호 디코딩
회로도대로 부품을 연결하세요.

TSOP1738 핀아웃:

다음 코드를 업로드하고 시리얼 모니터를 열어 리모컨 버튼을 눌러 값을 확인하세요.
/* IR 센서 핀 연결:
Pin 1 -> Vout (아두이노 핀 11)
Pin 2 -> GND
Pin 3 -> Vcc (+5V) */
#include <IRremote.h>
int IRpin = 11;
IRrecv irrecv(IRpin);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, DEC);
irrecv.resume();
}
}
시리얼 모니터에서 각 버튼별로 다른 숫자가 나타납니다. 두 버튼을 골라 값을 기록하세요. 예: 전원 버튼 = 33441975, 모드 버튼 = 33446055. 이 값을 다음 코드에 입력합니다.

최종 회로

- 서보 신호 핀 → 아두이노 핀 9
- 서보 VCC/GND → 아두이노 5V/GND
- 서보를 플라스틱 병 한쪽에 붙이고, 골판지 조각을 회전시켜 병 입구를 막아 사료 차단
하드웨어 연결이 완료되면 아래 스케치를 컴파일/업로드하세요.
#include <IRremote.h>
#include <Servo.h>
int IRpin = 11;
IRrecv irrecv(IRpin);
decode_results results;
Servo myservo;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
myservo.attach(9);
}
void loop() {
if (irrecv.decode(&results)) {
irrecv.resume();
}
if (results.value == 33441975) { // 본인 리모컨 값으로 변경
myservo.write(0);
delay(15);
}
if (results.value == 33446055) { // 본인 리모컨 값으로 변경
myservo.write(30);
delay(15);
}
}
이제 리모컨으로 펫 피더 개폐를 제어할 수 있습니다. 즐거운 만들기 되세요! :-)
코드
IR 디코딩 (Decode_IR)
/* IR 센서 핀 연결:
Pin 1 -> Vout (아두이노 핀 11)
Pin 2 -> GND
Pin 3 -> Vcc (+5V) */
#include <IRremote.h>
int IRpin = 11;
IRrecv irrecv(IRpin);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, DEC);
irrecv.resume();
}
}
IR 리모컨 서보 제어 (IRremote_Servo_Control)
#include <IRremote.h>
#include <Servo.h>
int IRpin = 11;
IRrecv irrecv(IRpin);
decode_results results;
Servo myservo;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
myservo.attach(9);
}
void loop() {
if (irrecv.decode(&results)) {
irrecv.resume();
}
if (results.value == 33441975) { // 본인 리모컨 값으로 변경
myservo.write(0);
delay(15);
}
if (results.value == 33446055) { // 본인 리모컨 값으로 변경
myservo.write(30);
delay(15);
}
}
회로도
