[Olpc-uruguay] Consulta Programacion USB
amviera en adinet.com.uy
amviera en adinet.com.uy
Lun Sep 27 14:39:41 EDT 2010
Gracias Flavio.
Alguna vez pregunté acerca de eso y nadie me dio mucho corte.
Tampoco he podido acceder a información desde el proyecto BUTIA, aunque sé que ellos utilizan el puerto USB
Sólo hay que averiguar cómo escribir y leer datos (nivel alto o bajo) en los pines 2 y 3 del puerto. No debbe ser nada complicado.
Probé, pero no pude instalar pyusb.
Además, Adrián, entre los pines 1 y 4 alimentás el motor (si no consume mucho) y entre los pines 2 y 3, respecto a masa, podés controlar puertas lógicas o relés (transistor por medio) para regular la marcha del motor, es decir, para controlar encendido y apagado, velocidad, e incluso sentido del giro. Y con un poco de ingenio, con engranajes o poleas lo podés convertir en un robot.
Si te interesa te puedo ayudar con la parte electrónica, aunque yo necesito que alguien más ayude con la programación del puerto.
Saludos, Mauricio Viera.
----Mensaje original----
De: fdanesse en gmail.com
Fecha: 25/09/2010 00:25
Para: "Comunidad ceibalJAM"
Asunto: Re: [Olpc-uruguay] Consulta Programacion USB
Hola.
Como primera respuesta, te digo que nunca he hecho nada con los usb pero ya quedo haciendo experimentos.
Click acá para bajarte pyusb que es el paquete que necesitas para hacer esto con python, se instala haciendo python setup.py install desde la terminal en el directorio descomprimido.
Esto no viene en la xo, y no lo vas a poder instalar, al menos yo no pude, tendrás que hacer algunos malabares para que funcione, pero vete acostumbrando porque sin root no hay más remedio.
Lo otro que habría que investigar es como acceden los de robótica a los usb, pregunta en "proyecto Butiá".
Acá te dejo un ejemplo de acceso a las impresoras utilizando pyusb:
import usbimport os
import sysimport timeimport types
class Printer:
''' Clase que maneja directamente el puerto USB, preguntando al hardware conectado
los parametros indicativos del mismo. '''
def __init__(self, device, configuration, interface): if PRINTER_CLASS != interface.interfaceClass:
raise TypeError, "Tipo de interface non valido!"
self.__devhandle = device.open() self.__devhandle.setConfiguration(configuration)
self.__devhandle.claimInterface(interface) self.__devhandle.setAltInterface(interface)
self.__intf = interface.interfaceNumber self.__alt = interface.alternateSetting
self.__conf = (type(configuration) == types.IntType \ or type(configuration) == types.LongType) and \
configuration or \ configuration.value
self.__bulkout = 1 self.__bulkin = 0x82
def __del__(self):
try: self.__devhandle.releaseInterface(self.__intf)
del self.__devhandle except: pass
def getDeviceID(self, maxlen, timeout = 100):
return self.__devhandle.controlMsg(requestType = 0xa1, request = 0,
value = self.__conf - 1, index = self.__alt + (self.__intf
buffer = maxlen, timeout = timeout)
def getPortStatus(self, timeout = 100):
return self.__devhandle.controlMsg(requestType = 0xa1, request = 1,
value = 0, index = self.__intf,
buffer = 1, timeout = timeout)[0]
def softReset(self, timeout = 100): self.__devhandle.controlMsg(requestType = 0x21,
request = 2, value = 0,
index = self.__intf, buffer = 0)
def write(self, buffer, timeout = 100):
return self.__devhandle.bulkWrite(self.__bulkout, buffer,
timeout) def read(self, numbytes, timeout = 100):
return self.__devhandle.bulkRead(self.__bulkin, numbytes,
timeout) class usbDispositivo:
''' Modelo de datos de un dispositivo USB (tipo VO)
''' def __init__(self,dispositivo):
self.archivo = '' self.clase = ''
self.subClase = '' self.protocolo = ''
self.idFabricante = '' self.idProducto = ''
self.version = '' self.descripcion = ''
self.archivo = dispositivo.filename self.clase = dispositivo.deviceClass
self.subClase = dispositivo.deviceSubClass self.protocolo = dispositivo.deviceProtocol
self.idFabricante = dispositivo.idVendor self.idProducto = dispositivo.idProduct
self.version = dispositivo.deviceVersion try:
self.descripcion = dispositivo.open().getString(1,30) except:
self.descripcion = '' def getArchivo(self):
return self.archivo def getClase(self):
return self.clase def getSubClase(self):
return self.subClase def getProtocolo(self):
return self.protocolo def getIdFabricante(self):
return self.idFabricante def getIdProducto(self):
return self.idProducto def getVersion(self):
return self.version def getDescripcion(self):
return self.descripcion
El 24 de septiembre de 2010 22:19, Adrian Silveira adance en gmail.com> escribió:
Hola a Todos,
mi nombre es Adrián y participo del proyecto de extensión "Isaac, Nikola y Galileo van a la Escuela (INGE) y los estudiantes también" (INGE) de la Facultad de Ingeniería. Se trata de desarrollar actividades relacionadas con la física en escuelas de contexto crítico en Canelones y de esta forma mostrarles que hay otra profesión a la que pueden aspirar. Es una propuesta muy rica, interesante, alentadora, ambiciosa, esperamos que tenga un gran impacto en ellos.
Como parte de nuestras actividades, queríamos mostrarles a escolares de cuarto año de escuela como controlar por software un ventilador enchufado a un puerto USB. Ellos lo armarían con los materiales que les damos (cable de datos usb, motor, cartulina) y luego enchufándolo a la ceibalita por el puerto usb se alimentaría de energía para funcionar. Lo que nos gustaría es poder desarrollar un programita bien sencillo, que haga de on/off de la corriente en el puerto usb para así enceder/apagar el ventilador.
Agradezco en base a su experiencia si me pueden orientar en si es factible desarrollar un programa que haga esto y todo lo que me puedan aportar para hacerlo se los agradezco.
Muchas Gracias
Saludos
Adrián --
"Podría Estar Encerrado en una Cascara de Nuez y Sentirme Rey de un Espacio Infinito..."
_______________________________________________
Olpc-uruguay mailing list
Olpc-uruguay en lists.laptop.org
http://lists.laptop.org/listinfo/olpc-uruguay
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://lists.laptop.org/pipermail/olpc-uruguay/attachments/20100927/d972f598/attachment-0001.htm
More information about the Olpc-uruguay
mailing list