Documentation

1-Channel 5V Solid State Relay Module (Low-Level Trigger) for Arduino, Raspberry Pi & ESP32 | ShillehTek Product Manual
Documentation / 1-Channel 5V Solid State Relay Module (Low-Level Trigger) for Arduino, Raspberry Pi & ESP32 | ShillehTek Product Manual

1-Channel 5V Solid State Relay Module (Low-Level Trigger) for Arduino, Raspberry Pi & ESP32 | ShillehTek Product Manual

shillehteksolid-state-relay-1ch-5v-active-low

Overview

This 1-channel module puts a single Omron G3MB-202P solid state relay on a compact board, letting a microcontroller switch one AC load — a lamp, fan, pump, or heater up to 2 A at 24–240 V AC — in total silence. There is no coil and no moving contact: your logic signal drives an LED inside the SSR, and an opto-triac on the AC side conducts. Switching happens at the AC zero-crossing, so it is electrically quiet and gentle on loads.

The trigger logic on this board is active LOW: pull the CH input to ground and the relay conducts; release it (or drive it HIGH) and the load switches off at the next zero-crossing. The DC side takes 5 V on DC+ and ground on DC−, with the on-board LED mirroring the channel state. The AC load wires into the 2-position output terminal in series with the live conductor.

Because the output is a triac, two rules are absolute: AC loads only (DC latches the triac on), and 2 A maximum. Respect those and this is the cleanest way to give one mains device a brain. This manual covers the pinout, wiring for Arduino, ESP32, Raspberry Pi, and Pico, active-low code for each, and the SSR behaviors worth knowing before the first switch-on.

At a Glance

Relay
Omron G3MB-202P SSR
Trigger
Active LOW — CH low = ON
Switches
24 – 240 V AC only
Load Limit
2 A (resistive)
Logic Supply
5 V on DC+ / DC−
Switching
Zero-crossing, silent

Specifications

Parameter Value
Relay Omron G3MB-202P solid state relay
Load voltage 24 – 240 V AC, 50/60 Hz
Load current 2 A maximum (resistive)
Trigger logic Active LOW on CH
Trigger current ~2–5 mA sink — any GPIO manages it
Logic supply 5 V DC on DC+ / DC−
Switching type Zero-crossing triac output
Isolation Opto-isolated input-to-output inside the SSR
Indicator Status LED (on when triggered)
Connections 3-pin input terminal (CH, DC−, DC+) · 2-pin AC output
DC loads Not supported — AC only
Fusing None on board — fuse the load circuit externally

Pinout Diagram

Top terminal, left to right: CH (trigger, active low), DC− (ground), DC+ (5 V). Bottom terminal: the switched AC path — wire it in series with the load’s live conductor, with neutral running to the load directly.

1-channel 5V solid state relay module G3MB-202P pinout diagram showing CH trigger, DC-, DC+ inputs and AC load output terminal

Wiring Guide

Arduino Uno Wiring

Module Pin Arduino Uno Pin Notes
DC+ 5V Logic-side power
DC− GND Common ground
CH D7 LOW = load ON
AC output In series with the load’s live wire Neutral goes straight to the load
Treat the AC side as live at all times. Wire it de-energized, enclose the module so no AC terminal can be touched, and add an appropriately rated fuse in the load circuit — this board has none of its own. If mains wiring is unfamiliar territory, get your work checked by someone qualified before plugging in.

ESP32 Wiring

Module Pin ESP32 Pin Notes
DC+ VIN (5V) Logic-side power
DC− GND Common ground
CH GPIO 26 3.3 V logic sinks it fine; LOW = ON
Set the pin HIGH immediately. On an active-low board, a floating input can drift toward ON. Configure the GPIO as an output driving HIGH in the first lines of setup — and prefer boot-quiet pins (25/26/27/33) so the load cannot blip during reset.

Raspberry Pi Wiring

Module Pin Raspberry Pi Pin Notes
DC+ 5V (Pin 2) Logic-side power
DC− GND (Pin 6) Common ground
CH GPIO 17 (Pin 11) LOW = ON
gpiozero handles the inversion. Declare the device with active_high=False and your code reads naturally — relay.on() pulls the pin low, relay.off() releases it — no double-negative logic to keep in your head.

Raspberry Pi Pico Wiring

Module Pin Pico Pin Notes
DC+ VBUS (Pin 40) 5 V from USB
DC− GND (Pin 38) Common ground
CH GP16 (Pin 21) LOW = ON; init HIGH
AC only. The triac output cannot switch DC — once triggered on a DC circuit it stays on until power is removed. For DC loads use a MOSFET module (e.g. IRF520) instead; this relay is for mains-style AC circuits within its 2 A rating.

Code Examples

Arduino — Active-Low Relay Control

ssr_blink.ino
const int CH = 7;

void setup() {
  digitalWrite(CH, HIGH);   // define OFF state before...
  pinMode(CH, OUTPUT);      // ...the pin becomes an output
}

void loop() {
  digitalWrite(CH, LOW);    // load ON
  delay(3000);
  digitalWrite(CH, HIGH);   // load OFF
  delay(3000);
}

ESP32 — Serial-Controlled Switch

esp32_ssr.ino
const int CH = 26;

void setup() {
  Serial.begin(115200);
  digitalWrite(CH, HIGH);
  pinMode(CH, OUTPUT);
  Serial.println("Send 1 = ON, 0 = OFF");
}

void loop() {
  if (Serial.available()) {
    char c = Serial.read();
    if (c == '1') { digitalWrite(CH, LOW);  Serial.println("ON");  }
    if (c == '0') { digitalWrite(CH, HIGH); Serial.println("OFF"); }
  }
}

Raspberry Pi — Python (gpiozero)

ssr_timer.py
from gpiozero import DigitalOutputDevice
from time import sleep

# active_high=False: on() pulls CH low, which turns the SSR on
relay = DigitalOutputDevice(17, active_high=False, initial_value=False)

try:
    while True:
        relay.on()
        print("Load ON")
        sleep(5)
        relay.off()
        print("Load OFF")
        sleep(5)
except KeyboardInterrupt:
    relay.off()

Raspberry Pi Pico — MicroPython

pico_ssr.py
from machine import Pin
import time

ch = Pin(16, Pin.OUT, value=1)   # start HIGH = OFF

def load_on():
    ch.value(0)     # active low

def load_off():
    ch.value(1)

while True:
    load_on()
    time.sleep(4)
    load_off()
    time.sleep(4)

Frequently Asked Questions

Why is the relay ON when my board boots?
Active-low inputs float toward ON if left undefined. The fix is in the code pattern above: write the pin HIGH before (or immediately as) it becomes an output, and choose GPIOs that stay quiet during reset. On the Pi, gpiozero’s initial_value=False with active_high=False does the same job.
Why won’t it switch my DC load off?
The output is a triac: it stops conducting only when load current crosses zero. AC crosses zero every half-cycle; DC never does, so the channel latches on. Solid state relays of this family are AC-only by physics — use a MOSFET board for DC.
My small LED bulb glows faintly when off. Is the relay broken?
No — SSRs leak a milliamp-scale current through their snubber even when off, and a few-watt LED lamp can visibly glow on it. A small bleeder (snubber resistor) across the load, or simply a slightly larger load, cures it. Mechanical relays are the alternative for micro-loads.
Can I PWM it to dim a lamp?
No. Zero-crossing switching means the relay only turns on at cycle boundaries, so PWM produces flicker, not dimming. It is an on/off device; AC dimming needs a phase-control dimmer module.
How much load can it really take?
2 A resistive — about 450 W at 230 V or 220 W at 110 V. Inrush-heavy loads (motors, big power supplies, incandescent floods) should be derated to roughly half that. It runs warm at full load without a heatsink; give the enclosure some airflow.
Is my microcontroller isolated from the mains?
Yes — the isolation barrier is inside the G3MB-202P, between its input LED and triac output. Your controller only ever touches the 5 V side. The barrier is real, but it protects nothing if AC wiring strays onto the logic terminals, so keep the two sides physically separated in the enclosure.
High-level or low-level trigger — does it matter which I buy?
Functionally they end in the same place; the difference is which logic state means ON and how the board behaves during boot. This board is active LOW (sinking a few mA turns it on), which suits open-drain outputs nicely. Just mirror the logic in code — or let gpiozero’s active_high=False hide it entirely.

Related Tutorials