import network
import urequests
import time
from machine import Pin, PWM
import utime
# Configuración del sensor PIR y el zumbador
pir = Pin(15, Pin.IN, Pin.PULL_DOWN)
buzzer = PWM(Pin(4)) # Inicializa el zumbador como PWM en el pin 4
buzzer.freq(200) # Establece la frecuencia del zumbador a 1 kHz
# Función para conectar a WiFi
def conectar_wifi():
print("Conectando a la red", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect("Wokwi-GUEST", None)
while not sta_if.isconnected():
print("*", end="")
time.sleep(0.30)
print("\nConexión exitosa")
print("Dirección IP:", sta_if.ifconfig()[0])
# Función para enviar notificación
def enviar_notificacion():
try:
print("Enviando mensaje por HTTPS...", end="")
respuesta = urequests.get("https://reqres.in/api/users?page=2")
if respuesta.status_code == 200:
print("Se envió la notificación.")
else:
print(f"Error en la notificación. Código de estado: {respuesta.status_code}")
respuesta.close()
except Exception as e:
print(f"Error al enviar notificación: {e}")
# Conectar a WiFi solo una vez al inicio
conectar_wifi()
# Variables para gestionar el estado del zumbador y notificaciones
notificado = False
# Bucle principal
while True:
estado = pir.value()
print(estado)
utime.sleep_ms(50)
if estado == 0:
# No hay movimiento, apagar el zumbador
print("Normal")
buzzer.duty(0) # Apaga el zumbador
notificado = False # Resetear el estado de notificación
else:
# Se detecta movimiento, encender el zumbador
print("Se registra movimiento")
buzzer.duty(512) # Enciende el zumbador
print("El zumbador está sonando")
# Enviar notificación solo si aún no se ha notificado
if not notificado:
enviar_notificacion()
notificado = True
# Esperar 10 segundos antes de volver a detectar movimiento
utime.sleep(10)