from machine import Pin, ADC
import time
# =========================================
# GAS DETECTION SYSTEM
# Raspberry Pi Pico + MQ2 + Buzzer + Stepper
# =========================================
# MQ2 analog output -> GP26 (ADC0)
gas_sensor = ADC(26)
# Buzzer -> GP15
buzzer = Pin(15, Pin.OUT)
# Bipolar stepper motor -> GP2, GP3, GP4, GP5
IN1 = Pin(2, Pin.OUT)
IN2 = Pin(3, Pin.OUT)
IN3 = Pin(4, Pin.OUT)
IN4 = Pin(5, Pin.OUT)
# Gas threshold
GAS_THRESHOLD = 30000
# =========================================
# STEPPER MOTOR
# =========================================
sequence = [
[1, 0, 1, 0],
[0, 1, 1, 0],
[0, 1, 0, 1],
[1, 0, 0, 1]
]
def run_fan():
for step in sequence:
IN1.value(step[0])
IN2.value(step[1])
IN3.value(step[2])
IN4.value(step[3])
time.sleep_ms(5)
def stop_fan():
IN1.value(0)
IN2.value(0)
IN3.value(0)
IN4.value(0)
# =========================================
# INITIAL STATE
# =========================================
buzzer.value(0)
stop_fan()
print("================================")
print(" GAS DETECTION SYSTEM")
print("================================")
print("System Started")
print()
# =========================================
# MAIN LOOP
# =========================================
while True:
# Read MQ2 analog value
gas_value = gas_sensor.read_u16()
print("Gas Level:", gas_value)
# GAS ABOVE THRESHOLD
if gas_value > GAS_THRESHOLD:
print("WARNING! GAS DETECTED!")
print("Exhaust Fan: ON")
print("Alarm: ON")
# Turn ON buzzer
buzzer.value(1)
# Rotate stepper = Exhaust Fan ON
run_fan()
# GAS BELOW THRESHOLD
else:
print("Gas level normal.")
print("Exhaust Fan: OFF")
print("Alarm: OFF")
# Turn OFF buzzer
buzzer.value(0)
# Stop stepper
stop_fan()
print("----------------------------")
time.sleep(1)