📋 Overview
This 4-channel 5V relay module lets you use a low-power microcontroller — like an Arduino, Raspberry Pi, ESP32, or PIC — to switch high-power AC or DC loads up to 250V AC at 10A per channel. Each channel uses a Single-Pole Double-Throw (SPDT) relay, giving you access to both Normally Open (NO) and Normally Closed (NC) contacts for maximum wiring flexibility.
This is the direct-drive model without optocoupler isolation. It has a single 6-pin input header (GND, IN1, IN2, IN3, IN4, VCC) and does not include a JD-VCC jumper or optoisolator circuitry. The control pins connect through a transistor driver directly to the relay coils, making wiring simple — just connect your microcontroller's digital output pins to IN1–IN4, and you're ready to switch loads.
The inputs are active low, meaning you pull a control pin LOW (to ground) to energize the relay and turn it ON. Each channel has a red status LED that lights up when its relay is activated.
⚠️ Safety Warning: This module can switch mains-level AC voltages (up to 250V AC). High-voltage AC can cause serious injury or death. If you are not experienced with high-voltage wiring, please consult a qualified electrician. Always disconnect power before making or changing any high-voltage connections.
⭐ Key Features
- 4 Independent Channels: Control up to four separate high-power devices from a single module
- SPDT Relay Contacts: Each relay provides COM, NO (Normally Open), and NC (Normally Closed) terminals for flexible wiring
- Active Low Inputs: Pull the input pin LOW to activate the relay — compatible with most microcontrollers
- High-Power Switching: Each channel rated for 250V AC / 10A, 125V AC / 15A, or 30V DC / 10A
- 5V Control Logic: Powered and controlled directly from a 5V microcontroller — no external relay power supply needed
- LED Status Indicators: Each channel has a red LED that illuminates when the relay is activated
- Simple 6-Pin Interface: Single input header with GND, VCC, IN1, IN2, IN3, IN4 — easy to wire
- Screw Terminals: Secure, tool-tightened connections for high-power load wiring
- Mounting Holes: Four 3.1mm mounting holes for secure installation
📊 Specifications
| Parameter | Value |
|---|---|
| Number of Channels | 4 |
| Relay Type | SPDT (Single-Pole Double-Throw) |
| Control Signal | Active Low (LOW = relay ON) |
| Control Voltage | 5V DC |
| Control Current | 50–60 mA per channel |
| Max Switching Voltage (AC) | 250V AC |
| Max Switching Voltage (DC) | 30V DC |
| Max Switching Current | 10A (250V AC / 30V DC), 15A (125V AC) |
| Relay Contacts | COM, NO (Normally Open), NC (Normally Closed) |
| Optocoupler Isolation | No (direct transistor drive) |
| Status Indicators | 4 × Red LEDs (one per channel, lit when relay is active) |
| Input Connector | 6-pin header (GND, VCC, IN1, IN2, IN3, IN4) |
| Mounting Holes | 4 × 3.1mm diameter |
| Board Dimensions | Approx. 76 × 56 × 17 mm (3.0 × 2.2 × 0.67 inches) L × W × H |
| Weight | Approx. 60g |
📌 Pinout
Input Header (6-Pin)
The input side of the module has a single 6-pin header for connecting to your microcontroller:
| Pin | Label | Description |
|---|---|---|
| 1 | GND | Ground — connect to your microcontroller's GND |
| 2 | VCC | 5V power input — powers the relay coils and control circuitry |
| 3 | IN1 | Control input for Relay 1 (active low) |
| 4 | IN2 | Control input for Relay 2 (active low) |
| 5 | IN3 | Control input for Relay 3 (active low) |
| 6 | IN4 | Control input for Relay 4 (active low) |
Output Terminals (Per Relay Channel)
Each of the four relays has a 3-position screw terminal block on the output side:
| Terminal | Label | Description |
|---|---|---|
| 1 | COM | Common — connect your power source or load here |
| 2 | NO | Normally Open — disconnected from COM when relay is OFF; connected when relay is ON |
| 3 | NC | Normally Closed — connected to COM when relay is OFF; disconnected when relay is ON |
💡 Tip: Most projects use the NO (Normally Open) terminal. In this configuration, your load is OFF by default and turns ON when you activate the relay. Use the NC (Normally Closed) terminal if you need the load to be ON by default and turn OFF when the relay is activated.
🔧 How It Works
Active Low Logic
This module uses active low logic. Here's what that means in practice:
- Input pin HIGH (5V or floating): The relay is OFF — the NO contact is open (disconnected from COM)
- Input pin LOW (0V / GND): The relay is ON — the NO contact closes (connects to COM), and the channel's red LED lights up
This works because the indicator LED and the transistor driver on each channel are connected to VCC on one side. When you pull the input pin LOW, current flows through the LED and transistor base, which switches the transistor ON and energizes the relay coil.
SPDT Relay Operation
Each relay is a Single-Pole Double-Throw (SPDT) switch with three terminals:
- Relay OFF (input HIGH): COM is connected to NC, and NO is disconnected
- Relay ON (input LOW): COM switches to NO, and NC is disconnected
You'll hear an audible "click" when the relay switches states — that's the mechanical armature moving inside the relay. This is completely normal.
🔌 Wiring to Arduino
Basic Wiring
Connect the relay module to your Arduino as follows:
| Relay Module Pin | Arduino Pin |
|---|---|
| GND | GND |
| VCC | 5V |
| IN1 | Digital Pin 7 |
| IN2 | Digital Pin 6 |
| IN3 | Digital Pin 5 |
| IN4 | Digital Pin 4 |
⚠️ Important: Each relay channel draws 50–60 mA from the 5V supply. With all four channels active simultaneously, the module draws approximately 200–240 mA. If you're powering the Arduino via USB, this is within the USB port's current capacity, but it's close to the limit. For reliable operation with all four relays active at once, consider powering the Arduino with an external 7–12V power supply through the barrel jack, which provides more current through the 5V regulator.
Load Wiring (Output Side)
To connect a load (such as a lamp, fan, or motor) to a relay channel:
- Connect one wire from your power source to the COM terminal of the relay
- Connect a wire from the NO terminal to one terminal of your load
- Connect the other terminal of your load back to the other wire of your power source, completing the circuit
⚠️ Safety Warning: When wiring AC mains loads (110V/220V), always ensure the power is completely disconnected before making any connections. Use properly rated wire gauges for the current you're switching. Secure all screw terminal connections tightly to prevent arcing. If you're unsure, consult a qualified electrician.
🔋 Power Requirements
This module is powered entirely from the 5V VCC pin on the input header. There is no separate relay power supply pin or jumper on this model.
| Condition | Current Draw |
|---|---|
| All relays OFF | ~10 mA (LEDs and logic only) |
| 1 relay ON | ~60–70 mA |
| 2 relays ON | ~120–130 mA |
| 3 relays ON | ~180–190 mA |
| 4 relays ON | ~240–250 mA |
💡 Tip: If you experience unreliable relay switching or your microcontroller resets when relays activate, the most common cause is insufficient power. Use an external 5V power supply rated for at least 500 mA connected to the module's VCC and GND pins, and also connect the GND to your microcontroller's GND to maintain a common ground reference.
🚀 Getting Started with Arduino
Example 1: Basic Relay Toggle
This sketch turns each relay ON and OFF in sequence, one at a time, with a 1-second delay between each. It's a great way to verify that all four channels are working correctly.
// 4-Channel Relay Module - Basic Toggle Test
// Active LOW: digitalWrite(pin, LOW) = Relay ON
// Active LOW: digitalWrite(pin, HIGH) = Relay OFF
const int relay1 = 7;
const int relay2 = 6;
const int relay3 = 5;
const int relay4 = 4;
void setup() {
// Set relay pins as outputs
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
// Start with all relays OFF (HIGH = OFF for active low)
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, HIGH);
}
void loop() {
// Turn each relay ON one at a time
digitalWrite(relay1, LOW); // Relay 1 ON
delay(1000);
digitalWrite(relay1, HIGH); // Relay 1 OFF
delay(500);
digitalWrite(relay2, LOW); // Relay 2 ON
delay(1000);
digitalWrite(relay2, HIGH); // Relay 2 OFF
delay(500);
digitalWrite(relay3, LOW); // Relay 3 ON
delay(1000);
digitalWrite(relay3, HIGH); // Relay 3 OFF
delay(500);
digitalWrite(relay4, LOW); // Relay 4 ON
delay(1000);
digitalWrite(relay4, HIGH); // Relay 4 OFF
delay(500);
}
Example 2: Control Relays via Serial Monitor
This sketch lets you turn individual relays ON or OFF by sending commands through the Arduino Serial Monitor. Send 1ON to turn on Relay 1, 1OFF to turn it off, and so on for relays 2–4. Send ALLON or ALLOFF to control all relays at once.
// 4-Channel Relay Module - Serial Control
// Open Serial Monitor at 9600 baud
// Commands: 1ON, 1OFF, 2ON, 2OFF, 3ON, 3OFF, 4ON, 4OFF, ALLON, ALLOFF
const int relayPins[] = {7, 6, 5, 4};
const int numRelays = 4;
void setup() {
Serial.begin(9600);
for (int i = 0; i < numRelays; i++) {
pinMode(relayPins[i], OUTPUT);
digitalWrite(relayPins[i], HIGH); // All relays OFF
}
Serial.println("4-Channel Relay Controller Ready");
Serial.println("Commands: 1ON, 1OFF, 2ON, 2OFF, 3ON, 3OFF, 4ON, 4OFF");
Serial.println(" ALLON, ALLOFF");
}
void loop() {
if (Serial.available() > 0) {
String command = Serial.readStringUntil('\n');
command.trim();
command.toUpperCase();
if (command == "ALLON") {
for (int i = 0; i < numRelays; i++) {
digitalWrite(relayPins[i], LOW);
}
Serial.println("All relays ON");
}
else if (command == "ALLOFF") {
for (int i = 0; i < numRelays; i++) {
digitalWrite(relayPins[i], HIGH);
}
Serial.println("All relays OFF");
}
else {
// Parse relay number and state
int relayNum = command.charAt(0) - '0';
String state = command.substring(1);
if (relayNum >= 1 && relayNum <= 4) {
if (state == "ON") {
digitalWrite(relayPins[relayNum - 1], LOW);
Serial.print("Relay ");
Serial.print(relayNum);
Serial.println(" ON");
}
else if (state == "OFF") {
digitalWrite(relayPins[relayNum - 1], HIGH);
Serial.print("Relay ");
Serial.print(relayNum);
Serial.println(" OFF");
}
else {
Serial.println("Invalid command. Use: 1ON, 1OFF, etc.");
}
}
else {
Serial.println("Invalid relay number. Use 1-4.");
}
}
}
}
🎯 Typical Applications
- Home Automation: Control lights, fans, heaters, and appliances from a microcontroller or IoT platform
- Irrigation Systems: Switch solenoid valves for automated watering schedules
- Industrial Control: Activate motors, pumps, or solenoids in automation projects
- Robotics: Control high-power motors or actuators from a low-power controller
- IoT Projects: Combine with Wi-Fi modules (ESP8266/ESP32) for remote control of appliances
- Automotive: Switch 12V accessories like lights, horns, or cooling fans
- Lab & Test Equipment: Automate switching of test loads or power supplies
- Security Systems: Control door locks, alarms, or sirens
💡 Tips & Best Practices
-
Initialize pins HIGH in setup(): Since the module is active low, setting all relay pins HIGH in your
setup()function ensures all relays start in the OFF state when your microcontroller boots up - Use a flyback diode for inductive loads: If you're switching motors, solenoids, or other inductive loads on the DC side, add a flyback diode across the load to protect against voltage spikes. The relay module has built-in flyback diodes across the relay coils, but your external load may need its own protection
- Keep high-voltage and low-voltage wiring separated: Route your AC mains wiring away from the low-voltage control wiring to reduce electromagnetic interference
- Don't exceed the rated current: The relays are rated for 10A at 250V AC. Exceeding this can damage the relay contacts or cause overheating. For higher-current loads, use a contactor controlled by the relay
- Secure your screw terminal connections: Loose connections on the high-voltage side can cause arcing, overheating, and fire. Tighten all screw terminals firmly
- Consider relay contact bounce: Mechanical relays exhibit contact bounce (rapid on/off transitions) for a few milliseconds when switching. For most applications this doesn't matter, but for sensitive timing circuits, add a small delay after switching
- Use external power for multiple relays: If you're running all four relays simultaneously, an external 5V supply (500 mA or more) is recommended to avoid overloading your microcontroller's voltage regulator
🛠️ Troubleshooting
| Problem | Possible Cause | Solution |
|---|---|---|
| Relay doesn't click or LED doesn't light | Input pin is HIGH instead of LOW | Remember this module is active LOW — use digitalWrite(pin, LOW) to turn the relay ON |
| Relay doesn't click or LED doesn't light | No power to the module | Verify 5V is connected to VCC and GND is connected to your microcontroller's GND |
| Relay clicks but load doesn't switch | Load wiring issue | Check that your load is wired to COM and NO (or NC) terminals. Verify the load's power source is connected and working |
| Arduino resets when relay activates | Insufficient power supply current | Use an external 5V power supply for the relay module, or power the Arduino via the barrel jack with a 7–12V adapter |
| Relay turns ON at startup | Pin not initialized to HIGH | Add digitalWrite(pin, HIGH) in your setup() function before or immediately after pinMode(pin, OUTPUT)
|
| Intermittent relay operation | Loose connections | Check all jumper wire connections on the input header and tighten all screw terminals on the output side |
| LED lights but relay doesn't click | Insufficient current from VCC | The relay coil needs 50–60 mA per channel. Ensure your 5V source can supply enough current for all active channels |
| Electrical noise or interference | Inductive load back-EMF | Add a snubber circuit or flyback diode across inductive loads (motors, solenoids). Keep high-voltage wiring away from signal wires |
⚠️ Important Notes
- This module does NOT have optocoupler isolation. The control inputs are connected to the relay driver transistors without galvanic isolation. This means electrical noise from the relay coils or high-voltage loads could potentially affect your microcontroller. For applications where isolation is critical, consider the optocoupler-isolated version of this module.
- Active Low operation: This is the most common point of confusion. LOW = ON, HIGH = OFF. If your relays seem to work "backwards," double-check that you're using the correct logic in your code.
- Not suitable for PWM or rapid switching: Mechanical relays have a limited switching lifespan (typically 100,000 cycles) and a switching speed of about 10ms. Do not use PWM signals to control these relays. For high-speed or high-frequency switching, use solid-state relays (SSRs) or MOSFETs instead.
- Relay coil voltage spikes: The module includes flyback diodes across the relay coils to suppress voltage spikes when the coils de-energize. No external protection is needed for the coil side.
- Maximum ratings are absolute maximums: For long-term reliability, operate the relays at no more than 80% of their rated current (8A at 250V AC). Continuous operation at maximum ratings will shorten relay contact life.
- 3.3V microcontrollers: This module is designed for 5V logic. While some 3.3V microcontrollers (like ESP32 or Raspberry Pi) may be able to trigger the relay through the transistor driver, reliable operation is not guaranteed at 3.3V. If using a 3.3V controller, test thoroughly or use a logic level shifter.
📡 Compatible With
- Arduino Uno, Mega, Nano, Leonardo, and other 5V Arduino boards
- Raspberry Pi (via 5V pin and GPIO — note: Pi GPIO is 3.3V, may need level shifting)
- ESP32 / ESP8266 (3.3V logic — test reliability or use a level shifter)
- STM32, PIC, AVR, ARM, MSP430, and other 5V-compatible microcontrollers
- Any digital output capable of sinking current to ground at 5V logic levels
🏪 Where to Buy the 4 Channel SPDT Power Relay Module
This 4-Channel 5V Relay Module can be purchased at the Envistia Mall website:
250V/10A 4 Channel SPDT Power Relay Module 5V Control →
- 📦 Fast US Shipping
- 🔄 Hassle-Free Returns
- 📧 Responsive Customer Support
📚 Resources & Downloads
- Tutorial Reference: 5V 4-Channel Relay Module With Arduino — Instructables
- Tutorial Reference: Using relays with an Arduino microcontroller — Components101
-
YouTube Video: How To Interface 5V 4 Channel Relay Module with Arduino
This guide is provided by Envistia Mall for educational and technical reference purposes. The manufacturer and Envistia LLC (dba Envistia Mall) are not responsible for any damages or losses resulting from the use of this product. Always follow proper electrical safety practices when working with electronic components. Specifications are based on manufacturer data and are subject to change without notice.