from machine import Pin, ADC, I2C
import utime
from ssd1306 import SSD1306_I2C
import network
import urequests
alto = 64
ancho = 128
sensorMQ135 = ADC(Pin(32))
led_marihuana = Pin(5, Pin.OUT) # Pin del LED para marihuana
led_cigarrillo = Pin(18, Pin.OUT) # Pin del LED para cigarrillo
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled = SSD1306_I2C(ancho, alto, i2c)
sensorMQ135.width(ADC.WIDTH_10BIT)
sensorMQ135.atten(ADC.ATTN_11DB)
umbral_marihuana = 900 # Ajusta este valor según tus pruebas
umbral_cigarrillo = 220 # Ajusta este valor según tus pruebas
IFTTT_KEY = "dR-xgs7oATrp13sgRj-bZq"
EVENTO_IFTTT = "Mq135_deteccion"
def conectawifi():
wifi = network.WLAN(network.STA_IF)
if not wifi.isconnected():
wifi.active(True)
wifi.connect('Wokwi-GUEST', '')
print("Conectando a Wokwi-GUEST...")
timeout = 0
while not wifi.isconnected() and timeout < 5:
print(5 - timeout)
timeout += 1
utime.sleep(1)
if wifi.isconnected():
print("Conectado")
mostrar_en_oled("Conectado a Wokwi-GUEST", "")
return True
else:
print("Tiempo de espera agotado. No conectado.")
mostrar_en_oled("Error al conectar", "Wokwi-GUEST")
return False
def mostrar_en_oled(linea1, linea2):
oled.fill(0)
oled.text(linea1, 0, 10, 1)
oled.text(linea2, 0, 30, 1)
oled.show()
def enviar_datos_ifttt(deteccion, contaminacion):
url_ifttt = f"https://maker.ifttt.com/trigger/{EVENTO_IFTTT}/with/key/{IFTTT_KEY}"
payload = {"value1": deteccion, "value2": contaminacion}
try:
response = urequests.post(url_ifttt, json=payload)
if response.status_code == 200:
print("Datos enviados exitosamente a IFTTT")
else:
print("Error al enviar datos a IFTTT. Código de estado:", response.status_code)
except Exception as e:
print("Error al enviar datos a IFTTT:", e)
# Configurar pines de LED inicialmente apagados
led_marihuana.off()
led_cigarrillo.off()
# Intenta conectar a Wokwi-GUEST
if conectawifi():
print("Conexión exitosa a Wokwi-GUEST.")
mostrar_en_oled("Conectado a Wokwi-GUEST", "")
else:
print("Error al conectar a Wokwi-GUEST.")
mostrar_en_oled("Error al conectar", "Wokwi-GUEST")
while True:
lecturaMQ135 = int(sensorMQ135.read())
ppm = 1200 / 1023
co = ppm * lecturaMQ135
print("Monóxido de carbono:", co, "ppm")
# Aquí ajusta las condiciones para distinguir entre cigarro y marihuana
if lecturaMQ135 < umbral_marihuana:
deteccion = "Ningún humo"
led_marihuana.on()
utime.sleep_ms(1)
led_cigarrillo.on()
utime.sleep_ms(1)
elif umbral_marihuana <= lecturaMQ135 < umbral_cigarrillo:
deteccion = "Marihuana"
led_marihuana.on()
led_cigarrillo.off()
else:
deteccion = "Cigarrillo"
led_marihuana.off()
led_cigarrillo.on()
print("Detección de aditivos:", deteccion)
mostrar_en_oled("Monóxido de carbono:", f"{co} ppm")
utime.sleep_ms(1000)
mostrar_en_oled("Detección de aditivos:", deteccion)
# Envía datos a IFTTT
enviar_datos_ifttt(deteccion, co)
utime.sleep_ms(1000)