from dht import DHT11
from machine import SoftI2C, Pin
from i2c_lcd import I2cLcd
import utime
from machine import Pin
import time
from Keypad import Keypad
import _thread, gc
#________________________________________________________________________________________________________
sensorDHT = DHT11(Pin(13)) #Configuración del sensor DHT11
pir = Pin(12, Pin.IN, Pin.PULL_DOWN) #Configuración del sensor PIR
buzzer_pin = Pin(14, Pin.OUT) #Configuración del buzzer
ventilador_pin = Pin(27, Pin.OUT) #Configuración del ventilador
led_rojo = Pin(25, Pin.OUT) #Led que nos indica clave erronea
rele = Pin(26, Pin.OUT) #Rele para habilitar el electroiman
#_________________________________________________________________________________________________________
I2C_ADDR = 0x27 # Configuración de la pantalla LCD
totalRows = 2 # Configuración de la pantalla LCD
totalColumns = 16 # Configuración de la pantalla LCD
i2c = SoftI2C(sda=Pin(21), scl=Pin(22), freq=10000) # Definicion de pines de la LCD
lcd = I2cLcd(i2c, I2C_ADDR, totalRows, totalColumns) # Definicion de las librerias
#____________________________________________________________________________________________________________
# Definimos los pines de las filas y columnas
row_pins = [15, 2, 4, 5]
col_pins = [18, 19, 23, 17]
# Mapa del teclado matricial 4x4
key_map = [
['1', '2', '3', 'A'],
['4', '5', '6', 'B'],
['7', '8', '9', 'C'],
['*', '0', '#', 'D']
]
keypad = Keypad(row_pins, col_pins, key_map)
#______________________________________________________________________________________________________________
# Clave correcta para verificar
correct_password = "1234"
entered_password = ""
while True:
key = keypad.scan()
if key:
print("Tecla presionada:", key)
if key == '#': # Suponiendo que # es para verificar
if entered_password == correct_password:
print("Acceso Correcto")
rele.on()
led_rojo.off()
estado = pir.value() # Control del buzzer con el sensor PIR se enciende al detectar movimiento
if estado == 0:
print("sin movimiento")
buzzer_pin.on()
else:
print("deteccion de movimiento")
buzzer_pin.off()
else:
print("Acceso Denegado")
rele.off()
led_rojo.on()
entered_password = "" # Reseteamos la clave ingresada
elif key == '*': # Suponiendo que * es para borrar
entered_password = ""
print("Password Borrado")
else:
entered_password += key
time.sleep(0.3) # Pequeña pausa
def otro():
while True:
sensorDHT.measure()
temp = sensorDHT.temperature() # Medir temperatura
hum = sensorDHT.humidity() #Medir humedad
Temp = temp-10 # calibracion de la temperatura a la de bogota
Hum = hum+20 # calibracion de la humedad a la de bogota
data_line1 = "T:{:.1f}C H:{:.1f}%".format(Temp, Hum) # Formatear los datos de temperatura y humedad
print(data_line1)
'''lcd.move_to(0, 0) # Mostrar los datos de temperatura y humedad en la primera línea de la pantalla LCD
lcd.putstr(data_line1) # Mostrar los datos de temperatura y humedad en la primera línea de la pantalla LCD
lcd.move_to(0, 1) # Mostrar el dígito ingresado en la segunda línea de la pantalla LCD
lcd.putstr(key_pressed) # Mostrar el dígito ingresado en la segunda línea de la pantalla LCD'''
if temp < 15: # Control del ventilador si la temperaatura sube a mas de 15°
ventilador_pin.on()
else:
ventilador_pin.off()
_thread.start_new_thread(otro, ())