¿Cómo puedo integrar un teléfono inteligente con mi proyecto de robótica? [cerrado]

24

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.

Robz
fuente
Solo para agregar una opción de iOS, vea SESO iPhone como un controlador de robot
Greenonline

Respuestas:

19

El kit de desarrollo de accesorios de Android (ADK) debe hacer todo lo que necesita.

ADK

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 :

El kit de desarrollo de accesorios abiertos de Android (ADK) proporciona una implementación de un accesorio USB de Android que se basa en la plataforma de creación de prototipos de electrónica de código abierto Arduino, los archivos de diseño de hardware del accesorio, el código que implementa el firmware del accesorio y la aplicación de Android que interactúa con el accesorio. Los archivos y el código de diseño de hardware están contenidos en la descarga del paquete ADK.

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:

¡Acelere el desarrollo de hardware de su teléfono Android o simplemente diseñe robots para teléfonos celulares con el Arduino ADK! El Arduino ADK es una placa de microcontrolador basada en el potente ATmega2560 (hoja de datos). Tiene una interfaz de host USB para conectarse con teléfonos basados ​​en Android, y un convertidor de refuerzo de fuente de alimentación para cargar el teléfono con corriente continua mientras está enchufado al ADK

(énfasis mío)

Embedded.kyle
fuente
11

Otra opción es la placa IOIO-OTG :

Tablero IOIO-OTG

La descripción del producto Sparkfun describe su funcionalidad:

Cuenta con un microcontrolador PIC que actúa como un puente que conecta una aplicación en su PC o dispositivo Android a periféricos de bajo nivel como GPIO, PWM, ADC, I2C, SPI y UART. ¡Una biblioteca de nivel de aplicación te ayuda a escribir código de control para estos periféricos de bajo nivel de la misma manera que escribirías cualquier otra aplicación Java!

Esta placa debe hacer todo lo que desee e incluso tiene un buen tutorial para ayudarlo a comenzar.

brnd4n
fuente
6

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.

Manishearth
fuente
5

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.

Nis
fuente
4

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.

Jay Beavers
fuente