Arduino - Relay

In a previous tutorial, we have learned how to turn on/off an LED. In this tutorial, we are going to learn how to turn on/off some kind of devices that use the high voltage power supply(such as a light bulb, fan, electromagnetic lock, linear actuator...).

What are the common and difference between controlling LED and controlling a light bulb?

The common: Just like controlling LED, we use the Arduino's output pin to turn on/off them.

The difference:

About Relay

A relay is a programmable electrical switch, which can be controlled by Arduino or any micro-controller. It is used to programmatically control on/off the devices, which use the high voltage and/or high current.

It is a bridge between Arduino and high voltage devices.

WARNING

When you are making projects that are connected to mains voltage, you need to know what you are doing, otherwise, you may shock yourself. This is a serious topic, and we want you to be safe. If you’re NOT 100% sure what you are doing, do yourself a favor and don’t touch anything. Ask someone who knows!

Although some kinds of relays support both DC and AC devices, We highly recommend you to use a DC device (≤24V) for testing.

Pinout

Relay Pinout

Relay has two groups of pins: low voltage group and high voltage group.

  • Pins in the low voltage group are connected to Arduino, including three pins:
    • GND pin needs to be connected to GND (0V)
    • VCC pin needs to be connected to VCC (5V)
    • IN pin receives the control signal from Arduino
  • Pins in the high voltage group are connected to high voltage a device, including three pins (usually in screw terminal):
    • COM pin is the common pin. It is used in both normally open mode and normally closed mode
    • NO pin is normally open pin. It is used in the normally open mode
    • NC pin is normally closed pin. It is used in the normally closed mode

In practice, we usually do NOT use all of the pins in the high voltage group. We use only two of them:

  • We use only COM pin and NO pin if we use normally open mode.
  • We use only COM pin and NC pin if we use normally closed mode.

※ NOTE THAT:

The order of the relay's pins can vary between manufacturers. ALWAYS use the labels printed on the relay. Look closely!

Some relay module only has two pin in high voltage group.

How to Connect the High Voltage Device to Relay

How to connect relay

How It Works

The relay can work with two modes: normally open mode and normally closed mode. These modes are the opposite.

The "normally" means "if IN pin is connected to LOW (0V)".

Normally open mode

To use this mode, we need to connect the high voltage device to the COM pin and NO pin.

  • If the IN pin is connected to LOW (0V), the switch is open. The device is OFF (or inactive).
  • If the IN pin is connected to HIGH (5V), the switch is closed. The device is ON (or active).
  • How Relay Works - Normally Open

Normally closed mode

To use this mode, we need to connect the high voltage device to the COM pin and NC pin.

  • If the IN pin is connected to LOW (0V), the switch is closed. The device is ON (or active).
  • If the IN pin is connected to HIGH (5V), the switch is open. The device is OFF (or inactive).
  • How Relay Works - Normally Closed
Which mode should I use?

You can choose any of them.

Arduino - Relay

Arduino controls a high voltage device by controlling a relay.

Controlling a relay is simple. We just need:

  • Connect an Arduino's pin to the IN pin of the relay
  • Control the relay by programming the pin to LOW or HIGH

Wiring Diagram

Arduino Relay Wiring Diagram

Image is developed using Fritzing

How To Program

  • Configure an Arduino's pin to digital output mode. For example, pin 3:
pinMode(3, OUTPUT);
  • Program the pin to LOW (0V):
digitalWrite(3, LOW);
  • Program the pin to HIGH (5V):
digitalWrite(3, HIGH);

Arduino Code

/* * Created by ArduinoGetStarted.com * * This example code is in the public domain * * Tutorial page: https://arduinogetstarted.com/tutorials/arduino-relay */ // constants won't change const int RELAY_PIN = 3; // the Arduino pin, which connects to the IN pin of relay // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 9 as an output. pinMode(RELAY_PIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(RELAY_PIN, HIGH); delay(500); digitalWrite(RELAY_PIN, LOW); delay(500); }

Quick Steps

  • Copy the above code and open with Arduino IDE
  • Click Upload button on Arduino IDE to upload code to Arduino
  • Open Serial Monitor to See the result:
  • COM6
    Send
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  

Video

incoming

Challenge Yourself

  • Automatically turn on the light when you enter into your room and turn off the light after you leave 30 seconds. Hint: Refer to Arduino - Motion Sensor .

Alternative Relays

The above code also works with the following relays:

Comments

If you have any questions or suggestions, please comment on our YouTube channel