Qual é a diferença entre todas as bibliotecas seriais de software? Qual é o Arduino Nano compatível?

11

Existem tantas bibliotecas seriais de software, quais são as diferenças entre elas? E qual eu posso usar com o meu Arduino Nano? Para o meu Arduino Nano, preciso de uma porta serial de hardware e uma porta serial de software a uma taxa de transmissão de 115200.

Em quais pinos do Arduino Nano posso usar a biblioteca serial do software?

William Roy
fonte
Estou usando o neoswserial com um teclado I2C, mas quando adiciono key=getKey();meu GSM (usando os pinos 2 e 3 do Arduino Uno) não recebe SMS. Ajude-me, por favor.
Nguyễn Trường Hải

Respostas:

16

Esta resposta lista as 4 opções básicas:

  • HardwareSerial, sempre o melhor. Basta usar a Serialvariável predefinida . Em alguns Arduinos, existem portas HardwareSerial extras, chamadas Serial1, Serial2etc. O Nano tem apenas Serial.

  • AltSoftSerial, o melhor das bibliotecas seriais de software. Apenas uma instância é permitida e deve ser usada em um dos pinos de Captura de entrada (pinos 8 e 9 para um Nano).

  • Meu NeoSWSerialé o próximo melhor. Funciona com dois pinos, mas apenas nas taxas de transmissão 9600, 19200 e 38400.

  • SoftwareSerialé a pior escolha. Funciona com dois pinos, mas é muito ineficiente. Desativa interrupções durante todo o tempo em que um personagem está sendo enviado OU recebido, e não pode fazer as duas coisas ao mesmo tempo (ao contrário de todas as outras opções em série). Isso pode interferir em outras partes do seu esboço, em outras comunicações do dispositivo ou em bibliotecas.

Se você pudesse usar uma taxa de transmissão mais lenta, poderia manter as impressões de depuração ativadas Seriale usar um AltSoftSerialou outro NeoSWSerialpara o seu dispositivo.

Mas se você precisar usar o 115200, a única opção confiável é Serial. Embora AltSoftSeriale SoftwareSerialpermitam essa taxa de transmissão, eles podem não enviar / receber dados corretamente.

Nesse caso, sugiro usar Serialo dispositivo 115200. A menos que você esteja usando um ISP, será necessário desconectar o dispositivo para fazer upload de um novo esboço por USB.

Em seguida, use AltSoftSerialou NeoSWSerialpara suas instruções de depuração. Você precisará de um adaptador TTL de série para USB (também conhecido como FTDI) nos pinos selecionados para conectar ao PC. O Serial Monitorou outro programa emulador de terminal lerá a partir dessa porta USB COM.

slash-dev
fonte
O AltSoftSerial é o mesmo em desempenho e características, apenas que o NeoICSerial adiciona a funcionalidade de quê? Eu não entendi completamente github.com/SlashDevin/NeoICSerial
William Roy
2
@ WilliamRoy, NeoICSerialapenas adiciona o attachInterruptmétodo a AltSoftSerial. Você provavelmente não precisa lidar com cada personagem em uma interrupção. Basta usar AltSoftSeriale chamar o available()e, em seguida, read()se um char estiver pronto. Da mesma forma, NeoHWSerialadiciona o mesmo attachInterruptrecurso ao núcleo HardwareSerial. No entanto, NeoSWSerialé uma classe completamente diferente (também possui o attachInterruptrecurso).
Slash-dev #
-2

O software serial emula uma porta serial, diferente de uma porta nativa que possui registro para salvar todos os bits em ordem e eles definem um sinalizador para chamar o loop principal; um serial de software não tem nada disso. A série de software deve receber todos os bits, um por um, para que você leia uma porta digital, aguarde um tempo específico e leia o pino digital novamente. Você deve fazer isso 10 vezes (1 bit de início, 8 bits de dados e 1 bit final). O tempo é muito importante. Para usar uma série de software, você precisa se preocupar mais com o desempenho.

Você pode usar um pino de interrupção digital para o pino RX, para que seja "chamado" na borda inferior (bit inicial) e receba os 8 bits.

rodrigo
fonte
1
Isso nem tenta responder à pergunta original.
Edgar Bonet
1
Sim, isso não tenta responder à questio original porque a comunidade do Arduino não sabe o código Periférico.
Rodrigo