교류/직류 등의 전원을 켜고 끄는 반도체 무접점 릴레이와 초음파 센서를 결합해보자.
▶ 이 가이드를 따라하면
- 디지털 핀의 HIGH/LOW를 제어하여 전류의 흐름을 켜고 끌 수 있다.
▶ 먼저 읽으면 좋은 글
- Arduino 일반 : http://bbangpan.tistory.com/1
- Relay 기초 : http://bbangpan.tistory.com/79
- 초음파 센서 : http://bbangpan.tistory.com/49
▶ 부품 설명 및 회로 구성
이전 회에서 다루었던 릴레이는 5V전원을 통해 큰 전원을 on/off할 수 있었다. 여기서는 또다른 유형의 Relay와 초음파 센서를 결합해서 간단하게 가까이 접근하면 켜지는 전등을 만들어보자.
여기서 사용되는 Relay는 Solid State Relay라고 하여 일명 무접점 반도체 릴레이라고 하는 고가의 릴레이이다. 기존 저렴이들과는 다르게 찌걱찌걱 하는 전자석 붙는 소리(?)가 전혀 없이 매우 적은 전압만으로도 on/off가 가능하다.
다만 하는 일은 동일하게 큰 전류를 제어한다(여기서는 교류 제어)
<Solid State Relay>
기존 초음파 센서 강좌를 이용해서 20cm정도로 접근하면 전등을 켜지게 구성해보자. 전등과의 연결부위는 기존 릴레이 강좌 (http://bbangpan.tistory.com/79) 를 참고해서 구성해보자.
적당한 소켓을 구해서 연결하면, 아래와 같이 구성할 수 있다.
< Arduino + 초음파센서 + Relay + LED전구에 소켓/전원플러그를 달았다>
< 배선은 초음파 센서 Sig -> D8(GND/5V는 맞게연결), Relay는 GND->GND, 5V->D7에 연결>
껐다 켜는 모습을 아예 처음부터 보자. 20cm이하로 접근하는 것이 있으면 전등을 켜지게 구성했다. 혹시나 해서 릴레이에 계속 꺼질 수 있도록 기계식 스위치도 달았다.
<초음파 센서 앞에 손을 가져가면 불이 켜진다>
▶ 소스 코드 입력 및 구동
소스는 간단해서 릴레이에 조건에 따라5V 전압(HIGH)를 가해주는 것을 기존 초음파 센서에 융합했다.
https://github.com/bbangpan/bbangpan.com/blob/master/neibc_relay_sonic/neibc_relay_sonic.ino
/* Redistributed by www.bbangpan.com
Program Description: relay & ultra sonic sensor
DataPin : Ultra Sonic Sig -> D8, Relay GND -> GND, Relay 5V -> D7
Tested on : Arduino 1.7.4, Arduino UNO R3
Copyright (c) 2016 www.bbangpan.com. All rights reserved.
This program can be used for any non-commercial purpose freely.
*/
const int pingPin = 8;
const int echoPin = 8;
const int relayPin = 7;
void setup() {
// initialize serial communication:
Serial.begin(9600);
pinMode(relayPin, OUTPUT);
}
void loop() {
// establish variables for duration of the ping,
// and the distance result in inches and centimeters:
long duration, inches, cm;
// The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
// The same pin is used to read the signal from the PING))): a HIGH
// pulse whose duration is the time (in microseconds) from the sending
// of the ping to the reception of its echo off of an object.
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
// convert the time into a distance
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
if( cm < 20) {
digitalWrite(relayPin, HIGH); // HIGH인가
} else {
digitalWrite(relayPin, LOW); // HIGH인가
}
delay(100);
}
long microsecondsToInches(long microseconds) {
// According to Parallax's datasheet for the PING))), there are
// 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
// second). This gives the distance travelled by the ping, outbound
// and return, so we divide by 2 to get the distance of the obstacle.
// See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds) {
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled.
return microseconds / 29 / 2;
}
구동 후 초음파 센서에 손을 가져다 대면, 접근 거리를 알 수 있다..
<20cm이하면 불이 들어오도록 했다>
▶ 구매 가이드
Solid State Relay : http://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20160418075736&SearchText=solid+state+relay ($ 2)
Ultra Sonic Sensor : http://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20160418075839&SearchText=ultrasonic+module ($ 2)
LED Bulb : http://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20160418075900&SearchText=LED+bulb
Bulb socket : http://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20160418075940&SearchText=bulb+socket
▶ 강의 키워드
Solid State Relay, 반도체 무접점 릴레이, 솔리드 스테이트 릴레이, 초음파 센서, Arduino, 아두이노, 전등 켜기
'아두이노 응용' 카테고리의 다른 글
[아두이노] cds sensor와 servo motor로 t-rex game 스페이스키 자동으로 누르게하기 (0) | 2020.04.09 |
---|---|
[아두이노/Blynk] 스마트폰 앱으로 인터넷을 통해 Arduino를 제어해보자 (0) | 2019.08.07 |
[아두이노/초음파센서/숫자LED] Arduino 초음파 센서와 TM1637 4 digit 거리 표시기 (0) | 2019.08.04 |
[아두이노/WiFi/서보모터] Arduino WeMos D1 WiFi (ESP8266) 호환 보드와 휴대폰 브라우저를 통한 서보 모터 구동 (6) | 2019.08.04 |
[응용/전자기장검출] 전자기장 감지기(EMF detector)를 만들어보자 (2) | 2015.11.11 |
[프로젝트] HM-10모듈과 수은전지+배터리 홀더로 만드는 초소형 iBeacon (10) | 2015.07.17 |
[프로젝트] 전자시계 / 실시간 시계 모듈(RTC breakout/DS1307 or DS3231)과 4 digits 디스플레이로 구현하자 (0) | 2015.04.17 |
[프로젝트] 간단한 단거리 무선 통신(433/315Mhz)으로 구현하는 실내외 원격 온습도계 디스플레이 프로젝트 (2) | 2015.02.09 |