Los teléfonos inteligentes en estos días generalmente vienen con un giroscopio, acelerómetro, brújula, cámara y sensor GPS, todo a bordo. También suelen tener una conexión a Internet con Wifi y redes de datos móviles. He visto muchos casos de uso de un teléfono como control remoto para un robot, pero para mí, parece que el teléfono en sí es una plataforma informática y de detección liviana perfecta para un robot autónomo.
El obstáculo principal que veo es la interfaz con actuadores. Ser capaz de controlar motores para dirigir incluso un robot de mesa, o controlar servos, por ejemplo. Conectarse y comunicarse con un microcontrolador también podría ser un obstáculo.
Como aficionado a los robots, me gustaría saber cómo puedo superar estos y otros obstáculos para poder aprovechar el poder de mi teléfono inteligente con mis proyectos de robótica.
Respuestas:
El kit de desarrollo de accesorios de Android (ADK) debe hacer todo lo que necesita.
Es una placa Arduino que está específicamente diseñada para interactuar con Android. Puede conectar los dos a través de Bluetooth o USB (o WiFi / Ethernet, creo).
Como toda la arquitectura está abierta, puede usar cada parte para lo que es mejor. Escribes el código de Android para obtener datos de los sensores integrados del teléfono y controlar la pantalla. Y usted escribe el código Arduino para controlar actuadores, servos y otros sensores que el teléfono no incluye. El código para comunicarse entre los dos se proporciona de código abierto a través de Google.
Del blog de Arduino :
La mayoría de los ejemplos están diseñados en torno al uso del teléfono como interfaz gráfica para algún tipo de accesorio de hardware como un reloj. Pero no hay razón para que no pueda acceder también a los sensores del teléfono y pasar datos de un lado a otro.
Adafruit incluso menciona su uso para hacer robots en la página de su tienda para el ADK:
(énfasis mío)
fuente
Otra opción es la placa IOIO-OTG :
La descripción del producto Sparkfun describe su funcionalidad:
Esta placa debe hacer todo lo que desee e incluso tiene un buen tutorial para ayudarlo a comenzar.
fuente
El problema principal, según veo, no es realmente interactuar con los actuadores: si tiene una buena manera de transferir de forma inalámbrica las señales digitales (incluso mejor sería analógica, o un canal lo suficientemente bueno como para hacer PWM), puede conectar eso con un chip de controlador de motor (por ejemplo, L293D) y listo para usar. Para los servos, necesita un buen tiempo de respuesta para poder manejar los pulsos. Si tiene un canal con capacidad PWM, esto no debería ser difícil ya que el canal ya tiene una alta velocidad en baudios. Si tiene un canal lento, los servos pueden no ser posibles ya que requiere una sincronización de pulso precisa.
La primera opción que veo (aunque es bastante voluminosa) es tomar una Raspberry Pi, conectarla a través de ethernet a un enrutador inalámbrico y conectar el teléfono a la misma de forma inalámbrica. Ahora solo escriba una aplicación básica para su teléfono que envíe solicitudes al Pi en función de la entrada, y escriba otro servidor como la aplicación para el Pi que maneja estos. Puede ser voluminoso y algo duro, pero es bastante extensible, en mi opinión. También se puede poner el enrutador fuera del tablero y se adhieren presente en el Pi (o punto de acceso y eliminar el uso del router en su totalidad).
Otra opción es usar un controlador bluetooth como el que se muestra aquí . No he usado esto antes, pero parece que todavía necesitarás un microcontrolador para manejar esto. Supongo que puede conectar sus pines RX / TX directamente al TX / RX en un arduino, aunque no estoy muy seguro de esto.
Si ha usado XBee / ZigBee anteriormente, es posible que desee probar la abeja bluetooth .
Una última opción es usar el puerto USB del teléfono con una configuración de control inalámbrico convencional (XBee / lo que sea), pero esto requerirá uno para escribir los controladores y todo.
fuente
Sí, la falta de pines GPIO en los teléfonos inteligentes es una pena. Si ya tiene ROS ejecutándose en el robot, puede usar esta aplicación en un teléfono Android para obtener acceso al conjunto de sensores en el teléfono.
fuente
Muchos dispositivos Android recientes, como el Nexus 7, son compatibles con USB On The Go (OTG), que es una forma elegante de decir que el "Modo de host USB" es compatible. En estos casos, con el cable correcto que se puede obtener por menos de $ 1, se puede usar cualquier dispositivo USB compatible. No necesita una versión especial del Arduino que tenga hardware para el modo USB Host.
He experimentado con esto lo suficiente como para saber que un Arduino 'normal' como el Leonardo o el Teensy 2 aparece en un teléfono Android como un dispositivo TTY (por ejemplo, un puerto serie) cuando está conectado con un cable OTG.
Este artículo profundiza sobre cómo usar la API de host USB de Android para comunicarse con Arduino desde una aplicación de Android. Requiere Android 3.1+ y no requiere que rootees el dispositivo.
fuente