import time
import urequests
from machine import Pin, PWM
import network
import BlynkLib
# WiFi credentials
WIFI_SSID = "Your_WiFi_SSID"
WIFI_PASS = "Your_WiFi_Password"
# Blynk authentication token
BLYNK_AUTH_TOKEN = "Your_Blynk_Auth_Token"
# Initialize Wi-Fi connection
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(WIFI_SSID, WIFI_PASS)
# Wait until connected to WiFi
while not wifi.isconnected():
pass
print("Connected to WiFi")
# Initialize Blynk
blynk = BlynkLib.Blynk(BLYNK_AUTH_TOKEN)
# Virtual pin handler
@blynk.handle_event('write V1') # Adjust 'V1' to match the virtual pin you are using
def write_virtual_pin_handler(pin, value):
print('Virtual Pin {} value: {}'.format(pin, value))
# Ultrasonic sensor pins
trig_pin = Pin(16, Pin.OUT)
echo_pin = Pin(17, Pin.IN)
# Buzzer pins
buzzer_pin = Pin(4, Pin.OUT)
buzzer_pwm = PWM(buzzer_pin)
buzzer_pwm.freq(500)
def measure_distance():
trig_pin.value(1)
time.sleep_us(10)
trig_pin.value(0)
while echo_pin.value() == 0:
pulse_start = time.ticks_us()
while echo_pin.value() == 1:
pulse_end = time.ticks_us()
pulse_duration = time.ticks_diff(pulse_end, pulse_start)
distance = pulse_duration * 0.034 / 2
return distance
def activate_buzzer():
buzzer_pwm.duty(512)
time.sleep(1)
buzzer_pwm.duty(0)
def send_to_thingspeak(distance):
data = {"api_key": THINGSPEAK_API_KEY, "field1": str(distance)}
response = urequests.post(THINGSPEAK_URL, json=data)
print("ThingSpeak response:", response.text)
response.close()
try:
while True:
blynk.run()
distance = measure_distance()
print("Distance:", distance, "cm")
send_to_thingspeak(distance)
if distance < 10:
activate_buzzer()
time.sleep(0.5)
except KeyboardInterrupt:
trig_pin.deinit()
echo_pin.deinit()
buzzer_pin.deinit()