

The 4 Way Channel Expansion Relay Module is a versatile electronic component designed for controlling high-power devices using low-power control signals. Manufactured by Songle with the part ID RELAY, this module features four independent relays, each capable of switching AC or DC loads. It is equipped with optocoupler isolation for enhanced safety and noise immunity, making it ideal for applications requiring reliable and isolated control.








| Parameter | Specification |
|---|---|
| Operating Voltage | 5V DC |
| Communication Interface | I2C (IIC) |
| Relay Channels | 4 |
| Relay Type | Songle SPDT (Single Pole Double Throw) |
| Maximum Load (AC) | 250V AC @ 10A |
| Maximum Load (DC) | 30V DC @ 10A |
| Optocoupler Isolation | Yes |
| Power Indicator LED | Yes |
| Trigger Signal Voltage | 3.3V or 5V logic |
| Dimensions | 75mm x 55mm x 20mm |
| Pin Name | Description |
|---|---|
| VCC | 5V DC power supply input for the module. |
| GND | Ground connection. |
| SDA | I2C data line for communication with a microcontroller. |
| SCL | I2C clock line for communication with a microcontroller. |
| Terminal Name | Description |
|---|---|
| COM | Common terminal for the relay. |
| NO | Normally Open terminal. Connect the load here for default OFF state. |
| NC | Normally Closed terminal. Connect the load here for default ON state. |
#include <Wire.h> // Include the Wire library for I2C communication
#define RELAY_MODULE_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_MODULE_I2C_ADDRESS);
Wire.write(0x00); // 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_MODULE_I2C_ADDRESS);
Wire.write(0x01); // 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_MODULE_I2C_ADDRESS);
Wire.write(0x00); // Command to turn off Relay 1
Wire.endTransmission();
Serial.println("Relay 1 is OFF.");
delay(2000); // Wait for 2 seconds
}
Relays Not Activating:
I2C Communication Fails:
Erratic Relay Behavior:
Load Not Switching Properly:
Q: Can this module be used with a 3.3V microcontroller?
A: Yes, the module supports 3.3V logic levels for the trigger signals.
Q: How do I change the I2C address of the module?
A: Refer to the module's datasheet or manufacturer documentation for instructions on modifying the I2C address.
Q: Is it safe to use this module for high-power appliances?
A: Yes, as long as the load does not exceed the specified ratings and proper isolation is maintained.
Q: Can I control multiple modules on the same I2C bus?
A: Yes, ensure each module has a unique I2C address to avoid conflicts.