Mando a distancia con android y arduino
En este post vamos a explicar como desarrollar un mando a distancia. Los elementos que intervienen son:
- móvil Android: actúa como mando a distancia. Desarrollaremos una aplicación que tiene una interfaz de mando a distancia. Está aplicación contendrá también un socket cliente que usará la red wifi doméstica.
- router: es el elemento que hace de nexo de unión entre el mando y nuestro servidor (explicado en el punto siguiente):
- servidor: contiene un socket que actúa de servidor. Este elemento puede ser, o bien un ordenador o bien un móvil Android. La conexión con Arduino difiere según el tipo de servidor que escojamos. Si escogemos el ordenador la conexión se realiza por puerto usb que el arduino convierte a serie. En caso de escoger el móvil tendremos que comprar un cable OTG que permita la conexión entre el móvil y la terminación USB macho del cable de Arduino.
- arduino Mega 2560 R3: la placa controladora de las acciones enviadas por el servidor y que manda los códigos al emisor de infrarrojos. Cualquier otro módelo de arduino como el UNO son válidos. Habría que modificar algunos pasos.
- pareja emisor/receptor IR: He usado estos porque ya disponía de ellos: emisor-detector IR. No obstante, se puede usar cualquier otro módelo.
- Resistencias y cables: Usaremos dos resistencias una de 220 Ω para el emisor y otra de 100 kΩ. Estas resistencias se colocan para reducir la tensión de salida de 5V del pin de arduino y trabajar dentro de los especificaciones del fabricante.
Aquí adjunto un esquema para hacernos una idea de la arquitectura del proyecto:
Vamos a dividir este proyecto en diferentes partes según las funcionalidades:
- Obtención de códigos infrarrojos.
- Preparación del emisor infrarrojo e implementación del sketch para enviar códigos a la TV.
- Desarrollo de las aplicaciones tanto cliente (mando) como servidor.
1.- Obtención de códigos infrarrojos.
Implementamos un circuito de la siguiente forma:
Conectamos una resistencia de 100kΩ al pin de 5V y en serie con el receptor de infrarrojos. La parte positiva del led (ánodo) es la patilla larga y la parte negativa (cátodo) la corta. Conectamos el ánodo al pin 11 (PWM) de Arduino y el cátodo a un pin GND (masa).
Ahora usamos una libreria que se llama irremote. La podéis encontrar aquí. Usáis uno de sus códigos con Arduino IDE y obtenéis los códigos en el monitor serial. Yo los he copiado en un archivo de texto para una televisión LG (código televisión LG). Si os sirve podéis saltaros este paso, sino tenéis que obtener vuestros propios códigos.
Conectamos una resistencia de 220Ω al pin 11 (PWM) y en serie el led emisor de infrarrojos. El ánodo a un pin GND (masa).
El código podéis verlo aquí. Recordad que esos códigos sólo son válidos en función del modelo de televisión. No obstante la estructura del programa os puede servir de referencia. Para probar que tenéis montado bien el circuito compilad el programa en vuestro arduino. Después abrid el monitor serie del ide de Arduino y lanzad algunos valores que tengáis puestos en vuestros casos del switch. Para aseguraros que el emisor de infrarrojos emite códigos situad la cámara de vuestro móvil enfocando al emisor y veréis que se enciende.
3.- Aplicación cliente (mando) y aplicación servidor.
Ambas aplicaciones se desarrollan con Android ya que dispongo de móviles con sistema operativo Android. La comunicación entre los dos móviles se realizará por sockets a través de la red wifi doméstica. El móvil que hace de servidor está conectado a Arduino através de un cable OTG. Además usamos en este móvil una aplicación llamada Arduino Unno Communicator que la podéis descargar de Google Play. Esta aplicación lanza unos intents si recibe datos de Arduino o bien permite enviar los datos. La aplicación que desarrollamos en Android que actúa como servidor activa el lanzamiento de intents en la aplicación descargada y se comunica con el microcontrolador Arduino.
El código de la aplicación que hace de mando lo podéis encontrar aquí. La aplicación servidor y que se comunica con Arduino es esta.
Debéis ejecutar la aplicación Arduino Unno Communicator después de conectar el móvil a Arduino y posteriormente, lanzar la aplicación que hace de servidor. Una vez hecho esto, ya lanzamos la aplicación que hace de mando en el otro móvil. Tened en cuenta que la comunicación entre móviles se realiza a través de la red local de casa (wifi) por lo que tenéis que tener activada la conexión, en caso contrario no funcionará.
3.- Aplicación cliente (mando) y aplicación servidor.
Ambas aplicaciones se desarrollan con Android ya que dispongo de móviles con sistema operativo Android. La comunicación entre los dos móviles se realizará por sockets a través de la red wifi doméstica. El móvil que hace de servidor está conectado a Arduino através de un cable OTG. Además usamos en este móvil una aplicación llamada Arduino Unno Communicator que la podéis descargar de Google Play. Esta aplicación lanza unos intents si recibe datos de Arduino o bien permite enviar los datos. La aplicación que desarrollamos en Android que actúa como servidor activa el lanzamiento de intents en la aplicación descargada y se comunica con el microcontrolador Arduino.
El código de la aplicación que hace de mando lo podéis encontrar aquí. La aplicación servidor y que se comunica con Arduino es esta.
Debéis ejecutar la aplicación Arduino Unno Communicator después de conectar el móvil a Arduino y posteriormente, lanzar la aplicación que hace de servidor. Una vez hecho esto, ya lanzamos la aplicación que hace de mando en el otro móvil. Tened en cuenta que la comunicación entre móviles se realiza a través de la red local de casa (wifi) por lo que tenéis que tener activada la conexión, en caso contrario no funcionará.



No hay comentarios:
Publicar un comentario