no image
프로세싱 설치 (Install Processing)
1. 프로세싱 프로세싱 = Opensource 기반 프로그램. 쉽게 미디어 시각화 프로그램 개발 환경을 제공. JAVA 기반 (자바보다 더 간결) 외부 인터페이스 지원 가능, 아두이노 센서 데이터 serial로 전송받아 시각화 표현 가능. 2. 프로세싱 설치 Windows 기준. https://processing.org/ Welcome to Processing! Processing is a flexible software sketchbook and a language for learning how to code. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within tech..
2022.08.30
no image
TCS3200 컬러 감지 센서 2
프로세싱 설치 필요 2022.08.30 - [Arduino] - 프로세싱 설치 (Install Processing) 스케치 총 2개 필요 = 아두이노 동작 스케치 + PC 동작 프로세싱 IDE 스케치 아두이노 동작 스케치 = 영점 조정 값설정, 주기적 색 감지, RGB 갑스올 바꾸고 시리얼 통신 통해 PC 전달 PC 동작 프로세싱 IDE 스케치 = 전달받은 데이터에서 3개 정수 값 분리해 실행 창 배경색으로 설정 아두이노 스케치 /* TCS230 Color Sensing 색 감지 & PC 전달 & Processing 스케치 배경색 예제 Calibrate 스케치로 얻어낸 영점 조정 데이터 사용 = 먼저 Calibrate 스케치 실행 */ #include #include // 연결된 핀 번호들: S0_OUT..
2022.08.29
no image
TCS3200 컬러 감지 센서 1
TCS3200 컬러 감지 센서 : RFG 감도 주파수 출력 센서 TCS230 업그레이드 버전, TCS3200 칩 탑재. S2, S3 = High / Low 로 포토다이오드 R, G, B 선택 → S0, S1 = 최대 출력 주파수 선택, 색상 판별. 이 과정 * 3번 = R, G, B 각 값을 읽은 후 조합 = 칼라값 감지. 메인칩 : TCS3200 전원 공급 : 3~5V 출력주파수 : 12KHz, 120KHz, 600KHz 선택 조명 : 화이트 LED 인터페이스 : TTL 마이컴직결 또는 주파수 카운터 감도최적거리 : 10mm 회로 센서 모드 선택 S0, S1 핀 = HIGH 공급 → 제일 높은 해상도 감지 모드 (=굳이 아두이노와 연결할 필요 없음) 전원 공급 2군데 (한 곳만 공급해도 동작) +5V ..
2022.08.29
no image
로터리형 엔코더 모듈 (Encoder Sensor)
로터리형 엔코더 모듈 : 전기모터, 엔진 회전 각도 / 속도 측정 시 사용 노브를 수직으로 눌러 출력 값 변경 가능 축이 일정량 회전 시 펄스 발생, 펄스 수 세어 축 각도 측정 사용 예시) 마우스 휠, 스피커 볼륨, 전자 피아노 설정 조절 버튼, 자동차 노브 축 회전 = 핀 A, B가 공통 핀과 접촉 = 2개 디지털 신호 출력 신호 펄스 계산 = 두 출력 中 1개 만 사용 but 회전 방향 결정 위해 2개 고려 좌측 시계방향 초(동시)파 우측 반시계방향 파(동시)초 핀 구성 : CLK / DT / SW / VCC / GND 특징 : 회전부를 회전시켜 전기신호 발생, 360도 무한 회전 실습 예제 결선 회로도 GND = GND VCC = 5V SW = D4 DT = D3 CLK = D2 int LED_T..
2022.08.29
no image
피에조 부저
피에조 부저 = 2개 전극 단자 (극성) 커버 윗면 (+) or 옆 조그만 홈 파져있는 쪽 단자 = +전극 동작전압 : 3.5~5.5V 최대전류 : 30mA / 5VDC 공명 주파수 : 85DB @ 10CM 동작 온도 : -20~70 능동부저 (전원 공급 시 소리) & 수동부저 다리 길이 구분 = 다르면 능동 / 같다면 수동 능동부저 = 단일음 (경보음) 수동부저 = 멜로디 주파수 활용, 음계 출력 코드 차이 음계 적용 S = 13 + = 5V - = GND int P_BUZ = 13; void setup(){ pinMode(P_BUZ, OUTPUT); Serial.begin(9600); } void loop(){ tone(P_BUZ, 131); //도 delay(300); tone(P_BUZ, 147)..
2022.08.19
no image
리드 스위치 모듈 KY-025 (Dry Reed Switch Sensor)
리드 스위치 센서 = 자기장 검출. 자기장 유무 자기장 접근 = 유리튜브 내 물질 붙어 회로 닫힘 보드상 포텐셔미터= 자기장 검출 threshold값 설정 동작 원리 유리관 안, 양 극 리드 = 자석 존재 → 리드 끌려와 스위치 닫힘 = 자석 감지 핀 = A0(아날로그 출력핀), GND, +, D0(디지털 출력핀), 5V 동작 원하는 기능 따라 A0, D0 하나만 연결 가능 실행 DO = 8 + = 5V GND = GND int digitalPin = 8; //int aValue = 0; int dValue = 0; void setup () { pinMode (digitalPin, INPUT); Serial.begin (9600); } void loop () { //aValue = analogRead (..
2022.08.19
no image
적외선 PIR센서 (인체 감지 모션 센서)
근적외선 PIR센서 = 수동 적외선 센서, 모션 감지. 감지 각도 범위 안에 적외선 변화 = High(1) 정보 : ■ 사람 몸에서 방사되는 적외선을 센싱, 움직임 유무 판단. ■ 감지 범위: 110도 ■ 덮개 = 편광필터 ■ 센서 감도조절, Delay 시간조절 가변저항 ■ 동작 전압: 5~20V ■ 출력 전압: 3.3V ■ 핀 간격: 2.54mm 원리 : 인체 약 9 ㎛ ~ 11㎛ 적외선 방출 → 집광렌즈 Fresnel Lens → 센서 표면부 Window 적외선 신호 = 전압 출력 → 내장 증폭기 → 조명 On/Off 1) F-Lens(Fresnel Lens) 인체 적외선 통과 & Window에 적외선 모음​ 감지거리 확대 & 감도 극대화 & 센서 보호 2) Window 표면부 직사각형 작은 Wind..
2022.08.19

1. 프로세싱
프로세싱 = Opensource 기반 프로그램.

쉽게 미디어 시각화 프로그램 개발 환경을 제공.

JAVA 기반 (자바보다 더 간결)
외부 인터페이스 지원 가능, 아두이노 센서 데이터  serial로 전송받아 시각화 표현 가능.

 

2. 프로세싱 설치

Windows 기준. 
https://processing.org/

 

Welcome to Processing!

Processing is a flexible software sketchbook and a language for learning how to code. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology…

processing.org

 

다운로드 클릭

 

 

자신에게 맞는 것 다운로드

 

 

압축 풀고 processing 클릭

 

완료

'Arduino' 카테고리의 다른 글

TCS3200 컬러 감지 센서 2  (0) 2022.08.29
TCS3200 컬러 감지 센서 1  (0) 2022.08.29
로터리형 엔코더 모듈 (Encoder Sensor)  (0) 2022.08.29
피에조 부저  (0) 2022.08.19
리드 스위치 모듈 KY-025 (Dry Reed Switch Sensor)  (0) 2022.08.19

프로세싱 설치 필요

2022.08.30 - [Arduino] - 프로세싱 설치 (Install Processing)

스케치

총 2개 필요 = 아두이노 동작 스케치 +  PC 동작 프로세싱 IDE 스케치

아두이노 동작 스케치 = 영점 조정 값설정, 주기적 색 감지, RGB 갑스올 바꾸고 시리얼 통신 통해 PC 전달

PC 동작 프로세싱 IDE 스케치 = 전달받은 데이터에서 3개 정수 값 분리해 실행 창 배경색으로 설정


아두이노 스케치

/* 
  TCS230 Color Sensing 
   
  색 감지 & PC 전달 & Processing 스케치 배경색 예제 
   
  Calibrate 스케치로 얻어낸 영점 조정 데이터 사용 = 먼저 Calibrate 스케치 실행
   
*/ 

#include <MD_TCS230.h> 
#include <FreqCount.h> 
 
// 연결된 핀 번호들: S0_OUT <-> 8, S1_OUT <-> 9 
#define  S2_OUT  12 
#define  S3_OUT  11 
#define  LED     13  // HIGH = ENABLED 
 
// TCS230 객체인 CS 사용 핀 선언
MD_TCS230 CS(S2_OUT, S3_OUT, /* S0_OUT, S1_OUT, */ LED); 
 
// Calibrate 스케치 실행 얻은 영점 조정 데이터. 
// TCS3200 컬러 감지 센서 1 게시물에서 나온 본인 결과값 적어야함.

sensorData sdBlack = { 40, 50, 50 }; 
sensorData sdWhite = { 2640, 1370, 1980 }; 
 
// 전역 변수들: 
colorData rgb; 
 
void setup() 
{ 
  // 시리얼 포트 초기화 
  Serial.begin(115200); 
 
  // 컬러 센서 초기화 begin()
  // 영점 조정 위한 검정색, 흰색 값 설정 
  CS.begin(); 
  CS.setDarkCal(&sdBlack); 
  CS.setWhiteCal(&sdWhite); 
} 
 
void loop() 
{ 
  // 색 감지, RGB 값 읽기
  CS.read(); 
   
  // 읽을 데이터 준비 때까지 기다림
  while(!CS.available()) ; 
   
  // RGB 데이터 값 읽기
  CS.getRGB(&rgb); 
   
  // 쉼표 분리된 값 출력
  Serial.print(rgb.value[TCS230_RGB_R]); 
  Serial.print(","); 
  Serial.print(rgb.value[TCS230_RGB_G]); 
  Serial.print(","); 
  Serial.println(rgb.value[TCS230_RGB_B]); 
   
  delay(100); 
}

프로세싱 스케치

import processing.serial.*; 
 
int redValue = 0;        // Red 컬러 값 
int greenValue = 0;      // Green 컬러 값 
int blueValue = 0;       // Blue 컬러 값 
 
Serial myPort; 
 
void setup() { 
  size(200, 200); 
 
  // 사용 가능 모든 시리얼 포트 출력
  println(Serial.list()); 
 
  // PC 두번째 시리얼 포트가 아두이노와 연결된 시리얼 포트라 Serial.list()[2] 사용 
  // 다른 포트를 사용 시 그 포트 숫자 작성
  myPort = new Serial(this, Serial.list()[6], 115200); 
  // '\n' 받을 때까지 serialEvent() 발생 X 
  myPort.bufferUntil('\n'); 
} 
 
void draw() { 
  // 아두이노 RGB 데이터 배경색 설정
  background(redValue, greenValue, blueValue); 
} 
 
void serialEvent(Serial myPort) {  
  // 시리얼 포트 ~ 새 줄문자 = inString 문자열 받음 
  String inString = myPort.readStringUntil('\n'); 
 
  if (inString != null) { 
    // 문자열 있다면 앞 뒤 공백 문자 삭제
    inString = trim(inString); 
    // 쉼표 분리 integer 값 만듦 
    int[] colors = int(split(inString, ",")); 
    // 3개의 값 받으면 RGB 모든 값 받아 들인 것 
    // 각 redValue, greenValue, blueValue 넣고 콘솔 출력
     
    if (colors.length >=3) { 
      redValue = colors[0]; 
      greenValue = colors[1]; 
      blueValue = colors[2]; 
      System.out.println(String.format("RGB(%d, %d, %d)", redValue, greenValue, blueValue)); 
    } 
  } 
}

 

+) [ ] 안에 들어가야 할 숫자

 

 

아두이노와 연결된 포트 = COM6

COM6 = 위에서부터 2번째에 있음

[ ] 안에 2가 들어가면 됨

 


아두이노 업로드 → 프로세싱 업로드


결과

 

TCS3200 컬러 감지 센서

: RFG 감도 주파수 출력 센서
TCS230 업그레이드 버전, TCS3200 칩 탑재.

S2, S3 = High / Low 로 포토다이오드 R, G, B 선택 → S0, S1 = 최대 출력 주파수 선택, 색상 판별.

이 과정 * 3번 =  R, G, B 각 값을 읽은 후 조합 =  칼라값 감지.


  • 메인칩 : TCS3200
  • 전원 공급 : 3~5V
  • 출력주파수 : 12KHz, 120KHz, 600KHz 선택
  • 조명 : 화이트 LED
  • 인터페이스 : TTL 마이컴직결 또는 주파수 카운터
  • 감도최적거리 : 10mm

회로

센서 모드 선택 S0, S1 핀 = HIGH 공급 → 제일 높은 해상도 감지 모드 (=굳이 아두이노와 연결할 필요 없음)

전원 공급 2군데 (한 곳만 공급해도 동작)

+5V & GND 연결


S2 = D12

S3 = D11

LED = D13

OUT = D5 (출력 주파수를 측정 위해)

아두이노 우노 = D5번 핀 / 아두이노 메가 = 47번 핀

VCC = V5

GND = GND


라이브러리 설치

스케치 - 라이브러리 포함하기 - 라이브러리 관리 (Ctrl + Shift+ I)

 

MD_TCS230

 

 

FreqCount

 


스케치 (영점 조절)

/* 
  TCS230 sensor calibration (TCS230 센서 영점 조정) 
 
  영점 조정 진행, 영점 조정 위한 상수 값 = 시리얼 모니터 출력 
   
*/ 
#include <MD_TCS230.h> 
#include <FreqCount.h> 
 
#define BLACK_CAL 0 
#define WHITE_CAL 1 
 
// 연결된 핀 번호들: S0_OUT <-> 8, S1_OUT <-> 9
#define  S2_OUT  12 
#define  S3_OUT  11 
#define  LED     13  // HIGH = ENABLED 
 
MD_TCS230 CS(S2_OUT, S3_OUT, /* S0_OUT, S1_OUT, */ LED); 
 
sensorData sdBlack; 
sensorData sdWhite; 
 
void setup() 
{ 
  Serial.begin(9600); 
  Serial.print(F("\n[TCS230 영점 조정 예제]")); 
 
  // 컬러 센서 초기화 
  CS.begin(); 
} 
 
char getChar() 
// 시리얼 포트 문자 받아 대문자로 바꿔 리턴
{ 
  while (Serial.available() == 0); //0이 아니면 while문 벗어남
  return (toupper(Serial.read())); //toupper = 대문자 변경
} 
 
void clearInput() 
// 시리얼 포트 데이터 읽고 삭제 
{ 
  while (Serial.read() != -1); //-1이면 while문 벗어남
} 
 
void outputHeader(void) 
// 영점 조정 값+컬러 & RGB 감지 값 = 헤더 파일 사용, 시리얼 모니터 출력 
{ 
  Serial.print(F("\n\n// 영점 조정 데이터")); 
  Serial.print(F("\nsensorData sdBlack = { ")); 
  Serial.print(sdBlack.value[0]); Serial.print(F(", ")); 
  Serial.print(sdBlack.value[1]); Serial.print(F(", ")); 
  Serial.print(sdBlack.value[2]); Serial.print(F(" };")); 
 
  Serial.print(F("\nsensorData sdWhite = { ")); 
  Serial.print(sdWhite.value[0]); Serial.print(F(", ")); 
  Serial.print(sdWhite.value[1]); Serial.print(F(", ")); 
  Serial.print(sdWhite.value[2]); Serial.print(F(" };")); 
} 
 
uint8_t fsmReadValue(uint8_t state, uint8_t valType) 
//unitx_t = 문자가 아닌 숫자 담겠다, x=bit
{ 
  static uint8_t selChannel; 
  static uint8_t readCount; 
 
  switch (state) { 
    case 0: // Prompt for the user to start 
      Serial.print(F("\n\n값을 읽는 중: ")); 
      switch (valType) { 
        case BLACK_CAL: Serial.print(F("검정색 영점 조정")); break; 
        case WHITE_CAL: Serial.print(F("하얀색 영점 조정")); break; 
        default: Serial.print(F("??")); break; 
      } 
       
      clearInput(); 
 
      Serial.print(F("\n시작하려면 어떤 키든 눌러주세요 ...")); 
      getChar(); 
      clearInput(); 
       
      state++; 
      break; 
 
    case 1: // 센서 값 읽기 시작
      CS.read(); 
      state++; 
      break; 
 
    case 2: // 값 읽어 들일 때까지 기다림
      if (CS.available()) { 
        switch (valType) { 
          case BLACK_CAL: 
            CS.getRaw(&sdBlack); 
            CS.setDarkCal(&sdBlack); 
            break; 
 
          case WHITE_CAL: 
            CS.getRaw(&sdWhite); 
            CS.setWhiteCal(&sdWhite); 
            break; 
        } 
        state++; 
      } 
      break; 
 
    default: // reset fsm 
      state = 0; 
      break; 
  } 
  return (state); 
} 
 
void loop() 
{ 
  static uint8_t runState = 0; 
  static uint8_t readState = 0; 
 
  switch (runState) { 
    case 0: // 검정색 영점 조정 
      readState = fsmReadValue(readState, BLACK_CAL); 
      if (readState == 0) runState++; 
      break; 
 
    case 1: // 하얀색 영점 조정 
      readState = fsmReadValue(readState, WHITE_CAL); 
      if (readState == 0) runState++; 
      break; 
       
    case 2: // 헤더 파일 사용위해 시리얼 모니터 출력
      outputHeader(); 
      runState++; 
      break; 
 
    default:    // 잘못되었다면 다시 시작 
      runState = 0;  
  } 
}​

시리얼 모니터 결과값

 

검정색 대고 영점 조정

그 다음 흰색을 대고 영점 조정

 

 

https://m.blog.naver.com/msyang59/220161793024

 

색 감지 센서 TCS3200 모듈을 붙이다 - 1

아두이노 보드에 컬러(색)를 감지하여 감지한 컬러에 따라 각기 다른 주파수를 갖는 파형(波形)으로 변환하...

blog.naver.com

참고사이트

로터리형 엔코더 모듈

:  전기모터, 엔진 회전 각도 / 속도 측정 시 사용

노브를 수직으로 눌러 출력 값 변경 가능

축이 일정량 회전 시 펄스 발생, 펄스 수 세어 축 각도 측정

사용 예시) 마우스 휠, 스피커 볼륨, 전자 피아노 설정 조절 버튼, 자동차 노브

축 회전 = 핀 A, B가 공통 핀과 접촉 = 2개 디지털 신호 출력

신호 펄스 계산 = 두 출력 中 1개 만 사용 but 회전 방향 결정 위해 2개 고려

좌측 시계방향 (동시)파

우측 반시계방향 (동시)초 

 


핀 구성 : CLK / DT / SW / VCC / GND

특징 : 회전부를 회전시켜 전기신호 발생, 360도 무한 회전


실습 예제

결선 회로도

GND = GND

VCC = 5V

SW = D4

DT = D3

CLK = D2 

int LED_T = 10;     // 위 LED
int LED_B = 9;      // 아래 LED
 
int CLK = 2;        // CLK
int DT = 3;         // DT
int SW = 4;         // SW
 
static int oldCLK = LOW;  // CLK 값 저장 변수
static int oldDT = LOW;   // DT 값 저장 변수
 
int brightness = 143;    // LED 밝기 값(=중간(0~255))
int location = 0;        // 켜진 LED 위치 저장 변수 (0(=위) 초기화)
 
void setup() {
  pinMode(CLK, INPUT_PULLUP); // 내장 풀업 저항 사용하는 입력
  pinMode(DT, INPUT_PULLUP); 
  pinMode(SW, INPUT_PULLUP);  

  pinMode(LED_T, OUTPUT);
  pinMode(LED_B, OUTPUT);
}
 
void loop() {
  if (digitalRead(SW) == LOW) { // 노브 눌렸을 때
    changeLED();                // changeLED 함수 호출, LED 켜기
    location++;                 // LED 위치 바꾸기
    delay(300);                 // 중복 입력 방지
  }
  
  else {                              // 노브 돌렸을 때
    brightness += (getDirection()*5); // 밝기 조절
    if(brightness < 0)                // LED 밝기 최솟값(0)이하 떨어지는 것 방지
      brightness = 0;
    if(brightness > 255)              // LED 밝기 최댓값(255)이상 올라가는 것 방지
      brightness = 255;
    changeLED();                      // 변화한 밝기값 적용
  }
}
 
//방향 반환 함수
int getDirection() {
  int direct = 0;                 // 방향 초기화
  int newCLK = digitalRead(CLK);  // 현재 CLK 값 저장 변수
  int newDT = digitalRead(DT);    // 현재 DT 값 저장 변수
  
  if (newCLK != oldCLK) {         // CLK 값 변한 경우
    if (oldCLK == LOW) {          // LOW에서 HIGH 경우
      direct = oldDT * 2 - 1;     // direct 값 변경 
    }
  }
  
  oldCLK = newCLK;  // 갱신
  oldDT = newDT;
  
  return direct; // 시계방향 = -1, 반시계방향 = +1 반환
} 
 
// LED 위치 조절 함수
void changeLED() {
  if(location%2 == 1) {               // 변수를 2로 나눈 나머지 = 1
    analogWrite(LED_T, brightness);   // 위 LED만 ON
    analogWrite(LED_B, LOW);          
  }
  else {                              // 나머지 = 0
    analogWrite(LED_T, LOW);          
    analogWrite(LED_B, brightness);   // 아래 LED만 ON
  }
}

실행 결과

 

'Arduino' 카테고리의 다른 글

TCS3200 컬러 감지 센서 2  (0) 2022.08.29
TCS3200 컬러 감지 센서 1  (0) 2022.08.29
피에조 부저  (0) 2022.08.19
리드 스위치 모듈 KY-025 (Dry Reed Switch Sensor)  (0) 2022.08.19
적외선 PIR센서 (인체 감지 모션 센서)  (0) 2022.08.19

피에조 부저

exp()
|2022. 8. 19. 20:09

피에조 부저 = 2개 전극 단자 (극성)

커버 윗면 (+) or 옆 조그만 홈 파져있는 쪽 단자 =  +전극

 

동작전압 : 3.5~5.5V

최대전류 : 30mA / 5VDC

공명 주파수 : 85DB @ 10CM

동작 온도 : -20~70


능동부저 (전원 공급 시 소리) & 수동부저

다리 길이 구분 = 다르면 능동 / 같다면 수동

 

능동부저 = 단일음 (경보음)

수동부저 = 멜로디


주파수 활용, 음계 출력


  • 코드 차이

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=dokkosam&logNo=221239326330


  • 음계 적용

https://m.blog.naver.com/sunguru/221543881989

S = 13

+ = 5V

- = GND

int P_BUZ = 13;

void setup(){
  pinMode(P_BUZ, OUTPUT);
  Serial.begin(9600);
}
void loop(){
  tone(P_BUZ, 131); //도
  delay(300);
  tone(P_BUZ, 147); //레
  delay(300);
  tone(P_BUZ, 165); //미
  delay(300);
  tone(P_BUZ, 175); //파
  delay(300);
  tone(P_BUZ, 196); //솔
  delay(300);
  tone(P_BUZ, 220); //라
  delay(300);
  tone(P_BUZ, 247); //시
  delay(300);
  tone(P_BUZ, 262); //도
  delay(300);
  noTone(P_BUZ);
  delay(3000);
  Serial.println("END");
}

 


결과

피에조가 고장인 관계로 추후 등록

 

  • 리드 스위치 센서 = 자기장 검출. 자기장 유무
  • 자기장 접근 = 유리튜브 내 물질 붙어 회로 닫힘
  • 보드상 포텐셔미터= 자기장 검출 threshold값 설정

  • 동작 원리

유리관 안, 양 극 리드 = 자석 존재 → 리드 끌려와 스위치 닫힘 = 자석 감지

 

핀 = A0(아날로그 출력핀), GND, +, D0(디지털 출력핀), 5V 동작

원하는 기능 따라 A0, D0 하나만 연결 가능


  • 실행

DO = 8

+ = 5V

GND = GND

int digitalPin = 8;
//int aValue = 0;
int dValue = 0;

void setup () 
{
  pinMode (digitalPin, INPUT);
  Serial.begin (9600);
}

void loop () 
{
  //aValue = analogRead (analogPin);
  dValue = digitalRead (digitalPin);

  //Serial.print ("analog Value : ");
  //Serial.print (aValue);
  Serial.print ("digital Value : ");
  Serial.println (dValue); //ON = 1
  delay(200);
}

아날로그 값 원하면 주석 부분 뺄 것


  • 결과

 

'Arduino' 카테고리의 다른 글

TCS3200 컬러 감지 센서 2  (0) 2022.08.29
TCS3200 컬러 감지 센서 1  (0) 2022.08.29
로터리형 엔코더 모듈 (Encoder Sensor)  (0) 2022.08.29
피에조 부저  (0) 2022.08.19
적외선 PIR센서 (인체 감지 모션 센서)  (0) 2022.08.19

 

근적외선 PIR센서 = 수동 적외선 센서, 모션 감지.

감지 각도 범위 안에 적외선 변화 = High(1)

정보 :

■ 사람 몸에서 방사되는 적외선을 센싱, 움직임 유무 판단.

■ 감지 범위: 110도

■ 덮개 = 편광필터

■ 센서 감도조절, Delay 시간조절 가변저항

■ 동작 전압: 5~20V

■ 출력 전압: 3.3V

■ 핀 간격: 2.54mm

원리 : 

인체 약 9 ㎛ ~ 11㎛  적외선  방출 → 집광렌즈  Fresnel Lens → 센서 표면부 Window

적외선 신호 = 전압 출력 → 내장 증폭기 → 조명 On/Off

 

 1) F-Lens(Fresnel Lens)

 인체 적외선 통과 &  Window에 적외선 모음​

 감지거리 확대 & 감도 극대화  & 센서 보호

 

 2) Window

 표면부 직사각형 작은 Window (편광필터)

 일정 주파수 대역 통과


사용:

int ledPin1 = 9;
int ledPin2 = 8;
int inputPin = 7;   //센서 신호핀
int pirState = LOW; //센서 초기상태 움직임 없음
int val = 0;        //센서 신호 판별 변수

void setup() {
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(inputPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  val = digitalRead(inputPin);  //센서 신호값 val 저장

  if(val == HIGH) {             //인체 감지 시
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
    if(pirState == LOW){        //&& 센서 신호 == LOW
      Serial.println("Welcome!");
      pirState = HIGH;          
    }
  }
  else{
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    if(pirState == HIGH){       //센서 신호 == HIGH
      Serial.println("Good Bye~");
      pirState = LOW;
    }
  }
}

결과:


세부 조절:

감도 조절 = 센서 민감도 조절

시계방향 = 민감도 ↓ / 반시계방향 = 민감도 ↑

 

신호 지속 시간 = 지속 시간 조절

시계방향 = 지속시간 ↑ / 반시계방향 = 지속시간 ↓

'Arduino' 카테고리의 다른 글

TCS3200 컬러 감지 센서 2  (0) 2022.08.29
TCS3200 컬러 감지 센서 1  (0) 2022.08.29
로터리형 엔코더 모듈 (Encoder Sensor)  (0) 2022.08.29
피에조 부저  (0) 2022.08.19
리드 스위치 모듈 KY-025 (Dry Reed Switch Sensor)  (0) 2022.08.19