Authorized Online Retailers:
![]() |
![]() |
![]() |
In this lesson,we’ll learn how to use Raspberry Pi to drive a relay to switch on/off LED
1 * Raspberry Pi
1 * Breadboard
1 * Relay
1 * LED
1 * Resistor (200Ω)
Several jumper wires
Software Preparation
Please visit getting started for raspberry pi
Work Principle
Relay is an electronic switch which allows low power digital signal to turn on/off a high power circuit. A relay has at least one pair of input pins and one pair output pins(output switch). When input gets digital signal 1 (high voltage), Relay will make output switch on. If Input pins get digit zero, it will make output switch off.
The construction and working of a relay can be understood from the below diagram.



Assembling the Circuit as per following Connection Graph, the relay output to LED, the relay signal lead to Raspberry Pi GPIO 0(BCM_GPIO 17). When a high voltage is applied to relay, the LED will light up. when a low voltage(0V) is applied to relay. The LED will turn off.
We’ll provide two kinds of codes for C language users and Python language users.
For C Language users, please follow the next step:
Firstly, Please make sure the wiringPi library is installed, if you don’t know how to install it, please visit: Raspberry Pi Starter Kit Lesson 1——Get Started with Raspberry Pi
Step 1)Download sample code relay_with_led.c from osoyoo.com by typing following commands:
cd ~
sudo wget http://osoyoo.com/driver/pi3_start_learning_kit_lesson_9/relay_with_led.c
If you want to customize the sample code file , you can use nano editor to edit source code by typing following command:
sudo nano relay_with_led.c
Step 2) Compile Code
C language is high level language. Before running the project, the source code needs to be compiled as an executable file. Please compile the relay_with_led.c file by typing following command:
gcc -Wall -o relay_with_led relay_with_led.c -lwiringPi
Note: gcc: is GNU Compiler Collection. If you want to write your own C code and compile to run it, you need to master gcc. for more information about gcc, please visit here
-Wall: to get more error when compile the code
-o: to name the compiled file. You can name the file as your like. here we name as relay_with_led
flow_led.c: means the original file which is compiled
-lwiringPi: is to load the library wiringPi (l is short for library)
Step 3)Run the program
sudo ./relay_with_led
Step 4) Test Result
Once run the program, the replay will make tick-tock sound. In addition, you should see the LED Blink.
C language Code Analysis
#include < wiringPi.h >
#includeM < stdio.h >
#include < stdlib.h >
#define RelayPin 0
int main(void){
if(wiringPiSetup() == -1){ //when initialize wiring failed, print messageto screen
printf("setup wiringPi failed !");
exit(1);
}
pinMode(RelayPin, OUTPUT); //set GPIO0 output
printf("\n");
printf("|**************************************|\n");
printf("| Relay |\n");
printf("| ------------------------------ |\n");
printf("| GPIO0 connect to relay's control pin |\n");
printf("| led connect to relay's NormalOpen pin|\n");
printf("| 5v connect to relay's COM pin |\n");
printf("| |\n");
printf("| Make relay to control a led |\n");
printf("| |\n");
printf("| OSOYOO|\n");
printf("|**************************************|\n");
printf("\n");
for(;;){
// disconnect
printf("|********************|\n");
printf("| ...Relay Close |\n");
printf("|********************|\n");
digitalWrite(RelayPin, LOW);
delay(1000);
// connect
printf("|********************|\n");
printf("| Relay Open... |\n");
printf("|********************|\n");
digitalWrite(RelayPin, HIGH);
delay(1000);
}
return 0;
}
If your Raspberry Pi is connected with a Monitor through HDMI cable,then you can program in Python 3(IDLE) GUI environment directly,for more details please visit:
If your Pi is not connected with a monitor, you can use command line to remote access Pi through ssh client. for more details, please visit:
Step 1) download relay_with_led.py file by typing following command in terminal:
cd ~
sudo wget http://osoyoo.com/driver/pi3_start_learning_kit_lesson_9/relay_with_led.py
If you want to customize the sample code file , you can use nano editor to edit source code by typing following command:
sudo nano relay_with_led.py
Step 2) Run Program
sudo python ./relay_with_led.py
Step 3) Test Result
Once run the program, the replay will make tick-tock sound. In addition, you should see the LED Blink.
Python language Code Analysis
import RPi.GPIO as GPIO
import time
# set BCM_GPIO 17 as relay pin
RelayPin = 17
#print message at the begining ---custom function
def print_message():
print ('|**********************************************|')
print ('| Relay |')
print ('| ----------------------------------- |')
print ('| GPIO0 connect to relay control pin |')
print ('| led connect to relay NormalOpen pin |')
print ('| 5V connect to relay COM pin |')
print ('| Make relay to control a led |')
print ('| ----------------------------------- |')
print ('| |')
print ('| OSOYOO|')
print ('|**********************************************|\n')
print ('Program is running...')
print ('Please press Ctrl+C to end the program...')
print ('\n')
#setup function for some setup---custom function
def setup():
GPIO.setwarnings(False)
#set the gpio modes to BCM numbering
GPIO.setmode(GPIO.BCM)
#set RelayPin's mode to output,and initial level to LOW(0V)
GPIO.setup(RelayPin,GPIO.OUT,initial=GPIO.LOW)
#main function
def main():
#print info
print_message()
while True:
print ('|******************|')
print ('| ...Relay close |')
print ('|******************|\n')
#disconnect
GPIO.output(RelayPin,GPIO.LOW)
time.sleep(1)
print ('|*****************|')
print ('| Relay open... |')
print ('|*****************|\n')
print ('')
#connect
GPIO.output(RelayPin,GPIO.HIGH)
time.sleep(1)
#define a destroy function for clean up everything after the script finished
def destroy():
#turn off relay
GPIO.output(RelayPin,GPIO.LOW)
#release resource
GPIO.cleanup()
#
# if run this script directly ,do:
if __name__ == '__main__':
setup()
try:
main()
#when 'Ctrl+C' is pressed,child program destroy() will be executed.
except KeyboardInterrupt:
destroy()
DownLoad Url osoyoo.com