¿Cuál es la diferencia entre todas las bibliotecas de serie de software? ¿Cuál es compatible con Arduino Nano?

11

Hay tantas bibliotecas en serie de software, ¿cuáles son las diferencias entre ellas? ¿Y cuál puedo usar con mi Arduino Nano? Para mi Arduino Nano necesito un puerto serie de hardware y un puerto serie de software a una velocidad en baudios de 115200.

¿En qué pines del Arduino Nano puedo usar la biblioteca serial del software?

William Roy
fuente
Estoy usando neoswserial con un teclado I2C, pero cuando agrego key=getKey();mi GSM (usando el pin 2 y 3 Arduino Uno) no recibe SMS. Ayudame por favor.
Nguyễn Trường Hải

Respuestas:

16

Esta respuesta enumera las 4 opciones básicas:

  • HardwareSerial, siempre lo mejor. Simplemente use la Serialvariable predefinida . En algunas Arduino, hay puertos HardwareSerial adicionales, llamadas Serial1, Serial2etc. El Nano tiene solamente Serial.

  • AltSoftSerial, la mejor de las bibliotecas seriales de software. Solo se permite una instancia, y debe usarse en uno de los pines de captura de entrada (pines 8 y 9 para un Nano).

  • Mi NeoSWSeriales el siguiente mejor. Funciona en dos pines, pero solo a velocidades de baudios de 9600, 19200 y 38400.

  • SoftwareSerialEs la peor opción. Funciona en cualquiera de los dos pines, pero es muy ineficiente. Inhabilita las interrupciones durante todo el tiempo que se envía o recibe un personaje , y no puede hacer ambas cosas al mismo tiempo (a diferencia de todas las otras opciones en serie). Esto puede interferir con otras partes de su boceto, otras comunicaciones del dispositivo o con bibliotecas.

Si pudieras usar una velocidad de transmisión más lenta, podrías mantener tus impresiones de depuración Serialy usar cualquiera AltSoftSerialo NeoSWSerialpara tu dispositivo.

Pero si tiene que usar 115200, la única opción confiable es Serial. Aunque AltSoftSerialy SoftwareSerialpermita esa velocidad en baudios, es posible que no envíen / reciban datos correctamente.

En ese caso, sugeriría usar Serialpara el dispositivo 115200. A menos que esté utilizando un ISP, deberá desconectar el dispositivo para cargar un nuevo boceto a través de USB.

Luego use AltSoftSerialo NeoSWSerialpara sus declaraciones de depuración. Necesitará un adaptador TTL de serie a USB (también conocido como FTDI) en los pines seleccionados para conectarse a la PC. El Serial Monitoru otro programa de emulador de Terminal leerá desde ese puerto USB COM.

slash-dev
fuente
¿AltSoftSerial es el mismo en rendimiento y características, solo que NeoICSerial agrega la funcionalidad de qué? No entendí completamente. github.com/SlashDevin/NeoICSerial
William Roy
2
@WilliamRoy, NeoICSerialsolo agrega el attachInterruptmétodo a AltSoftSerial. Probablemente no necesite manejar cada personaje en una interrupción. Simplemente use AltSoftSerialy llame al available()y luego read()si un char está listo. Del mismo modo, NeoHWSerialagrega la misma attachInterruptcaracterística al núcleo HardwareSerial. Sin embargo, NeoSWSeriales una clase completamente diferente (también tiene la attachInterruptfunción).
slash-dev
-2

El software en serie emula un puerto en serie, diferente de un puerto nativo que tiene un registro para guardar todos los bits en orden y establece una bandera para llamar al bucle principal, una serie de software no tiene nada de eso. El software de serie debe recibir todos los bits, uno por uno, por lo que debe leer un puerto digital, esperar un tiempo específico y volver a leer el pin digital. Debe hacerlo 10 veces (1 bit de inicio, 8 bits de datos y 1 bit de finalización). El tiempo es muy importante. Para usar una serie de software, debe preocuparse más por el rendimiento.

Puede usar un pin de interrupción digital para el pin RX, por lo que se le "llama" en el borde inferior (bit de inicio) y recibe los 8 bits.

rodrigo
fuente
1
Esto ni siquiera intenta responder la pregunta original.
Edgar Bonet
1
Sí, esto no intenta responder a la pregunta original porque la comunidad Arduino no sabe hacer el código periférico.
rodrigo