PyBot

De Proyecto Butiá
Revisión del 23:26 7 abr 2013 de AlanJAS (Discusión | contribuciones) (Página creada con 'Butiá puede utilizarse de muchas formas, como un servicio consumible mediante la red como es el caso de pybot server o utilizando directamente la biblioteca usb4butia. ==Usand...')

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Butiá puede utilizarse de muchas formas, como un servicio consumible mediante la red como es el caso de pybot server o utilizando directamente la biblioteca usb4butia.

Usando Pybot localmente

Cuando se va a ejecutar Pybot y quién lo usa en la misma máquina, no es recomendable tener una arquitectura cliente-servidor. Para ese caso se dispone de una alternativa: usar directamente el módulo usb4butia dentro de Pybot.

Importando el módulo:

   from pybot import usb4butia

Instanciando la clase:

   robot = usb4butia.USB4Butia()

A partir de este momento tenemos las mismas llamadas que en Pybot client. Por ejemplo, para obtener la versión del Firmware:

   version = robot.getFirmwareVersion()

El módulo USB4Butia nos provee algunas propiedades "privadas" que pueden resultar útiles:

  robot._bb                               # Lista de placas detectadas
  robot._drivers_loaded                   # Diccionario de drivers
  robot._debug                            # Bandera de debug, por defecto es False
  robot._get_all_drivers()                # Función para cargar los drivers
  robot._get_driver()                     # Función para obtener un driver específico
  robot._hotplug                          # Lista de módulos hotplug
  robot._modules                          # Lista de módulos
  robot._openables                        # Lista de módoulos "openables"

Usando Pybot server

Levantamos el servidor desde una consola (debemos estar dentro de la carpeta pybot):

   python pybot_server.py DEBUG

En este caso con la bandera de DEBUG para ver la salida del lado del servidor.

Luego nos encargamos del cliente:

   from pybot impoty pybot_client

Instanciamos el cliente:

   robot = pybot_client.robot()

A partir de ahora tenemos las mismas funciones que en la versión local, por ejemplo:

   version = robot.getFirmwareVersion()

Funciones USB4Butiá - Pybot Client

Funciones útiles:

  robot.close()                            # cierra todas las placas instanciadas
  robot.find_butias()                      # busca placas conectadas y las instancia
  robot.getBatteryCharge()                 # devuelve el nivel de carga de la batería (si no hay motores-> -1)
  robot.getFirmwareVersion()               # devuelve la versión del firmware dentro del PIC
  robot.getVersion()                       # devuelve la versión del módulo butiá (arduino: 20, usb4butia:22)
  robot.getButiaCount()                    # devuelve la cantidad de placas conectadas
  robot.getModulesList()                   # devuelve la lista de dispositivos conectados (en todas las placas)
  robot.isPresent(device)                  # chequea si un dispositivo en particular está conectado
  robot.loopBack(data)                     # envía una string 'data' a la placa y devuelve lo mismo
  robot.reconnect()                        # no hace nada en usb4butia / en el cliente hace un reconnect del socket
  robot.refresh()                          # actualiza la lista de placas conectadas
  robot.callModule(modulename, board_number, number, function, params)  #llamada a un módulo

Sensores

  robot.getButton(port)                    # obtiene el valor del sensor botón conectado en el puerto port
  robot.getDistance(port)                  # obtiene el valor del sensor de distancia conectado en el puerto port
  robot.getGray(port)                      # obtiene el valor del sensor de grises conectado en el puerto port
  robot.getLight(port)                     # obtiene el valor del sensor de luz conectado en el puerto port
  robot.getResistance(port)                # obtiene el valor del sensor de resistencia conectado en el puerto port
  robot.getTemperature(port)               # obtiene el valor del sensor temperatura conectado en el puerto port
  robot.getVoltage(port)                   # obtiene el valor del sensor volyaje conectado en el puerto port
  robot.setLed(port, on)                   # si on es 1, prende el LED, si es 0, apaga el LED conectado en el puerto port

Hack pins

  robot.modeHack(pin, mode)                # establece el modo del pin: si mode es 0 es entrada y 1 salida
  robot.setHack(pin, value)                # establece el valor del pin: pin en GND si es 0 y en +5v si es 1
  robot.getHack(pin)                       # lee el valor del pin: pin

Motores

  robot.set2MotorSpeed(leftSense, leftSpeed, rightSense, rightSpeed)   #sense is 0 or 1, speed is between 0 and 1023
  robot.setMotorSpeed(idMotor, sense, speed)                           #idMotor 0 for left motor, 1 for right