Archivos mensuales: mayo 2015

Descarga música grátis, sin morir en el intento

Antes de continuar, quiero dejar muy claro, que no me hago responsable por el uso (o mal uso) del código presentado en este post. Todo ésto fue desarrollado con un fin puramente académico, sin fines de lucro. Siéntanse libres de usar el código, pero no me responsabilizo de cualquier implicación legal que su uso pudiera acarrear.

Descargár música sin tener el derecho sobre la misma es ilegal!! Nunca olviden eso.

Ahora si, sabiendo a lo que vamos, para una de mis asignaturas del master, una de las tareas era explotar un API de algún sitio web (facebook, twitter, linkedin, etc), para extraer información, analizarla y obtener beneficios de la misma: Por ejemplo, y a breves rasgos, pude realizar un análisis del sentimiento de los tweets generados en determinado momento, en paises donde se habla español, que pueden visualizarlo en este enlace.

Para ir un poco más allá, se me ocurrió la idea de extraer el API de un sitio que no tenga una interfaz de programación documentada. El objetivo: El sitio de música http://music.163.com

Este sitio (chino) no tiene un API documentada, pero mediante el uso de algunas herramientas web, como FireBug, pudimos obtener las llamadas que se realizan para obtener datos de artistas, discos y canciones.

Este script está escrito en Python 2.7, y para ejecutarlo basta con descargar el archivo desde este enlace, descomprimirlo, y ejecutar desde la línea de comandos lo siguiente:

python musica.py

El menú presentará 3 opciones de búsqueda: por autor, por disco o por canción. Bastará con escoger el tipo de búsqueda, seleccionar el item de las posibles opciones encontradas, y descargar el item escogido.

Espero les sea de utilidad 😀 y recuerden! No descarguen música ilegal!

Para más información, pueden ingresar a mi repositorio en GitHub

ESP8266 + Stellaris Launchpad = IoT

Dado que para una de mis asignaturas del master realicé una presentación sobre el Hardware que se utiliza en el prototipado de dispositivos para el Internet de las Cosas (IoT), decidí hacer una demostración con hardware real, y mostrar una aplicación práctica con hardware real; así que nada mejor que un ejemplo de hardware, que controlar un led multicolor y leer un sensor de temperatura, desde un navegador web.

Debido a que estoy algo lejos de mi casa, y no tengo todo el equipo necesario para cualquier trabajo electrónico, tuve que limitar un poco la aplicación práctica, así que buscando el hardware que tenía a la mano, obtuve lo siguiente:

  • ESP8266 para la conectividad WiFi
  • Stellaris Launchpad para usar su LED multicolor y su sensor de temperatura

Nunca había usado el módulo ESP8266 (tenía un par guardado desde hace algunos meses acá) y ‘esta era la oportunidad perfecta para probarlo, además, hace pocas semanas se hizo el anuncio de que la versión 1.6.2 del IDE de Arduino podía compilar y grabar código en el ESP8266 así que era la oportunidad perfecta para probarlo!

El módulo ESP8266 puede ser programado usando un convertidor USB-RS232 que funcione a 3.3v, y aquí es donde surgió el primer problema: comprar un convertidor de ese tipo demoraría cerca de 1 mes, así que no era una opción viable. Resulta que probé haciendo un puente serial usando un arduino, pero funcionaba a medias. Tenía conexión de comandos AT con el ESP8266, pero no lo podía flashear….. había que buscar otra opción.

En ese momento recordé un detalle. El Stellaris Launchpad, en realidad tiene 2 chips. El uno funciona como debugger/interfaz serial, y el otro es el microcontrolador programable, que puede ser desconectado mediante un jumper en la tarjeta; además, tiene los pines Rx y Tx del convertidor desconectados, así que si conectaba ahí el ESP8266 podía ser flasheado. En resumen, se puede usar un launchpad como interfaz serial para programar el ESP8266!

Solventado el problema de la programación del chip, a echarle mano al código! Dentro del IDE de Arduino, existen algunos ejemplos de uso del ESP8266, que según se comenta en los foros, se programa igual que el Shield WiFi oficial de Arduino. Dadas las limitaciones de la red WiFi de la Universidad, y para el ejemplo, el módulo será configurado de la siguiente manera:

• Access Point WiFi
• Red abierta (sin contrasena WEP o WPA)
• Conexión RS232 con el Stellaris Launchpad
• Configurado como servidor web
• 5 comandos disponibles via URL (/led/rojo[verde, azul, off], /status)

Cada vez que el ESP8266 reciba una petición del navegador, analizará la url, y enviará un comando via puerto serie al Launchpad, para ejecutar a accion seleccionada.

En el Launchpad, el código es mucho mas simple. Se va a utilizar uno de los puertos UART para recibir comandos desde el ESP8266, y encender el led seleccionado, o apagarlos todos. Además, al recibir el comando equivalente a /status desde el ESP8266, enviará el dato de la temperatura del Launchpad, obtenida desde su sensor interno de temperatura. Cabe recalcar que el Launchpad, fué programado usando el IDE Energía, así que la compatibilidad de código con una tarjeta Arduino está garantizada.

El resultado? Un led wifi, con sensor de temperatura integrado. Basta con encender el circuito (mediante una batería de móvil, o un cargador de pared), conectarse a la red ESP8266 (que la genera el módulo WiFi), y abrir la url http://192.168.4.1/status para verificar la conecitividad con el módulo.

Una vez que hemos comprobado la conectividad basta con probar con los comandos para ver como responde. por ejm, si abrimos la url http://192.168.4.1/led/azul, se encenderá el led azul del Stellaris

Realmente el ESP8266 tiene mucho futuro en proyectos donde se requiera conexión WiFi a cualquier dispositivo electrónico. Además su bajo precio (menos de $5 si se lo compra en ebay) lo convierte en una muy buena opción para este tipo de proyectos.

El código fuente para el Stellaris, y el ESP8266, puede ser descargado en mi repositorio de GitHub: https://github.com/patolin/esp8266-stellaris-launchpad