[Butia-devel-list] Protocolo PC<->Butiá sobre USB

Guillermo Reisch greisch en fing.edu.uy
Vie Jul 21 16:55:59 -03 2023


Manual, bue, esta la información de bobot en la wiki de butia
https://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Bobot

Después cambiamos el "bobot" (en lua echo por Jorge) por "pybot" (en python 
echo por Alan) que se comunica con la usb4aButiá directamente usando la 
librería pyusb, ahí ya no necesitamos el servidor tcp/ip esperando comandos 
(ya que usamos pybot como una api directamente y no como un servidor aunque 
también tiene server por lo que vi...)
https://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=PyBot
Codigo esta en butia/turtlebots/pybot

Y por ultimo si te interesa el formato protocolo USB no hay otra que ver el 
USB4Butia (que es la placa con el pic18f4550 que maneja el butia 2.0)
https://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?
title=USB4buti%C3%A1

El usb4butia esta basado en usb4all
https://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Usb4all
que es un proyecto de grado de Andres Aguirre.
La tesis final con la documentación de usuario y todo esta en
https://sourceforge.net/p/usb4all/code/ci/master/tree/doc/usb4all/
Igual que todo el firmware de butia que esta en:
https://sourceforge.net/p/usb4all/code

el protocolo que usa usb4all (implementado en el firmware)
https://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?
title=Usb4all#3._Protocolo_de_Comunicaci.C3.B3n
 es un RPC (Remote Procedure Call) [bloqueante] en que le mandas un mensaje a 
algún modulo y el modulo responde, tienes un modulo principal o admin que se 
encarga de abrir otros modulos, y cada modulo (por ejemplo "grey" o sensor de 
grices) tiene funciones particulares [en el caso de "grey" GET_VALUE=1]

En pybot el manejo del modulo admin esta en:
turtlebots/pybot/device.py

Y cada modulo particular podes ver las funciones que soporta en:
turtlebots/pybot/drivers/$NOMBRE_MODULO

Ejemplo:
# Abrir modulo grey (obtenido de device.py)
[0][10][0][0][1][1]['g']['r']['e']['y'] => usb4all

Si podes desde la app android instalar un interprete python ya podrías correr 
el código de pybot en la app y utilizarlo como una api.

Espero no haberte confundido más todavía :-P

Saluds
Guillermo Reisch


El jueves, 20 de julio de 2023 23:21:13 -03 Eduardo Trápani escribió:
> Hola,
> 
> Estoy tratando de comunicarme desde una aplicación Android en una Beta
> Crux de Ceibal con el adaptador USB OTG.
> 
> Intento seguir el codigo de bobot[1] pero honestamente, en lua me pierdo
> entre los objetos y los mensajes sobre USB. Los send() envían por
> ejemplo todos el mismo código para leer sensores (aparentemente
> GET_VALUE=0x01) pero no veo cómo indicar a cuál sensor se refiere.
> 
> ¿Hay algún documento que cuente un poco cómo es el protocolo de
> conversación USB con la Butiá? Puede ser algo general, es para entender
> el flujo de la comunicación y cómo se elige el dispositivo (sensor,
> motor) con el que se quiere hablar. Si no hay documento, ¿alguien puede
> comentar por arriba cómo funciona la charla con la Butiá sobre USB?
> 
> [1] https://sourceforge.net/p/butia/code/ci/master/tree/bobot/
> 
> _______________________________________________
> Butia-devel-l site list
> Butia-devel-l en fing.edu.uy
> https://www.fing.edu.uy/mailman/listinfo/butia-devel-l






Más información sobre la lista de distribución Butia-devel-l