안녕하세요. 애드라이프 입니다.
이번에 해볼 DIY작품은 인체감지센서전등 입니다.
언젠가 아내가 문득 잠에서 깨서 밤에 화장실을 가려는데
방에서 화장실까지 어떤 조명장치도 없어서 매우 어두워서
무섭기도 하고 다칠 것같다고 하더군요.
그래서 사람이 지나갈때 켜지는 현관의 등을 보고
어디든 새워두고 쓸 수있는 등을 만들면 어떨까?
라는 생각을 했습니다.
이제는 그 생각을 실천을 해야 할 때인것이죠.
우선 이번 물건의 컨셉은 어두울때만 작동하고
사람을 인식해야 한다는것이 포인트 입니다.
된다면 밝기 조절도 기능도 넣을 생각입니다.
준비물을 살펴보도록 하겠습니다.
1. 네오픽셀링 12LED RGBW 타입 5V구동
어두울때 주변 사물이 인지가 될만큼만 밝기면되기 때문에
조명의 밝기는 어두워도 상관없지만 TEST하면서 최적의 밝기를 찾아보세요.
조명이 위치하는 곳의 주변 밝기에 따라 조명의 밝기도 결정될테니까요.
2. 인체감지센서(HC-SR501)
사람이 지나가는 경우에 작동해야해야 하기때문에
인체감지 센서를 선택했습니다.
원리는 현관에 켜지는 등을 생각하시면 쉽습니다.
3. CDS 조도센서와 10Kohm저항
주변이 어두운 경우에만 작동해야 하기때문에
주변 밝기를 체크할 센서가 필요합니다.
10Kohm저항은 제가 임의로 선정한 것입니다.
자신의 기호에 맞게 선정하여 쓰면 좋습니다.
선정하는 방법을 모른다면 그냥 따라하시면 됩니다.
4. 아두이노 Micro pro
어디든 설치 할 수 있게 만들기 위해서는 휴대성이 뛰어나야 합니다.
아두이노 중에서도 작은 보드에 속하는 아두이노 마이크로 프로를
사용하여 휴대성을 높일 예정입니다.
5. 5V 레귤레이터 DC-DC 스텝다운 모듈(AMS1117)
휴대성을 위해 9V사각전지를 사용할 예정이기때문에
9V를 아두이노 구동전압인 5V로 바꿔줄 DC-DC
스텝다운 모듈을 선택했습니다.
6. 스위치 및 LED
색을 바꾸거나 TEST할 경우 LED불빛으로 확인할 사항이있을 경우
위 준비물을 활용하여 회로도를 작성해 보았습니다.▼
회로도 선정리하기가 좀 힘들더군요. 복잡해서 좀 보기 힘드실 것 같아서
조금 설명을 하겠습니다. 설명을 보면서 회로도를 같이 봐주세요.
9V 베터리의 전원은 AMS1117 DC-DC StepDown모듈을 거처
아두이노 구동전압인 5V 출력을 해줍니다.
그 출력을 아두이노 Micro pro의
RAW핀에 +5V를 GND핀에 AMS1117 DC-DC StepDown모듈의
GND를 각각 연결해주면 전원 연결은 완료입니다.
나머지 센서들의 +5V전원부는 아두이노의 VCC핀에서 뽑아쓰시면 됩니다.
현재 회로도에는 인체감지센서는 D2번핀에
네오픽셀 조명의 DI(Data IN)은 D6번핀에
CDS와 10Kohm저항의 사이부분은 A0핀에
스위치는 D4번핀에
LED는 핀에 연결되어있습니다.
회로에서 이해가 안되는 부분이 있다면 질문은 언제든 환영입니다.
실제로 연결된 모습은 이렇습니다.▼
위 부품들중 사용시 참고하면 좋을 만한 포스팅을 첨부해 놓겠습니다.▼
인체감지센서에 대해서는 우선 데이터 시트를 첨부하겠습니다.▼
데이터 시트 내부에 있는 사진을 일부 가져왔습니다.
핀 맵확인하고 배선 틀리지 않게 조심하시고
가변저항 두개는 왼쪽이 센서의 감도 및 거리조정용이고
오른쪽은 HIGH신호 유지신호 길이를 정해주는 타이머입니다.
왼쪽의 점퍼는 L타입은 반복해서 신호를 주는 타입
H타입은 감지가 되면 계속 신호가 유지되는 타입입니다.
저는 L타입으로 쓸 예정입니다.
이 정도만 알면 일반 센서와 쓰는 법은 거의 동일 하기때문에 설명은 여기까지 하겠습니다.
회로와 부품에 대한 설명을 끝냈으니 이제 프로그램에 대해 살펴보겠습니다.▼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | #include <Adafruit_NeoPixel.h> //네오픽셀 사용시 필요한 라이브러리 추가 #include <Wire.h> //I2C 사용시 필요한 라이브러리 추가 #define NEO_PIN 6 // 네오픽셀 연결 디지털 핀 번호 적기 #define NUM_LEDS 12 // 네오픽셀 소자 수, 1부터 시작. (3개 연결시, 3 작성) #define BRIGHTNESS 50 // 네오픽셀 밝기 설정 0(어두움) ~ 255(밝음) int PIR = 2; // PIR을 2로 설정합니다. int SW = 4; // SW 4로 설정합니다. int LED = 5; // LED을 5로 설정합니다. int Cds = A0; // Cds을 A0로 설정합니다. unsigned int BrightnessFlg=0; Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, NEO_PIN, NEO_GRBW + NEO_KHZ800); //RGBW 네오픽셀용 //Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, NEO_PIN, NEO_GRB + NEO_KHZ800); //RGB 네오픽셀용 void setup() { Serial.begin(9600); // 시리얼 통신을 사용하기 위해 보드레이트를 9600으로 설정합니다. pinMode(PIR, INPUT); // PIR를 입력핀으로 설정합니다. pinMode(SW, INPUT_PULLUP); // SW을 입력핀으로 설정합니다. pinMode(LED, OUTPUT); // PIR를 입력핀으로 설정합니다. strip.begin(); // 네오픽셀 제어 시작 (실제로는 간순히 네오픽셀의 값을 젆부0으로 초기화) strip.show(); // 네오픽셀 점등(명령을 네오픽셀로 전달) } void loop() { int cdsValue = analogRead(Cds); Serial.print("cds = "); Serial.println(cdsValue); if(digitalRead(SW) == LOW){ //색변경용 SW가 눌렸을 경우 동작 정의 BrightnessFlg++; //ColorFlg를 사용하여 해당 색으로 변경 0 -> White , 1 -> Yellow Serial.println("스위치 눌림"); if(BrightnessFlg==2)BrightnessFlg=0; Serial.println(BrightnessFlg); delay(1000); } if(BrightnessFlg==0){ strip.setBrightness(100); // <- RGBW타입만 사용 } if(BrightnessFlg==1){ strip.setBrightness(50); // <- RGBW타입만 사용 } if(cdsValue>500){ if (digitalRead(PIR) == HIGH) { // PIR핀의 디지털 입력이 HIGH라면 Serial.println("SENSOR ON"); // "SENSOR ON"을 시리얼 통신으로 출력하고 줄을 바꿉니다. colorWipe(strip.Color(0,0,0,255),0); // White digitalWrite(LED,HIGH); delay(10000); //사람이 인식된 후 10초간 켜짐유지 } else { // PIR핀의 디지털 입력이 HIGH가 아니라면 Serial.println("SENSOR OFF"); // 줄을 바꿉니다. colorWipe(strip.Color(0,0,0,0),0); // White digitalWrite(LED,LOW); } } delay(100); // 0.1초만큼 지연합니다. } void colorWipe(uint32_t c, uint8_t wait) { //네오픽셀의 LED를 순차적으로 제어하는 함수 for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); delay(wait); } } | cs |
프로그램의 전체적인 흐름인 주석을 참고해주세요.(옆으로 넘기면서 보실 수 있습니다.)
마지막으로 동영상으로 동작을 확인 하면서 포스팅을 끝내겠습니다.▼
지금까지 아두이노(Arduino) 어두운 통로를 밝혀줄 인체감지센서등 만들기 1편에 대한 포스팅이였습니다.
계속해서 도움되는 포스팅으로 찾아뵙겠습니다.
by 애드라이프
'DIY 프로젝트' 카테고리의 다른 글
간단하게 어디든 두고 쓸 수 있는 푸시형 LED등 만들기 (0) | 2019.01.20 |
---|---|
아두이노(Arduino) 어두운 통로를 밝혀줄 인체감지센서등 만들기 2편 (0) | 2019.01.11 |
아두이노(Arduino) WIFI모듈을 이용한 DIY HomeIoT(Blynk) - 캔들등 제어 2편 (0) | 2019.01.04 |
아두이노(Arduino) WIFI모듈을 이용한 DIY HomeIoT(Blynk) - 캔들등 제어 (0) | 2019.01.02 |
아두이노(Arduino) DIY 프로젝트 화장대에 밝기 조정 가능한 조명 설치하기 3편 (0) | 2018.12.31 |