Mostrando entradas con la etiqueta usb. Mostrar todas las entradas
Mostrando entradas con la etiqueta usb. Mostrar todas las entradas

viernes, 27 de junio de 2014

Depuración hardware en android (Ubuntu)

Esta entrada es de especial importancia para aquellos que os hayáis agenciado un teléfono/tablet con sistema operativo android, de marca no precisamente conocida.


Aquellos que hayáis probado a desarrollar para android pensaréis, igual que el común de los desarrolladores de ésta plataforma, que utilizar dispositivos virtuales, o emuladores, es lento y farragoso. Para ello, el SDK de android nos permite conectar nuestros dispositivos android al PC y utilizarlos como dispositivo de pruebas. Ésto es mucho más rápido y tiene la ventaja de que ves la aplicación funcionando en un terminal de verdad.

Sin embargo no todos los dispositivos se comportan de la misma manera cuando los conectamos a nuestro PC para probar nuestras apps en ellos. En mi caso, hará cosa de un año me compré una tablet china (PiPo Max M1), y cuando la conecto al PC, el adb ni se inmuta. He de decir que con mi teléfono (Xperia Ray) no tengo ningún problema. Es detectado automáticamente por mi PC y sale en la lista de dispositivos.

Después de dar muchas vueltas y probar muchas soluciones, he dado con un método para hacer funcionar (al menos) los dispositivos mencionados. En el caso de la tablet, podemos decir que cualquier dispositivo con chipset RockChip 3066, ya que todos tiene el mismo "vendor id". Dicho método os lo proporciono en forma de script de bash, como buen programador y amante de linux.

Notas adicionales:
  • Activad el modo debug en vuestro teléfono.
  • Ejecutad el script como super usuario.
  • Debeis proporcionar el "vendor id" de vuestro dispositivo al script como único y necesario parámetro. Si no lo conocéis, podéis buscarlo aquí.
  • Para los dispositivos chinos lo tenéis un poco más complicado pero buscando un poco suele aparecer. Para los que tengáis un dispositivo RockChip 3066, el "vendor id" es 0x2207
  • Conectad vuestro dispositivo en modo de almacenamiento antes de ejecutar el script (no es imprescindible, pero al final de la ejecución se muestra la lista de dispositivos conectados y detectados)
  • Es crucial, que si detenéis y arrancais el servidor de adb, lo hagáis como superusuario. De lo contrario el dispositivo podría no aparecer, o como me pasa a mí, poner 20 signos de interrogación y un "no permissions" al listar los dispositivos.
Es posible que al final de la ejecución la lista de dispositivos siga vacía, o invariable. Esperad unos segundos y ejecutad adb devices. Es posible que el comando se ejecute antes de que se detecte el dispositivo.

miércoles, 30 de mayo de 2012

Ayuda! Mi arduino se reinicia solo...


En éste caso, y ya que la temática actual lo venía exigiendo, vamos a solucionar un pequeño problema con nuestro Arduino, que nos trae de cabeza desde hace unos días. Si observas que tu arduino hace cosas raras como reiniciarse sin previa orden, o parpadeos del led integrado en el pin 13 inesperados, etc, sigue leyendo, porque puede ser que termines tirándote de los pelos...

En primer lugar, para descartar otros errores, guarda el sketch en el que estés trabajando en lugar seguro dentro del PC. Y a continuación crea uno nuevo con el siguiente código y grábalo en tu arduino. Éste código está pensado para ser lo más simple posible, y está comprobado que falla en las circunstancias adecuadas. ;)

const int led = 13;

void setup(){
   pinMode(led, OUTPUT);
   digitalWrite(led, HIGH);
}

void loop(){

}

Parece obvio, ¿verdad? Según éste código ponemos el pin 13 (led de la placa) como salida, y a continuación enviamos un nivel alto. Lo que supone que el led se encienda. Observa la placa con atención y si el led parpadea de vez en cuando, comprueba lo siguiente:

  • Si tu PC es de escritorio, probablemente dejará alimentados los USB tras apagarlo. Prueba a apagar el PC y dejar tu Arduino conectado. Asegúrate de si ahora el funcionamiento es correcto. Así descartaremos un problema de interferencia entre SW.
Si una vez apagado, Arduino funciona bien, estamos ante un caso de interferencia con otro software. Check this:
  • Arranca de nuevo tu PC.
  • En primer lugar, si tienes un smartphone, que utilice un programa de sincronización en el equipo, prueba a cerrarlo. En mi caso era el PC-Companion de los XPERIA, pero puede ser cualquier otro.
  • Reinicia la placa Arduino con el botón de reset y vuelve a observar.
  • Si sigue fallando, abre el administrador de tareas y trata de buscar algún proceso que esté enviando mensajes al USB a modo de "polling". Si encuentras algo sospechoso, ciérralo también y de nuevo el paso anterior.
Si tu aún no se ha solucionado, prueba lo siguiente:
  • Desinstala el controlador de la placa Arduino y vuelve a instalarlo siguiendo los pasos de la página oficial.
  • Comprobaremos que el usb del PC funciona correctamente, y si es así, probaremos otro cable.
  • Si finalmente el problema persiste (y conste que se me están acabando las ideas) hay quien ha tenido problemas con algo llamado "AutoResetOnSerialConnection", pásate por aquí.
Seguidos éstos pasos, el 99% de los problemas deberían solucionarse. Sin embargo, en ocasiones la informática es caprichosa. También puedes plantearte probar otro Arduino en tu máquina, y así sabremos si se trata de un defecto en la placa.

Espero que os haya servido de ayuda.

Un saludo,

MarcosRgz.

domingo, 20 de mayo de 2012

Vistazo al proyecto Arduino

Fotografía extraída de la página oficial de arduino

Después de éste largo tiempo fuera del cable, volvemos para hablar de un aparato que lo está petando en el mundillo de la electrónica. Ni mas ni menos que Arduino. Open hardware con denominación italiana. El objetivo de éste maravilloso componente es facilitar en cierto modo el desarollo de aplicaciones electrónicas y digitales. Pero, ¿Como es eso posible? Lean y tomen nota...

Para hacernos una idea un poco pijamera de lo que tenemos entre manos, se trata de una placa con un microcontrolador similar a un PIC (concretamente uno de la casa Amtel Systems Co.), 28 pines hembra cada uno de ellos con su respectiva función impresa en dicha placa, un micropulsador de reset, unos cuantos condensadores, diodos, resistencias y leds (todo SMC), un conector de alimentación, pines para programación en circuito (ICSP), y un conector USB estándar hembra de tipo B. Un buen batido de componentes.

En cuanto a software, en la sección de descargas de la página oficial del proyecto arduino podemos encontrar un paquete que contiene, desde los drivers del aparato, hasta un IDE propio de la casa, bastante minimalista, pero que cumple su función. Todo ello, claro está, pasando por gran cantidad de ejemplos funcionales para diferentes aplicaciones y las librerías necesarias para llevar a cabo vuestros proyectos.

Bueno, todo esto no termina de sonar bien del todo. Seguro que muchos conoceréis más o menos el mundo de los PICs y lo complicado que es realizar un proyecto completo. Arduino nos facilita la vida enormemente, poniendo a nuestra disposición numerosas librerías de alto nivel. Para que os termine de quedar claro, pasaros por aquí y echadle un vistazo al ejemplo de la página oficial. Veréis como transcurridos 5 minutos desde que sacásteis vuestro arduino de su envoltorio tenéis una aplicación funcionando, y lo mejor de todo: ¡Entendéis hasta el último detalle de la misma!

Finalmente debemos comentar un par de cosas derivadas de la experiencia. En primer lugar arduino es uno de los pocos hardwares libres que existen. Es realmente económico, pero podéis compraros una copia china más barata en eBay. No obstante, la diferencia de precio va a ser menospreciable, y en el primer caso estaréis contribuyendo a uno de los proyectos  socio-tecnológicos más interesantes para la comunidad de la que formamos parte.

En segundo lugar, y en una tónica menos profunda, vuestro arduino vendrá sin cable, probablemente un sábado cuando justamente las tiendas estén cerrando por una festividad extraña que aún no se ha inventado. Asique buscad por casa uno de éstos cables o id a vuestra tienda preferida a por uno. És el tipo de USB cuadrado que suelen utilizar las impresoras modernas.

Y ésto es todo por el momento.

Próximamente, megatutorial de conexión arduino-PC mediante USB, e interfacing con mi amado C#. No te lo puedes perder!

Un saludo, MarcosR.