Retraso de datos recibidos de tres arduinos

Hola qué tales,

Ando en busca de un consejo en cuanto a la conexión de múltiples arduinos a un notebook. Resulta que tengo 3 arduinos Nano conectados a dos sensores cada uno, y los mando mediante el nrf24l01 a 3 arduinos Uno o Nano respectivamente (incluso el rfNano), ordenadamente sería así:

LDR+MPU9250+Nano+nrf24 --> Arduino Uno+nrf24 --> recibo los datos por el puerto serie
LDR+MPU9250+Nano+nrf24 --> Arduino Nano+nrf24 --> recibo los datos por el puerto serie
LDR+MPU9250+Nano+nrf24 --> Arduino RfNano --> recibo los datos por el puerto serie

Cada uno por separado funciona perfectamente a una velocidad sin retraso, sin embargo, al conectar dos, los datos hacia el pc empiezan a sufrir retrasos. Y al conectar los tres, los datos comienzan a sufrir un retraso hasta un segundo (se congelan los datos). Me es vital tener la mayor velocidad posible (en tiempo real).

Tengo actualmente los tres arduinos conectados mediante un hub 2.0 con alimentación externa, pero aun así el problema persiste. Me imagino nada más que el puerto serial no puede manejar toda esa info paralelamente.
¿Es un problema directamente del hardware o es algo que se podría resolver con código? Leí también acerca del i2c entre arduinos ¿podrían los datos agruparse en un arduino y posteriormente enviarlos por el puerto usb y no tener retrasos? ¿O hay algún otro tipo de conexión por ejemplo por wifi que pueda manejarlo más eficazmente?

Antes de ponerme en lo práctico me gustaría tener opiniones
Agradezco sus sugerencias, saludos

Y como los conectas, abres dos monitores serie?
Yo no veo porque tienes 6 microcontroles y 6 nRF24 para hacer el trabajo de solo 4.
3 esclavos conectados en red deberían enviar los datos a un master que recepciona todo.
Usa Tmrh20 Network, la librería esta disponible en el Administrador de librerías. Si tienes problemas me consultas.
A cada nodo le asignas un ID que por ejemplo irían de 1 a 3. Nodo 0 es el maestro. Estableces la velocidad y luego hay un modo de saber quien te envia y que cosas ya sabes que lo haces estableciendo el mismo payload para todos o sea la misma estructura.

Gracias por responder.

Y como los conectas, abres dos monitores serie?

Sí, o los veo en otro programa donde llegan por comunicación serial.

Hace un tiempo ocupaba 3 esclavos y un maestro, pero tenía el problema que el maestro recepcionaba los datos de los tres pero no al mismo tiempo como sabemos: seguía teniendo el problema que mientras llegaban los datos de un nrf, los otros datos se quedaban congelados (de hecho se demoraban más de mi configuración actual). Pensé que en lugar de que un nrf recibiera toda esa info, era mejor que cada nrf recibiera la info por separado para tener algo así como "tres cabezas piensan mejor que una", pero me salió este problema actual. A pesar de ocupar 6 cuando podrían ser 4, no debería ser más rápido?

Eso si no he probado esa librería, es posible que mejore el rendimiento? Voy a probarlo ahora

Saludos

Yo la he usado el rendimiento es excelente.

Efectivamente, cambié todo el código usando la librería y ahora obtengo todos los datos por cada milisegundo, y usando solo los 4 nrf. Fue una sorpresa que aparte de lo cómodo que es la librería, mejorara tanto el rendimiento, gracias por todo!

Te dije, es notable. Todo el mundo se rompe la cabeza usando la librería estandar pero eso es para conectarse uno a uno. Esta es para redes grandes.
Incluso tienes la version MESH o MALLA que puede usar nodos como bridge o puentes y extener el alcance. Es un gran logro lo hecho por este programador. En nRF24 nada lo supera para mi gusto!.
Acabas de confirmarlo y lo mejor que no tienes limites, le sigues sumando y seguirá funcionando bien.
En mi caso mi master era un Raspberry asi que imagina todo lo que gestionaba, pero un Arduino MEGA o DUE o los ESP8266 o ESP32 tranquilamente pueden manejarse perfectamente, incluso cno estos ultimos puedes hacer un Bridge o puente a TCP/IP.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.