IT’S ALIVE

Comencem els primers tests de moviment amb l’AGV. El nostre codi inicial es el següent:

importar libreria tkinter from tkinter import
*importar libreria GPIO
import RPi.GPIO as GPIO
*importar libreria time
import time

*Generamos marco para la interficie
contenedor=Tk()
*Titulo del contenedor
contenedor.title(“Robot Equip 5”)
*Medidas contenedor
contenedor.geometry(“800×400”)
*Color de fondo
contenedor.config(bg=”*793838″)
*Configuramos margen
contenedor.config(bd=10)
*Configuramos modelo del margen
contenedor.config(relief=”groove”)
*Creamos ventana dentro de otra ventana(frame)
tituloFrame=Frame()
Empaquetamos tituoloFrame para que aparezca tituloFrame.pack() tituloFrame.config(bg=”453034″)
tituloFrame.config(width=”700″,height=”100″)
tituloFrame.config(bd=10)
tituloFrame.config(relief=”groove”)

*Creamos etiqueta
label = Label(tituloFrame, text=” CONSOLA DE CONTROL “)
label.pack(padx=10,pady=5)

Creamos otra ventanas mandos_izq_Frame=Frame() mandos_izq_Frame.place(x=20,y=80) mandos_izq_Frame.config(bg=”453034″)
mandos_izq_Frame.config(width=”40″,height=”40″)
mandos_izq_Frame.config(bd=10)
mandos_izq_Frame.config(relief=”groove”)

mandos_der_Frame=Frame()
mandos_der_Frame.place(x=600,y=80)
mandos_der_Frame.config(bg=”*453034″)
mandos_der_Frame.config(width=”40″,height=”40″)
mandos_der_Frame.config(bd=10)
mandos_der_Frame.config(relief=”groove”)

stop_Frame=Frame()
stop_Frame.place(x=10,y=315)
stop_Frame.config(bg=”*453034″)
stop_Frame.config(width=”100″,height=”100″)
stop_Frame.config(bd=5)
stop_Frame.config(relief=”groove”)

PWM_Frame=Frame()
PWM_Frame.place(x=300,y=300)
PWM_Frame.config(bg=”*453034″)
PWM_Frame.config(width=”100″,height=”100″)
PWM_Frame.config(bd=5)
PWM_Frame.config(relief=”groove”)

*configurar el modo pin (x numero de pin)
GPIO.setmode(GPIO.BOARD)

*Declarar pines salida
GPIO.setup(3,GPIO.OUT)
GPIO.setup(5,GPIO.OUT)
GPIO.setup(8,GPIO.OUT)
GPIO.setup(10,GPIO.OUT)
GPIO.setup(7,GPIO.OUT)
GPIO.setup(12,GPIO.OUT)

*Configurar Pines PWM
PWM_dreta = GPIO.PWM(7, 100) * Creamos el objeto en el pin 25 a 100 Hz
PWM_esquerra = GPIO.PWM(12, 100) * Creamos el objeto en el pin 25 a 100 Hz
PWM_dreta.start(0) * Iniciamos al 0% del ciclo de trabajo
PWM_esquerra.start(0) * Iniciamos al 0% del ciclo de trabajo

*Definiciones de movimientos
def Mov_avan_esq():
GPIO.output(3, False)
GPIO.output(5, False)
GPIO.output(8, True)
GPIO.output(10, False)
print(“avan_esq”)

def Mov_avan_dre():
GPIO.output(3, True)
GPIO.output(5, False)
GPIO.output(8, False)
GPIO.output(10, False)
print(“avan_dre”)

def Mov_ret_esq():
GPIO.output(3, False)
GPIO.output(5, False)
GPIO.output(8, False)
GPIO.output(10, True)
print(“ret_esq”)

def Mov_ret_dre():
GPIO.output(3, False)
GPIO.output(5, True)
GPIO.output(8, False)
GPIO.output(10, False)
print(“ret_dre”)

def Mov_avan_tot():
GPIO.output(3, True)
GPIO.output(5, False)
GPIO.output(8, True)
GPIO.output(10, False)
print(“avan_tot”)

def Mov_ret_tot():
GPIO.output(3, False)
GPIO.output(5, True)
GPIO.output(8, False)
GPIO.output(10, True)
print(“ret_tot”)

def Mov_stop():
GPIO.output(3, False)
GPIO.output(5, False)
GPIO.output(8, False)
GPIO.output(10, False)
PWM_dreta.ChangeDutyCycle(0)
PWM_esquerra.ChangeDutyCycle(0)
print(“stop”)

def PWM_50():
PWM_dreta.ChangeDutyCycle(50)
PWM_esquerra.ChangeDutyCycle(50)

def PWM_100():
PWM_dreta.ChangeDutyCycle(100)
PWM_esquerra.ChangeDutyCycle(100)

*Creamos boton1
boton_avan_tot = Button(mandos_izq_Frame,padx=100,pady=5,text=”Avan_tot”,command=Mov_avan_tot)
boton_avan_tot.pack(padx=10,pady=10)
*Creamos boton2
boton_ret_tot = Button(mandos_der_Frame,padx=100,pady=5,text=”Ret_tot”,command=Mov_ret_tot)
boton_ret_tot.pack(padx=10,pady=10)
*Creamos boton3
boton_avan_izq = Button(mandos_izq_Frame,padx=100,pady=5,text=”Avan_izq”,command=Mov_avan_esq)
boton_avan_izq.pack(padx=10,pady=10)
*Creamos boton4
boton_avan_der = Button(mandos_izq_Frame,padx=100,pady=5,text=”Avan_der”,command=Mov_avan_dre)
boton_avan_der.pack(padx=10,pady=10)
*Creamos boton5
boton_ret_izq = Button(mandos_der_Frame,padx=100,pady=5,text=”Ret_izq”,command=Mov_ret_esq)
boton_ret_izq.pack(padx=10,pady=10)
*Creamos boton6
boton_ret_der = Button(mandos_der_Frame,padx=100,pady=5,text=”Ret_der”,command=Mov_ret_dre)
boton_ret_der.pack(padx=10,pady=10)
*Creamos boton7
boton_stop = Button(stop_Frame,padx=50,pady=5,text=”Stop”,command=Mov_stop)
boton_stop.pack(padx=10,pady=10)
*Creamos boton8
boton_PWM_50 = Button(PWM_Frame,padx=50,pady=5,text=”PWM 50″,command=PWM_50)
boton_PWM_50.pack(padx=10,pady=10)
*Creamos boton9
boton_PWM_100 = Button(PWM_Frame,padx=50,pady=5,text=”PWM 100″,command=PWM_100)
boton_PWM_100.pack(padx=10,pady=10)

*Ejecucion en loop del contenedor
contenedor.mainloop()

GPIO.cleanup()

Per fer les primeres proves de moviment, utilitzem una placa amb mòduls de relés 5V per a fer els contactes del circuit de potència. El relé serà l’interruptor per alimentar els motors, de tal manera que: connectarem 5V i GND des de la RASPBERRY a la placa de relés per alimentar les bobines, enviarem V+ de les bateries a l’entrada comú de tots els reles, la sortida NO s’enviarà de cada relé a 1 de les entrades de cada motor i la sortida NC es pontejarà amb totes les altres NC i V-.

Controlem l’AGV amb el mòbil, gràcies a l’APP de software d’accés remot VNC viewer.

Deixa un comentari

Fill in your details below or click an icon to log in:

WordPress.com Logo

Esteu comentant fent servir el compte WordPress.com. Log Out /  Canvia )

Google photo

Esteu comentant fent servir el compte Google. Log Out /  Canvia )

Twitter picture

Esteu comentant fent servir el compte Twitter. Log Out /  Canvia )

Facebook photo

Esteu comentant fent servir el compte Facebook. Log Out /  Canvia )

S'està connectant a %s