

The 8 Way Channel Expansion Relay Module by Songle (Part ID: RELAY) is a versatile and reliable relay module designed for controlling high-power devices using low-power control signals. This module features 8 independent relays, each capable of switching AC or DC loads, and is equipped with optocoupler isolation for enhanced safety and noise immunity. It supports IIC/I2C communication, making it ideal for microcontroller-based projects, including Arduino and Raspberry Pi applications.








| Parameter | Specification |
|---|---|
| Operating Voltage | 5V DC |
| Trigger Voltage (High) | 4.5V - 5V |
| Trigger Voltage (Low) | 0V - 0.5V |
| Relay Type | Songle SRD-05VDC-SL-C |
| Maximum Load (AC) | 250V AC @ 10A |
| Maximum Load (DC) | 30V DC @ 10A |
| Communication Protocol | IIC/I2C |
| Isolation | Optocoupler isolation for each relay |
| Dimensions | 138mm x 56mm x 18mm |
| Weight | ~120g |
| Pin Name | Description |
|---|---|
| VCC | 5V DC power supply input |
| GND | Ground connection |
| SDA | I2C data line for communication |
| SCL | I2C clock line for communication |
| Pin Name | Description |
|---|---|
| IN1-IN8 | Control signals for relays 1 through 8. A HIGH signal activates the relay. |
| Terminal Name | Description |
|---|---|
| COM | Common terminal for the relay |
| NO | Normally Open terminal. Connects to COM when the relay is activated. |
| NC | Normally Closed terminal. Connects to COM when the relay is deactivated. |
#include <Wire.h> // Include the Wire library for I2C communication
#define RELAY_I2C_ADDRESS 0x20 // Default I2C address of the relay module
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Initialize serial communication for debugging
// Turn off all relays at startup
Wire.beginTransmission(RELAY_I2C_ADDRESS);
Wire.write(0x00); // Send command to turn off all relays
Wire.endTransmission();
Serial.println("Relay module initialized. All relays are OFF.");
}
void loop() {
// Example: Turn on relay 1
Wire.beginTransmission(RELAY_I2C_ADDRESS);
Wire.write(0x01); // Send command to turn on relay 1
Wire.endTransmission();
Serial.println("Relay 1 is ON.");
delay(2000); // Wait for 2 seconds
// Example: Turn off relay 1
Wire.beginTransmission(RELAY_I2C_ADDRESS);
Wire.write(0x00); // Send command to turn off relay 1
Wire.endTransmission();
Serial.println("Relay 1 is OFF.");
delay(2000); // Wait for 2 seconds
}
Relays Not Activating:
High-Voltage Spikes:
Noise or Unstable Operation:
I2C Communication Errors:
Q1: Can I use this module with a 3.3V microcontroller?
A1: Yes, but you will need a logic level shifter to safely interface the 3.3V signals with the 5V module.
Q2: How do I change the I2C address of the module?
A2: Refer to the module's datasheet or documentation for instructions on configuring the address using jumpers or solder pads.
Q3: Can I control multiple modules on the same I2C bus?
A3: Yes, as long as each module has a unique I2C address. Configure the addresses accordingly.
Q4: What happens if I exceed the load ratings?
A4: Exceeding the load ratings can damage the relays and pose safety risks. Always stay within the specified limits.