Probando el módulo wifi ESP8266

Últimamente en el mundo DIY se está hablando de un módulo wifi barato y potente que está basado en el chip ESP8266.

esp8266

El precio de cada unidad está en alrededor de 5$ y es capaz de comunicarse más allá de los 300 metros usando la antena que viene incorporada en la placa.

Yo he comprado una pareja por menos de 10$ en aliexpress, y en este artículo voy a comentar cómo hacerlo funcionar.

Lo primero que hay que indicar es que funciona a 3,3V. y lo segundo es que se comunica mediante el puerto serie que tiene el módulo. Por ello no se puede conectar directamente a un Arduino que funciona a 5 voltios, así que necesitareis convertir las líneas TX, RX y la alimentción a 3,3V.

El módulo tiene 8 pines repartidos en 2 filas. El esquema de conexiones es este:

conexiones
Hay varias versiones del módulo. En las más recientes será necesario que el pin activar esté puesto a VCC (o una salida digital a 1) para hacerlo funcionar.

Para probar el módulo he usado un conversor usb a serie que funciona a 3,3V. Sin embargo el módulo puede llegar de consumir unos 200mA en algunos momentos por lo que lo he alimentado aparte con un regulador, eso si, uniendo siempre las masas.

montaje

Me he conectado por putty a 115200 bps al puerto serie de conversor y acto seguido he dado alimentación al módulo, con lo que sale el primer mensaje indicándonos que está preparado:

putty1

Todo el comportamiento del módulo se basa en comandos AT, por lo que vamos a inicializarlo con:

AT+RST

putty2El siguiente paso es configurar el tipo de wifi. Para este ejemplo lo configuraré como estación (que es como está por defecto):

AT+CWMODE=1

Lo siguiente será mostrar una lista de las wifis disponibles:

AT+CWLAP

putty3

Me conectaré a SISTEMASORP con la clave que tengo:

AT+CWJAP="SISTEMASORP","miclave"

Ahora comprobamos qué IP me ha dado el router:

AT+CIFSR

putty4Eso significa que hemos conectado con éxito y que ya tenemos una IP.

Mi siguiente paso ha sido crear un script php muy simple en mi servidor web que muestra la cadena Hola seguida de la fecha actual. El objetivo es hacer una llamada al servidor web, hacerle una petición http y que este nos devuelva la cadena mencionada.

Para ello debemos configurar el módulo para que haga una sola conexión (aunque se pueden hacer hasta 5 simultáneas):

AT+CIPMUX=0

Conectamos al servidor web mediante un socket TCP por el puerto 80:

AT+CIPSTART="TCP","66.147.244.243",80

Le indicamos cuántos caracteres le vamos a enviar:

AT+CIPSEND=50

Esto nos mostrará un símbolo >, donde le meteremos la cadena a enviar. Para el ejemplo seguiremos los siguientes pasos en el putty:

  • Copiamos y pegamos GET /prueba.php HTTP/1.0
  • Pulsamos CTRL+M y CTRL+J
  • Copiamos y pegamos Host: sistemasorp.es
  • Pulsamos CTRL+M y CTRL+J y otra vez CTRL+M y CTRL+J

Si todo ha ido bien recibiremos una respuesta +IPD con el número de bytes recibidos, la cabecera http del servidor y la cadena esperada:

putty5

El protocolo http especifica que el socket debe ser cerrado después de enviar la respuesta, por eso vemos un Unlink, si en otro caso queremos cerrar nosotros la conexión, debemos usar el comando:

AT+CIPCLOSE

Hay más funcionalidades que se pueden usar con los comandos AT, aquí una lista de ellos.

Espero que con este ejemplo os sirva para empezar a dar uso a estos módulos wifi tan baratos y funcionales.

Actualización 09/10/2014:

Si se desea enviar y recibir datos en bruto, es decir, sin tener que mediar con la cantidad de bytes del comando AT+CIPSEND y la respuesta IPD, podemos activar el modo de datos con el siguiente comando:

AT+CIPMODE=1

Y cuando queramos enviar y recibir datos, lo hacemos con CIPSEND sin poner los bytes a enviar:

AT+CIPSEND

Así entramos en el modo de datos y todo lo que recibe el módulo por el pin RX lo envía por wifi y todo lo que recibe el módulo por wifi lo envía por el pin TX. Para salir de este modo hay que esperar 1 segundo sin enviar nada, enviar la secuencia de escape formada por 3 símbolos más +++ y esperar otro segundo sin enviar nada, momento en el cual volvemos a entrar en el modo de comandos. Este vídeo que he grabado muestra esa funcionalidad:

En el vídeo por un lado tengo el putty conectado al módulo y por el otro creo un servidor con netcat en el puerto 9000. Cuando entro en modo de datos escribo en la ventana putty Hello, cosa que se ve reflejada en la ventana de netcat. Acto seguido escribo Welcome to ESP8266 en la ventana de netcat y pulso enter (si no netcat no envía nada), para a continuación mostrarse en la ventana de putty. Finalmente copio y pego la secuencia de escape +++ para salir del modo datos al modo comandos (hay que hacerlo rápido, ya que escribiéndolo directamente no me ha salido).

Encender petardos y cohetes con Arduino y Android

Creo que a estas alturas todos hemos visto cómo se encienden petardos y cohetes: simplemente acercando la llama de un mechero a la mecha de estos y la magia de la pólvora hace el resto.

En este artículo voy a explicar cómo hacer el mismo proceso pero de una forma más segura, y por supuesto más tecnológica.

1402682187170

Pero antes unas reglas básicas:

  • Los petardos y los cohetes son peligrosos, por eso se cauteloso cuando los manejes.
  • No enciendas un petardo o un cohete en la mano ni cerca de ti, de otras personas o animales.
  • No molestes a la gente encendiéndolos en zonas residenciales ni en horarios intempestivos.
  • Muchos municipios tienen prohibido el uso de material pirotécnico en toda su zona metropolitana.
  • El hilo de nicrom alcanza temperaturas elevadas, cerciorate que no pasa corriente por él cuando lo estés manejando.
  • Las baterías de litio son peligrosas, sigue las instrucciones de seguridad que las acompañan.
  • Usa cableado que permita un valor de corriente en amperios mucho mayor que lo que va a consumir el sistema.

Este artículo es meramente divulgativo y no me hago responsable de cualquier incidencia que pudiera ocurrir si lo pones en práctica, por tanto si lo llevas a cabo será bajo tu propia responsabilidad.

La idea es encender la mecha de petardos o cohetes desde un móvil Android, tal y como se puede ver en el siguiente vídeo que grabé para la demostración:

El esquema de los componentes es el siguiente:

esquema

Empezamos por una batería LiPo de 3 celdas (11,1 V.) que será la encargada de la alimentación del conjunto. Todo el cableado está pensado para corrientes de 10 A, pero puede diferir según tus necesidades.

Seguimos con un fusible de 10A, que será el que corte la corriente si se produce un cortocircuito (por ejemplo en el caso de que debido a la explosión de un petardo se unieran directamente los terminales VCC y GND que sujetan el hilo de nicrom).

A continuación está el hilo de nicrom. Este cable, que tiene muy poca resistencia (2,2 Ω en mi caso), se pone al rojo vivo cuando pasa una corriente a través de el. La velocidad a la que se calienta depende del voltaje que se aplique, lo normal suele ser alrededor de los 12 voltios. Este hará las veces de encendedor de la mecha, ya que puede llegar a los 300º C. Se puede adquirir en cualquier tienda de electrónica o reciclarse de un secador de pelo o de una tostadora.

Después viene un transistor mosfet de canal N, que será el interruptor que hará que el hilo de nicrom se encienda o se apague. Hay muchos tipos de mosfet de canal N, por lo que nos interesa uno que pueda ser usado con microcontroladores con lógica TTL (como el de la placa Arduino). Yo he usado el STP55NF06L con encapsulamiento TO-220 ¿por qué?, pues en la hoja de características podemos verlo:

El Vds es de 60 V. Como voy a usar 12 V. Tengo más que de sobra.

El Id es de 55 A. Según la ley de Ohm, La fuente de alimentación de 12 V. partido por la resistencia del hilo de nicrom con 2,2 Ω nos dá que se consumen unos 5 A. Igualmente tengo mucho margen.

El Vgs(th) minima es de 1V. Eso significa que cuando el voltaje es menor que 1V el circuito está abierto y que por encima de esto cerrará el circuito dejando pasar la corriente. Ideal para el Arduino que trabaja con 5 V.

La Rds(on) máxima es muy baja: 0,020 Ω. Esto significa que prácticamente el mosfet no se calentará con la corriente con la que le hagamos trabajar (5 A. * 5 A. * 0,020 Ω = 0,5 Watios)

La gráfica Id/Vds indica que con 5 V en el pin Gate del mosfet, podemos conducir una tensión de 12 V. con una carga de mucho más de 120 A. Como sólo tenemos unos 5 A. tenemos más que suficiente.

idvds

Como se trata de un mosfet de canal N, el pin Source (3) tiene que ir a masa y el pin Drain (2) tiene que estar conectado a la carga. El pin Gate (1) tiene que estar conectado a Arduino, que será quien le dirá si tiene que estar abierto o no. Además entre la conexión del Arduino y Gate hay una resistencia de 10K que va a masa directamente, esto es para que:

  • La puerta lógica no quede flotante y su estado esté indeterminado (pudiendo activar el nicrom antes de tiempo), por lo que si el pin de Arduino esta puesto configurado como entrada (al arrancar siempre está asi) el Gate esté conectado a masa (0 V. o LOW).
  • Debido al caso anterior, cuando el pin de Arduino está configurado como salida y pone la entrada a 5 V. (o HIGH), la resistencia de 10K hace que no haya cortocircuito con masa.

Proseguimos con la placa Arduino, cuyo programa se puede descargar de aquí. La placa está alimentada también desde la batería LiPo, ya sea directamente a los pines Vin y GND o a través del conector de alimentación. Unido a Arduino está un módulo Bluetooth HC-06 que será el encargado de comunicarse con el móvil.

Finalmente en el móvil, que tiene que tener el sistema operativo Android, hay que instalar la aplicación ArduDroid desde la Play Store, que con su interfaz sencilla podemos manejar los pines de Arduino directamente.

Screenshot_2014-06-16-13-37-04

Humanoids 2014

BannerRobots

 

Del martes 18 al jueves 20 de Noviembre se celebrará en el hotel Melía Castilla de Madrid la conferencia Humanoids 2014. Este evento, organizado por la Universidad Carlos III y el IEEE Robotics & Automation Society, estará enfocado este año en la iteración entre máquinas antropomorfas y humanos.

También se dará esos días la competición HUMABOT, donde robots humanoides competirán por ser el perfecto asistente en el hogar.

Como visitas técnicas, se podra ver la sede AIRBUS en Getafe, la fábrica de PSA (Peugeot – Citröen) en Madrid, el Robotics Lab de la Universidad de Carlos III y el Centro de Automática y Robótica del CSIC-UPM.

Bilbot

bilbot

Un nuevo evento sobre robótica se celebrará probablemente en Junio de este año. En esta ocasión será en Bilbao y estará centrado en lucha de robots, o como más se conoce Robot Wars.

El evento se llama Bilbot y la empresa encargada de organizarlo es BlowOut Events. Aún no se conocen fechas ni el lugar exacto, pero se puede hacer la pre-reserva (no obliga a nada a los interesados, no es vinculante, ni requiere aportación económica de reserva) para competir en este evento enviando los siguientes datos a blowoutbilbao@gmail.com:

  • Nombre “artístico” del equipo de creadores
  • Nombre del robot concursante
  • Universidad, Escuela, o Asociación a la que pertenezcan
  • Datos de los componentes del equipo, correo electrónico y otras formas de contacto.

Los premios son los siguientes:

  • 1º Clasificado: 4.000 Euros, trofeo y regalo promocional
  • 2º Clasificado: 2.000 Euros, trofeo y regalo promocional
  • 3º Clasificado: 1.000 Euros, trofeo y regalo promocional
  • 4º Clasificado:    500 Euros, diploma y regalo promocional
  • 5º Clasificado:    400 Euros, diploma y regalo promocional
  • 6º Clasificado:     300 Euros, diploma y regalo promocional
  • 7º Clasificado:     200 Euros, diplpoma y regalo promocional
  • 8º Clasificado:     100 Euros, diploma y regalo promocional
  • Resto de participantes: Diploma y regalo promocional

Las reglas de participación son estas:

  1. Los robots podrán fabricarse con cualquier material no peligroso, y su masa máxima no podrá superar los 10 kg.
  2. Como sistemas de propulsión, movimiento y motorización, se podrán usar mecanismos y acumuladores eléctricos, cinéticos, hidráulicos o neumáticos, así como cualquier dispositivo electrónico digital o analógico, palancas, engranajes, correas y demás sistemas mecánicos.No se pueden emplear motorizaciones de explosión ni nucleares.
  3. No se permite el uso de elementos basados en explosivos, gases inflamables o que contengan ácidos corrosivos, materiales radiactivos u otras sustancias peligrosas.
  4. Se permite el uso de gases inertes o inócuos, tales como Helio, Dióxido de Carbono, aire comprimido, Nitrógeno, etc,   incluso  contenidos en un depósito a presión, siempre que la misma no supere los 50 bar (51 atm), teniendo que ser su masa, inferior a 90 gr.
  5. Las eliminatorias se llevarán a cabo mediante el sistema de liguillas.
  6. Los combates tendrán una duración máxima de 4 minutos, al final de los cuáles, si ninguno de los robots es eliminado, se decidirá el ganador mediante decisión arbitral, atendiendo al mayor dominio de alguno de los competidores, los daños causados a su adversario y otros criterios similares.
  7. Gana el robot que consiga inutilizar a su adversario, bien por destrucción total, por inmovilización o neutralización durante 30 segundos o por haberlo sacado del área de combate, que consistirá en un cuadrado de 8 por 8 metros, limitado por una protección transparente, rodeando una zona de confinamiento de 1 por 1 metros. Caer en dicha zona, supone la pérdida del combate.

Para ir abriendo boca, un vídeo de cómo son las robot wars:

Ejemplo de cómo hacer un robot de combate

Una tienda donde comprar componentes (no tenemos ningún contrato ni nada parecido con ella).

¿Os atreveis a competir?

Probando mOwayduino

Esta semana he recibido el robot mOwayduino. Este robot se financió en una campaña de indiegogo, y aunque no alcanzó su objetivo, si se comprometieron a enviar lo pedido. La empresa española Bizintek Innova es la que está detrás del desarrollo y producción de este producto. El objetivo de este robot es el de enseñar robótica en colegios e institutos, pero también hace las delicias de cualquier aficionado.

IMG_0827IMG_0828

El microcontrolador que tiene es un ATmega 32u4 (el que usa por ejemplo Arduino Leonardo)  y tiene una lista de sensores y actuadores interesante:

  • 2 motores con encoder
  • 4 sensores infrarrojos anticolisión
  • 1 sensor de luz direccional
  • 2 sensores optoreflectivos infrarrojos para el suelo
  • LED superior RGB
  • LED frontal
  • LEDs rojos traseros
  • Acelerómetro de 3 ejes
  • Micrófono
  • Altavoz
  • Módulo de Radio Frecuencia para comunicación inalámbrica basado en nRF24L01+ (se pueden comunicar entre ellos)
  • Batería LIPO recargable por USB

Además tiene una ranura de expasión para ampliar funcionalidades mediante bus SPI. Se venden módulos por separado para usar esta ranura con una cámara o WiFi.

Se puede programar con el IDE de Arduino o con Scracth (y Python, aunque no he encontrado su librería para este).

La caja que envían contiene el propio robot y un cable USB para cargarlo y para enviarle los programas. El robot ya viene precargado con un programa que detecta obstáculos y los evita haciendo sonar su pequeño altavoz y encendiendo sus leds.

Para cargar nuestros programas voy a comentar qué pasos hay que seguir:

Lo primero es decargarse el IDE de Arduino (en el momento de escribir este artículo la última versión es la 1.0.5).

Después hay que irse a la página de moway-robot para descargar el software.

A continuación en la instalación de éste nos preguntará en qué carpeta está Arduino para instalar los drivers, librerías y ejemplos.

instalacion

 

Una vez finalizada la instalación ya podemos enchufar el robot mOwayduino en el puerto USB. Nos lo detectará como USB IO board y nos pedirá los drivers. Estos están ubicados dentro de la carpeta drivers de Arduino. Si todo ha ido bien nos saldrá un dispositivo llamado Mowayduinoi bootloader. Fijarse en qué puerto COM le ha asignado Windows.

driver

Ahora arrancamos el entorno de Arduino y abrimos cualquiera de los ejemplos que trae en el menú Archivo/Ejemplos/Mowayduino.

Para subir el programa a nuestro robot, primero hay que irse al menú Herramientas/Tarjeta y seleccionar Mowayduino, después hay que irse al menú Herramientas/Puerto Serial y elegir el puerto COM que nos ha dado antes en la instalación del driver, finalmente ir al menú Archivo y seleccionar la opción Cargar para subir el programa al robot.

Por ejemplo vamos a modificar ligeramente el programa para que el robot se mueva por un recinto cerrado y que empiece cuando oiga un chasquido de dedos. El resultado es este:

Y este es el programa:

//****************************************
//  Libraries
//****************************************
#include "MowayduinoRobot.h"
#include <SPI.h>
#include <EEPROM.h>
 
//****************************************
//  Objects
//****************************************
mowayduinorobot robot;
boolean empieza;
boolean sonido;
unsigned long tiempo;
 
//****************************************
//  RF event function (necessary for compiling)
//****************************************
void RfDataReady();
void RfDataReady()
{}
 
 
//****************************************
//
//  Main Program
//
//****************************************
void setup()
{
  robot.beginMowayduino();
  empieza = false;
  delay(2000);
}
 
void loop()
{
  if(empieza)
  {
    LedsStraight();  
    robot.Straight(100);
    robot.readLine();
    if(robot.Line[LINE_L] == 1 || robot.Line[LINE_R] == 1)
    {
      LedsRotate();
 
      // Rotate 140 degrees with a speed value of 100
      robot.RotateRight(100, 140);
      robot.Speakeron();
      sonido = true;
      tiempo = millis();
      delay(100);
    }
  }
  else
  {
    if(robot.readMic() > 500)
    {
      empieza = true;
    }
  }
  if(sonido && (millis() - tiempo > 500))
  {
    robot.Speakeroff();
    sonido = false;
  }
}
 
//****************************************
//
//  Functions
//
//****************************************
void LedsStraight()
{
  robot.Fronton();
  robot.Greenon();  
  robot.Brakeoff();
  robot.Redoff();  
}
 
void LedsRotate()
{
  robot.Frontoff();
  robot.Greenoff();  
  robot.Brakeon();
  robot.Redon();  
}

La documentación con todas las funcionalidades está en la carpeta mOwayduino que instala el programa en Archivos de Programa.

123D de Circuits.io

Si quieres hacer diseños de pcb sin tener que instalarte ningún software en tu máquina, en la empresa belga Circuits.io puedes hacerlo a través de tu navegador. Los circuitos que hagas serán públicos para que otras personas puedan usarlo como hardware libre (pagando puedes tener tus circuitos privados para ti). Incluso puedes importar tu diseños de Eagle. También puedes adquirir las placas hechas de tus circuitos o los de otras personas.

Pero quizá la parte más interesante es que se han aliado con Autodesk para traer 123D. (a continuación…)

Se trata de una nueva forma de diseñar circuitos con una protoboard y poder simular su funcionamiento, de hecho también puedes incluir en esos diseños un arduino y programarla online para ver qué resultado obtienes cuando simules el circuito. Los circuitos pueden ser diseñados en colaboración con otras personas a la vez. En el propio diseño también puedes acceder a la lista de materiales que has usado para poder comprarlos en digikey, mouser, newark o element14.

Sólo tienes que darte de alta en su web y empezar a crear tus circuitos, simularlos y si todo va bien hacer que los fabriquen.

Creo que es un método interesante para probar y crear tus propias PCB sin tener que tener nada de hardware al alcance de tu mano.

Sindormir.net

En una serie de artículos voy a ir dando a conocer los distintos lugares que hay en Madrid relacionados con la tecnología hecha por uno mismo (DIY).

logo-sd-net

En este primer artículo voy a comentar una academia 2.0 llamada Sindormir.net. En esta podemos acudir a multitud de cursos relacionados con las nuevas tecnologías.

IMG_0670

Ubicado en el espacio Miscela (Av. Padre Piquer 45, Local A 28024 Madrid), sus instalaciones están orientadas a dar formación de distinta índole. En el caso que nos ocupa se trata de cursos y charlas para personas y empresas.

IMG_0671

En los cursos podemos encontrar los siguientes:

  • Introducción a los microcontroladores con Arduino.
  • Arduino Avanzado.
  • Técnico en Sistemas Microinformático (Título de Formación Ocupacional).
  • Técnico Instalador de Redes de Comunicaciones (Tïtulo de Formación Ocupacional).
  • Sistema DNS con BIND9.
  • GNU/Linux Ubuntu y Debian
  • Programación de microcontroladores PIC en C bajo GNU/Linux.
  • Técnicas de bajo consumo con microcontroladores PIC 18.
  • Técnicas de Seguridad y Alta disponibilidad bajo GNU/Linux.
  • Administración de sistemas Red Hat Enterprise.
  • Introducción a la programación con Scratch.
  • Redes TCP/IP: Routing y Switching.
  • Programación en C.
  • Electrónica digital y analógica.
  • KICAD

Y tiene otros en preparación  como

  • Diseño de circuitos electrónicos
  • Sistemas Operativos
  • Redes
  • Bases de datos
  • Programación
  • Servidores
  • Seguridad en redes
  • Telefonía analógica y digital
  • Montaje y calibración de Impresoras 3D
  • Desarrollo de shields de Arduino
  • Creación de interfaces gráficas para dispositivos electrónicos
  • Introducción a la robótica para niños

IMG_0672

Además hay charlas (23 seats) donde expertos de cualquier campo pueden intercambiar ideas. Habrá dos charlas y/o ponencias el primer y tercer martes de cada mes. La asistencia es gratuita hasta cubrir las plazas.

El centro es manejado por Jorge Gómez (@gsyvic), que para quien no lo conozcáis, es uno de los organizadores del evento OSHWCon.

Si te interesa dar un curso sobre Arduino, PIC, diseño de circuitos, GNU/Linux, etc con un experto, este es sin duda tu lugar.

Publicar mensajes en Twitter desde tu dispositivo

twitelec
Vivimos en una época donde las redes sociales cada vez están más presentes y donde los dispositivos cada vez aplican más el concepto de internet de las cosas. En algún momento surge la necesidad de que nuestras creaciones tengan capacidad para conectar a internet y puedan enviar información sobre su estado.

En este artículo explicaré cómo hacer que vuestros dispositivos, si tienen acceso a la red de redes, puedan enviar tweets de una forma sencilla.

Para enviar mensajes en Twitter desde una aplicación distinta a la de la web oficial hay que usar la API (en este momento la 1.1), pero previamente hay que autentificarse usando el protocolo OAuth, que sinceramente es un infierno de implementar en dispositivos.

Para simplificar las cosas hay una página que ofrece de manera sencilla la publicación de tweets: http://arduino-tweet.appspot.com/ . Originalmente está pensada para Arduino con el shield ethernet, pero se puede usar con cualquier dispositivo que tenga acceso a internet.

Para darse de alta es muy sencillo:

Con ese token ya puedes acceder a la web de arduino-tweet para publicar tweets desde tu dispositivo. Para ello debes usar el protocolo HTTP. Como cada dispositivo tiene una forma de crear un socket y conectarse, aquí sólo voy a explicar genéricamente cómo se hace:

  • Conectar a arduino-tweet.appspot.com por el puerto 80
  • Enviar la cadena:
POST /update HTTP/1.0
Host: arduino-tweet.appspot.com
Content-Type: application/x-www-form-urlencoded
Content-Length: Z
 
token=Y&status=X
 
 

X es el mensaje que quieres publicar en twitter (p.e: @webdelcire hola #saludos)
Y es el token que antes has copiado
Z (con su espacio después de “:”) es el número de caracteres que componen la línea:

token=Y&status=X

Fijate que entre Content y token hay dos saltos de línea (formados por los códigos ASCII 13 y 10) y después hay otros dos saltos más, esto es así porque el protocolo HTTP obliga a ello.

Finalmente si la respuesta del servidor es

HTTP/1.0 200

o

HTTP/1.1 200

entonces es que ha ido todo bien y el mensaje ha sido publicado.

A continuación pongo un formulario donde puedes probar a publicar un mensaje en twitter con el token que te haya dado. Guárdalo como un fichero html y ábrelo con el navegador.

<html>
<body>
<form method="POST" action="http://arduino-tweet.appspot.com/update">
<table>
<tr><td>Token</td><td><input type="text" name="token"></td></tr>
<tr><td>Mensaje</td><td><input type="text" name="status"></td></tr>
<tr><td colspan="2"><input type="submit" value="enviar"></td></tr>
</table>
</form>
</body>
</html>

O si lo prefieres, desde linux puedes usar el comando wget para probarlo:

wget http://arduino-tweet.appspot.com/update --post-data="token=Y&status=X" --delete-after

Ahora tu dispositivo ya es capaz de publicar mensajes y si además tiene su propia cuenta en twitter, animar a tus colegas a que sigan su estado a lo largo del tiempo.

En otro artículo explicaré cómo hacer que tu dispositivo reciba ordenes desde twitter a través de los mensajes.

Quitar el control parental de una XBOX 360 mediante fuerza bruta

logo

 

Ante todo no quiero que penséis que esto es ilegal, puesto que Microsoft en su soporte técnico ya ofrece la posibilidad de quitar el control parental de la XBOX 360 mediante una combinación de botones en el mando única para cada consola. Por supuesto no me hago responsable de los usos que le vayáis a dar puesto que el contenido sólo es divulgativo.

La XBOX 360 tiene control parental, que significa que los padres pueden bloquear mediante contraseña el acceso a determinados juegos, películas, etc. Esta contraseña es de 4 dígitos numéricos, por lo que hay 10000 posibles combinaciones de números (del 0000 al 9999). Normalmente los números se introducen mediante la pulsación de los botones del mando de la consola, pero existe la posibilidad de enchufar un teclado usb a la consola y pulsar las teclas correspondientes.

Con esta idea se me ocurrió como prueba de concepto crear un sistema que pudiese introducir las 10000 contraseñas una por una hasta que diese con la correcta (fuerza bruta), en vez de hacerlo a mano que sería más engorroso :-). Lo que tenía más a mano para emular un teclado usb es la placa Vinciduino, pero perfectamente se puede hacer con otra placa con un microcontrolador Atmega32U4 como Arduino Leonardo o la Teensy 2.0.

Para programar el microcontrolador usé el Atmel Studio 6.1 junto con la librería LUFA en su extensión para Atmel Studio. La librería LUFA contiene múltiples ejemplos de cómo sacar provecho a los microcontroladores AVR con USB embebido.

Yo usé el ejemplo Keyboard HID Device Demo (Class Driver APIs):

proyecto_ejemplo

 

Antes de nada hay que cambiar los valores por defecto que tiene el proyecto para adecuarlos a nuestra placa, en mi caso para Vinciduino:

-El tipo de microcontrolador (Vinciduno tiene un Atmega32U4)

microcontrolador

-La velocidad del microcontrolador y del USB en todas las configuraciones (Vinciduno corre a 16 Mhz.)

velocidad_cristal

-Después hay que activar el modo Release para cuando se cree el fichero .hex

release

-Finalmente sustituir el fichero Keyboard.c por este Keyboard

El programa funciona de la siguiente manera:

  1. Se espera 10 segundos hasta empezar a enviar la secuencia de números.
  2. Se emula la pulsación de cada una de las 4 cifras que contiene el número con un intervalo aleatorio entre 0,5 y 1,5 segundos (Esto es así para emular las pulsaciones que haría una persona en un teclado).
  3. Después se espera 1,5 segundos para que dé tiempo a que salga la pantalla de contraseña incorrecta. A continuación se emula la pulsación de la tecla ENTER.
  4. Se esperan otros 1,5 segundos para que dé tiempo a que salga la pantalla de introducción de la contraseña de nuevo.
  5. Se repite el proceso desde el paso 2 hasta que se llegue al número 10000.

Las esperas se realizan mediante el timer0 del microcontrolador. El envío de las pulsaciones del teclado se hacen desde la función de LUFA que genera el informe HID. Cada pulsación enciende el led de la Vinciduino durante 333 ms.

El tiempo máximo entre números es 6 segundos, por lo que en el peor de lo casos se tardaría 6 * 10000 = 60000 segundos (16,7 horas) en encontrar la contraseña correcta.

Como ejemplo pongo un vídeo que he grabado para demostrar el funcionamiento, lo mejor es verlo a 1080 y a pantalla completa. Primero se ve cómo pruebo el sistema en un ordenador donde se ven las pulsaciones en un editor de textos, comprobando así que funciona como si de un teclado se tratase. Después en la XBOX 360 elijo la opción Familia, momento en el que me pide la contraseña, y le enchufo la Vinciduino para que empiece a introducir los diferentes números. La contraseña en esta prueba es 0010 (empezando por el 0000). Cuando se llega a la contraseña correcta no existe una forma de saber si ha sido así, pero como se observa en el vídeo se queda en la opción de menú Activada sin que le afecten las pulsaciones, por lo que se podría dejar corriendo sin estar presente, sabiendo que cuando llegase al número 10000 dejaría de enviar pulsaciones.

Maker Faire de Barcelona

Este sábado 29 de Junio se celebró la primera Maker Faire de España: La Mini Maker Faire de Barcelona.

logo

Para los que no conozcan qué es una Maker Faire, copio parte de la nota de prensa que lo expresa perfectamente:

Un festival en el que hacer, crear, fabricar, confeccionar, reciclar, construir, pensar, jugar e inspirarse en el arte, la artesanía, la ingeniería, la música, la ciencia y la tecnología con toda la familia. Un escaparate de invenciones y creatividad.

Y así es, es un lugar donde la gente muestra lo que ha creado en su casa o en su empresa, un evento donde cualquiera puede ir y cualquiera puede participar. Puedes asistir como observador para ver qué novedades traen las empresas o ver qué inventos han hecho otras personas, pero si has/habeis hecho algo interesante (DIY y DIWO) y quieres mostrarlo, es el escaparate ideal, puesto que en esta feria tiene cabida de todo: desde unos origamis hasta robots avanzados, pasando por impresión 3d, música con cualquier elemento, hardware libre, corte y confección, etc.

Este fin de semana tenía que ir a Barcelona y en un rato libre aproveché para pasearme por la feria.

Makers of Barcelona fueron los encargados de organizar el evento en su local ubicado en la calle Bailén 11.

IMG_0048

Gracias a la colaboración del Ayuntamiento de Barcelona pudieron cortar la calle al tráfico y colocar los stands.

IMG_0023

Desde las 10 de la mañana ya hasta las 8 de la tarde el público pudo asistir de manera gratuita.

IMG_0099

Había dos zonas diferenciadas: la exterior, donde estaban los stands:

IMG_0044

IMG_0040

IMG_0045

IMG_0079

IMG_0081

IMG_0093

y la interior en las instalaciones del MOB:

IMG_0026

IMG_0027

IMG_0031

IMG_0034

IMG_0072

IMG_0075

IMG_0076

Había mucha gente que se acercó al evento y estaba realmente sorprendida por todo lo que veía, y no es para menos, dada la diversidad de expositores y lo que mostraban. Aquí hay una lista de los que acudieron a la Mini Maker Faire.

Unos cuantos proyectos para os hagáis a la idea de lo variopinto que fue:

Electroxoc

uno_1

uno_2

Spaii

IMG_0096

The Junk Raft Armada

IMG_0097

Vectorealism

siete_1

siete_2

siete_3

Ro-botica

cinco_1

cinco_2

I Am Patchwork

IMG_0035

Lüme

IMG_0071

Bartendro 7

cuatro_1

cuatro_2

Por supuesto también hubo espacio para las impresoras 3D:

IMG_0030

IMG_0032

IMG_0087

seis_1

seis_2

tres_1

tres_2

Y para la música:

IMG_0028

IMG_0080

IMG_0095

Sólo me queda dar la enhorabuena a los organizadores y a los makers que asistieron. También recordaros que si os perdisteis esta Mini Maker Faire y os habéis quedado con ganas de ir, aún tenéis otra oportunidad de acudir a la de Bilbao el Sábado 13 y Domingo 14 de Julio de 9 de la mañana a 10 de la noche.