[Olpc-uruguay] Consulta Programacion USB

Andres Aguirre aaguirre en fing.edu.uy
Sab Oct 2 16:43:31 EDT 2010


Hola Flavio! como estas?
   Si te interesa armarte un butiá, tendrías que comenzar encargando
dos motores ax12, una placa arduino mega (en roboshop venden) un kit
de sensores (http://www.robotshop.ca/seeedstudio-electronic-brick-sensor-shield-starter-kit-arduino-1.html)
al menos un sensor infrarojo para detectar tonos de gris:
http://www.robotshop.ca/inex-infrared-reflective-sensor-TCR-2.html al
menos un sensor infrarojo para sensar distancias
http://www.robotshop.ca/sharp-gp2d120-ir-range-sensor.html . Los
cortes en acrílico y el circuito que se diseño para conectar los
sensores lo estamos por colgar en nuestro sitio, dentro de poco lo
podrás encontrar en
http://www.fing.edu.uy/inco/proyectos/butia/publicaciones.html junto
con el part list y los detalles de las ruedas que compramos,
tornillos, etc.  De todas formas te conviene comenzar por las compras
de la placa arduino, sensores, y motores.
Te comento que también estamos trabajando en una versión butiá
económica que pueda ser armada con material de desecho y con
materiales adquiribles en plaza que esperemos este pronta para antes
de fin de año.
Saludos y estamos en contacto
Andrés

2010/9/27 Flavio Danesse <fdanesse en gmail.com>:
> Aprovecho tu mensaje ay que dices que trabajas con la gente de butiá.
> 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.
> Les mandé el mail pero nunca me contestó nadie. A ver si tu puedes hacerme
> esta gestión te agradezco.
>
>
>
> El 27 de septiembre de 2010 17:22, Andres Aguirre <aaguirre en fing.edu.uy>
> escribió:
>>
>> Marcos, como estas?
>> Yo estoy participando en el proyecto Butiá y estamos abiertos para
>> evacuar cualquier tipo de dudas que tengas respecto a como controlamos
>> periféricos desde la ceibalita mediante el USB.
>> Creo que ya te contestamos a tí o a alguien de tu equipo una consulta
>> sobre estos temas, pero estamos abiertos para juntarnos y charlar
>> sobre los detalles técnicos si lo deseas.
>> Nosotros usamos placas de E/S que utilizan microcontroladores para
>> comandar los dispositivos electrónicos y estas se conectan al USB de
>> la ceibalita. Todos los fuentes del proyecto están publicados en la
>> web del mismo http://www.fing.edu.uy/inco/proyectos/butia/ en
>> particular hoy pensamos subir la versión 1.0 de los fuentes (tanto
>> hardware como software y diseño mecánico).
>> El tema es que el USB es un protocolo más complejo de lo que es el
>> serial o el paralelo y uno termina perdiendo la flexibilidad que se
>> tenia antes con los puertos paralelos  para manejar un pin digital
>> directamente desde un programa, por eso es que nosotros usamos
>> microcontroladores. No pensaron en usar alguna cosa sencilla que te
>> convierta en USB en un paralelo? algún chip de ftdi como el
>> http://www.ftdichip.com/Products/ICs/FT245R.htm
>> Sino "hackear" algún teclado USB roto para colgarse de las patas que
>> se usan para el led de num lock, blocks o similares ya que esos son
>> controlables por software en un linux estándar (no se si se tendrán
>> permisos en la ceibalita) y se tiran a la basura muchos diariamente.
>> un abrazo
>>
>>
>>
>> --
>> /\ndrés
>>
>>  amviera en adinet.com.uy <amviera en adinet.com.uy>:
>> > 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 usb
>> > import os
>> >
>> > import sys
>> > import time
>> > import 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
>> > << 8),
>> >
>> >                                            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
>> >>
>> >>
>> >
>> >
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > Olpc-uruguay mailing list
>> > Olpc-uruguay en lists.laptop.org
>> > http://lists.laptop.org/listinfo/olpc-uruguay
>> >
>> >
>>
>>
>>
>> --
>> /\ndrés
>> _______________________________________________
>> Olpc-uruguay mailing list
>> Olpc-uruguay en lists.laptop.org
>> http://lists.laptop.org/listinfo/olpc-uruguay
>
>
> _______________________________________________
> Olpc-uruguay mailing list
> Olpc-uruguay en lists.laptop.org
> http://lists.laptop.org/listinfo/olpc-uruguay
>
>


More information about the Olpc-uruguay mailing list