import RPi.GPIO as GPIO import time import blynklib import spidev # Blynk authentication BLYNK_AUTH = 'Your Auth Token' blynk = blynklib.Blynk (BLYNK_AUTH) # Pin definitions LED_PIN = 13 FLAME_SENSOR_PIN = 12 BUZZER_PIN = 4 RELAY_PIN = 5 SMOKE_SENSOR_CHANNEL = 0 # MCP3008 channel # Smoke threshold SMOKE_THRESHOLD = 500 # GPIO and SPI setup GPIO.setmode (GPIO.BCM) GPIO.setup ([LED_PIN, BUZZER_PIN, RELAY_PIN], GPIO.OUT) GPIO.setup (FLAME_SENSOR_PIN, GPIO.IN) spi = spidev.SpiDev () spi.open (0, 0) spi.max_speed_hz = 1350000 def read_adc (channel): adc = spi.xfer2([1, (8 + channel) << 4, 0]) return (( adc [1] & 3) << 8) + adc [2] while True: # Read sensors smoke_value = read_adc (SMOKE_SENSOR_CHANNEL) flame_status = GPIO.input (FLAME_SENSOR_PIN) # Update Blynk blynk.virtual_write (2, smoke_value ) blynk.virtual_write (0, flame_status ) # Smoke detection if smoke_value > SMOKE_THRESHOLD: GPIO.output ([LED_PIN, BUZZER_PIN, RELAY_PIN], GPIO.HIGH) blynk.notify ("Alert: Smoke Detected") else: GPIO.output ([LED_PIN, BUZZER_PIN, RELAY_PIN], GPIO.LOW) # Flame detection if flame_status == GPIO.LOW: GPIO.output ([LED_PIN, BUZZER_PIN, RELAY_PIN], GPIO.HIGH) blynk.notify ("Alert: Fire Detected") else: GPIO.output ([LED_PIN, BUZZER_PIN, RELAY_PIN], GPIO.LOW) time.sleep (0.5) blynk.run () def read_adc (channel): adc = spi.xfer2([1, (8 + channel) << 4, 0]) return (( adc [1] & 3) << 8) + adc [2] while True: # Read sensors smoke_value = read_adc (SMOKE_SENSOR_CHANNEL) flame_status = GPIO.input (FLAME_SENSOR_PIN) # Update Blynk blynk.virtual_write (2, smoke_value ) blynk.virtual_write (0, flame_status ) # Smoke detection if smoke_value > SMOKE_THRESHOLD: GPIO.output ([LED_PIN, BUZZER_PIN, RELAY_PIN], GPIO.HIGH) blynk.notify ("Alert: Smoke Detected") else: GPIO.output ([LED_PIN, BUZZER_PIN, RELAY_PIN], GPIO.LOW) # Flame detection if flame_status == GPIO.LOW: GPIO.output ([LED_PIN, BUZZER_PIN, RELAY_PIN], GPIO.HIGH) blynk.notify ("Alert: Fire Detected") else: GPIO.output ([LED_PIN, BUZZER_PIN, RELAY_PIN], GPIO.LOW) time.sleep (0.5) blynk.run () CODE: