from machine import Pin, ADC, PWM
from time import sleep
# MQ2 Gas Sensor
mq2 = ADC(26) # MQ2 Analog Output connected to GP26 (ADC0)
threshold = 25000 # Adjust based on testing
# Stepper Motor Control Pins
step_pin = Pin(16, Pin.OUT) # STEP pin to GP16
dir_pin = Pin(17, Pin.OUT) # DIR pin to GP17
# Buzzer (PWM for sound)
buzzer = PWM(Pin(15)) # Buzzer on GP15
buzzer.freq(1000) # Set frequency to 1kHz
# Function to turn buzzer on/off
def alarm_on():
buzzer.duty_u16(30000) # Set duty cycle (volume)
def alarm_off():
buzzer.duty_u16(0) # Turn off buzzer
# Function to rotate stepper motor
def rotate_motor(steps, direction):
dir_pin.value(direction) # 1 = Clockwise, 0 = Counterclockwise
for _ in range(steps):
step_pin.value(1)
sleep(0.001)
step_pin.value(0)
sleep(0.001)
# Main loop
while True:
gas_level = mq2.read_u16() # Read gas sensor value
print("Gas Level:", gas_level)
if gas_level > threshold:
print("Gas detected! Turning on fan and alarm.")
alarm_on() # Turn on buzzer
rotate_motor(200, 1) # Rotate stepper motor
else:
print("Gas level normal.")
alarm_off() # Turn off buzzer
sleep(1) # Wait before next reading