📖 Scenario: You have a Raspberry Pi connected to 3 relay modules. Each relay controls a different home appliance: a lamp, a fan, and a heater. You want to write a simple program to turn these appliances on or off based on a list of commands.
🎯 Goal: Build a Python program that stores the relay pins and appliance names, sets a command to turn appliances on or off, applies the commands using a loop, and prints the final states of each appliance.
📋 What You'll Learn
Create a dictionary with relay pins as keys and appliance names as values
Create a dictionary with appliance names as keys and their desired states ('ON' or 'OFF') as values
Use a for loop to iterate over the relay pins and appliances
Print the appliance name and its final state
💡 Why This Matters
🌍 Real World
Home automation systems use relay modules to control appliances like lights, fans, and heaters remotely or automatically.
💼 Career
Understanding how to control hardware with code is important for jobs in IoT, embedded systems, and home automation engineering.
Progress0 / 4 steps
1
Set up relay pins and appliances
Create a dictionary called relays with these exact entries: 17: 'Lamp', 27: 'Fan', 22: 'Heater'.
Raspberry Pi
Hint
Use curly braces {} to create a dictionary with keys as pin numbers and values as appliance names.
2
Set appliance commands
Create a dictionary called commands with these exact entries: 'Lamp': 'ON', 'Fan': 'OFF', 'Heater': 'ON'.
Raspberry Pi
Hint
Use a dictionary to map appliance names to their desired states.
3
Apply commands to relays
Use a for loop with variables pin and appliance to iterate over relays.items(). Inside the loop, create a variable state that gets the command for the appliance from commands.
Raspberry Pi
Hint
Use relays.items() to get both pin and appliance in the loop.
4
Print appliance states
Inside the for loop, add a print statement that shows the appliance name and its state in this exact format: "Lamp is ON".
Raspberry Pi
Hint
Use an f-string to print the appliance and its state exactly as shown.
Practice
(1/5)
1. What is the main purpose of using a relay module with a Raspberry Pi in home automation?
easy
A. To increase the Raspberry Pi's processing speed
B. To safely control high-power devices using low-power GPIO signals
C. To store data from sensors
D. To provide internet connectivity
Solution
Step 1: Understand relay module function
A relay module acts as a switch controlled by the Raspberry Pi's GPIO pins to turn devices ON or OFF safely.
Step 2: Identify the purpose in home automation
It allows the Pi to control high-power devices without directly handling high voltage or current.
Final Answer:
To safely control high-power devices using low-power GPIO signals -> Option B
Quick Check:
Relay modules = safe device control [OK]
Hint: Relays switch big power with small signals [OK]
Common Mistakes:
Thinking relay speeds up the Pi
Confusing relay with data storage
Assuming relay provides network access
2. Which of the following Python code snippets correctly sets GPIO pin 17 as output and turns the relay ON (assuming active LOW)?
easy
A. GPIO.setup(17, GPIO.OUT)
GPIO.output(17, GPIO.LOW)
B. GPIO.setup(17, GPIO.OUT)
GPIO.output(17, GPIO.HIGH)
C. GPIO.setup(17, GPIO.IN)
GPIO.output(17, GPIO.LOW)
D. GPIO.setup(17, GPIO.IN)
GPIO.output(17, GPIO.HIGH)
Solution
Step 1: Set GPIO pin mode
Pin 17 must be set as output to control the relay, so GPIO.setup(17, GPIO.OUT) is correct.
Step 2: Turn relay ON with active LOW
For active LOW relay, sending GPIO.LOW activates the relay, so GPIO.output(17, GPIO.LOW) is correct.
Final Answer:
GPIO.setup(17, GPIO.OUT) followed by GPIO.output(17, GPIO.LOW) -> Option A
Quick Check:
Active LOW means LOW signal turns relay ON [OK]
Hint: Active LOW relay ON means output LOW [OK]
Common Mistakes:
Setting pin as input instead of output
Using HIGH to turn ON active LOW relay
Confusing pin numbers
3. What will be the output of this Python code controlling a relay on GPIO pin 22?
A. Calling GPIO.output after GPIO.cleanup causes an error
B. GPIO.setup should be called after GPIO.cleanup
C. GPIO.setmode must be called twice
D. GPIO.output cannot use GPIO.HIGH
Solution
Step 1: Understand GPIO.cleanup() effect
GPIO.cleanup() resets all GPIO pins, releasing resources and resetting pin states.
Step 2: Check GPIO.output after cleanup
Calling GPIO.output after cleanup without re-setup causes a runtime error because pin 18 is no longer configured.
Final Answer:
Calling GPIO.output after GPIO.cleanup causes an error -> Option A
Quick Check:
Use GPIO.setup after cleanup before output [OK]
Hint: Don't use GPIO.output after cleanup without setup [OK]
Common Mistakes:
Thinking cleanup only clears pin states but allows output
Believing setup order is flexible
Assuming GPIO.HIGH is invalid
5. You want to control two relays connected to GPIO pins 5 and 6 to turn ON a fan and a light respectively. The relays are active LOW. Which Python code correctly turns ON the fan and turns OFF the light?
hard
A. GPIO.setup(5, GPIO.OUT)
GPIO.setup(6, GPIO.OUT)
GPIO.output(5, GPIO.HIGH)
GPIO.output(6, GPIO.HIGH)
B. GPIO.setup(5, GPIO.OUT)
GPIO.setup(6, GPIO.OUT)
GPIO.output(5, GPIO.HIGH)
GPIO.output(6, GPIO.LOW)
C. GPIO.setup(5, GPIO.IN)
GPIO.setup(6, GPIO.IN)
GPIO.output(5, GPIO.LOW)
GPIO.output(6, GPIO.HIGH)
D. GPIO.setup(5, GPIO.OUT)
GPIO.setup(6, GPIO.OUT)
GPIO.output(5, GPIO.LOW)
GPIO.output(6, GPIO.HIGH)
Solution
Step 1: Setup pins 5 and 6 as outputs
Both pins must be outputs to control relays: GPIO.setup(5, GPIO.OUT) and GPIO.setup(6, GPIO.OUT).
Step 2: Apply active LOW logic for relays
To turn ON the fan (pin 5), output LOW; to turn OFF the light (pin 6), output HIGH.
Final Answer:
Setup pins as output, output LOW on 5, HIGH on 6 -> Option D
Quick Check:
Active LOW ON = LOW, OFF = HIGH [OK]
Hint: Active LOW ON means output LOW, OFF means HIGH [OK]
Common Mistakes:
Setting pins as input instead of output
Reversing HIGH and LOW for active LOW relay
Turning both devices ON or OFF incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.