Project

General

Profile

Código e Implementación » History » Version 17

Cesar Jimenez, 10/13/2023 10:07 AM

1 1 Cesar Jimenez
h1. ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤWikipedia
2 1 Cesar Jimenez
3 1 Cesar Jimenez
4 1 Cesar Jimenez
!logoPRO.png!
5 1 Cesar Jimenez
6 1 Cesar Jimenez
7 1 Cesar Jimenez
----
8 1 Cesar Jimenez
9 1 Cesar Jimenez
+*Grupo A:*+
10 1 Cesar Jimenez
>  Integrantes: Cristian Sánchez, Jean Pier Duran, Sergio Rabanal, Valentina Álvarez, César Jiménez
11 1 Cesar Jimenez
>  Nombre del Producto: Machine EV3 G
12 1 Cesar Jimenez
>  Modulo: Proyecto I
13 1 Cesar Jimenez
>  Docente: Humberto Urrutia
14 1 Cesar Jimenez
>  Fecha de Inicio: 2023-08-14
15 1 Cesar Jimenez
>  Fecha de Termino: 2023-11-30
16 1 Cesar Jimenez
17 1 Cesar Jimenez
----
18 1 Cesar Jimenez
19 1 Cesar Jimenez
*ㅤㅤㅤㅤㅤㅤㅤÍndice:*
20 1 Cesar Jimenez
* [[Introducción]]
21 1 Cesar Jimenez
* [[Descripción y Objetivos]]
22 1 Cesar Jimenez
* [[Organización y Planificación]]
23 1 Cesar Jimenez
* [[Análisis y Diseño]]
24 1 Cesar Jimenez
* [[Código e Implementación]]
25 2 Cesar Jimenez
* [[Bibliografía]]
26 3 Cesar Jimenez
27 16 Cesar Jimenez
h1. ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤIntefaz Grafica
28 3 Cesar Jimenez
29 1 Cesar Jimenez
<pre><code class="ruby">
30 15 Cesar Jimenez
31 16 Cesar Jimenez
import tkinter as tk
32 16 Cesar Jimenez
from tkinter import ttk
33 16 Cesar Jimenez
from tkinter import *
34 16 Cesar Jimenez
from tkinter import messagebox
35 16 Cesar Jimenez
import socket
36 16 Cesar Jimenez
# from ev3dev2.motor import MediumMotor, LargeMotor, OUTPUT_A, OUTPUT_B, OUTPUT_D, MoveTank
37 1 Cesar Jimenez
38 1 Cesar Jimenez
39 16 Cesar Jimenez
def Shot():
40 16 Cesar Jimenez
    shot = 'SHOT'
41 16 Cesar Jimenez
    server.send(shot.encode('utf-8'))
42 1 Cesar Jimenez
43 16 Cesar Jimenez
def Movement():
44 16 Cesar Jimenez
    movement = 'MOVEMENT'
45 16 Cesar Jimenez
    server.send(movement.encode('utf-8'))
46 1 Cesar Jimenez
47 16 Cesar Jimenez
def Up():
48 16 Cesar Jimenez
    up = 'UP'
49 16 Cesar Jimenez
    server.send(up.encode('utf-8'))
50 16 Cesar Jimenez
    
51 16 Cesar Jimenez
def Down():
52 16 Cesar Jimenez
    down = 'DOWN'
53 16 Cesar Jimenez
    server.send(down.encode('utf-8'))
54 16 Cesar Jimenez
    
55 16 Cesar Jimenez
def Left():
56 16 Cesar Jimenez
    left = 'LEFT'
57 16 Cesar Jimenez
    server.send(left.encode('utf-8'))
58 16 Cesar Jimenez
    
59 16 Cesar Jimenez
def Right():
60 16 Cesar Jimenez
    right = 'RIGHT'
61 16 Cesar Jimenez
    server.send(right.encode('utf-8'))
62 16 Cesar Jimenez
    
63 16 Cesar Jimenez
def Power():
64 16 Cesar Jimenez
    #INSERTAR CAMBIOS / AJUSTES PROGRAMA PRINCIPAL
65 16 Cesar Jimenez
    print()
66 1 Cesar Jimenez
67 16 Cesar Jimenez
def Angle():
68 16 Cesar Jimenez
    #INSERTAR CAMBIOS / AJUSTE DE ANGULO ?
69 16 Cesar Jimenez
    print()
70 16 Cesar Jimenez
    
71 16 Cesar Jimenez
def conectar():
72 16 Cesar Jimenez
    global server
73 16 Cesar Jimenez
    server = socket.socket()
74 16 Cesar Jimenez
    puerto = 4999
75 16 Cesar Jimenez
    direccion = "192.168.47.61"
76 16 Cesar Jimenez
    try: 
77 16 Cesar Jimenez
        server.connect((direccion,puerto))
78 16 Cesar Jimenez
        messagebox.showinfo("Conectado","Se ha establecido la conexion exitosamente")
79 16 Cesar Jimenez
    except socket.error:
80 16 Cesar Jimenez
        messagebox.showwarning("Desconectado","Ingrese la dirección correcta")
81 16 Cesar Jimenez
    server.close()
82 1 Cesar Jimenez
83 16 Cesar Jimenez
84 16 Cesar Jimenez
ventana = tk.Tk()
85 16 Cesar Jimenez
ventana.geometry("500x400") 
86 16 Cesar Jimenez
ventana.title("Machine EV3")
87 16 Cesar Jimenez
ventana.configure(bg="cadetblue")  
88 16 Cesar Jimenez
ventana.resizable(0,0)
89 16 Cesar Jimenez
#Variables
90 16 Cesar Jimenez
91 16 Cesar Jimenez
# Boton Arriba
92 16 Cesar Jimenez
boton_arriba = Button(text="UP", command=Up, background="lightblue").place(x=200, y=70, width=120, height=90)  
93 16 Cesar Jimenez
94 16 Cesar Jimenez
# Boton Abajo
95 16 Cesar Jimenez
boton_abajo = Button(text="DOWN", command=Down, background="lightblue").place(x=200, y=270, width=120, height=90)
96 16 Cesar Jimenez
97 16 Cesar Jimenez
# Boton Izquierda
98 16 Cesar Jimenez
boton_izq = Button(text="LEFT", command=Left, background="lightblue").place(x=50, y=170, width=120, height=90)
99 16 Cesar Jimenez
100 16 Cesar Jimenez
# Boton Derecha
101 16 Cesar Jimenez
boton_derech = Button(text="RIGHT", command=Right, background="lightblue").place(x=340, y=170, width=120, height=90)
102 16 Cesar Jimenez
103 16 Cesar Jimenez
# Boton Disparar
104 16 Cesar Jimenez
boton_disparar = Button(text="Shot", command=Shot, background="lightblue").place(x=385, y=345, width=100, height=50)
105 16 Cesar Jimenez
106 16 Cesar Jimenez
# Boton Power de 15%
107 16 Cesar Jimenez
boton_p15 = Button(text="Power 10%", command=Power, background="lightblue").place(x=10, y=20, width=110, height=30)
108 16 Cesar Jimenez
109 16 Cesar Jimenez
# Boton Power de 25%
110 16 Cesar Jimenez
boton_p25 = Button(text="Power 30%", command=Power, background="lightblue").place(x=135, y=20, width=110, height=30)
111 16 Cesar Jimenez
112 16 Cesar Jimenez
# Boton potenca de 40%(max)
113 16 Cesar Jimenez
boton_p40 = Button(text="Power 50%", command=Power, background="lightblue").place(x=260, y=20, width=110, height=30)
114 16 Cesar Jimenez
115 16 Cesar Jimenez
# Boton Power por tiempo
116 16 Cesar Jimenez
boton_pseg= Button(text="Power for second.",command=Power, background="lightblue").place(x=385, y=20, width=110, height=30)
117 16 Cesar Jimenez
118 16 Cesar Jimenez
# Boton ingreso ip
119 16 Cesar Jimenez
120 16 Cesar Jimenez
boton_conectar = Button(text="Conection at Robot",command= conectar,background="lightblue").place(x=10, y=365, width=130, height=30)
121 16 Cesar Jimenez
122 16 Cesar Jimenez
ventana.mainloop()
123 16 Cesar Jimenez
124 1 Cesar Jimenez
125 17 Cesar Jimenez
</code></pre>
126 1 Cesar Jimenez
127 17 Cesar Jimenez
128 17 Cesar Jimenez
h1. Servidor
129 17 Cesar Jimenez
130 17 Cesar Jimenez
<pre><code class="ruby">
131 17 Cesar Jimenez
132 17 Cesar Jimenez
import socket
133 17 Cesar Jimenez
from Funciones import *
134 17 Cesar Jimenez
135 17 Cesar Jimenez
# Crear un socket del servidor
136 17 Cesar Jimenez
server = socket.socket()
137 17 Cesar Jimenez
#192.168.107.147 ip robot
138 17 Cesar Jimenez
# Vincular el socket a una dirección IP y un puerto
139 17 Cesar Jimenez
# ES LA IP DEL ROBOT
140 17 Cesar Jimenez
server_address = ("192.168.47.61", 4999)
141 17 Cesar Jimenez
server.bind(server_address)
142 17 Cesar Jimenez
143 17 Cesar Jimenez
# Poner el socket en modo de escucha
144 17 Cesar Jimenez
server.listen(1)  # Permite hasta 5 conexiones pendientes
145 17 Cesar Jimenez
print("Esperando conexiones entrantes...")
146 17 Cesar Jimenez
socket_client, address_client = server.accept()
147 17 Cesar Jimenez
148 17 Cesar Jimenez
# Aceptar una conexión entrante
149 17 Cesar Jimenez
print(f"Conexión entrante desde {address_client}")
150 17 Cesar Jimenez
151 17 Cesar Jimenez
152 17 Cesar Jimenez
# Recibir datos del cliente
153 17 Cesar Jimenez
identifier = socket_client.recv(1024).decode('utf-8')
154 17 Cesar Jimenez
155 17 Cesar Jimenez
156 17 Cesar Jimenez
while True:
157 17 Cesar Jimenez
    identifier = socket_client.recv(1024).decode('utf-8')
158 17 Cesar Jimenez
    if (identifier == 'UP'):
159 17 Cesar Jimenez
        #AGREGAR FUNCION
160 17 Cesar Jimenez
        print()
161 17 Cesar Jimenez
    if (identifier == 'DOWN'):
162 17 Cesar Jimenez
        #AGREGAR FUNCION
163 17 Cesar Jimenez
        print()
164 17 Cesar Jimenez
    if (identifier == 'LEFT'):
165 17 Cesar Jimenez
        #AGREGAR FUNCION
166 17 Cesar Jimenez
        print()
167 17 Cesar Jimenez
    if (identifier == 'RIGHT'):
168 17 Cesar Jimenez
        #AGREGAR FUNCION
169 17 Cesar Jimenez
        print()
170 17 Cesar Jimenez
    if(identifier == 'CERRAR'):
171 17 Cesar Jimenez
         #AGREGAR FUNCION
172 17 Cesar Jimenez
        print()
173 17 Cesar Jimenez
        
174 17 Cesar Jimenez
    socket_client.close()
175 17 Cesar Jimenez
    server.close()
176 17 Cesar Jimenez
177 17 Cesar Jimenez
</code></pre>
178 17 Cesar Jimenez
179 17 Cesar Jimenez
h1. Servidor
180 17 Cesar Jimenez
181 17 Cesar Jimenez
<pre><code class="ruby">
182 17 Cesar Jimenez
183 17 Cesar Jimenez
from ev3dev.ev3 import Sound
184 17 Cesar Jimenez
from ev3dev2.motor import LargeMotor,OUTPUT_A, OUTPUT_B, OUTPUT_C, MoveTank
185 17 Cesar Jimenez
from time import sleep
186 17 Cesar Jimenez
187 17 Cesar Jimenez
#Agregar Funciones del ROBOT
188 17 Cesar Jimenez
189 17 Cesar Jimenez
def Mov_Right():
190 17 Cesar Jimenez
    mover_Der = MoveTank(OUTPUT_C, OUTPUT_B)
191 17 Cesar Jimenez
    mover_Der.on_for_seconds(100,-100,1, brake = False, block = True)
192 17 Cesar Jimenez
    # 100 velocidad de primer motor , -100 velocidad del segundo motor declarado, 1 es el tiempo del proceso
193 17 Cesar Jimenez
    
194 17 Cesar Jimenez
    print()
195 17 Cesar Jimenez
196 17 Cesar Jimenez
def Mov_Left():
197 17 Cesar Jimenez
    mover_Izq = MoveTank(OUTPUT_C, OUTPUT_B)
198 17 Cesar Jimenez
    mover_Izq.on_for_seconds(-100,100,1,brake = False, block= True)
199 17 Cesar Jimenez
    print()
200 17 Cesar Jimenez
201 17 Cesar Jimenez
def Mov_Down():
202 17 Cesar Jimenez
    Ruedas_Down = MoveTank(OUTPUT_B,OUTPUT_C)
203 17 Cesar Jimenez
    Ruedas_Down.on_for_seconds(100,100,1,brake= False, block=True)
204 17 Cesar Jimenez
    print() 
205 17 Cesar Jimenez
206 17 Cesar Jimenez
207 17 Cesar Jimenez
def Mov_Up():
208 17 Cesar Jimenez
    #motor A y D 
209 17 Cesar Jimenez
    RuedasB_C = MoveTank(OUTPUT_B,OUTPUT_C)
210 17 Cesar Jimenez
    RuedasB_C.on_for_seconds(-100,-100,1, brake=False, block=True)
211 17 Cesar Jimenez
    #rotacion al 50% de la velocidad maxima
212 17 Cesar Jimenez
213 17 Cesar Jimenez
def Mov_Lever():
214 17 Cesar Jimenez
    motor_A = LargeMotor(OUTPUT_A)
215 17 Cesar Jimenez
    motor_A.on_for_seconds(speed=50, seconds=2)
216 17 Cesar Jimenez
    motor_A.off()
217 17 Cesar Jimenez
218 17 Cesar Jimenez
219 17 Cesar Jimenez
def Sonido():
220 17 Cesar Jimenez
    # Inicializa el altavoz
221 17 Cesar Jimenez
    sound = Sound()
222 17 Cesar Jimenez
    # Reproduce un sonido
223 17 Cesar Jimenez
    sound.beep()
224 17 Cesar Jimenez
225 17 Cesar Jimenez
    # Reproduce un mensaje de voz
226 17 Cesar Jimenez
    sound.speak("Vini o' rey do futebol")
227 1 Cesar Jimenez
228 1 Cesar Jimenez
</code></pre>