Múltiples sensores y control con microcontrolador

0

Espero que esta pregunta no parezca demasiado general / basada en la opinión, e intentaré enfocarla.

Hace poco completé un proyecto para una competición de cohetes en la que controlamos una cámara de giro / inclinación en la parte inferior de un módulo de aterrizaje expulsado de un cohete. Tuvimos que controlar la cámara para apuntar a objetivos en el suelo, crear imágenes, procesar las imágenes e identificar los objetivos por color. Utilizamos dos servos (pan / tilt), un módulo GPS y una placa de 10 DOF (Gyro / Acc / Temp).

El enfoque que tomamos fue usar un Arduino para manejar la panorámica / inclinación, el GPS y la placa 10DOF. Esto se comunicaba con una pi frambuesa a través de I2C y actuaba como el maestro, mientras que el Arduino era el esclavo. El pi manejó la toma y procesamiento de la imagen.

Al hacer esto, tuvimos problemas con el uso general de la memoria en el microcontrolador (el código de paneo / inclinación fue bastante intenso) y pudimos obtener todos los datos necesarios de los diferentes sensores y comunicárselos al Pi . Utilizamos interrupciones y tratamos de optimizar el código de la manera más eficiente posible.

Mi pregunta es, para proyectos como este, donde hay muchos sensores y mucho procesamiento, ¿me interesa crear una placa personalizada con cajeros automáticos separados para cada sensor (o al menos uno para sensores, otro para lógica)? Si es así, ¿es I2C el protocolo recomendado para ser usado?

Mientras trabajo en muchos proyectos del tipo de visión por computadora, necesitaré usar un PI u otra computadora para procesar las imágenes, y también poder obtener datos de sensores y calcular más rápido de lo que Pi puede manejar, un diseño elegante y Una solución rápida a esto sería muy apreciada.

Gracias

    
pregunta Kyle Hunter

2 respuestas

1

Básicamente tienes dos opciones.

  1. Seleccione un dispositivo controlador con mayor capacidad que tenga la funcionalidad y la memoria que necesita.

o

  1. Como usted indicó, divida el sistema para usar múltiples controladores.

El último, por supuesto, requiere un poco más de desarrollo y es más difícil de mantener, pero le brinda la capacidad de modularizar el diseño para que un micro pueda hacer un trabajo realmente bien, en lugar de compartir recursos en un solo dispositivo grande. Una vez que ese subsistema funcione, puede confiar en que continuará haciéndolo cuando agregue diferentes micros para otros subsistemas.

Sin embargo, es posible que no necesites un micro por sensor. Considere agrupar las funciones "me gusta" en micros separados, si encajan.

Si va por la vía multimicro, también tiene que crear algún tipo de protocolo de comunicación entre ellos y lo que sea que actúe como dispositivo supervisor.

Eso podría ser I2C o algún otro método de comunicación verdadero. Podría ser tan simple como unas pocas líneas lógicas forzar al procesador de la subordenada a ingresar a algún estado o realizar alguna tarea, con señales de retorno recíprocas o interrupciones. Realmente depende de la funcionalidad requerida.

Depende de usted si crea su propia tabla, o si apila una cubierta de Arduinos. Se requiere cierta inversión si va por la ruta personalizada, con una posibilidad definida de tener que recorrer algunos bucles de diseño.

Sin embargo, también suena como si tuvieras una limitación de espacio apretado, por lo que una gran pila de Arduinos puede estar fuera de discusión. Sin embargo, si desea atenerse a ese micro, la pila probablemente sería la mejor apuesta para la prueba inicial del desarrollo del concepto. Una vez que demuestre que el sistema funciona, entonces puede pensar en una estrecha integración.

    
respondido por el Trevor_G
0

Le sugiero que tome el enfoque correcto para los datos de baja velocidad al tener las cámaras en el 'Pi y el Arduino para los sensores.

Le sugeriría además que debería considerar múltiples ATMega328 para sus sensores. Esto reducirá significativamente el tiempo de desarrollo del software, el tamaño de la base de código (presión de memoria) y cualquier problema / error de interacción del proceso que pueda ocurrir. También es beneficioso minimizar el número de interrupciones que se manejan en cada micro, especialmente si está utilizando los estados de suspensión para reducir la potencia. Dentro de cada Arduino puede deshabilitar los periféricos que no necesita reducir la potencia de cada procesador si eso le preocupa.
Siempre que su tasa de datos de los sensores sea baja, I2C es ideal con múltiples Arduinos como esclavos.

    
respondido por el Jack Creasey

Lea otras preguntas en las etiquetas