의뢰는 instructables.tistory.com/64 로 와주세요.
HC-SR-501
PIR 센서
선풍기의 회전각도 30˚, 60˚, 90˚, 135˚, 180˚, 360˚ 는 회전 폭을 의미한다.
즉, Motor의 정회전, 역회전의 Delay에 따라 결정된다.
특정각도에서 멈추기 위해선 Servo 혹은 Stepping Motor가 필요하다.
http://www.orientalmotor.com/technology/articles/step-motor-basics.html
1 Phase 혹은 2 Phase를 이용하여 특정 각도에서 멈추도록 할 수 있다.
http://iot-projects.com/index.php?id=remote-stepper-motor-control-with-raspberry-pi
라즈베리파이로 Stepping Motor control
서보모터로 제어하게 되면 좀더 간결해진다.
ㅇㄱㅂ (ㄱㅌㄷ)
사람이 가까이가면 선풍기가 켜지는 컨셉
사람이 아까이 갔을때를 이벤트로 설정한다면 두가지 방법으로 구현 가능하다.
①인체감지센서
②거리센서 + 비접촉 온도센서
사람은 사물과 달리 체온을 갖고있으므로, 거리센서로 가까이 있는지 감지한 상태에서 비접촉 온도센서로 온도가 감지된 두가지 경우 모두 충족해야 한다.
코드상에서 OR 논리를 통해서도 구현 가능하며,
인체감지센서 하나만 사용해도 무방하다.
출력이 릴레이의 코일과 연결되며
릴레이의 출력단자를 통해서 220V로 동작하는 선풍기를 제어할 수 있다.
부품리스트
인체감지센서 (▶LINK)
거리센서 (▶LINK) 7200원
비접촉 온도센서 (▶LINK) 35000원
Arduino UNO (▶LINK) 7500원
Relay(▶LINK) 8100원
Terminal (▶LINK) 300원
=58100원
비접촉 온도센서 원리
http://blog.daum.net/giltronb/3031146
http://icbank.com/data/ICBShop/board/DTS-150_Spec_V1_1.pdf
▲작은부품을 사용할 경우
http://diwellshop.com/product/dts-m300/86/
위 사이트에서 Arduino 셈플코드 참고할것..... 아래는 제품 이미지
위 PPT보고 연결하면 된다. (1K8저항과 3K3 저항은 필요없다.)
LED를 8번핀에 연결하여 눈으로 확인할 수 있다.
비접촉이긴하지만 약 1~2cm 이격으로 가까워야만 제대로 감지된다.
코드를 이해하기전에 SPI통신의 원리를 알아야한다.
Arduino:SPI Master Controller // Sensor:SPI Slave
Vcc와 GND가 연결된 상태에서 SCK신호가 들어갔을때 정보를 읽어들일 수 있다.
...
(중략)
Serial.begin(9600); //센서가 Arduino와 통신하므로 9600baudrate로 세팅했다.
/* Setting CS & SPI */
digitalWrite(chipSelectPin , HIGH); // CS High Level---여기서 CS는 SPI통신의 Slave
SPI.setDataMode(SPI_MODE3); // Setting SPI Mode
SPI.setClockDivider(SPI_CLOCK_DIV16); // 16MHz/16 = 1MHz
SPI.setBitOrder(MSBFIRST); // MSB First
SPI.begin(); // Initialize SPI
delay(500); // wating for DTS setup time
}
int SEND_COMMAND(unsigned char cCMD)
{
digitalWrite(chipSelectPin , LOW); // CS Low Level
delayMicroseconds(10); // delay(10us)
SPI.transfer(cCMD); // Send 1st Byte
delay(10); // delay(10ms)
T_low_byte = SPI.transfer(0x22); // Send 2nd Byte
delay(10); //delay(10ms)
T_high_byte = SPI.transfer(0x22); // Send 3rd Byte
digitalWrite(chipSelectPin , HIGH); // CS High Level
return (T_high_byte<<8 | T_low_byte); // 상위, 하위 바이트 연산
}
ㅇㅈㅎ(ㅊㅂㄷ)
동작원리
세개의 거리센서 모두 충족시키지 않을경우 0도에 Servo가 멈춰있고, Fan역시 OFF상태이다.
세개중 하나의 센서를 충족시키면 거기에 맞는 각도로 Servo가 이동후 Fan이 동작한다.
부품리스트
Arduino : 7500원
USB Cable : 500원
5V Fan (1800 + 교통비) = 5000원
HS-311 : 12000원 (▶LINK)
거리센서 (2Y0A21) : 8200*2개 = 16400원 (▶LINK)
50x80 만능기판 1700*3 = 5100원 (▶LINK)
페놀 만능기판 550원 (▶LINK)