Dev Life

Diversión con el hardware: creación de un arma controlada por email para la PyCon 2013

En Mailgun no patrocinamos (ni asistimos a) muchas conferencias. De hecho, hasta la fecha solo hemos patrocinado una, la PyCon. Hacemos una excepción con la PyCon porque siempre nos ha parecido la conferencia perfecta para Mailgun.
Imagen para Diversión con el hardware: creación de un arma controlada por email para la PyCon 2013

En Mailgun no patrocinamos (ni asistimos a) muchas conferencias. De hecho, hasta la fecha solo hemos patrocinado una, PyCon. Hacemos una excepción con la PyCon porque siempre nos ha parecido la conferencia perfecta para Mailgun.

En primer lugar y más importante, Mailgun se ha creado principalmente con Python. En segundo lugar, la conferencia carece de muchas de las tonterías que suelen tener la mayoría de las conferencias. Supone un contraste admirable con el SXSW cada año. Trata de crear cosas y de hacer avanzar Python. Todavía no hemos ido al SXSW, pero nos esforzamos por patrocinar la PyCon todos los años.

Preparativos para la PyCon

Este año queríamos hacer algo un poco más interesante que simplemente aparecer con camisetas y pegatinas. Queríamos destacar un poco. Es difícil competir con la cerveza gratis de HP, pero pensamos que si se nos ocurría algo con el espíritu de la conferencia podríamos llamar la atención un poco más allá de los cazadores de camisetas.

Pensamos en un par de ideas para encargar artículos promocionales, pero no nos entusiasmaron mucho. Lo que sí nos entusiasmó fue construir un Mailgun en la vida real. Se nos ocurrió la idea de construir un arma centinela que tuviera como disparador el envío de un email a través de Mailgun. Nos permitió demostrar un caso de uso (aunque un caso de uso muy raro) de Mailgun y, como dijo una de las personas que visitó nuestro estand, sirvió para “llevar el software al mundo físico”.

Más allá de la fase de la idea

Empezamos con la idea de usar un arma de paintball. Tras consultarlo rápidamente con la organización de la conferencia, nos dimos cuenta de que quizá a nuestros abogados no les gustaría la idea. Así que acabamos decantándonos por un arma Nerf. Los concursantes podían usar como disparador del arma el envío de un email a una ruta de Mailgun. La ruta de Mailgun aceptaba el email y enviaba una solicitud POST a un servicio web, que luego indicaba al arma que disparara. Si el arma daba en el blanco, el concursante ganaba una camiseta. Tenías que ganarte la camiseta en el estand de Mailgun.

El primer gran obstáculo fue que no somos hackers de hardware y no teníamos mucho tiempo para resolverlo. Afortunadamente, conocíamos a algunas personas de YC que nos podían ayudar con eso, Upverter.

upverter

Upverter ofrece herramientas de ingeniería basadas en la nube y contaban con una gran red de profesionales del hardware. Les preguntamos si nos podían echar una mano. Les dimos mucho margen con el diseño y los materiales, y en un par de días habían organizado un concurso para construir el “Mailgun”.

Upverter hace la idea realidad

En un par de semanas, Upverter tuvo tres candidaturas y esta propuesta ganadora diseñar.

A continuación mostramos un resumen del proceso de diseño de Upverter:

Nos decidimos por el arma Nerf Vulcan Rapid Fire EBF-25 porque tenía un modo totalmente automático. Con el arma elegida, se publicaron los requisitos:

  • Desarrollar hardware y software para rotar el arma con un servomotor y dispararla con un relé.
  • Puntos extra por usar Python, ya que se haría una demostración en un evento de Python.

El diseño final utilizaba una Raspberry Pi que ejecutaba un servidor web Flask. Se utilizaba Mailgun para hacer solicitudes POST a este servidor, que disparaba el arma. Otras solicitudes POST podían iniciar y detener la acción de rotación del arma.

La biblioteca pi-blaster para PWM se usó para controlar los servos y garantizar que la sincronización en el pin del disparador disparara una sola bala.

El código fuente del diseño está disponible en GitHub.

El diseño mecánico usaba un trípode como soporte y una caja de engranajes sencilla que permitía al servo rotar el arma. Rotaba continuamente y disparaba un dardo cuando se recibía un email. De disparar se encargaba el mecanismo de serie del arma, que usaba un relé para simular la señal del disparador.

La regla del 80/20 hace su temida aparición

El arma y el resto de hardware llegaron el martes anterior a la PyCon prácticamente montados y listos para usar. Aunque, a medida que pensábamos más en cómo funcionaría esto en realidad, nos dimos cuenta de que teníamos algunos retos más a los que enfrentarnos.

1) ¿Cómo automatizamos el blanco? Podríamos poner algún tipo de blanco y limitarnos a mirar para ver si acertaba, pero eso es un poco cutre. Alguien tendría que sentarse allí a vigilar y podía haber distracciones.

2) Necesitábamos una cola para las solicitudes. Podía haber varias personas enviando emails casi al mismo tiempo.

3) Necesitábamos una forma de decir a la gente en qué lugar de la cola estaba y quién había ganado.

4) El acceso a la red podía ser complicado en la sede de la conferencia. Podía ser que la dirección IP de la Raspberry Pi no fuera accesible públicamente, así que quizá no sería posible enviarle una solicitud POST HTTP.

Como con la mayoría de las cosas, el último 20 % del proyecto incluía un montón de detalles que había que resolver. Por desgracia, solo teníamos dos días.

Por suerte, uno de nuestros brillantes ingenieros, Anton, acababa de llegar de Rusia y entró en acción. Este es el diseño que ideó para el sistema.

chart

Anton configuró un servidor web y escribió una aplicación para enfrentarse a la mayoría de estos retos. La aplicación web pondría las solicitudes en cola y mostraría la cola y la persona ganadora en un navegador. Entonces solo tendríamos que conectar un monitor a cualquier ordenador para mostrar a los concursantes el estado de su solicitud. Además, la aplicación web permitía a la Raspberry Pi sondear el servidor web en busca de solicitudes en lugar de tener que aceptar solicitudes POST.

anton

En una jugada magistral, a Anton se le ocurrió la idea de utilizar una tablet Android como blanco. El acelerómetro del dispositivo serviría de disparador de un acierto y luego enviaría una solicitud POST a la aplicación web. Tenía la ventaja añadida de poder mostrar el logotipo de Mailgun en la pantalla a modo de blanco.

mailgun

Anton también añadió algunos toques fantásticos, como la carcasa protectora de Lego alrededor de la Raspberry Pi.

lego

El arma fue un gran éxito en la conferencia. Tuvimos más de 400 solicitudes y un montón de personas ganadoras. Tal vez lo pusimos demasiado fácil.

Además, el arma nos dio la ventaja añadida de poder hacer el tonto cuando las sesiones eran lentas. Aquí está Anton con una sonrisa diabólica mientras pasa el arma al modo automático.

Sí, todo el artilugio era un apaño tipo máquina de Rube Goldberg , pero seguro que fue divertido… y de eso se trata la PyCon.