Controla una bombilla con Android y Arduino Yun

Llevo un par de semanas trasteando con un microcontrolador Arduino YUN. Los microcontroladores Arduino son baratos y muy fáciles de utilizar incluso sin grandes conocimientos de electrónica.

Para familiarizarme con la plataforma, mi “Hola Mundo” con Arduino será encender y apagar una bombilla. No es nada del otro mundo, de hecho ya hay artículos muy buenos Internet que explican como hacerlo.

Por ello me centraré más en la parte informática, y para darle un poco más de profundidad y dejar la puerta abierta a futuras aplicaciones más complejas, desarrollaremos una pequeña aplicación Android para que la bombilla pueda encenderse y apagarse desde nuestro móvil.

Arduino YUN.

A fecha de Noviembre de 2013 Arduino Yun es toda una novedad en el mundo de los microcontroladores Arduino, y la principal novedad es que, en la misma placa que el microcontrolador Arduino han montado un procesador que ejecuta una distribución de Linux llamada Linino. Además de ello, han desarrollado una serie de librerías para que desde los sketchs de arduino podamos usar los recursos del sistema operativo linux, y viceversa, para que desde linux podamos consultar el estado de las entradas y salidas del arduino.

Si a esto le unimos que de serie tiene una conexión Ethernet y una conexión WIFI, el salto con respecto a sus antecesores es notable, y facilita mucho el trabajo para principiantes en la electrónica, ya que no tenemos que comprar aparte un shield ethernet, etc.

Por lo tanto, para este ejemplo (encender y apagar una bombilla), necesitamos lo siguiente:

Hardware:

  • Un Arduino Yun.
  • Un relé de 5V
  • Cables macho-hembra para conectar el relé a nuestro arduino.
  • Un cable micro usb para transferir el sketch y darle corriente al Yun.
  • Una bombilla.
  • Un dispositivo Android (teléfono, tablet) para programar.
  • Una red local (nuestra red doméstica sirve) con posibilidad de conexión Wifi.

[AMAZONPRODUCTS asin=”B00L7Z2V18″]

[AMAZONPRODUCTS asin=”B00PIMRGN4″]

Software:

Conocimientos:

  • Conocimientos básicos de C para comprender el funcionamiento del sketch.
  • Conocimientos medios de Java y de desarrollo para la plataforma Android.
  • Sentido común, para no electrocutarnos cuando conectemos la bombilla a la corriente.

Configurando el YUN.

Lo primero es configurar nuestro Yun, y conectarlo a nuestra Wifi doméstica. Para ello nada mejor que seguír la guía de primeros pasos de la web de arduino.

Nuestro Yun puede configurarse y personalizarse a gusto, no tenemos que olvidar que incorpora un mini pc con Linux, con una capacidad y potencia que supera a los ordenadores de hace una década. En cualquier caso, solo dos detalles son importantes:

  1. Quitarle la contraseña a los servicios Rest.
  2. Ponerle una IP fija en nuestra red doméstica.
  3. Transferir el sketch de ejemplo “Bridge”.

Servicios REST.

En la pantalla de administración básica de Yun, donde podemos unirlo a una red Wifi y cambiarle el nombre o la contraseña, es importante que aprovechemos el momento de unirlo a una wifi y marquemos los servicios rest como “open”. La interfaz de esta pantalla no esta muy lograda, y si queremos cambiar más adelante solamente la configuración de la Api rest, tendremos que volver unirlo a nuestra red Wifi.

Recuerda quitarle la contraseña a los servicios rest cuando lo unas a la wifi, así te ahorrarás trabajo más tarde.
Recuerda quitarle la contraseña a los servicios rest cuando lo unas a la wifi, así te ahorrarás trabajo más tarde.

IP Fija.

Para poner una IP Fija debemos acceder al panel web de configuración de Yun, en concreto, al panel avanzado, llamado Luci.

Una vez en el panel, y suponiendo que ya tenemos a Yun conectado a nuestra Wifi doméstica con una ip dinámica, nos dirigimos a Network->Interfaces y buscamos nuestra red Wifi. Pulsamos en Edit, y en esa pantalla podremos asignarle una ip estática.

A partir del momento que grabemos nuestra nueva configuración, recordad que para volver al panel de control tendreis que usar la ip que le habeis puesto.

(Nota: creo que no es imprescindible ponerle una ip fija, ya que cuando invoquemos el servicio rest podemos usar la nomenclatura del tipo http://nombre_arduino.local/… Aunque a mi me ha dado problemas, por eso prefiero una estática a una dinámica).

Transferir el Sketch “Bridge” a Arduino Yun. Dando por hecho de que ya hemos instalado eI ide de Arduino y nos hemos familizarizado con el proceso de transferir un sketch , es la hora de transferir el sketch de ejemplo Bridge. Podrás encontrarlo en la sección de sketchs de ejemplo del IDE:

Instalando el ejemplo Bridge
Instalando el ejemplo Bridge

Aviso: si os adelantáis a estas instrucciones y transferís el sketch con el relé ya conectado al pin 13, veréis que parece que se vuelve loco. Esto es debido a que el pin 13 se utiliza durante la transferencia de sketchs como monitor de actividad, así que ya sabéis, no conectéis el relé hasta haber transferido el sketch,

El ejemplo Bridge

Este sketch de ejemplo es muy interesante, ya que convierte a nuestro Arduino Yun en un servidor web capaz de ofrecer servicios Rest. Para ello trabaja de manera coordinada con el “lado Linino”, es decir, el procesador que está ejecutando el sistema operativo Linux. Cualquier petición http que hagamos, es atendida por el servidor web de Linino (por ello podemos acceder al panel de configuración, por ejemplo).

Sin embargo si la petición tiene a siguiente nomenclatura: http://ip_de_mi_yun/arduino es atendida por el servidor web de Linino, y como detecta el sufijo “/arduino”, se envía al procesador arduino 32u4. Básicamente, que le pasa la llamada al sketch que tengamos ejecutando en ese momento en nuestro arduino. Vamos a analizar el código fuente del sketch Bridge un poco más de cerca. En la sección de imports del sketch tenemos información muy importante.

Como vemos, este sketch utiliza tres librerias:
[code]

#include Bridge.h;
#include YunServer.h;
#include YunClient.h;
// Listen on default port 5555, the webserver on the Yun
// will forward there all the HTTP requests for us.
YunServer server;

[/code]
La librería bridge, como su nombre indica, es el puente que nos permite establecer una comunicación entre los dos procesadores de la placa del arduino yun.  La wifi, la conexión ethernet, el conector usb y la tarjeta sd están conectadas del “lado Linino”, y para acceder a estos recursos necesitamos la librería Bridge. La libreria YunServer, hace posible al Yun a escuchar las conexiones de clientes. Como dice el comentario, escucha en el puerto 5555. Todas las peticiones http que lleguen al puerto 80 del “lado Linino”, y que lleven la nomenclatura adecuada, son reenviadas al puerto 5555 y recibidas en nuestro sketch.

El setup de un sketch, es un trozo de código que se ejecuta solo una vez, cuando se enciende nuestro arduino. Por lo tanto es el lugar adecuado para inicializar librerías y todo tipo de recursos que necesitemos. En este caso observamos que que se inicializa la librería Bridge (lo cual tarda un par de segundos), y para tener algún tipo de retroalimentación, hace parpadear el LED 13 durante la operación (lo apaga al empezar, y lo enciende al terminar). Cuando el setup ha terminado, deberíamos tener el LED 13 encendido de color rojo.

La llamada al procedimiento pinMode() es importante. Configura el pin indicado para comportarse como una salida. Os recomiendo que este documento que explica los dos modos de comportamiento de los pines de arduino, y la diferencia entre que un pin este configurado como de entrada o de salida.

Necesitamos que el pin 13 este en modo Output o de baja impedancia, porque tenemos que suministrarle corriente a nuestro relé para poder operar.

El código que esta en el procedimiento loop, como su nombre indica, se ejecuta en un bucle infinito hasta que apaguemos nuestro arduino. En este caso, entre cada ejecución hay un delay de 50ms, asi que resumiendo, el sketch comprueba cada 50ms si ha llegado alguna petición del “lado Linino”. En caso afirmativo la procesa.

A partir de aquí, la cosa no tiene demasiada ciencia. Cuando se recibe una petición, se parsea la cadena, y en función de su estructura se hacen diferentes operaciones, tales como actuar sobre los pines digitales, los analógicos, etc.

Para nuestra app de Android, las peticiones http que utilizaremos son las siguientes:

http://ip_arduinoarduino/digital/13 —> pide el estado del pin 13.

http://ip_arduinoarduino/digital/13/0 —> pone el pin 13 a cero (en nuestro caso, abre el relé y apaga la bombilla).

http://ip_arduinoarduino/digital/13/1 —> pone el pin 13 a uno (cierra el relé y enciende la bombilla).

Ya tenemos el sketch Bridge instalado y funcionando en nuestro YUN. Ahora vamos a ver como conectar el relé a la placa, y la bombilla al relé.

Conexión del relé y la bombilla.

Los tres componentes del proyecto: la placa Arduino Yun, un relé de 5V y una bombilla conectada a la corriente de 220V
Los tres componentes del proyecto: la placa Arduino Yun, un relé de 5V y una bombilla conectada a la corriente de 220V

Lo primero es darle corriente al relé, para ello tenemos que conectarlo al pin marcado como 5V en el arduino, y también la toma de tierra:

  • Cable rojo: conecta el pin de 5V de arduino yun con el pin VCC del relé.
  • Cable naranja: conecta el pin GND del yun con el pin GND del rele.
  • Cable blanco: conecta el pin digital 13 con el pin IN2 de nuestra placa de relés.

Nuestra placa de relés tiene realmente dos, pero solo necesitamos uno. El otro podría usarse para encender y apagar otra cosa, en cualquier caso, al precio que están los relés de dos canales comparado con los de uno, no merece la pena comprar uno de un canal a menos que nuestro proyecto tenga limitaciones de espacio.

Detalle de la alimentación del relé
Detalle de la alimentación del relé
Detalle de la conexion al pin digital 13
Detalle de la conexion al pin digital 13

Ya solo nos falta conectar la bombilla al relé. Tened la precaución de hacerlo con la bombilla desenchufada, por lo que pueda pasar. Lo que haremos será conectar uno de los cables que llevan la corriente a la bombilla a NO2 (normally open) y sacando un cable mas pequeño del relé de la conexion COM2 al portabombillas.

  • cable negro: a la conexión NO2 del relé.
  • cable azul: de la conexión COM2 del relé al portabombillas.
Detalle de la conexión de la bombilla al relé
Detalle de la conexión de la bombilla al relé

Llegados a este punto, nuestro proyecto ya está operativo. Si enchufas la bombilla a la corriente y enciendes el Yun, cuando termine su proceso de inicio y se ejecute el sketch, pondrá el pin 13 en HIGH, y la bombilla se encenderá.

Dale un ratito más para que se inicie el servidor web de Linino (tarda un poco más que el sketch), y haz la siguiente petición en un navegador:

http://ip_arduino/arduino/digital/13

Obtendrás la siguiente información:  Pin D13 set to 1.

Si ahora en el navegador haces la petición:

http://ip_arduino/arduino/digital/13/0

la bombilla deberia apagarse.

Ya podemos encender una lampara desde un navegador web. El siguiente paso es hacer una pequeña aplicación de Android que nos permita hacerlo desde nuestro teléfono móvil.

La Aplicación Android.

Vamos a crear una aplicación de android muy sencilla, que consistirá en una Actividad que contendrá un ToggleButton. Al crear la actividad, comprobaremos en que estado está el pin 13, y en función de ello estableceremos el estado de nuestro ToggleButton en on o en off.

Cuando el usuario pulse el botón, enviaremos una petición rest a nuestro Yun, indicándole que encienda o apague.

Aquí teneis la actividad principal:

Aquí el layout correspondiente a la actividad:

Y finalmente el manifest. Es importante añadir el permiso para usar internet:

Como podéis ver en el siguiente vídeo-resumen, el sistema funciona, aunque el hecho de encender una bombilla desde una app no sea muy emocionante. Sin embargo, nos abre muchas puertas en el campo de la domótica. En cuanto reciba un sensor de temperatura, pasaremos a un proyecto más interesante: controlar la calefacción de casa desde nuestro Android.

103 comentarios en “Controla una bombilla con Android y Arduino Yun”

  1. Hola, me a gustado mucho tu aporte ya que me ha sido de gran ayuda. Estoy empezando con arduino y este articulo me ha servido para comprender muchas cosas. Pero me gustaria saber si seria posible controlar el arduino desde una la web mediante una interfaz grafica, es decir mediante html, php, etc…., en lugar de hacerlo desde android.
    Gracias y enhorabuena por el aporte.

    • Hola Angel,

      claro que puedes, el principio es el mismo. Los webservices rest que dan acceso a las entradas y salidas del YUN pueden ser consumidos desde cualquier clase de aplicacion, tanto web como una aplicación tradicional. De hecho, en el otro proyecto en el que estoy trabajando, “Remote Heat Control”, accedo a los webservices del YUN desde php.

      Lamento no tener ningun ejemplo mas concreto, ya que el tema web no me interesa demasiado en este momento. Sin embargo, hay un ejemplo en la web de arduino de una pequeña pagina web para leer la temperatura de un sensor del arduino:

      http://arduino.cc/en/Tutorial/TemperatureWebPanel

      Eso te puede dar una idea de como empezar.

      Un saludo

  2. Hola amigo, me impresiona ver tu proyecto, soy un novato en la programacion digamos estoy dando mis primeros pasos solo te queria pedir un consejo ¿que puedo hacer para programar mejor? o solo las personas dotadas pueden? realmente estoy impresionado por tu proyecto Felicitaciones .

    • Hola Miguel,

      para programar bien, lo mas importante es proponerselo, no conformarse con las soluciones rápidas y fáciles, ser autocríticos y aceptar que pueden existir soluciones mejores para un problema que la nuestra. Estar abiertos a todo lo que otros programadores puedan enseñarnos, y sobre todo, aceptar que nunca (cuando digo nunca es nunca), podrás parar de aprender cosas nuevas: tendrás que reciclarte toda tu vida.

      Atendiendo a conceptos más practicos, no solo necesitaras saber programar, sino que tienes que tener unas bases solidas de ingeniera del software, analisis, diseño, etc. En definitiva, se trata de estudiar informática en general, no solo centrarse en la programación.

      Un saludo y suerte.

  3. Hola excelente post.. Mira entendi todo bien aun cuando soy NOVATO en la materia. Lo unico que no pude seguir es la parte del androide … Como lo cargas al telefono ? .. Podrias hacer un post de como usar el android studio y cargar esa aplicacion??? Gracias!!!

    • Me alegra que la explicación te haya servido. Respecto a la parte de la app android, es verdad que ya he recibido más de una petición en este sentido, y me debato entre hacer lo que tu dices, un pequeño tutorial de como crearla con android studio, o mejorar un poco la app, y subirla a la play store…

      ¿Que opinas?

  4. Hola,

    me estoy volviendo loco. Tengo los componentes conectados, el sketch bajado, los drivers instalados en Windows pero ya no se seguir. Como se la ip del arduino? Lo tengo conectado por ethernet

  5. Hola Jordi,

    pues para saber la ip del arduino, tienes que asignarle una ip fija en el panel de control del arduino yun, version avanzada (se llama Luci).

    Por defecto, si conectas el cable de red, el arduino yun toma una ip dinamica del rango de ips dinamicas de tu router domestico. Pero es mejor que le asignes una fuera de ese rango, como ya te digo, en el panel de control del arduino yun.

  6. Hola, estoy realizando un proyecto para controlar servos desde android, hay alguna manera de realizar el control directamente desde el dispositivo a arduino, o necesariamente debe pasar por el PC, me explico mejor, por una red WIFI domestica podría yo enviar las señales de mi android a la placa wifi sin pasar por un PC?

    Te agradezco cualquier ayuda.

  7. Hola Roque, sabes de alguna aplicacion android que se pueda utilizar con este método q explicas aqui que este hecha ya ???? Quiero hacer esto mismo para mi maqueta, y ademas tb que se encienda la bombilla cuando toque un sensor de temperatura. Gracias 😉

    • Lo siento, pero de momento no se de ninguna aplicación. Tengo pendiente hacer una aplicación android que interactue con las entradas y salidas digitales de un yun a traves de webservices, de tal manera que sea personalizable (que configures un boton y este actue sobre una entrada salida, y asi lo aplicas a lo que quieras, encender una lampara, un ventilador…).

      Pero me pillas de mudanza a una nueva ciudad y no tengo en absoluto tiempo para dedicarme a eso hasta que me asiente, lo siento.

  8. Hola, he conseguido hacer funcionar la Aplicacion, he compilado el Bridge y modificado el codigo del sketch para que quede; e igual he hecho funcionar el rele y la bombilla.

    Pero tengo varios problemillas. Al compilar el sketch me marca un error en la siguiente linea:
    //Arduino: 1.5.6-r2 (Mac OS X), Placa:”Arduino Yún”

    prueba.ino: In function ‘void loop()’:
    prueba:33: error: ‘process’ was not declared in this scope

    Esta linea –> process(client);

    He probado comentando esa linea y he hechado a andar el sketch y hace funcionar el rele al principio y hasta enciende la bombilla pero despues de un par de segundos lo apaga, el detalle esta en que la aplicacion no apaga ni enciende la bombilla al darle clic (ON/OFF).

    ¿Existe la posibilidad de subir todo lo que se tiene que compilar en un archivo .rar?, seria de mucha ayuda.

    Gracias por el grandioso aporte, saludos.

  9. Hola de nuevo.

    Me llevo tiempo pero veo que no has dado los codigos completos (Del sketch). ¿Ha sido intencional?, espero que no, si no deberias advertirlo.

    PD: Dejo el link de donde tome todo el codigo completo del Bridge (El programa Arduino, no lo tiene completo al menos mi version). http://arduino.cc/en/Tutorial/Bridge

    Saludos y de nuevo gracias por el tuto.

    • Hola!

      en principio creo recordar que puse todo el codigo del sketch, si falta algo no ha sido intencional, te lo aseguro. ¿Me puedes indicar que falta? Es que hace meses que hice ese articulo, y ya no tengo demasiado fresco el tema.

  10. Hola amigo …necesito de tu ayuda ..acabo de adquirir un arduino yun y tengo que hacer un proyecto de clase y en verdad no tengo mucha experiencia con yun.. el proyecto trata de Control de Consumo Eléctrico utilizando un sensor no invasivo” modelo SCT-013-030 “pinza amperimétrica” y poder consultarlo por internet con el yun
    aqui esta el link de mas o menos lo pienso hacer pero con Yun y poder lo checar lo por la web
    http://www.diverteka.com/?p=1966
    Espero contar con su ayuda … Saludos Gracias

      • Ok..Vale …. si lo logro antes lo subo al blog … una pregunta .. supuestamente la libreria Bridge conecta el arduino inalambricamente y crea un pequeño servidor …. mi pregunta es sera que este servidor linino podra servir para guardar informacion con las medidas del sensor y poderlos consultarlos?

        • Hola,

          no es asi axactamente. El servidor Linux esta ahí, no lo crea la libreria Bridge. Funciona independientemente del arduino. Imaginatelo como dos ordenadores en uno. Si, ya se que un arduino no es un ordenador, pero como explicación sencilla nos vale.

          Lo que hace la librería Bridge es establecer un puente entre los dos ordenadores (o mas propiamente, entre la parte Linux y la parte del microcontrolador arduino), dandote facilidades para poder acceder a los datos desde uno y otro lado.

          Y si, puedes utilizar la parte “linux” para almacenar información que la parte “arduino” registra. Echale un vistazo al proyecto Remote Heat Control. Es precisamente lo que hace.

          Un saludo

  11. Excelente post, favor tu ayuda no hemos podido solucionarlo, no podemos enviar una base de datos almacenada en la sim a nuestro computador dentro de la red, sabes como podríamos realizarlo? saludos

  12. Hola Roque, favor te solicito si me puedes orientar acerca de como enviar una variable (string) desde un sketch de Arduino YUN mediante WIFI (NO por Ethernet) a mi PC en una red local, en el PC un archivo PHP debe recibir el string e instertarlo en una tabla de una base de datos MySQL (alojada en mi PC, NO en la SD del YUN). Me puedes mostrar un ejemplo ?

    Muchas GRACIAS

    SALUDOS

  13. Hola Roque:
    El proyecto este viene a ser exactammete lo que yo quuiero hacer, con una salvedad. Necesito que el Arduino se conecte a internet por medio de un modem 3G USB ya que no va a tener acceso a Wifi ni Ethernet.
    ¿es viable?
    Graciaas de antemaano

  14. hola
    estoy empezando con arduino
    solo que me surge una duda
    el arduino yun es mas dificil de programar
    que el arduino uno mas wifi shield o ethernet shiel
    saludos y muchas gracias

    • Lamento no poder contestarte, ya que nunca he trabajado con un shield de ethernet o wifi. En cualquier caso, creo que no puedes comparar un arduino uno o leonrdo con un shield de red con un arduino yun. Un yun te proporciona un mini ordenador linux, con todo lo que eso implica. Puedes ejecutar programas, montar un servidor web. Imaginate que reduces tu pc domestico al tamaño de un arduino, y le instalas linux. Pues eso seria un arduino yun.

      Un saludo.

  15. Hola, quisiera enviar datos de arduino yun a través de wifi (NO por Ethernet) a mi PC en una red local, en el PC un archivo PHP debe recibirla variable e instertarlo en una tabla de una base de datos MySQL (alojada en mi PC, NO en la SD del YUN).
    Es posible hacer esto?
    SALUDOS

  16. Hola Roque, muy bueno tu tutorial, pero estoy atascado en la sección donde buscamos el archivo PHP.INI en /etc
    escribo nano PHP.INI y el fichero sale vacio.
    Cuando hago cd /etc y luego un ls -la no encuentro el PHP.INI

    • La verdad es que mi arduino YUN esta perdido en el fondo de alguna caja de mudanza, y no puedo conectarlo para ver exactamente donde esta el archivo que buscas, pero asi a voz de pronto, ten en cuenta que en linux debes tener cuidado con las mayusculas y minusculas, asi que no es lo mismo nano php.ini, que nano PHP.INI. Prueba en minusculas.

      Para listar un directorio, puedes usar el comando ls

  17. Estimado necesito tu ayuda con el programa android =/ favor subir el tutorial o el programa creado plissssssss

    • Hola,yo tambien necesito el programa para android,yo no se programar ni tengo ningun conocido que me lo pueda hacer,tengo el yun y la placa de reles,pero solo me falta el programa.
      Muchas gracias.

      • Pues el programa es tan sencillo, y a la vez tan poco util, que no he subido a la play store la aplicación. Solo esta pensado como ejemplo de lo que se puede hacer, pero no veo que otra utilidad tendría.

  18. Necesito de su ayuda. Quiero encender y apagar una bobina de tesla , pero usando arduino No se como hacerlo

    • Pues me imagino que una bobina de tesla puede apagarse y encenderse usando un relé, asi que por ese lado, el procedimiento seria analogo a este ejemplo de apagar y encender una bombilla.

      Todo lo demás que se ve en este ejemplo, no te sirve, como ya le comente a otro lector. El arduino uno no tiene la capacidad del yun para actuar de servidor linux y proporcionar webservices. Asi que yo optaria por comunicar con el arduino yun utilizando bluetooth, siempre que quieras hacerlo desde un telefono movil o tablet.

      Despde un pc, podrias conectarte al arduino uno directamente con un cable serie, supongo.

      Un saludo

  19. Hola voy hacer este proyecto como mi primer proyecto con arduino, pero no tengo ni idea de hacer algo con androi me puedes pasar el codigo fuente de la app, para yo mirarlo y adaptarlo ya que mi proyecto es adaptar este proyecto algunos dispositivos de un invernadero los cuales me encantaria poder manejar desde mi telefono movil.

    espero no sea mucha molestia y me puedas brindar un poco de ayuda y si es posible mandarme el codigo fuente a mi correo leon.sanchez@unad.edu.co muchas gracias por tu amabilidad y colaboración para las personas que queremos iniciar en este mundo de arduino.

    • Para hacer algo parecido tendrias que estudiar la manera de comunicar el arduino uno con el telefono, ya que yo utilizo las caracteristicas especiales del arduino YUN, en concreto su capacidad de actuar como servidor linux y proporcionar webservices que actuan directamente sobre los puertos analogicos y digitales del arduino.

      Asi que si, lo mas razonable es utilizar un modulo bluetooth, e implementar de esta manera la comunicacon con el arduino. De hecho es mucho mas practico y barato montar “interruptores” con arduinos y controladores bluetooth que con arduinos yuns. Eso si, no podrias encender la lampara si no estas en el radio de accion del receptor bluetooth.

      Un saludo

  20. The google translator helped me understanding the project – good job!! For the android app part, I found a nice app that helped me getting control without programming : ) See http://netioapp.com . maybe this helps to prototype a little bit faster.

  21. Amigo quise poner el codigo en netbeans para crear la aplicacion pero me marca error que dice:
    [Fatal Error] :1:2: El marcador en el documento que precede al elemento raíz debe tener el formato correcto.
    y me marca error donde esta tb_on_off = (ToggleButton) findViewById(R.id.ToggleButton_on_off); me podrias ayudar de antemano gracias

    • Hola,

      desconozco como funciona Netbeans para editar codigo fuente para ANdroid. En principio yo utilizo siempre Android Studio y el codigo anterior compila sin problemas. Quizas deberias probar con Android Studio.

      Saludos

  22. Amigo ya logre hacer la aplicacion lo realice con eclipse porque con netbeans me marcaba muchos errores , pero solo funciona con mi red local si lo quiero aplicar con una red distinta me marca error , de que manera o cual seria el protocolo para poder realizar esto con distinta red de wifi te agradesco de antemano tu apoyo gracias.

  23. Muchas gracias amigo or todo tu apoyo ya logre hacer funcionar el cto desde otra red de wi fi realice los pasos que comentas en tu otro articulo y ya esta funcionando.

    • El sketch completo es el sketch de ejemplo llamado “Bridge” que encontraras si instalas el ide de arduino. De hecho, supongo que tienes el ide de arduino instalado, asi que simplemente tienes que ir al menu File-> Examples ->Bridge, y ahi lo tienes, el primero de la lista.

      Un saludo

  24. Hola,
    Muy interesante y de mucha ayuda tu aporte, necesito ayuda con un proyecto que estoy realizando con Arduino Yun y un sensor biometrico GT-511C3 en el que utilizo el pin 0 y pin 1 de RX y TX y esta id quiero que se me muestre en la pagina de el buscador como en el ejemplo del bridge espero que pueda ayudarme con este problema.
    De antemano muchas gracias.

    • Lo lamento, pero no dispongo de un lector de huella digital como el que comentas para hacer pruebas. Pero si consigues recibir la informacion del sensor biometrico, publicarla mediante la libreria bridge es sencillo. Una vez tengas el valor del dato que quieras publicar, solo tienes que invocar el comando

      Bridge.put(“nombre”, valor);

      Y ya podrás consultar los datos desde un navegador haciendo http://ip_del_yun/data/get, deberias ver lo siguiente:

      {
      “value”: {
      “nombre”: “aqui ira el valor que hayas especificado”,

      },
      “response”: “get”
      }

      La filosofia es la misma que en el sketch que controla el termostato que hemos desarrollado para arduino yun, solo que obviamente lees el dato de otro sensor. Puedes echarle un vistazo al sketch aqui:

      Un saludo

  25. Hola, esta excelente tu proyecto, gracias por compartirlo, quisiera saber si es posible o si me podrías orientar a como hacerlo, es decir tal cual tu proyecto, pero ademas que cada que se prende la bombilla o se apaga registrar la fecha y hora en una base de datos. Gracias. Espero tu respuesta. Saludos.

    • Si claro, si utilizas un arduino Yun, en la parte del linino puedes tener una base de datos sqlite, y tambien podrias tener un script de python o de php que te ofrezca un webservice rest para encender y apagar la bombilla, y de paso, dejar el registro que tu dices en la base de datos. Es algo parecido al proyecto del termostato.

      Saludos

  26. Hola, este tuorial me sirvio mucho en la parte incial de mi proyecto, ahora mismo esta un poco frenado, pues no encunetro la forma de enviar continuamente la peticion REST al yun, lo puedo hacer una sola vez, pero para lo que estoy trabajando nececito que mientras el boton este presionado envie la peticion, este codigo funciona una sola vez.

    btUP.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction()) {
    case ACTION_DOWN:

    new AsyncTask() {
    @Override

    protected Void doInBackground(Void… params) {

    HttpClient httpClient = new DefaultHttpClient();
    HttpGet htt = new HttpGet(“http://192.*****/arduino/servo/1″+vel); //vel = velocidad deseada del servo
    try {
    httpClient.execute(htt);

    } catch (Exception e) {

    e.printStackTrace();
    }

    }
    La pregunta es, ¿podrias guiarme a realizar varias veces la peticion?, el objetivo es mover el servo mientras se pulse el boton.

  27. Buenas Tardes.

    Esta muy interesante tu proyecto. Solo tengo una pregunta. ¿ dondé tengo que entrar para poder configurar el rest en “open” ? no se esa parte, y me seria util tu ayuda

    Saludos.

    • Supongo que te refieres a eliminar la peticion de contraseña para usar los servicios rest. Eso se hace en la pantalla principal de configuracion del arduino. Escribe http://arduino.local en el navegador, introduce la contraseña, y en la siguiente pantalla, parte inferior, podras activar o desactivar la contraseña para los servicios rest.

      Saludos

  28. Pero el arduino tiene que estar conectado obligatoriamente ?
    Porque lo conecto y cuando ingreso esa direccion siempre me tira pagina no disponible.

    • Correcto, para hacer este proyecto de controlar una bombilla desde el movil, necesitas un arduino yun, que es un dispositivo muy diferente en prestaciones (y precio) a un arduino uno.

      Lo siento, un saludo.

  29. Gran post, en los comentarios veo que el codigo es incompatible con arduino uno, una pregunta, ¿seria compatible con arduino MEGA ???

  30. una duda es posible crear una aplicacion movil para prender un led por medio de un modulo Wi Fi cc3000? si es asi, la codificacíon en android es similar al de un bluetooh ?
    gracias

  31. Excelente post sin embargo tengo un error en la aplicación de Android y no logro ubicar el problema, Roque podrías enviarme el proyecto a mi correo, sería de gran utilidad. muchas gracias. saludos.
    Mi correo es wenfyguzman@gmail.com

    • Hola,

      lamentablemente no conservo el proyecto con el que hice este articulo. Lo unico que conservo es lo que esta en el artículo. Lo lamento mucho.

      Un saludo

  32. Hola. Roque, tengo dos preguntas.
    ¿Se pueden controlar mas de una salida a la vez?
    ¿Puedo tener acceso a la Yun por medio de un enlace inalambrico de internet? (Desde un punto de acceso remoto).

    Gracias.

    • Hola Luis,

      si, el arduno yun permite controlar mas de una salida a la vez. Si no recuerdo mal el yun tiene 20 pines digitales, y 10 analogicos.

      El yun puedes imaginartelo como un pequeño (en potencia) servidor linux. De hecho lleva el mismo sistema operativo que llevan muchos routers domesticos. Y si, puedes acceder a el de manera remota a traves de internet. Precisamente eso es lo que hago en el proyecto “Termostato Arduino Yun”, del cual puedes encontrar detalles en esta misma web.

      Un saludo.

  33. Hola buenos días,
    En primer lugar felicitarte por el articulo.

    Mi pregunta es la siguiente. Que parte del código de la actividad principal de android, es la que establece la lectura y el envío de datos de arduino a android?

    Muchas gracias un saludo.

  34. Hola buenas, felicitarte por el articulo, me estoy familiarizando con este tipo de proyectos y queria hecerte una pregunta, a nivel practico es decir si quiesiera instalar este proyecto en alguna habitacion… al incluir un interruptor se tendria que variar el codigo…??, incluir alguna variable..????, he hecho algunas pruebas y no doy con la solucion.
    Muchas gracias de antelacion.

    • Hola, perdona por la tardanza en la respuesta.

      Entiendo que te refieres a que quieres controlar la luz de una habitacion con este proyecto. No das mucho mas detalles de que es lo que no funciona, pero en principio no tienes que añadir nada mas, el arduino es el interruptor, y es todo cuanto necesitas. Bueno el interruptor es el relé realmente, pero ya me entiendes.

      Si me cuentas mas detalladamente que es lo que no te funciona puedo intentar imaginar una solución.

      Saludos.

  35. Excelente aporte! Te agradezco mucho lo que haz compartido, tengo un proyecto y me haz abierto mucho camino. Solo te tengo un par de preguntas, en dónde se le puede modificar para encender más de un led, tanto en arduino como en android? Te agradezco de antemano tu respuesta. Muchas gracias.

  36. Me ha gustado mucho el articulo y me interesa saber mas sobre este tema del manejo de arduino por android. Pero tengo un arduino mega ese placa de arduino la puedo utilizar para para este proyecto de la bombilla.

    • Este proyecto se basa en la capacidad del arduino Yun para actuar como un servidor Linux, y por lo tanto poder ofrecer servicios web Rest, que la app Android usa para enviarle comandos. Hasta donde yo se, un arduino Mega es sencillamente un microcontrolador arduino, sin las capacidades extra que ofrece el Yun, asi que la respuesta es que lamentablemente no se puede.

      Un saludo

  37. Hola amigo! He estado tratando de unir la red del yun con la de mi casa. Al hacerlo, me indica que se se completo y me da un link para darle clic. El problema es al darle clic al link me abre una nueva pestaña con la url del nombre_red_ard.local. Pero me dice que es imposile acceder a esa pagina. Tambien pongo la url del yun y me aparece que por el momento no se puede hacer la conexión. Te agradecería mucho si me pudieras apoyar con este problema.
    De antemano, gracias por tu atención!.

    • Supongo que estas haciendo el proceso desde un portatil o un ordenador de sobremesa que tiene un adaptador de red inhalambrica. Asumo este hecho porque tienes que conectarte al yun, que inicialmente esta en modo AP, para configurarlo. Una vez que has configurado a que red tiene que conectarse el yun (a la red de tu casa u oficina), el yun se reinicia, y se conectará a esa red. Lo mas normal es que tu portatil u ordenador, al ver que el Yun ya no esta en modo AP, que la red wifi “ArduinoXXXX” ha desaparecido, vuelva conectarse a la red que utiliza normalmente.

      Pero es posible que esto no ocurra automaticamente, asi que comprueba que el ordenador desde que el que haces todo el proceso, se haya vuelto a conectar a tu red wifi. Comprueba tambien que sea la misma para la cual has configurado el Yun.

      Otras comprobaciones que puedes hacer, es comprobar si el Yun realmente ha cogido una IP de la red a la cual lo has conectado. Esto puedes verificarlo normalmente en la pagina de mantenimiento de tu router.

      Finalmente, si con http://arduino.local no llegas al yun, intentalo directamente con la ip, tecleando http://192.168.x.x (depende que ip haya cogido el yun). A mi la verdad es que lo de http://arduino.local no me ha funcionado casi nunca.

      Y poco mas se me ocurre. Un saludo

      • Gracias por tu respuesta! Estuve checando, y al parecer la ip que tenia el yun estaba fuera del rango del ip del modem. Además de que el modem tiene desactivado el servidor DHCP por ende posee una ip estatica.

  38. Hola de nuevo. Me salio otro problema y quería ver is me pudieras volver a ayudarme.
    Pasó esto:
    Ya funcionaba el proyecto, le podía enviar las http al arduino mediante un ordenador (google chrome).
    Para hacerlo funcionar le tuve que poner la siguiente linea del codigo en comentario server.listenOnLocalhost();
    porque si no me aparecía lo siguiente Could not connect to YunServer 146 Connection refused.
    En fin, ya funcionaba, y de repente dejo de funcionar y me volvió a aparecer el mensaje anterior y el led del pin 13 ya no se quedaba encendido.
    Le habrá pasado algo al arduino?
    saludos!

  39. Hola amigo oye e tratado de realizar este proyecto pero tengo problemas al utilizar la librería de Apache, ya la agregue desde el build.gradle y todo bien al sincronizarlo solo al momento de utilizar los servicios de Http no puedo. Tengo la version de Android Studio 2.0

    • Hola!

      Ya ha llovido desde que hice ese ejemplo, y la libreria que mencionas ya no esta incluida en las versiones modernas del sdk de android. Si bien hay trucos para seguir usandola, lo mejor es sustituir el cliente de http de apache, por algo mas potente, como Retrofit. SI tengo tiempo un dia de estos publicare una app en la play store para el proyecto.

      Un saludo

  40. Hola que tal, estoy interesado en hacer algo similar para mi cladera, que tiene un termostato “peisa h21000” el mismo tiene una llave para enceder y apagar la caldera mi idea es sencilla, simplemente quiero cuando estoy para largo tiempo afuera de casa y vuelvo, es a la distancia simplemente encenderla para cuando llego mi casa no es una heladera o apagarla cuando me voy y me olvido de apagarla y no dejarla prendida 3 o 4 dias, mi consulta es si se puede colocar digamos en paralelo a la llave que tiene un arduino wifi. Si pueden orientarme un cachito para no comprar cosas innecesarias.

    Dde ya muchas gracias y muy buenas las ayuda

    • Hola,

      si, creo que hay usuarios en el foro que han instalado mi proyecto en paralelo con otro termostato. Lo mejor es que escribas en el foro y preguntes.

      Y desde luego, con el termostato arduino yun, puedes hacer lo que dices, precisamente lo creé pensando en resolver el mismo problema (encender la calefaccion antes de llegar a casa o apagarla cuando he salido y me he olvidado de hacerlo).

      Un saludo

  41. Hol mucho gusto me gustaria una ayuda tuya, es que quiero conectar mu arduino yun con android para un proyecto de un dispensador de comidas, pero pues no se como realizarlo, ya tengo la aplicacion en android y lo correspondiente a arduino, todo me funciona desde mi pc pero desde el celular movil no se como hacer para que funcione, me gustaria saber si me puedes colaborar muchas gracias

    • Hola! Si tienes una app de android y toda la parte de arduino hecha, y te funciona cuando ambos dispositivos estan en la misma lan, ya tienes mucho hecho. Solo te falta un pequeño detalle, que es que funcione cuando tu dispositivo android no esta en la misma lan que el arduino (es decir, cuando accedes con datos moviles, desde fuera).

      Tienes que hacer varias cosas:

      1.- Averiguar la IP externa del router de tu lan. Esta ip es necesaria para acceder desde el exterior a tu router. Cuando estas conectado a tu lan, te llega con conocer la ip de tu arduino yun, y usarla en los servicios web que invoca la app de android. Pero cuando estas fuera de tu lan, esta ip de tu arduino yun no tiene sentido. Luego necesitas saber la ip de tu router, y usar la ip de tu router en la llamada a los webservices desde tu app android.

      2.- En tu router, tienes que configurar una redireccion, de tal manera que cuando la app de android invoque un webservice usando la ip externa de tu router, tu router redirija esta peticion a la ip de tu arduino yun. Normalmente esto se hace en una seccion del panel de configuracion del router llamada redireccion de puertos, o algo similar.

      3.- En tu app android, tienes que programar alguna manera de distinguir cuando tu dispositivo android esta conectado a la misma red que tu arduino yun, y cuando esta conectado a otra red. Esto es muy facil, tan solo tienes que recuperar el nombre de la red wlan a la que esta conectado, y comprobar si el nombre es el mismo que el de la red a la que esta conectado el arduino yun (obviamente, es necesario que de alguna manera la app sepa como se llama la red, es decir, lo tienes que guardar en algun archivo de configuracin, preferences, base de datos, o donde quieras). La idea es que antes de cada invocacion a un servicio web del yun, la app se pregunta, ¿estoy conectado a la misma wlan que el yun? En caso afirmativo hago la llamada usando la ip del yun. En caso negativo, sustituyo la ip del yun, por la ip externa de mi router.

      Y eso es a grandes rasgos lo que tienes que hacer.

      Un saludo

      Roque.

      PS: Perdona la tardanza en la respuesta.

      • No tranquilo sera que nos podemos comunicar por chat o algo asi, para tener una mejor asesoría?? Es que estoy algo perdido en el tema y pues me falta lo que me estas comentando…Gracias

  42. Hola, pues no tranquilo a la hora que tu me digas yo me puedo conectar, me haria de mucha ayuda tu colaboracion….Es que no se como conectar la app oq ue lineaa de codigo va para que el boton reciba la orden y la envie al arduino….Gracias 🙂

  43. Hola amigos, alguien que sepa que me pueda ayudar:

    Quiero hacer lo mismo que se ve en el video, prender una lampara desde un botón en el celular, pero ademas quiero desde el celular controlar su intensidad, como lo hace un dimmer pero desde el cel y a una lampara de 220.
    Por favor si alguien sabe que me cuente como se hace o si alguien tiene el link donde lo hacen que me lo mande.

    gracias.

Los comentarios están cerrados.