Arduino Nano ESP32 - 2-Channel Relay Module

This tutorial provides step-by-step instructions on utilizing an Arduino Nano ESP32 to control a 2-channel relay module. It covers the following aspects in detail:

When we need to control two high-voltage devices like pumps, fans, or actuators, we have two options. We can either use multiple relay modules or go for a more straightforward solution. The easier way is to use a 2-channel relay module, which is a single board with two relays built-in. This makes the setup simpler and more convenient for controlling both devices.

Hardware Preparation

1×Arduino Nano ESP32
1×USB Cable Type-C
1×2-channel Relay Module
1×Breadboard
1×Jumper Wires
1×(Optional) 5V Power Adapter for Arduino Nano ESP32
1×(Recommended) Screw Terminal Adapter for Arduino Nano

Or you can buy the following sensor kit:

1×DIYables Sensor Kit 30 types, 69 units
Disclosure: Some of the links provided in this section are Amazon affiliate links. We may receive a commission for any purchases made through these links at no additional cost to you. We appreciate your support.

Overview of 2-Channel Relay Module

Pinout

2-channel Relay Module Pinout

A 2-channel relay module has the following pins:

  • Power pins for relay boards
    • DC+: connect this pin to 5V pin of power supply
    • DC-: connect this pin to the GND pin of the power supply and also to the GND pin of the Arduino Nano ESP32
  • Signal pins:
    • IN1: this pin receives the control signal from Arduino Nano ESP32 to control relay 1 on the module
    • IN2: this pin receives the control signal from Arduino Nano ESP32 to control relay 2 on the module
  • Output pins: NCx (normally closed pin), NOx (normally open pin), COMx (common pin),
    • NC1, NO1, COM1: These pins connect to a high-voltage device that is controlled by relay 1
    • NC2, NO2, COM2: These pins connect to a high-voltage device that is controlled by relay 2

    Moreover, the 2-channel relay module features two jumpers that grant you the flexibility to select either a low-level trigger or high-level trigger for each relay independently.

    If you're keen on understanding the basics of relays, I highly recommend checking out the Arduino Nano ESP32 - Relay tutorial. This tutorial offers comprehensive insights into:

    • Connecting relays to high-voltage devices
    • Explaining the concepts of normally closed and normally open
    • Describing the differences between low-level trigger and high-level trigger
    • Demonstrating how to effectively control relays using Arduino Nano ESP32

Wiring Diagram

The wiring diagram between Arduino Nano ESP32 and 2-channel relay module

This image is created using Fritzing. Click to enlarge image

※ NOTE THAT:

If the two devices controlled by a 2-channel relay module operate at the same voltage, we can utilize a single high-voltage power adapter to supply power to both devices. However, if the devices require different voltages, we can independently use separate high-voltage power adapters for each device.

How To Program For 2-Channel Relay Module

  • Initializes the Arduino Nano ESP32 pin to the digital output mode by using pinMode() function.
pinMode(PIN_RELAY_1, OUTPUT); pinMode(PIN_RELAY_2, OUTPUT);
digitalWrite(PIN_RELAY_1, HIGH); digitalWrite(PIN_RELAY_2, HIGH);

Arduino Nano ESP32 Code

/* * This Arduino Nano ESP32 code was developed by newbiely.com * * This Arduino Nano ESP32 code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-2-channel-relay-module */ #define PIN_RELAY_1 D2 // The Arduino Nano ESP32 pin connected to the IN1 pin of relay module #define PIN_RELAY_2 D3 // The Arduino Nano ESP32 pin connected to the IN2 pin of relay module // The setup function runs once on reset or power-up void setup() { Serial.begin(9600); // initialize digital pin as an output. pinMode(PIN_RELAY_1, OUTPUT); pinMode(PIN_RELAY_2, OUTPUT); } // The loop function repeats indefinitely void loop() { Serial.println("Turned on both relays"); digitalWrite(PIN_RELAY_1, HIGH); digitalWrite(PIN_RELAY_2, HIGH); delay(2000); Serial.println("Turned off both relays"); digitalWrite(PIN_RELAY_1, LOW); digitalWrite(PIN_RELAY_2, LOW); delay(2000); }

Detailed Instructions

  • Copy the above code and open with Arduino IDE
  • Click Upload button on Arduino IDE to upload code to Arduino Nano ESP32
  • Listen the click sound on relays.
  • Check out the result on the Serial Monitor.
COM6
Send
Turned on both relays Turned off both relays Turned on both relays Turned off both relays Turned on both relays Turned off both relays Turned on both relays Turned off both relays
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Function References