Back to Sensors & Actuators Series

GSR: Galvanic Skin Response (Electrodermal Activity)

April 10, 2026 Wasil Zafar 8 min read

GSR deep dive — electrodermal activity, skin conductance measurement, arousal detection, Arduino code, and biofeedback/stress applications.

Contents

  1. Working Principle
  2. Electrical Characteristics
  3. Interfacing with MCU
  4. Calibration
  5. Code Example
  6. Real-World Applications
  7. Limitations

Working Principle

A Galvanic Skin Response (GSR) sensor measures electrodermal activity (EDA) — the variation in skin electrical conductance caused by sweat gland activity. When you experience emotional arousal, stress, or surprise, the sympathetic nervous system triggers eccrine sweat glands on the fingertips and palms, increasing skin moisture and reducing electrical resistance by 10–50%.

The sensor simply measures the conductance between two finger electrodes by applying a small constant voltage (~0.5 V DC) and measuring the resulting current. Higher conductance = more sweating = greater emotional arousal.

Electrical Characteristics

ParameterTypical (Grove GSR Module)
MeasurementSkin conductance (micro-Siemens, µS)
Typical Range1–20 µS (0.05–1.0 MΩ)
Supply Voltage3.3–5 V
OutputAnalog voltage (0–VCC)
Electrode TypeFinger straps or Ag/AgCl adhesive
Finger PlacementIndex and middle fingertips (medial phalanges)
Response Time1–3 seconds (skin conductance response latency)
Applied Voltage<0.5 V DC (safe for skin)

Interfacing with an MCU

Most GSR modules (Grove, SparkFun) output an analog voltage: connect VCC, GND, and SIG to an ADC pin. The module includes a voltage divider circuit and gain amplifier. Directly connecting two electrodes to an ADC also works with a known reference resistor.

Electrode contact: Wrap finger straps snugly but not tightly. Loose contact causes noise; excessive pressure forces moisture and creates artifacts. Wait 1–2 minutes for baseline stabilisation.

Calibration

  • Baseline: Record 60 seconds of resting data; average as the individual’s baseline conductance
  • SCR detection: Skin conductance responses (SCRs) are transient increases >0.05 µS above baseline within 1–3 seconds of a stimulus
  • Individual variation: Baseline conductance varies widely between individuals; always work with relative changes, not absolute values

Code Example

/*
 * GSR (Galvanic Skin Response) Sensor — Arduino
 * Module: Grove GSR or 2-finger electrode setup
 * Wiring: VCC → 5V, GND → GND, SIG → A0
 */
#define GSR_PIN A0

int baseline = 0;

void setup() {
    Serial.begin(9600);
    Serial.println("GSR Sensor — calibrating baseline (5s)...");

    /* Measure baseline (average of 50 readings) */
    long sum = 0;
    for (int i = 0; i < 50; i++) {
        sum += analogRead(GSR_PIN);
        delay(100);
    }
    baseline = sum / 50;
    Serial.print("Baseline ADC: ");
    Serial.println(baseline);
    Serial.println("Ready — try counting backwards from 100 by 7s");
}

void loop() {
    int raw = analogRead(GSR_PIN);
    float conductance = 1.0 / (float)raw;  /* Relative */

    /* Detect arousal: significant deviation from baseline */
    int delta = raw - baseline;
    Serial.print("GSR: ");
    Serial.print(raw);
    Serial.print("  Delta: ");
    Serial.print(delta);
    if (abs(delta) > baseline * 0.10) {
        Serial.print("  ** AROUSAL DETECTED **");
    }
    Serial.println();
    delay(200);
}

Real-World Applications

Lie Detection, Stress Monitoring & UX Research

GSR is a core component of polygraph (lie detector) systems, measuring autonomic arousal during questioning. In UX research, it quantifies emotional engagement with product interfaces. Biofeedback therapy uses GSR to train relaxation techniques. Wearables like the Empatica E4 use EDA for stress tracking and seizure detection.

PolygraphStressUX ResearchBiofeedback

Limitations

  • Not emotion-specific: GSR indicates arousal level, not the type of emotion (excitement and fear both increase conductance).
  • Individual variability: Some people have naturally dry or sweaty hands; absolute values are meaningless between subjects.
  • Slow response: 1–3 seconds latency; not suitable for real-time event-locked analysis.
  • Temperature sensitivity: Ambient temperature and humidity affect sweat rate and baseline conductance.