'''
--------------------------------------------------------------------------
Equipo 8
Cervantes García Ximena
Cortes Mata Jose Yahir
Gonzalez Vazquez Jorge Carlos
'''
#Importando Librerias
import machine
from machine import Pin, I2C, Timer, PWM
import time
import dht #Libreria sensor de humedad
from hcsr04 import HCSR04 #Libreria del Ultrasonico
import max7219
from machine import Pin, SPI
#---------------------------------------------------------------
#Definiendo el UART
uart = machine.UART(2.115200)
#----------------------------------------------------------------
#Definiendo los objetos Tipo sensor Y sus pines ----------------
pin_trig_1 = 13 #Pin de trigger compartido_1 (2 sensores)
pin_trig_2 = 25 #Pin de trigger compartido_2 (2 sensores)
#---------------------------------------------------------------
sensor1 = HCSR04(pin_trig_1,12,echo_timeout_us=1000000)
sensor2 = HCSR04(pin_trig_1,27,echo_timeout_us=1000000)
sensor3 = HCSR04(pin_trig_1,26,echo_timeout_us=1000000)
sensor4 = HCSR04(pin_trig_1,14,echo_timeout_us=1000000)
#----------------------------------------------------------------
sensor5 = HCSR04(pin_trig_2,33,echo_timeout_us=1000000)
sensor6 = HCSR04(pin_trig_2,32,echo_timeout_us=1000000)
sensor7 = HCSR04(pin_trig_2,35,echo_timeout_us=1000000)
#----------------------------------------------------------------
#Definiendo el sensor de Humedad y el sensor Pir ---------------
dht22 = dht.DHT22(Pin(34))
Sensor_pir = machine.Pin(35,Pin.IN)
#----------------------------------------------------------------
# Configuración del servo motor --------------------------------
servo_pin_1 = 2 #Pin PWM donde se conecta el servo 1
servo_pin_2 = 4 #Pin PWM donde se conecta el servo 2
servo_1 = PWM(Pin(servo_pin_1), freq=50)
servo_1.duty(77) #Valor inicial del servo motor
servo_2 = PWM(Pin(servo_pin_2), freq=50)
servo_2.duty(77) #Valor inicial del servo motor
#------------------------------------------------------------------
# Configuración de los botones -----------------------------------
botonpin_1 = 18 #Pin del Boton 1
botonpin_2 = 19 #Pin del boton 2
boton_1 = Pin(botonpin_1, Pin.IN, Pin.PULL_UP)
boton_2 = Pin(botonpin_2, Pin.IN, Pin.PULL_UP)
#------------------------------------------------------------------
#Configuracion de los pines de los Leds (Rojo/verde)
led_1 = Pin(5, Pin.OUT, Pin.PULL_DOWN)
led_2 = Pin(21, Pin.OUT, Pin.PULL_DOWN)
led_3 = Pin(15, Pin.OUT, Pin.PULL_DOWN)
led_4 = Pin(3, Pin.OUT, Pin.PULL_DOWN)
led_5 = Pin(1, Pin.OUT, Pin.PULL_DOWN)
led_6 = Pin(22, Pin.OUT, Pin.PULL_DOWN)
led_7 = Pin(23, Pin.OUT, Pin.PULL_DOWN)
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Funciones del Sistema ------------------------------------------
#Leyendo los sensores
def read_sensors():
# Lee los valores de los sensores
dht22.measure()
temperatura_sensor = dht22.temperature()
humedad_sensor = dht22.humidity()
# Crea una cadena de texto con los valores de los sensores
sensor_data = f"Temperatura: {temperatura_sensor}, Humedad: {humedad_sensor}, "
return sensor_data
#------------------------------------------------------------------
# Mandando las lecturas al serial
def send_sensor_data(timer):
# Lee los valores de los sensores
data = read_sensors()
# Envia los datos por el puerto serial
uart.write(data + '\n')
# Movieminto de los servomotores ----------------------------------
def mover_sero_1():
servo_1.duty(115)
time.sleep(2)
servo_1.duty(77)
def mover_sero_2():
servo_2.duty(115)
time.sleep(2)
servo_2.duty(77)
#-------------------------------------------------------------------
#Sensor Pir --------------------------------------------------------
def sensor_pir_medicion():
lectura=Sensor_pir.value()
if lectura==1:
print('Detectado')
else:
print('Sin detectar')
#-------------------------------------------------------------------
#Sensor de Huemdad -------------------------------------------------
def sensor_humedad():
dht22.measure()
print(str(dht22.temperature()))
print(str(dht22.humidity()))
#--------------------------------------------------------------------
# Medir todas las distancias ------------------
def medir_sensores_ultrasonido(timer):
lectura_1 = sensor1.distance_cm()
lectura_2 = sensor2.distance_cm()
lectura_3 = sensor3.distance_cm()
lectura_4 = sensor4.distance_cm()
lectura_5 = sensor4.distance_cm()
lectura_6 = sensor4.distance_cm()
lectura_7 = sensor4.distance_cm()
if lectura_1 < 6: led_1.on()
if lectura_1 > 6: led_1.off()
if lectura_2 < 6: led_2.on()
if lectura_2 > 6: led_2.off()
if lectura_3 < 6: led_3.on()
if lectura_3 > 6:led_3.off()
if lectura_4 < 6: led_4.on()
if lectura_4 > 6: led_4.off()
if lectura_5 < 6: led_5.on()
if lectura_5 > 6: led_5.off()
if lectura_6 < 6: led_6.on()
if lectura_6 > 6: led_6.off()
if lectura_7 < 6: led_7.on()
if lectura_7 > 6: led_7.off()
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#+++++++++++++++++++++++++++++++++++++++++++
# Timer de los sensores ------
# Creación del temporizador para la medición periódica
timer_medicion = machine.Timer(-1)
# Funcionamiento del temporizador para medir cada 2.5 segundos
timer_medicion.init(period=2500, mode=Timer.PERIODIC, callback=medir_sensores_ultrasonido)
# Configura un temporizador para el sensor de humedad
timer = machine.Timer(-1)
timer.init(period=2000, mode=machine.Timer.PERIODIC, callback=send_sensor_data)
#++++++++++++++++++++++++++++++++++++++++++++++++++
# *******************************************************************
#Comiensa el bucle principal del código
while True:
print('1 ',lectura_1)
print('2 ',lectura_2)
print('3 ',lectura_3)
#Logica de los botones que controlan a los servo motores
#--------------------------------------
if boton_1.value() == 0:
mover_sero_1()
time.sleep(0.5)
if boton_2.value() == 0:
mover_sero_2()
time.sleep(0.5)
#--------------------------------------