import network
from machine import Pin, ADC, PWM
from time import sleep
import blynklib_mp as blynklib
# 🔹 Blynk credentials
BLYNK_AUTH = "8o5jsHYjCm9NNzoshlfHNT4pKxADMmjS"
# 🔹 WiFi credentials
WIFI_SSID = "Wokwi-GUEST"
WIFI_PASS = ""
# 🔹 Connect to WiFi
print("Connecting to WiFi...")
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(WIFI_SSID, WIFI_PASS)
while not wifi.isconnected():
sleep(0.5)
print("✅ Connected:", wifi.ifconfig())
# 🔹 Initialize Blynk
blynk = blynklib.Blynk(BLYNK_AUTH)
# 🔹 Sensor and Actuator setup
gas_sensor = ADC(Pin(34))
gas_sensor.atten(ADC.ATTN_11DB)
gas_sensor.width(ADC.WIDTH_12BIT)
pir = Pin(32, Pin.IN)
servo = PWM(Pin(25), freq=50)
def set_servo(angle):
duty = int(((angle / 180) * 2 + 0.5) / 20 * 1023)
servo.duty(duty)
# 🔹 Optional: Handle button from Blynk app (Virtual Pin V3)
@blynk.handle_event("write V3")
def control_from_blynk(pin, value):
if int(value[0]) == 1:
set_servo(90)
print("🔄 Servo opened by Blynk button")
else:
set_servo(0)
print("🔄 Servo closed by Blynk button")
# 🔹 Main Loop
while True:
blynk.run() # Required for communication with Blynk server
gas_value = gas_sensor.read()
pir_status = pir.value()
print("Gas Value:", gas_value, "| PIR:", pir_status)
# Send sensor data to Blynk
blynk.virtual_write(0, gas_value) # Gas value → V0
blynk.virtual_write(1, pir_status) # PIR status → V1
# Hazard condition
if gas_value > 1000 or pir_status == 1:
set_servo(90)
blynk.virtual_write(2, 1) # Send alert to V2
print("⚠ Hazard Detected! Warning System Activated.")
else:
set_servo(0)
blynk.virtual_write(2, 0) # Safe status
print("✅ Zone Safe.")
sleep(2)