1. 시작
HC-SR501 을 가지고 움직임이 있을 시 반응하는 센서를 가지고 놀아 봤더랬습니다.
* Hardware | HC-SR501 PIR motion sensor
- http://chocoball.tistory.com/entry/Hardware-HCSR501-PIR-motion-sensor
그러던 중, Photoresistor 단자를 발견합니다.
아래는 HC-SR501 회로도 입니다.
제조사의 사이트에 올라와 있는 회로도와 실제 기판을 봐도 이미 R3 (1MΩ) 이 실장되어 있어서,
제대로 된 값의 photoresistor 만 달면 기능하게 되어 있네요.
좀더 찾아 보니, 아예 세트로 파는 업자도 있습니다.
요는 photoresistor 를 이용하여, 항상 모션 탐지를 하는 것이 아니라,
어두워졌을 때에만 작동하도록 하는 것 입니다.
흠흠, 그럼 photoresistor 를 구입해야 겠죠?
2. Photoresistor 가지고 놀기
HC-SR501 에 photoresistor 를 붙여서 구동하기 위해, 우선 photoresistor 를 가지고 놀아봅니다.
* Hardware | Arduino 로 Photoresister 가지고 놀기 - 1
- http://chocoball.tistory.com/entry/Hardware-Arduino-Photoresister-1
이때 구입한 제품이 GL5528.
간단한 동작을 확인 했으니, 본격적으로 HC-SR501 에 붙여 봅니다.
3. HC-SR501 에 납땜하기
Photoresistor 는 RL 이라는 자리에 납땜하면 됩니다.
+/- 전극 구분이 없어서 그냥 두 다리 고정하고 납땜하면 됩니다.
높이 잘 계산해서 올려주고요.
장착되면 위와 같은 모습이 됩니다.
다리를 옆으로 벌려서 흔들리지 않게 하고 납땜합니다.
짜잔 !!!
4. Layout 및 Sketch
구성은 예전 글에서 사용했던 구성과 sketch 와 완벽히 동일합니다.
HC-SR501 PIR sensor | Arduino Nano ---------------------------------- S | D8 + | 5V - | GND ---------------------------------- Piezo busser | Arduino Nano ---------------------------------- S | D11 + | 5V - | GND ----------------------------------
회로 구성입니다.
Sketch 입니다.
/******************************************************* Uses a PIR sensor to detect movement, sounds a buzzer *******************************************************/ //the time we give the sensor to calibrate (10-60 secs according to the datasheet) int calibrationTime = 30; int ledPin = 13; // choose the pin for the LED int inputPin = 8; // choose the input pin (for PIR sensor) int pirState = LOW; // we start, assuming no motion detected int val = 0; // variable for reading the pin status int pinSpeaker = 11; //Set up a speaker on a PWM pin (digital 9, 10, or 11) void setup() { pinMode(ledPin, OUTPUT); // declare LED as output pinMode(inputPin, INPUT); // declare sensor as input pinMode(pinSpeaker, OUTPUT); //give the sensor some time to calibrate Serial.begin(9600); Serial.print("Calibrating sensor "); for(int i = 0; i < calibrationTime; i++) { Serial.print("."); delay(1000); } Serial.println(" Done!"); Serial.println("SENSOR is ACTIVE now"); delay(50); } void loop() { val = digitalRead(inputPin); // read input value if (val == HIGH) { // check if the input is HIGH blinky(); // blink LED when motion haas been detected // digitalWrite(ledPin, HIGH); // turn LED ON playTone(300, 160); delay(150); if (pirState == LOW) { // we have just turned on Serial.println("Motion detected!"); // We only want to print on the output change, not state pirState = HIGH; } } else { digitalWrite(ledPin, LOW); // turn LED OFF playTone(0, 0); delay(300); if (pirState == HIGH){ // we have just turned off Serial.println("Motion ended!"); // We only want to print on the output change, not state pirState = LOW; } } } void playTone(long duration, int freq) { // duration in mSecs, frequency in hertz duration *= 1000; int period = (1.0 / freq) * 1000000; long elapsed_time = 0; while (elapsed_time < duration) { digitalWrite(pinSpeaker,HIGH); delayMicroseconds(period / 2); digitalWrite(pinSpeaker, LOW); delayMicroseconds(period / 2); elapsed_time += (period); } } void blinky() { for(int i=0; i<3; i++) { digitalWrite(13, HIGH); delay(200); digitalWrite(13, LOW); delay(200); } }
5. 흠...
손으로 photoresistor 를 가리면 동작은 하는데, 기민하게 동작하지 않았습니다.
원래 회로는 short 된 회로인데,
photoresistor 를 연결하면 광원이 있는 곳에서 close 상태로 만들어 주어 모션 감지를 하지 않게 (disable) 됩니다.
주위가 어두워 지면 photoresistor 의 dark resistance 가 올라가
원래 회로가 가지고 있던 short 상태를 만들어 주는 것인데,
어정쩡하게 저항이 발생하면 제대로 short 된 상태로 넘어가지 못하는 것이었습니다.
뭔가 Photoresistor 가 망가졌나? 생각하고 다른 GL5528 센서로 교환하다, 옆에 있던 캐패시터 옆구리를 지져버렸습니다.
아놔...
다행히 기존에 구입해 놨던 capacitor 가 있어서 교체합니다.
* Hardware | AliExpress 에서 condenser 를 구입해 보자
- http://chocoball.tistory.com/entry/Hardware-AliExpress-condenser-buy
기존의 capacitor 보다는 굵은 소자라 뭔가 신뢰가 가네요.
6. 다른 Photoresistor
Capacitor 를 교환했고, photoresistor 도 교환했음에도 불구하고 여전히 기민하게 동작하지 않습니다.
Photoresistor 를 가리고 한참 기다리고 있어도 운 좋으면 detecting 하고, 그렇지 않으면 아무 반응이 오지 않았습니다.
결국 구입한 photoresistor 의 수치적인 한계라고 확신하고, 다른 photoresistor 를 구입해서 테스트 해보기로 합니다.
처음 구입할때는 보이지 않았던, 5가지 묶음 세트가 있네요.
바로 구입합니다. (아니 왜 저 세트로 처음부터 안파냐고...)
* Photoresistor Kit 5Kindsx10pcs 5506 5516 5528 5537 5539 Light Dependent Resistor LDR Pack Photoresistor Package for Arduino
각 소자 번호에 따라 어떤 값을 보이는지 테스트 해봤습니다.
* Hardware | Arduino 로 Photoresister 가지고 놀기 - 2
- http://chocoball.tistory.com/entry/Hardware-Arduino-Photoresister-2
수치를 그래프화 해본 결과, 처음 구입한 GL5528 (녹색) 은 가장 어둡게 해도
dark resistance 가 조금 높게 나옵니다. (스펙상으로는 1MΩ 이긴 한데...)
확인 결과 새로 구입한 세트에 있는 5539 (하늘색) 이 더 높은 dark resistance 를 보여 줬습니다.
어둡게 하면 거의 short 상태를 만들어 줄 수 있을 것 같습니다.
수치적으로도 5MΩ 정도면 short 상황을 만들 수 있겠네요.
7. 구동 확인
기존 GL5528을 제거하고 새로 구입한 5539 를 납땜해 주었습니다.
이제 대망의 마지막 확인 입니다.
5539 photoresistor 는 센서의 구불구불이 더 촘촘하네요.
어둡게 하면 의도대로 잘 동작합니다.
Photoresistor 에 샤프심 캡을 씌워, 어두운 상황을 만들어 동작 시키니 예상대로 반응합니다.
FIN
작년 7월에 처음 photoresistor 를 구매하여 실패의 실패를 거듭하여 겨우 확인 했습니다.
HC-SR501 센서는 이제 서랍으로 들어갈 수 있게 되었습니다.
Photoresistor 는 종류와 가용 범위가 많아서 잘 선택하고 사용해야겠습니다.
이제야 마음 편하게 다른 센서들 공부를 할 수 있겠네요.
'Hardware' 카테고리의 다른 글
Hardware | RadarBox24 신청부터 설치까지 (0) | 2018.03.07 |
---|---|
Hardware | Arduino 의 AREF pin 에 대해 알아보자 (0) | 2018.03.04 |
Hardware | Arduino 로 Photoresister 가지고 놀기 - 2 (0) | 2018.02.28 |
Hardware | Digitial Compass - HMC5883L 사용기 - 1 (0) | 2018.02.19 |
Hardware | MAX4466 마이크 앰프 breakout board 사용해 보기 (0) | 2018.02.11 |