| 
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -13,6 +13,7 @@ import time #Delays | 
															
														
														
													
														
															
																 | 
																 | 
																import serial #comunicación con el monitor serial de Arduino | 
																 | 
																 | 
																import serial #comunicación con el monitor serial de Arduino | 
															
														
														
													
														
															
																 | 
																 | 
																from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg #Crear una figura para insertar en tkinter | 
																 | 
																 | 
																from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg #Crear una figura para insertar en tkinter | 
															
														
														
													
														
															
																 | 
																 | 
																import tkinter as tk #Para la interfaz | 
																 | 
																 | 
																import tkinter as tk #Para la interfaz | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																from matplotlib.lines import Line2D #Para hacer las líneas de las gráficas | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																#Variables a utilizar | 
																 | 
																 | 
																#Variables a utilizar | 
															
														
														
													
														
															
																 | 
																 | 
																global isRun #Valor booleano de programa corriendo | 
																 | 
																 | 
																global isRun #Valor booleano de programa corriendo | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -20,11 +21,12 @@ global on #Valor booleano del estatus del transistor | 
															
														
														
													
														
															
																 | 
																 | 
																on = False #Inicializa transistor apagado | 
																 | 
																 | 
																on = False #Inicializa transistor apagado | 
															
														
														
													
														
															
																 | 
																 | 
																isReceiving = False #Valor booleano de recibiendo datos | 
																 | 
																 | 
																isReceiving = False #Valor booleano de recibiendo datos | 
															
														
														
													
														
															
																 | 
																 | 
																isRun = True | 
																 | 
																 | 
																isRun = True | 
															
														
														
													
														
															
																 | 
																 | 
																dato1 = 0.0 #Variable del dato convertido a float | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																serialPort = 'COM6' #Puerto al que está conectado el Arduino | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																dato = 0.0 #Variable del dato convertido a float | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																serialPort = 'COM3' #Puerto al que está conectado el Arduino | 
															
														
														
													
														
															
																 | 
																 | 
																baudRate = 9600 #Baudios configurados en Arduino | 
																 | 
																 | 
																baudRate = 9600 #Baudios configurados en Arduino | 
															
														
														
													
														
															
																 | 
																 | 
																datos = 0.0 #Variable de dato a leer desde Arduino | 
																 | 
																 | 
																datos = 0.0 #Variable de dato a leer desde Arduino | 
															
														
														
													
														
															
																 | 
																 | 
																estado = "off" #Variable de estado que se enviará al serial | 
																 | 
																 | 
																estado = "off" #Variable de estado que se enviará al serial | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																numData = 2 #Número de datos a recibir de Arduino | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																#Función de lectura de datos en Arduino | 
																 | 
																 | 
																#Función de lectura de datos en Arduino | 
															
														
														
													
														
															
																 | 
																 | 
																def leer_datos(): | 
																 | 
																 | 
																def leer_datos(): | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -33,28 +35,33 @@ def leer_datos(): | 
															
														
														
													
														
															
																 | 
																 | 
																    print("leyendo") | 
																 | 
																 | 
																    print("leyendo") | 
															
														
														
													
														
															
																 | 
																 | 
																    while(isRun): | 
																 | 
																 | 
																    while(isRun): | 
															
														
														
													
														
															
																 | 
																 | 
																        global isReceiving #valor booleano de recibiendo datos | 
																 | 
																 | 
																        global isReceiving #valor booleano de recibiendo datos | 
															
														
														
													
														
															
																 | 
																 | 
																        global dato1 #dato a recibir desde Arduino | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        print("RECIBIENDO...") | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        datos = arduino.readline().decode("utf-8").strip() #Lectura del dato | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        print(datos) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        if(datos != ''): #Asegurar que se haya leído un dato | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            dato1 = float(datos) #Conversión del dato en float | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            print(dato1) #Datos en float | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            var.set("TEMPERATURA: " + str(dato1) + " °C") #impresión del dato numérico en la interfaz | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        global dato #dato a recibir desde Arduino | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        global data #Colección de datos a graficar | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        for i in range(numData): | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            datos = arduino.readline().decode("utf-8").strip() #Lectura del dato | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            print(datos) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if(datos != ''): #Asegurar que se haya leído un dato | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                print("RECIBIENDO..." + str(i)) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                dato = float(datos) #Conversión del dato en float | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                data[i].append(dato) #Agrega el dato a la colección | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                var.set("TEMPERATURA: " + str(dato) + " °C") #impresión del dato numérico en la interfaz | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            else: | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                break; | 
															
														
														
													
														
															
																 | 
																 | 
																            isReceiving = True #Confirmación de que se ha recibido el dato | 
																 | 
																 | 
																            isReceiving = True #Confirmación de que se ha recibido el dato | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																#Función para iniciar la gráfica | 
																 | 
																 | 
																#Función para iniciar la gráfica | 
															
														
														
													
														
															
																 | 
																 | 
																def iniciarGrafica(self, muestras,lines): | 
																 | 
																 | 
																def iniciarGrafica(self, muestras,lines): | 
															
														
														
													
														
															
																 | 
																 | 
																    global dato1 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    data.append(dato1) #Agrega el dato a la colección | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    lines.set_data(range(muestras), data) #Se grafica en la línea la colección de datos | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    global dato | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    if(datos != ''): | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        lines[0].set_data(range(muestras), data[0]) #Se grafica en la línea la colección de datos | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        lines[1].set_data(range(muestras), data[1]) | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																#Establecer conexión con Arduino | 
																 | 
																 | 
																#Establecer conexión con Arduino | 
															
														
														
													
														
															
																 | 
																 | 
																def conectar_serial():  | 
																 | 
																 | 
																def conectar_serial():  | 
															
														
														
													
														
															
																 | 
																 | 
																    global arduino #Variable que va aguardar la conexión | 
																 | 
																 | 
																    global arduino #Variable que va aguardar la conexión | 
															
														
														
													
														
															
																 | 
																 | 
																    try: | 
																 | 
																 | 
																    try: | 
															
														
														
													
														
															
																 | 
																 | 
																        arduino = serial.Serial(serialPort, baudRate) #Asignación del objeto a la variable | 
																 | 
																 | 
																        arduino = serial.Serial(serialPort, baudRate) #Asignación del objeto a la variable | 
															
														
														
													
														
															
																 | 
																 | 
																        arduino.timeout = 0.1 #Tiempo a esperar para que haya datos disponibles en el puerto serie  | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        arduino.timeout = 0.2 #Tiempo a esperar para que haya datos disponibles en el puerto serie  | 
															
														
														
													
														
															
																 | 
																 | 
																        time.sleep(0.5) #Tiempo muerto para permitir la conexión | 
																 | 
																 | 
																        time.sleep(0.5) #Tiempo muerto para permitir la conexión | 
															
														
														
													
														
															
																 | 
																 | 
																        print("CONECTADO") | 
																 | 
																 | 
																        print("CONECTADO") | 
															
														
														
													
														
															
																 | 
																 | 
																        btnStart.config(state = "normal") | 
																 | 
																 | 
																        btnStart.config(state = "normal") | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -121,15 +128,24 @@ def desconectar_serial(): | 
															
														
														
													
														
															
																 | 
																 | 
																     | 
																 | 
																 | 
																     | 
															
														
														
													
														
															
																 | 
																 | 
																#Variables a graficar | 
																 | 
																 | 
																#Variables a graficar | 
															
														
														
													
														
															
																 | 
																 | 
																muestras = 100 #Número de datos a visualizar | 
																 | 
																 | 
																muestras = 100 #Número de datos a visualizar | 
															
														
														
													
														
															
																 | 
																 | 
																data = collections.deque([0] * muestras, maxlen = muestras) #Rango de datos | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																tiempoMuestreo = 100 | 
																 | 
																 | 
																tiempoMuestreo = 100 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																data = [] | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																lines = [] | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																for i in range(numData): | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    data.append(collections.deque([0] * muestras, maxlen = muestras)) #Rango de datos | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    lines.append(Line2D([], [], color = "blue")) | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																fig = plt.figure(facecolor = '0.94') #creación de la gráfica (figura) | 
																 | 
																 | 
																fig = plt.figure(facecolor = '0.94') #creación de la gráfica (figura) | 
															
														
														
													
														
															
																 | 
																 | 
																ax = plt.axes(xlim=(0,100), ylim=(-40, 150)) #Rango de ejes | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																plt.title("Sensor 1 - Arduino") | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																ax.set_xlabel("Muestras") | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																ax.set_ylabel("Voltaje") | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																lines = ax.plot([], [])[0] #Creación de la línea a graficar | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																ax1 = fig.add_subplot(2, 1, 1, xlim=(0,100), ylim=(0, 150)) #Rango de ejes | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																ax1.title.set_text("Sensor 1 - Arduino") | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																ax1.set_ylabel("Voltaje") | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																ax1.add_line(lines[0]) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																ax2 = fig.add_subplot(2, 1, 2, xlim=(0,100), ylim=(0, 150)) #Rango de ejes | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																ax2.title.set_text("Sensor 2 - Arduino") | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																ax2.set_xlabel("Muestras") | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																ax2.set_ylabel("Voltaje") | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																ax2.add_line(lines[1]) | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																root= tk.Tk() | 
																 | 
																 | 
																root= tk.Tk() | 
															
														
														
													
														
															
																 | 
																 | 
																root.title("Sistema de calentamiento") | 
																 | 
																 | 
																root.title("Sistema de calentamiento") | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																	
																 | 
																
  |