Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- #Control web para el robot Raspberry
- import RPi.GPIO as GPIO
- import os
- from http.server import BaseHTTPRequestHandler, HTTPServer
- import time
- import threading
- HOST = '192.168.1.5'#Direccion de la Raspberry Pi
- PORT = 8000
- def setupGPIO():
- GPIO.setmode(GPIO.BCM)
- GPIO.setwarnings(False)
- # Inicializa la GPIO conectada al L293D
- #Izquierda
- GPIO.setup(4,GPIO.OUT) #Enable 1 PIN1
- GPIO.setup(17,GPIO.OUT) #Input 1 PIN2
- GPIO.setup(27,GPIO.OUT) #input 2 PIN7
- #Derecha
- GPIO.setup(18,GPIO.OUT) #Input 4 PIN15
- GPIO.setup(22,GPIO.OUT) #imput 3 PIN10
- GPIO.setup(23,GPIO.OUT) #Enable 2 PIN9
- #Reduce velocidad 50%
- def velocidad(habilita):
- #Solo actua con la habilitacion del L293D
- GPIO.output(4, habilita) #Habilita 1
- GPIO.output(23, habilita) #Habilita 2
- time.sleep(0.05)
- #Lanza de nuevo este thread para controlar los motores
- hilo = threading.Thread(target=velocidad, args=(not habilita,))
- hilo.start()
- #hilo.join()
- #Control de los dos motores del robot
- def Motores(HABILITA_A=False,MOTOR_A1=False,MOTOR_A2=False,HABILITA_B=False,MOTOR_B1=False,MOTOR_B2=False):
- #Test Movimiento motores
- GPIO.output(4, HABILITA_A) #Habilita 1
- GPIO.output(17, MOTOR_A1) #input 1 A1
- GPIO.output(27, MOTOR_A2) #input 2 A2
- #Test Movimiento motores
- GPIO.output(23, HABILITA_B) #Habilita 2
- GPIO.output(18, MOTOR_B1) #Input 4 B1
- GPIO.output(22, MOTOR_B2) #Input 3 B2
- class ServidorWeb(BaseHTTPRequestHandler):
- def do_HEAD(self):
- self.send_response(200)
- self.send_header('Content-type', 'text/html')
- self.end_headers()
- def _redirect(self, path):
- self.send_response(303)
- self.send_header('Content-type', 'text/html')
- self.send_header('Location', path)
- self.end_headers()
- def do_GET(self):
- html = '''
- <html>
- <body style="width:960px; margin: 20px auto;">
- <h1>ICARO</h1>
- <p> Control Robot </p>
- <form action="/" method="POST">
- CONTROL :
- <input type="submit" name="submit" value="Avanza">
- <input type="submit" name="submit" value="Retrocede">
- <input type="submit" name="submit" value="Derecha">
- <input type="submit" name="submit" value="Izquierda">
- <input type="submit" name="submit" value="Stop">
- </form>
- </body>
- </html>
- '''
- self.do_HEAD()
- self.wfile.write(html.encode("utf-8"))
- def do_POST(self):
- content_length = int(self.headers['Content-Length'])
- post_data = self.rfile.read(content_length).decode("utf-8")
- post_data = post_data.split("=")[1]
- #VEL=not VEL #Un pwm al 50% para reducir la velocidad
- if post_data == 'Avanza':
- Motores(True,False,True,True,False,True)
- if post_data == 'Retrocede':
- Motores(True,True,False,True,True,False)
- if post_data == 'Derecha':
- Motores(True,False,True,False,False,False)
- if post_data == 'Izquierda':
- Motores(False,False,False,True,False,True)
- if post_data == 'Stop':
- Motores(False,False,False,False,False,False)
- self._redirect('/') # Redirect back to the root url
- # # # # # Main # # # # #
- if __name__ == '__main__':
- http_server = HTTPServer((HOST, PORT), ServidorWeb)
- print("Server Starts - %s:%s" % (HOST, PORT))
- setupGPIO() #Configura GPIO raspberry
- #Lanza el Thread de control de velocidad de motores
- hilo = threading.Thread(target=velocidad, args=(False,))
- hilo.start()
- try:
- http_server.serve_forever()
- except KeyboardInterrupt:
- http_server.server_close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement