Qual è la differenza tra tutte le librerie seriali software? Quale è compatibile con Arduino Nano?


11

Esistono così tante librerie seriali di software, quali sono le differenze tra loro? E quale posso usare con il mio Arduino Nano? Per il mio Arduino Nano ho bisogno di una porta seriale hardware e una porta seriale software ad una velocità di trasmissione di 115200.

Su quali pin di Arduino Nano è possibile utilizzare la libreria seriale del software?


Sto usando Neoswserial con una tastiera I2C, ma quando aggiungo il key=getKey();mio GSM (usando i pin 2 e 3 Arduino Uno) non ricevo SMS. Aiutami per favore.
Nguyễn Trường Hải,

Risposte:


16

Questa risposta elenca le 4 scelte di base:

  • HardwareSerial, sempre il migliore. Usa semplicemente la Serialvariabile predefinita . Su alcuni Arduino, ci sono i porti HardwareSerial in più, chiamate Serial1, Serial2ecc Il Nano ha solo Serial.

  • AltSoftSerial, la migliore delle librerie seriali di software. È consentita solo un'istanza, che deve essere utilizzata su uno dei pin di Input Capture (pin 8 e 9 per un Nano).

  • Il mio NeoSWSerialè il prossimo migliore. Funziona su due pin qualsiasi, ma solo a baud rate 9600, 19200 e 38400.

  • SoftwareSerialè la scelta peggiore. Funziona su due pin qualsiasi, ma è molto inefficiente. Disabilita gli interrupt per tutto il tempo in cui un personaggio viene inviato O ricevuto, e non può fare entrambi allo stesso tempo (diversamente da tutte le altre scelte seriali). Ciò può interferire con altre parti dello schizzo, altre comunicazioni del dispositivo o con le librerie.

Se è possibile utilizzare una velocità di trasmissione più bassa, è possibile mantenere attive le stampe di debug Seriale utilizzare AltSoftSerialo NeoSWSerialper il dispositivo.

Ma se devi usare 115200, l'unica scelta affidabile è Serial. Sebbene AltSoftSeriale SoftwareSerialconsentano tale baud rate, potrebbero non inviare / ricevere dati correttamente.

In tal caso, suggerirei di utilizzare Serialper il dispositivo 115200. A meno che non si stia utilizzando un ISP, sarà necessario disconnettere il dispositivo per caricare un nuovo schizzo tramite USB.

Quindi utilizzare AltSoftSerialo NeoSWSerialper le dichiarazioni di debug. Per collegarsi al PC è necessario un adattatore TTL da seriale a USB (aka FTDI) sui pin selezionati. L' Serial Monitoraltro programma dell'emulatore di terminale leggerà da quella porta COM USB.


AltSoftSerial è lo stesso in termini di prestazioni e caratteristiche, solo che NeoICSerial aggiunge la funzionalità di cosa? Non ho capito completamente. github.com/SlashDevin/NeoICSerial
William Roy,

2
@WilliamRoy, NeoICSerialaggiunge semplicemente il attachInterruptmetodo a AltSoftSerial. Probabilmente non è necessario gestire ogni personaggio in un interrupt. Basta usare AltSoftSeriale chiamare il available()e quindi read()se un carattere è pronto. Allo stesso modo, NeoHWSerialaggiunge la stessa attachInterruptfunzionalità al core HardwareSerial. Tuttavia, NeoSWSerialè una classe completamente diversa (ha anche la attachInterruptfunzione).
slash-dev,

-2

Il software seriale emula una porta seriale, diversa da una porta nativa che ha un registro per salvare tutti i bit in ordine e imposta un flag per chiamare il ciclo principale, un seriale software non ha nulla di tutto ciò. Il seriale del software deve ricevere tutti i bit, uno per uno, quindi è necessario leggere una porta digitale, attendere un tempo specifico e leggere nuovamente il pin digitale. Devi farlo 10 volte (1 bit di inizio, 8 bit di dati e 1 bit di fine). Il tempo è molto importante. Per utilizzare un seriale software è necessario preoccuparsi maggiormente delle prestazioni.

È possibile utilizzare un pin di interruzione digitale per il pin RX, quindi si viene "chiamati" nel bordo discendente (bit iniziale) e gli 8 bit ricevuti.


1
Questo non tenta nemmeno di rispondere alla domanda originale.
Edgar Bonet,

1
Sì, questo non tenta di rispondere alla questio originale perché la comunità di Arduino non sa fare il tuo codice periferico.
Rodrigo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.