jueves, 29 de julio de 2010

Controlando un Led desde un Móvil

Es mas fácil de lo que parece, al leer el título. Solo hace falta nuestro querido Arduino, y claro está, un móvil (Con Wifi para completar la estructura) y un ordenador, en mi caso GNU/Linux, con un servidor de SHH instalado.

Paso 1: Configuración del móvil

En mi caso, un Nokia 5800, con el programa PuTTy instalando. Ahora mismo accedo a internet desde mi propia red doméstica, pero realmente, si dejamos configurado nuestro PC servidor y tenemos los datos apuntados, podemos conectarnos desde cualquier red, esté en el sitio que esté.

Creo una cuenta nueva, llamada Arduino, en la que configuro mi nombre de usuario, el puerto por el que me conectaré (El estándar para SSH es 22) y la dirección de Host (En mi caso, dinámica).

Una vez configurado esto, es hora de pasar al paso 2.

Paso 2: Configuración del Servidor

El servidor (Nuestro PC) se encargará de varias taras a la vez, siendo el que mayor carga de procesos soporte.
  1. Recibir parámetros a través de SSH
  2. Comprobar que el parámetro sea correcto
  3. Enviar parámetro a Arduino
Es necesario para el paso 1 configurar cualquier servidor de SSH en nuestro equipo, así como abrir el puerto por el que vayamos a usar el programa (Como ya dije, el estándar es el 22). En mi caso, uso open-ssh.

Las demás tareas ya son parte del programa que se encarga de comprobar y enviar parámetros a Arduino. Este es un simple fichero, escrito en C. Aquí el código fuente:

http://pastebin.com/fJCA3veS


En mi caso, ubico el ejecutable resultante de la compilación en un nuevo directorio, al que he llamado /ard . El ejecutable tiene el nombre led, por lo que nos será fácil invocar el programa desde SSH: ./ard/led

Ya tenemos configurado el Servidor, ahora solo queda configurar Arduino.

Paso 3: Configuración de Arduino

En este caso vamos a conectar 1 led al puerto 11 de nuestra placa (PWM). Es recomendable usar una resistencia.

El programa que se encargará de controlar la luz, es bastante sencillo, y tiene 4 procedimientos básicos: Encender y apagar led, aumentar y disminuir intensidad.

Veamos el código:

http://pastebin.com/eayuLLv1

Demasiado sencillo como veis.

Una vez cargado el programa, estamos listos para iniciar putty en nuestro móvil, el servidor ssh en nuestro pc, el programa de control en el PC y el programa de control en el Arduino.

Una vez esté todo en funcionamiento, ¡Podremos controlar nuestro led desde cualquier parte del mundo!

3 comentarios:

  1. Muy buena la entrada, me acuerdo que con android controlaba el ratón del ordenador.

    ResponderEliminar
  2. Por ahora solo es 1 led. Ya intentaré hacer cosas mas interesantes por control remoto.

    ResponderEliminar
  3. Yo estoy tratando de hacer algo similar, pero mi idea es que el envío al puerto serial solo encienda el led, y luego crear otro programa similar que lo apague. Es decir ejecutarlo como ./prender_led o ./apagar_led y asi de esta forma no me pregunta datos de entrada en el terminal. He tratado de modificar tu código pero no me resulta, y he tratado de comunicarme al puerto serial con scripts en python y perl sin buenos resultados. Podrias explicar tu código para ver en que estoy fallando?. Saludos.

    ResponderEliminar