중급⏱ 예상 시간: 45분📝 5단계

스마트 쓰레기통

초음파 센서로 손을 감지하면 서보모터가 뚜껑을 자동으로 열어주는 비접촉 스마트 쓰레기통을 만듭니다.

🧩 필요한 모듈

Arduino Uno
브레드보드
피에조 부저
점퍼 와이어
LED
저항 (220Ω / 10kΩ)
서보모터 (SG90)
초음파 센서 (HC-SR04)

📖 단계별 설명서

📝

1단계준비물 확인

다음 부품들을 준비해주세요:

  • Arduino Uno 1개
  • 브레드보드 1개
  • 점퍼 와이어 10개
  • 초음파 센서 (HC-SR04) 1개
  • 서보모터 (SG90) 1개
  • LED 1개 (상태 표시용)
  • 피에조 부저 1개
  • 220Ω 저항 1개
📝

2단계회로 연결하기

  1. 초음파 센서의 Trig를 D7, Echo를 D6에 연결합니다.
  2. 초음파 센서의 VCC를 5V, GND를 GND에 연결합니다.
  3. 서보모터의 신호선을 D9에 연결합니다.
  4. 서보모터의 VCC를 5V, GND를 GND에 연결합니다.
  5. LED를 220Ω 저항을 통해 D13에 연결합니다.
  6. 부저를 D8에 연결합니다.

📐 회로도

회로도 이미지

/images/projects/smart-trash-circuit.png

📝

3단계코드 작성하기

code.ino
#include <Servo.h>

Servo lidServo;

const int TRIG = 7;
const int ECHO = 6;
const int SERVO_PIN = 9;
const int LED_PIN = 13;
const int BUZZER = 8;
const int OPEN_DIST = 20;  // 20cm 이내 감지시 열림

void setup() {
  lidServo.attach(SERVO_PIN);
  lidServo.write(0);  // 닫힌 상태
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
  pinMode(LED_PIN, OUTPUT);
  pinMode(BUZZER, OUTPUT);
  Serial.begin(9600);
}

long getDistance() {
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
  long duration = pulseIn(ECHO, HIGH, 30000);
  return duration * 0.034 / 2;
}

void openLid() {
  digitalWrite(LED_PIN, HIGH);
  tone(BUZZER, 1000, 100);
  for (int pos = 0; pos <= 90; pos += 3) {
    lidServo.write(pos);
    delay(15);
  }
}

void closeLid() {
  for (int pos = 90; pos >= 0; pos -= 3) {
    lidServo.write(pos);
    delay(15);
  }
  digitalWrite(LED_PIN, LOW);
}

void loop() {
  long dist = getDistance();
  Serial.print("Distance: ");
  Serial.print(dist);
  Serial.println(" cm");

  if (dist > 0 && dist < OPEN_DIST) {
    openLid();
    delay(3000);   // 3초간 열린 상태 유지
    closeLid();
    delay(500);
  }

  delay(100);
}
+45 줄 더 보기
📝

4단계업로드 및 테스트

  1. 코드를 업로드합니다.
  2. 초음파 센서 앞에 손을 20cm 이내로 가져가면 서보모터가 90도 회전하며 뚜껑이 열립니다.
  3. 3초 후 자동으로 닫히는지 확인합니다.
  4. LED가 열릴 때 켜지고, 닫힐 때 꺼지는지 확인합니다.

💡 팁: OPEN_DIST 값을 조절하면 감지 거리를 변경할 수 있습니다. 실제 쓰레기통에 장착할 때는 종이컵 등으로 외형을 만들어보세요.

📝

5단계심화 — LCD에 사용 횟수 표시

LCD를 추가하면 뚜껑이 열린 횟수를 카운트하여 디스플레이에 표시할 수 있습니다.

🎉

축하합니다!

"스마트 쓰레기통" 프로젝트를 완성했습니다!