Aprovecho tu mensaje ay que dices que trabajas con la gente de butiá.<br>En el minijam artístico estuve hablando con gonchi porque me interesaría hacerme de un robot para experimentar tranquilo en mi casa y me dijo que mandara un mail al proyecto, que ellos me armaban el robot si yo pagaba los componentes.<br>
Les mandé el mail pero nunca me contestó nadie. A ver si tu puedes hacerme esta gestión te agradezco.<br><br><br><br><div class="gmail_quote">El 27 de septiembre de 2010 17:22, Andres Aguirre <span dir="ltr"><<a href="mailto:aaguirre@fing.edu.uy">aaguirre@fing.edu.uy</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Marcos, como estas?<br>
Yo estoy participando en el proyecto Butiá y estamos abiertos para<br>
evacuar cualquier tipo de dudas que tengas respecto a como controlamos<br>
periféricos desde la ceibalita mediante el USB.<br>
Creo que ya te contestamos a tí o a alguien de tu equipo una consulta<br>
sobre estos temas, pero estamos abiertos para juntarnos y charlar<br>
sobre los detalles técnicos si lo deseas.<br>
Nosotros usamos placas de E/S que utilizan microcontroladores para<br>
comandar los dispositivos electrónicos y estas se conectan al USB de<br>
la ceibalita. Todos los fuentes del proyecto están publicados en la<br>
web del mismo <a href="http://www.fing.edu.uy/inco/proyectos/butia/" target="_blank">http://www.fing.edu.uy/inco/proyectos/butia/</a> en<br>
particular hoy pensamos subir la versión 1.0 de los fuentes (tanto<br>
hardware como software y diseño mecánico).<br>
El tema es que el USB es un protocolo más complejo de lo que es el<br>
serial o el paralelo y uno termina perdiendo la flexibilidad que se<br>
tenia antes con los puertos paralelos para manejar un pin digital<br>
directamente desde un programa, por eso es que nosotros usamos<br>
microcontroladores. No pensaron en usar alguna cosa sencilla que te<br>
convierta en USB en un paralelo? algún chip de ftdi como el<br>
<a href="http://www.ftdichip.com/Products/ICs/FT245R.htm" target="_blank">http://www.ftdichip.com/Products/ICs/FT245R.htm</a><br>
Sino "hackear" algún teclado USB roto para colgarse de las patas que<br>
se usan para el led de num lock, blocks o similares ya que esos son<br>
controlables por software en un linux estándar (no se si se tendrán<br>
permisos en la ceibalita) y se tiran a la basura muchos diariamente.<br>
un abrazo<br>
<br>
<br>
<br>
--<br>
/\ndrés<br>
<br>
<a href="mailto:amviera@adinet.com.uy">amviera@adinet.com.uy</a> <<a href="mailto:amviera@adinet.com.uy">amviera@adinet.com.uy</a>>:<br>
<div><div></div><div class="h5">> Gracias Flavio.<br>
><br>
> Alguna vez pregunté acerca de eso y nadie me dio mucho corte.<br>
> Tampoco he podido acceder a información desde el proyecto BUTIA, aunque sé<br>
> que ellos utilizan el puerto USB<br>
><br>
> Sólo hay que averiguar cómo escribir y leer datos (nivel alto o bajo) en los<br>
> pines 2 y 3 del puerto. No debbe ser nada complicado.<br>
><br>
><br>
> Probé, pero no pude instalar pyusb.<br>
><br>
> Además, Adrián, entre los pines 1 y 4 alimentás el motor (si no consume<br>
> mucho) y entre los pines 2 y 3, respecto a masa, podés controlar puertas<br>
> lógicas o relés (transistor por medio) para regular la marcha del motor, es<br>
> decir, para controlar encendido y apagado, velocidad, e incluso sentido del<br>
> giro. Y con un poco de ingenio, con engranajes o poleas lo podés convertir<br>
> en un robot.<br>
><br>
> Si te interesa te puedo ayudar con la parte electrónica, aunque yo necesito<br>
> que alguien más ayude con la programación del puerto.<br>
><br>
> Saludos, Mauricio Viera.<br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
> ----Mensaje original----<br>
><br>
> De: <a href="mailto:fdanesse@gmail.com">fdanesse@gmail.com</a><br>
><br>
> Fecha: 25/09/2010 00:25<br>
><br>
> Para: "Comunidad ceibalJAM"<br>
><br>
> Asunto: Re: [Olpc-uruguay] Consulta Programacion USB<br>
><br>
><br>
><br>
> Hola.<br>
><br>
> Como primera respuesta, te digo que nunca he hecho nada con los usb pero ya<br>
> quedo haciendo experimentos.<br>
> Click acá para bajarte pyusb que es el paquete que necesitas para hacer esto<br>
> con python, se instala haciendo python setup.py install desde la terminal en<br>
> el directorio descomprimido.<br>
><br>
><br>
> Esto no viene en la xo, y no lo vas a poder instalar, al menos yo no pude,<br>
> tendrás que hacer algunos malabares para que funcione, pero vete<br>
> acostumbrando porque sin root no hay más remedio.<br>
><br>
> Lo otro que habría que investigar es como acceden los de robótica a los usb,<br>
> pregunta en "proyecto Butiá".<br>
><br>
><br>
> Acá te dejo un ejemplo de acceso a las impresoras utilizando pyusb:<br>
><br>
> import usb<br>
> import os<br>
><br>
> import sys<br>
> import time<br>
> import types<br>
><br>
><br>
> class Printer:<br>
><br>
><br>
> '''<br>
> Clase que maneja directamente el puerto USB, preguntando al hardware<br>
> conectado<br>
><br>
> los parametros indicativos del mismo.<br>
> '''<br>
><br>
><br>
> def __init__(self, device, configuration, interface):<br>
><br>
> if PRINTER_CLASS != interface.interfaceClass:<br>
><br>
> raise TypeError, "Tipo de interface non valido!"<br>
><br>
><br>
> self.__devhandle = device.open()<br>
> self.__devhandle.setConfiguration(configuration)<br>
><br>
> self.__devhandle.claimInterface(interface)<br>
> self.__devhandle.setAltInterface(interface)<br>
><br>
><br>
> self.__intf = interface.interfaceNumber<br>
> self.__alt = interface.alternateSetting<br>
><br>
><br>
> self.__conf = (type(configuration) == types.IntType \<br>
> or type(configuration) == types.LongType) and \<br>
><br>
> configuration or \<br>
> configuration.value<br>
><br>
><br>
> self.__bulkout = 1<br>
> self.__bulkin = 0x82<br>
><br>
><br>
> def __del__(self):<br>
><br>
><br>
> try:<br>
> self.__devhandle.releaseInterface(self.__intf)<br>
><br>
> del self.__devhandle<br>
> except:<br>
> pass<br>
><br>
><br>
> def getDeviceID(self, maxlen, timeout = 100):<br>
><br>
><br>
> return self.__devhandle.controlMsg(requestType = 0xa1,<br>
> request = 0,<br>
><br>
> value = self.__conf - 1,<br>
> index = self.__alt + (self.__intf<br>
> << 8),<br>
><br>
> buffer = maxlen,<br>
> timeout = timeout)<br>
><br>
><br>
> def getPortStatus(self, timeout = 100):<br>
><br>
><br>
> return self.__devhandle.controlMsg(requestType = 0xa1,<br>
> request = 1,<br>
><br>
> value = 0,<br>
> index = self.__intf,<br>
><br>
> buffer = 1,<br>
> timeout = timeout)[0]<br>
><br>
> def softReset(self, timeout = 100):<br>
><br>
> self.__devhandle.controlMsg(requestType = 0x21,<br>
><br>
> request = 2,<br>
> value = 0,<br>
><br>
> index = self.__intf,<br>
> buffer = 0)<br>
><br>
><br>
><br>
> def write(self, buffer, timeout = 100):<br>
><br>
><br>
> return self.__devhandle.bulkWrite(self.__bulkout,<br>
> buffer,<br>
><br>
> timeout)<br>
><br>
> def read(self, numbytes, timeout = 100):<br>
><br>
><br>
> return self.__devhandle.bulkRead(self.__bulkin,<br>
> numbytes,<br>
><br>
> timeout)<br>
><br>
> class usbDispositivo:<br>
><br>
><br>
> '''<br>
> Modelo de datos de un dispositivo USB (tipo VO)<br>
><br>
> '''<br>
><br>
> def __init__(self,dispositivo):<br>
><br>
><br>
> self.archivo = ''<br>
> self.clase = ''<br>
><br>
> self.subClase = ''<br>
> self.protocolo = ''<br>
><br>
> self.idFabricante = ''<br>
> self.idProducto = ''<br>
><br>
> self.version = ''<br>
> self.descripcion = ''<br>
><br>
> self.archivo = dispositivo.filename<br>
> self.clase = dispositivo.deviceClass<br>
><br>
> self.subClase = dispositivo.deviceSubClass<br>
> self.protocolo = dispositivo.deviceProtocol<br>
><br>
> self.idFabricante = dispositivo.idVendor<br>
> self.idProducto = dispositivo.idProduct<br>
><br>
> self.version = dispositivo.deviceVersion<br>
><br>
> try:<br>
><br>
> self.descripcion = dispositivo.open().getString(1,30)<br>
> except:<br>
><br>
> self.descripcion = ''<br>
><br>
> def getArchivo(self):<br>
><br>
> return self.archivo<br>
><br>
> def getClase(self):<br>
><br>
> return self.clase<br>
><br>
> def getSubClase(self):<br>
><br>
> return self.subClase<br>
><br>
> def getProtocolo(self):<br>
><br>
> return self.protocolo<br>
><br>
> def getIdFabricante(self):<br>
><br>
> return self.idFabricante<br>
><br>
> def getIdProducto(self):<br>
><br>
> return self.idProducto<br>
><br>
> def getVersion(self):<br>
><br>
> return self.version<br>
><br>
> def getDescripcion(self):<br>
><br>
> return self.descripcion<br>
><br>
><br>
><br>
><br>
> El 24 de septiembre de 2010 22:19, Adrian Silveira <<a href="mailto:adance@gmail.com">adance@gmail.com</a>><br>
> escribió:<br>
><br>
>> Hola a Todos,<br>
>><br>
>> mi nombre es Adrián y participo del proyecto de extensión "Isaac,<br>
>> Nikola y Galileo van a la Escuela (INGE) y los estudiantes también" (INGE)<br>
>> de la Facultad de Ingeniería. Se trata de desarrollar actividades<br>
>> relacionadas con la física en escuelas de contexto crítico en Canelones y de<br>
>> esta forma mostrarles que hay otra profesión a la que pueden aspirar. Es una<br>
>> propuesta muy rica, interesante, alentadora, ambiciosa, esperamos que tenga<br>
>> un gran impacto en ellos.<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> Como parte de nuestras actividades, queríamos mostrarles a escolares<br>
>> de cuarto año de escuela como controlar por software un ventilador enchufado<br>
>> a un puerto USB. Ellos lo armarían con los materiales que les damos (cable<br>
>> de datos usb, motor, cartulina) y luego enchufándolo a la ceibalita por el<br>
>> puerto usb se alimentaría de energía para funcionar. Lo que nos gustaría es<br>
>> poder desarrollar un programita bien sencillo, que haga de on/off de la<br>
>> corriente en el puerto usb para así enceder/apagar el ventilador.<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> Agradezco en base a su experiencia si me pueden orientar en si es factible<br>
>> desarrollar un programa que haga esto y todo lo que me puedan aportar para<br>
>> hacerlo se los agradezco.<br>
>><br>
>><br>
>> Muchas Gracias<br>
>><br>
>> Saludos<br>
>> Adrián<br>
>><br>
>> --<br>
>> "Podría Estar Encerrado en una Cascara de Nuez y Sentirme Rey de un<br>
>> Espacio Infinito..."<br>
>><br>
>><br>
>> _______________________________________________<br>
>><br>
>> Olpc-uruguay mailing list<br>
>><br>
>> <a href="mailto:Olpc-uruguay@lists.laptop.org">Olpc-uruguay@lists.laptop.org</a><br>
>><br>
>> <a href="http://lists.laptop.org/listinfo/olpc-uruguay" target="_blank">http://lists.laptop.org/listinfo/olpc-uruguay</a><br>
>><br>
>><br>
><br>
><br>
><br>
><br>
><br>
><br>
> _______________________________________________<br>
> Olpc-uruguay mailing list<br>
> <a href="mailto:Olpc-uruguay@lists.laptop.org">Olpc-uruguay@lists.laptop.org</a><br>
> <a href="http://lists.laptop.org/listinfo/olpc-uruguay" target="_blank">http://lists.laptop.org/listinfo/olpc-uruguay</a><br>
><br>
><br>
<br>
<br>
<br>
</div></div><font color="#888888">--<br>
/\ndrés<br>
</font><div><div></div><div class="h5">_______________________________________________<br>
Olpc-uruguay mailing list<br>
<a href="mailto:Olpc-uruguay@lists.laptop.org">Olpc-uruguay@lists.laptop.org</a><br>
<a href="http://lists.laptop.org/listinfo/olpc-uruguay" target="_blank">http://lists.laptop.org/listinfo/olpc-uruguay</a><br>
</div></div></blockquote></div><br>