from machine import Pin, PWM, Timer
import utime
import time
import machine
from dht11.py import DHT11, InvalidChecksum
# Pin configuration
flame_sensor_pin = 16
flame_sensor = Pin(flame_sensor_pin, Pin.IN)
buzzer_pin = 17
buzzer = Pin(buzzer_pin, Pin.OUT)
utime.sleep(0.5)
# Flame sensor interrupt handler
def flame_sensor_interrupt(pin):
if pin.value() == 0:
print("Flame Detected! Please Evacuate")
pwm.duty_ns(MAX)
while pin.value() == 0:
buzzer.high()
utime.sleep(0.5)
buzzer.low()
utime.sleep(0.5)
# Configure flame sensor interrupt
flame_sensor.irq(trigger=Pin.IRQ_FALLING, handler=flame_sensor_interrupt)
# Other pin configurations
adc = machine.ADC(26)
conversion = 100 / 65535
Trig = Pin(14, Pin.OUT)
Echo = Pin(15, Pin.IN)
# Distance sensor
def distance():
Trig.value(0)
time.sleep_us(4)
Trig.value(1)
time.sleep_us(10)
Trig.value(0)
while Echo.value() == 0:
low = time.ticks_us()
while Echo.value() == 1:
high = time.ticks_us()
t = high - low
return t
# Servo Motor
MID = 1500000
MIN = 1000000
MAX = 2000000
pwm = PWM(Pin(0))
pwm.freq(50)
pwm.duty_ns(MID)
# Buzzer set to low
buzzer.low()
# Infinite loop
while True:
pwm.duty_ns(MIN)
raincov = 100 - (adc.read_u16() * conversion)
rain = round(raincov, 1)
flame_sensor_interrupt(flame_sensor)
if flame_sensor.value()==1:
print("System Normal")
if rain <= 30:
print("No Rain", str(rain))
elif 30 < rain <= 50:
print("Mild Rain", str(rain))
else:
print("Heavy Rain", str(rain))
while rain > 1:
pwm.duty_ns(MIN)
if flame_sensor.value() == 1:
buzzer.high()
utime.sleep(0.5)
buzzer.low()
utime.sleep(0.5)
else:
break
rain1 = rain
# Distance sensor logic
rain2 = 100 - (adc.read_u16() * conversion)
if abs(rain2 - rain1) > 10 or flame_sensor.value() == 0:
break
else:
dis = distance() # Get the distance
cm = dis / 29 / 2 # Convert time to "cm"
cm = int(cm)
inch = dis / 74 / 2 # Convert time to "inch"
inch = int(inch)
time.sleep(5)
pin = Pin(28, Pin.OUT, Pin.PULL_DOWN)
sensor = DHT11(pin)
t = sensor.temperature
h = sensor.humidity
print("Distance: ", cm, "cm ", inch, " inch")
print("Temperature: {}".format(t))
print("Humidity: {}".format(h))
time.sleep(5)
print("")
utime.sleep(1)