import time
import machine
import dht
import http.client
import json
import network
# Define Wi-Fi settings
WIFI_SSID = "Wokwi-GUEST"
WIFI_PASSWORD = ""
# Define Firebase project settings
FIREBASE_PROJECT_ID = "flood-monitoring-511bd"
FIREBASE_API_KEY = "AIzaSyBMyxoZEboMBnPFsheXL68ij0IT48XsfHYv"
FIREBASE_DATABASE_NAME = "default"
# Define GPIO pins
TRIG_PIN = machine.Pin(2, machine.Pin.OUT)
ECHO_PIN = machine.Pin(3, machine.Pin.IN)
BUZZER_PIN = machine.Pin(4, machine.Pin.OUT)
DHT_PIN = machine.Pin(5)
LED_PIN = machine.Pin(6, machine.Pin.OUT)
# Connect to Wi-Fi
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(WIFI_SSID, WIFI_PASSWORD)
while not wifi.isconnected():
pass
print("Connected to Wi-Fi")
def distance_measurement():
TRIG_PIN.on()
time.sleep_us(10)
TRIG_PIN.off()
# ... rest of your distance measurement code ...
def read_dht_sensor():
d = dht.DHT22(DHT_PIN)
d.measure()
return d.temperature(), d.humidity()
buzz_start_time = None
while True:
dist = distance_measurement()
temp, humidity = read_dht_sensor()
if dist < 50:
BUZZER_PIN.on()
LED_PIN.on()
status = "Flooding Detected"
buzz_start_time = time.ticks_ms()
elif buzz_start_time is not None and time.ticks_diff(time.ticks_ms(), buzz_start_time) >= 60000:
BUZZER_PIN.off()
LED_PIN.off()
status = "No Flooding Detected"
else:
status = "No Flooding Detected"
print(f"Distance: {dist:.2f} cm")
print(f"Temperature: {temp:.2f}°C, Humidity: {humidity:.2f}%")
print("Status:", status)
# Send data to Firebase
data = {
"distance": dist,
"temperature": temp,
"humidity": humidity,
"status": status
}
# Create an HTTP connection to Firebase
conn = http.client.HTTPSConnection(f"{FIREBASE_PROJECT_ID}.firebaseio.com")
# Send a PUT request to update data in the Realtime Database
conn.request(
"PUT",
f"/{FIREBASE_DATABASE_NAME}/sensor-data.json?auth={FIREBASE_API_KEY}",
json.dumps(data),
)
# Close the connection
conn.close()
time.sleep(2)
Loading
pi-pico-w
pi-pico-w