from dht import DHT11
from machine import SoftI2C, Pin
from i2c_lcd import I2cLcd
import utime
#____________________________________
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
#___________________________________
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
#____________________________________
Tecla_Arriba = 0 # Constantes para el teclado matricial
Tecla_Abajo = 1 # Constantes para el teclado matricial
filas = [15, 2, 4, 5] # Definición de los pines del teclado matricial
columnas = [18, 19, 23] # Definición de los pines del teclado matricial
pines_Filas = [Pin(pin_nombre, mode=Pin.OUT) for pin_nombre in filas] # Definimos los pines de las filas como salida
pines_Columnas = [Pin(pin_nombre, mode=Pin.IN, pull=Pin.PULL_DOWN) for pin_nombre in columnas] # Definimos los pines de las columnas de entrada con pull-down
teclas = [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['*', '0', '#']] # Matriz de teclas del teclado
#______________________________________
def inicio(): # Función para inicializar el teclado
for fila in range(0, 4):
for col in range(0, 4):
pines_Filas[fila].value(0)
def escanear(fila, columna): # Función para escanear el teclado
pines_Filas[fila].value(1)
key = None
if pines_Columnas[columna].value() == Tecla_Abajo:
key = teclas[fila][columna]
pines_Filas[fila].value(0)
return key
print("Iniciando... Presione una tecla: ")
inicio() # Inicializar todas las columnas en bajo
#______________________________________
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
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
key_pressed = "" # Escanear el teclado
for fila in range(4):
for columna in range(3):
tecla = escanear(fila, columna)
if tecla:
key_pressed = tecla
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()
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()
utime.sleep(0.5) # Esperar un poco antes de la próxima lectura