Bird
Raised Fist0
Raspberry Piprogramming~10 mins

Automated plant watering system in Raspberry Pi - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Automated plant watering system
Start System
↓
Read Soil Moisture Sensor
↓
Is moisture < threshold?
No→Wait and Read Again
Yes↓
Activate Water Pump
↓
Water for set time
↓
Deactivate Water Pump
↓
Wait before next check
↩Back to Read Soil Moisture Sensor
The system reads soil moisture, checks if watering is needed, waters if dry, then waits before checking again.
Execution Sample
Raspberry Pi
import time
from gpiozero import MCP3008, OutputDevice

sensor = MCP3008(channel=0)
pump = OutputDevice(17)

while True:
    moisture = sensor.value
    if moisture < 0.3:
        pump.on()
        time.sleep(5)
        pump.off()
    time.sleep(10)
This code reads soil moisture and waters the plant for 5 seconds if moisture is below 0.3, then waits 10 seconds before repeating.
Execution Table
StepActionMoisture ValueCondition (moisture < 0.3)Pump StateWait Time (seconds)
1Read sensor0.25TrueOff0
2Check condition0.25TrueOff0
3Pump ON0.25TrueOn5
4Pump OFF0.25TrueOff0
5Wait before next check0.25TrueOff10
6Read sensor0.35FalseOff0
7Check condition0.35FalseOff0
8Pump remains OFF0.35FalseOff0
9Wait before next check0.35FalseOff10
10Read sensor0.20TrueOff0
11Check condition0.20TrueOff0
12Pump ON0.20TrueOn5
13Pump OFF0.20TrueOff0
14Wait before next check0.20TrueOff10
💡 Loop continues indefinitely; this trace shows two watering cycles and one skip.
Variable Tracker
VariableStartAfter Step 1After Step 6After Step 10Final
moistureN/A0.250.350.200.20
pump stateOffOffOffOffOff
Key Moments - 3 Insights
Why does the pump turn on only when moisture is below 0.3?
Because the condition in the execution_table at steps 2, 7, and 11 checks if moisture < 0.3; only when True does the pump activate.
What happens if the moisture is above 0.3?
At step 7 and 8, the condition is False, so the pump stays off and the system waits before checking again.
Why is there a wait time after watering or skipping watering?
The wait time (steps 5, 9, 14) prevents the system from checking too frequently, giving time for soil moisture to change.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the pump state at step 8?
AOff
BOn
CTurning On
DUnknown
💡 Hint
Check the 'Pump State' column at step 8 in the execution_table.
At which step does the system decide not to water the plant?
AStep 2
BStep 7
CStep 11
DStep 3
💡 Hint
Look at the 'Condition' column in the execution_table where it is False.
If the moisture threshold changed to 0.4, how would the pump behavior change at step 6?
APump would remain OFF
BPump would turn ON only after waiting
CPump would turn ON
DNo change
💡 Hint
Compare moisture value at step 6 with new threshold 0.4 in the execution_table.
Concept Snapshot
Automated Plant Watering System:
- Read soil moisture sensor value
- If moisture < threshold (e.g., 0.3), turn pump ON
- Water for fixed time (e.g., 5 seconds)
- Turn pump OFF
- Wait before next sensor reading
- Repeat indefinitely
Full Transcript
This automated plant watering system uses a soil moisture sensor connected to a Raspberry Pi. The program continuously reads the moisture level. If the moisture is below a set threshold (0.3), it activates a water pump for 5 seconds to water the plant. After watering, the pump turns off and the system waits 10 seconds before checking again. If the moisture is above the threshold, the pump stays off and the system waits before the next check. This cycle repeats indefinitely to keep the plant properly watered without overwatering.

Practice

(1/5)
1.

What is the main purpose of an automated plant watering system using a Raspberry Pi?

easy
A. To control room temperature automatically
B. To water plants continuously without checking soil
C. To measure sunlight for plants
D. To water plants only when the soil is dry

Solution

  1. Step 1: Understand the system goal

    The system uses sensors to check soil moisture.
  2. Step 2: Identify the watering condition

    It waters plants only when soil is dry to save water.
  3. Final Answer:

    To water plants only when the soil is dry -> Option D
  4. Quick Check:

    Water only if dry = A [OK]
Hint: Focus on saving water by watering only when needed [OK]
Common Mistakes:
  • Thinking it waters plants all the time
  • Confusing soil moisture with sunlight
  • Assuming it controls temperature
2.

Which of the following Python code snippets correctly sets up a GPIO pin 17 as an output to control a water pump?

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
# What goes here?
easy
A. GPIO.setup(17, GPIO.OUT)
B. GPIO.setup(17, GPIO.IN)
C. GPIO.output(17, GPIO.IN)
D. GPIO.output(17, GPIO.OUT)

Solution

  1. Step 1: Identify pin mode setup

    GPIO.setup(pin_number, GPIO.OUT) sets pin as output.
  2. Step 2: Choose correct function and mode

    GPIO.setup(17, GPIO.OUT) correctly sets pin 17 as output.
  3. Final Answer:

    GPIO.setup(17, GPIO.OUT) -> Option A
  4. Quick Check:

    Setup output pin = A [OK]
Hint: Use GPIO.setup(pin, GPIO.OUT) to set output pins [OK]
Common Mistakes:
  • Using GPIO.IN instead of GPIO.OUT for output pins
  • Calling GPIO.output instead of GPIO.setup to set mode
  • Confusing pin numbers or modes
3.

What will be the output of this Python code controlling a pump based on soil moisture sensor reading?

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
soil_moisture = 300  # sensor value
if soil_moisture < 400:
    GPIO.output(17, GPIO.HIGH)
    print("Pump ON")
else:
    GPIO.output(17, GPIO.LOW)
    print("Pump OFF")
medium
A. SyntaxError
B. Pump OFF
C. Pump ON
D. No output

Solution

  1. Step 1: Check soil moisture condition

    Value 300 is less than 400, so condition is true.
  2. Step 2: Determine pump action and output

    GPIO.output sets pin HIGH and prints "Pump ON".
  3. Final Answer:

    Pump ON -> Option C
  4. Quick Check:

    300 < 400 triggers Pump ON [OK]
Hint: Compare sensor value to threshold to decide pump state [OK]
Common Mistakes:
  • Misreading the comparison operator
  • Confusing HIGH and LOW states
  • Ignoring print output
4.

Identify the error in this Raspberry Pi watering system code snippet:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
soil_moisture = 500
if soil_moisture > 400
    GPIO.output(17, GPIO.LOW)
    print("Pump OFF")
medium
A. soil_moisture value is invalid
B. Missing colon (:) after if condition
C. GPIO.output should be GPIO.setup
D. Wrong GPIO pin number

Solution

  1. Step 1: Check if statement syntax

    Python requires a colon (:) after the if condition.
  2. Step 2: Identify missing colon error

    The code misses ':' after 'if soil_moisture > 400', causing syntax error.
  3. Final Answer:

    Missing colon (:) after if condition -> Option B
  4. Quick Check:

    if statement needs ':' = D [OK]
Hint: Always put ':' after if conditions in Python [OK]
Common Mistakes:
  • Forgetting colon after if
  • Confusing GPIO.output with GPIO.setup
  • Assuming pin number is wrong
5.

You want to improve the watering system to water plants only if soil moisture is below 400 and only between 6 AM and 8 AM. Which Python code snippet correctly adds this time condition?

import datetime
now = datetime.datetime.now()
soil_moisture = 350
if soil_moisture < 400 and ???:
    print("Watering plants")
else:
    print("No watering")
hard
A. now.hour >= 6 and now.hour <= 8
B. now.hour > 6 or now.hour < 8
C. now.hour < 6 and now.hour > 8
D. now.hour == 6 or now.hour == 8

Solution

  1. Step 1: Understand time range condition

    We want hours from 6 to 8 inclusive, so hour >= 6 and hour <= 8.
  2. Step 2: Combine soil moisture and time conditions

    Use 'and' to check both soil moisture and time range.
  3. Final Answer:

    now.hour >= 6 and now.hour <= 8 -> Option A
  4. Quick Check:

    Check hour between 6 and 8 = B [OK]
Hint: Use 'and' with hour >= 6 and <= 8 for time range [OK]
Common Mistakes:
  • Using 'or' instead of 'and' for time range
  • Using strict inequalities excluding 6 or 8
  • Checking only exact hours 6 or 8
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard