반응형
이전에 테스트 하였던 C linktech의 PIR 센서를 arduino로 코딩하였습니다.
센서에 대한 내용은
인체감지 센서(PIR-RS232 씨링크테크)
위 링크를 참고하세요.
결선도입니다.
실제 결선모습입니다.
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 | #include <SoftwareSerial.h> SoftwareSerial pir=SoftwareSerial(8,9); byte start[]={0x10,0x36 ,0x01 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x34}; byte request[]={0x10 ,0x36 ,0x01 ,0x02 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x33}; void setup() { pir.begin(9600); Serial.begin(115200); pir.write((const char*)&start,16); } void loop() { delay(500); byte response[16]; int cnt=0; while(pir.available()){ response[cnt]=pir.read(); cnt++; } if(cnt==16){ if(response[4]==0x00){ Serial.println("pir detected!!"); }else if(response[3]==0x01){ Serial.println("pir not detected!!"); } } for(int i=0;i<cnt;i++){ Serial.print(response[i],HEX); if(i==15) Serial.println(""); else Serial.print(" "); } } | cs |
Line 1~2 : 이 센서가 UART를 통해 통신을 하기때문에 소프트웨어시리얼을 사용하였습니다.
소프트웨어 시리얼은 아래링크를 참고하세요.
Line 3 : 처음 한번 start를 보내 자동으로 센서값을 받도록 하기위한 프로토콜입니다.
Line 4 : 주기적으로 한번받기를 하려했으나 같은 값만 들어와 사용은 하지 않습니다.
Line 13 : 주기를 주어 데이터가 원만하게 들어오도록 합니다.
Line 16~19 : Serial로 데이터가 들어오면 response라는 바이트배열로 담습니다.
Line 20~26 : 16바이트(정상응답)가 들어오면 pir 감지인지 아닌지 구분합니다.
Line 21~22 : 감지
Line 23~24 : 비감지
Line 27~33 : 받은 데이터를 터미널로 보여줍니다.
터미널에 나타난 모습입니다.
테스트 하면서 한가지 의문점은 첫 데이터를 받을때는 0x10 0x38이 아닌 0x10 0x36이 들어옵니다.
그리고 뒤에서 두번째 0x83일때도 있고, 0x00일경우도 있습니다.
이건 랜덤하게 발생되네요 ;;;
반응형
'Study > Arduino' 카테고리의 다른 글
소리센서(Sound Sensor-seeed) (0) | 2018.05.15 |
---|---|
미세먼지 측정센서 PM2005 (0) | 2018.05.10 |
비접촉 온도센서(4-20mA 출력) Arudino에서 읽기 (2) | 2018.05.04 |
DFRobot Digital Vibration Sensor V2 (0) | 2018.05.03 |
Arduino 1-Wire DS18B20 (온도센서 ) (0) | 2018.04.04 |