¿Cuál es el método de comunicación más rápido de arduino a PC?

0

Estoy creando una aplicación que tiene varios sensores i2c controlados por un Arduino Uno. Quiero obtener todos los datos sin procesar de los sensores y transferirlos a una PC lo más rápido posible, en los cuales realizaré cálculos con los datos sin procesar utilizando python. Mi plan es escribir los datos de arduino en un archivo de texto y luego hacer que Python los lea y realice algunos cálculos inmediatamente después. Quiero transferir los datos lo más rápido posible para que se acerque lo más posible a los resultados en tiempo real. ¿Debo usar Ethernet, USB, o algo más para comunicaciones? ¿Debo usar una frambuesa Pi3 para esto en su lugar? ¿Estoy abordando este problema incorrectamente? ¡Cualquier ayuda sería apreciada! Gracias.

    
pregunta Bob Smith

3 respuestas

5

Los chips serie-usb FTDI FT232RL pueden ejecutarse a 2Mbd, es decir, 200 kbytes / seg. Esto es mucho más rápido que la tasa I2C.

Digamos que lees I2C a una velocidad máxima de 400kHz (44kByte / s), solo necesitas 887kBd para enviar los datos como hex-ascii (2 caracteres / byte).

Por supuesto, esa es la tasa de lectura I2C sostenida una vez que se aborda. En la práctica, tiene inicio / parada, direccionamiento, control de escritura de registros, código arduino, etc. Por lo tanto, su capacidad real para obtener datos para enviarlos de vuelta probablemente sea solo la mitad. Es probable que encuentre que 230kbd o 460kbd son bastante adecuados.

Así que eres bueno con el chip estándar de usb-serie, solo cambia la velocidad de transmisión. Sin embargo, las rutinas seriales de arduinos pueden no estar a la altura (no soy un usuario de arduino).

Su punto de partida es hacer que la serie realice una prueba.   enlace

Realterm puede configurar estos (cualesquiera) velocidades de transmisión y capturar los datos en un archivo, marca de hora, ejecutar scripts de postproceso, etc. También tiene la capacidad de convertir y mostrar datos hexcsv (específicamente de un dispositivo I2C)

Tenga en cuenta que a altas velocidades en baudios, Arduino podría necesitarle espaciar los caracteres que le envíe. También puede encontrar que para obtener la velocidad de envío máxima, debe manejar el comando de TX directamente para omitir cualquier software quince, lo que puede llevar bastante tiempo. La buena noticia es que no tiene que almacenar en búfer cuando el uart se envía tan rápido.

Lo que quieras hacer funcionará bien.

Es correcto capturar en el archivo y luego procesar. Es mucho más fácil ponerse en marcha y encontrar fallas más tarde. Si tiene una opción, los caracteres ASCII son más fáciles que los binarios. Un formato hexcsv es fácil para lo que quieres hacer.

Un buen consejo es que puedes comprimir estos archivos de datos si quieres mantenerlos, siempre se comprimen masivamente.

    
respondido por el Henry Crun
0

El uno no admite esto, pero los nuevos modelos de arduino eliminan el chip USB externo al serial y en su lugar conectan directamente el puerto USB al microcontrolador. Creo que, de forma predeterminada, emula un puerto serie a través de USB, pero como no es realmente un puerto serie, no se limita a las velocidades en baudios de los puertos serie y, como resultado, transferirá los datos mucho más rápido. Podría valer la pena verlo, ya que debería poder obtener un rendimiento mucho mejor.

    
respondido por el alex.forencich
0

¿Quieres 5.3Mbit / sec (5333333 Baud)? Aquí es cómo:

enlace

enlace

Tal vez ejecutará un problema para tener listos tantos datos a este ritmo :)

    
respondido por el gilhad

Lea otras preguntas en las etiquetas