Raspberry Pi vs Arduino ADK (con conexión telefónica)

Estaba investigando un poco para mi proyecto final el próximo año. Básicamente es un rover autónomo, diseñado para explorar áreas al aire libre y enviar videos/imágenes a un sitio web.

Hasta ahora, nuestro diseño inicial para el sistema de control involucró Arduino ADK conectado a un teléfono Android. El teléfono está destinado a ser el cerebro y podemos usar todos los sensores que vienen con él, mientras que el arduino se usará para controlar los motores y para la retroalimentación en tiempo real. Estamos usando un teléfono para esto porque los componentes individuales como gps, módulo celular, etc. para arduino terminarán costándonos mucho más. Para la comunicación, vamos a utilizar la red celular del teléfono debido a su largo alcance.

A nuestro profesor le gustó la idea, pero sugirió que deberíamos considerar usar una raspberry pi en lugar de Arduino, para que pudiéramos usar algunos programas y hardware (análisis/registro de datos) destinados a Linux, dando al proyecto un propósito más práctico en el futuro. Esencialmente, hacer que el RPi sea el cerebro, y solo usar los sensores en el teléfono para proporcionar datos.

No tengo tanta experiencia con Rpi, así que no estoy seguro de cómo resultarán las cosas. Así que tengo algunas preguntas: - ¿Se puede conectar un teléfono Android con el Rpi y simplemente usarlo como un módem 3g y usar los datos de los sensores integrados? -Si bien RPi no está diseñado para funciones en tiempo real, ¿qué tipo de retraso se debe esperar de esto? si es menos de 100 ms, creo que debería estar bien. -Si bien el número de GPIO en el RPi es limitado, ¿se puede usar para ejecutar un controlador de motor? También se puede combinar con un arduino uno simple que a su vez puede tener el controlador del motor, pero ¿será una pérdida de recursos?

Todavía estoy investigando y tendré muchas preguntas en el futuro. Por ahora, estas preguntas novatas serán suficientes para empezar.

También puede mirar el nuevo Beaglebone Black. Precio similar al RPi y también ejecuta Linux pero tiene más GPIO.
Acabo de comprobarlo, no me di cuenta de que sacaron una versión más barata recientemente. ¡Esto agrega más a mi confusión! RPi tiene una comunidad más grande que lo apoya, lo que podría ser útil. Entonces, en lo que respecta al software, ¿es justo decir que todo lo que significa RPi es igualmente aplicable a BeagleBone?
En general diría que sí. Ambos ejecutan Linux y tienen bibliotecas para admitir el hardware. Consulte la página de proyectos para ver qué está haciendo la gente con él.
Su capacidad para conectar un teléfono al pi sería la misma que su capacidad para conectar ese teléfono a una caja de Linux de escritorio, ya que AFAIK todas las implementaciones de Android <-> Linux son de código abierto y, por lo tanto, se pueden volver a compilar para Arm Linux. Por lo tanto, ADB, anclaje, implementación del protocolo ADK, etc., están todos sobre la mesa según los detalles del teléfono y lo que desee.
El proyecto implica la ejecución de varios actuadores y motores paso a paso/CC de alta potencia. Por lo que he leído hasta ahora, agregar un controlador de motor a RPi (o placa beagle) no es tan fácil/confiable como un arduino. Puedo conectarles un arduino, pero me pregunto si estoy desperdiciando demasiada potencia informática potencial para los 3 sistemas (Android, RPi y arduino)

Respuestas (1)

De hecho, un pi no es una solución maravillosa para el control del motor: como dispositivo Linux integrado, no es ideal para el control en tiempo real, y como uno que depende de una tarjeta SD para un sistema de archivos raíz, es notoriamente frágil en estado, especialmente cuando hay una pérdida de energía inesperada. puede ser un problema. Al estar basado en un decodificador en lugar de un SoC móvil, también carece de la mayoría de las funciones de control de energía que uno esperaría de un sistema alimentado por batería.

Pero hacer un host USB con un Arduino tampoco es una gran idea: el chip host termina costando más que su microcontrolador principal.

Si desea mantener la idea de ADK con el dispositivo externo como host, busque algo como un STM32F4 o KL25Z como un host USB integrado de bajo costo (las placas STM Nucleo están en el rango de $ 11, aunque las señales USB solo existen en los encabezados de pin en lugar de un conector USB)

Otra opción es cambiar las cosas y usar el teléfono como host, con el procesador integrado como dispositivo. Esto es en cierto modo más sensato y puede devolverlo al territorio de Arduino, sin embargo, significa que debe encontrar una forma de alimentar el teléfono mientras hace esto, o terminará agotando la batería.

Para un control simple del motor, vale la pena mirar también la transmisión de señales moduladas a través de la toma de auriculares.

(Soy consciente de que esta es una pregunta antigua, pero no tiene nada particularmente anticuado. Tal vez con una respuesta podamos retirarla para que no vuelva a surgir en la rotación automática).