출처: 엘라인 에듀(http://www.l-line.co.kr/)
아두이노 + 초음파세서 + 서보모터 를 활용하여 스마트 휴지통을 만들어봅시다.
01. 스마트 휴지통 제작 영상 함께보기
02. 아두이노 회로도 연결하기
서보모터 연결하기 (서보모터의 3가지 단자를 아래와 같이 연결해봅시다. 위의 회로도 그림을 참고하세요)
갈색(Gnd) - Gnd
빨강(VCC) - 5V
주황(Signal) - 9번핀
초음파센서 연결하기 (초음파센서의 4가지 단자를 아래와 같이 연결해봅시다. 위의 회로도 그림을 참고하세요.)
VCC - 3.3 V
Trig - 2번핀
Echo - 3번핀
Gnd - Gnd
03. 아두이노 스마트 휴지통 스케치하기
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <Servo.h>
Servo myservo;
int pos = 10;
int trigPin = 2;
int echoPin = 3;
float duration;
float distance = 100;
void setup() {
myservo.attach(9);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delay(2);
digitalWrite(trigPin, HIGH);
delay(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = ((float)(340 * duration) / 10000) / 2;
if (distance < 20){
for (pos = 10; pos < 120; pos += 2)
{Serial.print(distance);
Serial.println("cm");
myservo.write(pos);
delay(10);
}
delay(5000);
for (pos = 120; pos >= 10; pos -= 5){
myservo.write(pos);
delay(10);
}
}
delay(50);
}
01: Servo 관련 함수 사용 위해 Servo.h 헤더 포함
02: 서보제어를 위해 Servo 클래스인 myservo 객체를 생성합니다.
03: 모터의 처음 위치를 10도로 초기값 설정
04: 초음파센서 Trig를 2번 핀으로 설정
05: 초음파센서 Echo를 3번 핀으로 설정
06: duration 변수 사용
07: distance(거리) 값을 임의의 초기값 100cm로 설정
08: setup 함수를 정의
09: 서보모터 신호핀을 9번핀으로 설정
10: 초음파센서의 Trig핀을 출력모드로 설정
11: 초음파센서의 Echo핀을 입력모드로 설정
12:시리얼통신을 9600속도로 시작
13: loop 함수를 정의
14: Trig핀 신호 없음으로 초기화
15: 2밀리초 대기
16: Trig핀 신호 발생
17: 10밀리초 대기
18: Trig핀 신호 중단
19: 측정한값으로 물체와 센서 사이의 거리를 계산하여 변수 duration에 저장(거리=속력x시간)
20:distance에 실제 우리가 사용하는 cm단위 거리값 저장
21:만약 거리가 20cm보다 작다면(20cm 이내로 들어온다면)
22~25:서보모터를 10도에서 120도까지 2도씩 올리기(문 열기)
27: 5초 대기
28:서보모터를 120도에서 10도까지 5도씩 내리기(문 닫기)
04. 아두이노 스마트 휴지통 스케치 업로드하기
1) 아두이노 메뉴의 툴-보드 선택, 포트 선택을 반드시 확인하고
2) 업로드 버튼(화살표버튼)을 눌러서 아두이노 보드에 업로드 합니다.
05. 아두이노 스마트 휴지통 몸체 조립하기(회로 부착 포함)
05. 성능 테스트 및 디자인하기