Galvanic skin response (GSR) sensor

 

GSR 센서는 피부의 습기에 의한 전류 변화를 감지하는 센서입니다. 이게 좀 재밌는 센서인데요.

대뇌의 제어에서 어느정도 자유로운 자율신경계라는게 있습니다. 자율신경계는 교감신경계과 부교감신경계로 나뉘는데 피부의 습기 변화는 교감신경계에 의해서 제어됩니다. 즉, 강한 감정이 발생하면 교감신경계에 의해 피부 습도가 변하게 되고 이걸 전기적인 저항의 변화로 읽어낼 수 있습니다. 다른말로 GSR 센서는 각성, 흥분과 같은 감정의 변화를 읽을 수 있는 센서입니다.

정확도는 둘째 치더라도 원리가 재밌는 센서라 연구용 혹은 거짓말 탐기지 용으로 사용할 수 있겠습니다.

 

해외 사이트를 좀 뒤져보시면 가격이 천차만별인데 테스트 용으로 쓸만한건 10$ 에도 구할 수 있습니다. 손가락 두 개에 끼워서 사용하는 형태이네요.

http://www.aliexpress.com/item/Seeed-Studio-Grove-GSR-5V-3-3V-standing-for-galvanic-skin-response-Module-for-Arduino-Seeeduino/1853051947.html

 

모듈의 측정값을 아날로그 핀으로 읽을 수 있습니다. 아두이노의 아날로그 핀 하나를 연결해서 값을 읽기만 하면 끝.

Arduino –> GSR sensor

  • GND –> GND
  • 5V –> VCC
  • A2 –> SIG

 

예제소스는 아래를 참고하세요.

// Watch video here: https://www.youtube.com/watch?v=O5Ye5xJF44c

/* 
GSR connection pins to Arduino microcontroller

Arduino           GSR

GND               GND
5V                VCC
A2                SIG

D13             RED LED

*/

/*
 GSR, standing for galvanic skin response, is a method of 
 measuring the electrical conductance of the skin. Strong 
 emotion can cause stimulus to your sympathetic nervous 
 system, resulting more sweat being secreted by the sweat 
 glands. Grove – GSR allows you to spot such strong emotions 
 by simple attaching two electrodes to two fingers on one hand,
 an interesting gear to create emotion related projects, like 
 sleep quality monitor. http://www.seeedstudio.com/wiki/Grove_-_GSR_Sensor
 */

const int LED=13;
const int GSR=A2;
int threshold=0;
int sensorValue;

void setup(){
  long sum=0;
  Serial.begin(9600);
  pinMode(LED,OUTPUT);
  digitalWrite(LED,LOW);
  delay(1000);
  
  for(int i=0;i<500;i++)
  {
  sensorValue=analogRead(GSR);
  sum += sensorValue;
  delay(5);
  }
  threshold = sum/500;
   Serial.print("threshold =");
   Serial.println(threshold);
  }

void loop(){
  int temp;
  sensorValue=analogRead(GSR);
  Serial.print("sensorValue=");
  Serial.println(sensorValue);
  temp = threshold - sensorValue;
  if(abs(temp)>60)
  {
    sensorValue=analogRead(GSR);
    temp = threshold - sensorValue;
    if(abs(temp)>60){
    digitalWrite(LED,HIGH);
    Serial.println("Emotion Changes Detected!");
    delay(3000);
    digitalWrite(LED,LOW);
    delay(1000);
  }
 }
}

 

참고자료 :

 

 

 

You may also like...