Jest tak wiele bibliotek szeregowych oprogramowania, jakie są między nimi różnice? I którego mogę używać z moim Arduino Nano? Do mojego Arduino Nano potrzebuję jednego sprzętowego portu szeregowego i jednego programowego portu szeregowego o szybkości transmisji 115200.
Na jakich pinach Arduino Nano mogę korzystać z biblioteki szeregów oprogramowania?
serial
arduino-nano
uart
William Roy
źródło
źródło
key=getKey();
mój GSM (używając pin 2 i 3 Arduino Uno) nie odbiera SMS-ów. Pomóż mi proszę.Odpowiedzi:
Ta odpowiedź zawiera 4 podstawowe opcje:
HardwareSerial
, zawsze najlepsza. Wystarczy użyć wstępnie zdefiniowanejSerial
zmiennej. Na niektórych Arduinos istnieją dodatkowe porty HardwareSerial, zwaneSerial1
,Serial2
itp Nano ma tylkoSerial
.AltSoftSerial
, najlepsza z bibliotek szeregowych oprogramowania. Tylko jedna instancja jest dozwolona i musi być użyta na jednym ze styków przechwytywania danych wejściowych (styki 8 i 9 dla Nano).Mój
NeoSWSerial
jest następny najlepszy. Działa na dowolnych dwóch pinach, ale tylko przy prędkościach transmisji 9600, 19200 i 38400.SoftwareSerial
jest najgorszym wyborem. Działa na dowolnych dwóch pinach, ale jest bardzo nieefektywny. Wyłącza przerwania na cały czas wysyłania znaku LUB odbierania i nie może wykonywać obu jednocześnie (w przeciwieństwie do wszystkich innych opcji szeregowych). Może to zakłócać inne części szkicu, komunikację z innymi urządzeniami lub biblioteki.Jeśli możesz użyć wolniejszej prędkości transmisji, możesz pozostawić włączone wydruki debugowania
Serial
i używać urządzeniaAltSoftSerial
lubNeoSWSerial
urządzenia.Ale jeśli musisz użyć 115200, jedynym niezawodnym wyborem jest
Serial
. ChociażAltSoftSerial
iSoftwareSerial
pozwalają na tę prędkość transmisji, mogą nie wysyłać / odbierać danych poprawnie.W takim przypadku sugerowałbym użycie
Serial
urządzenia 115200. O ile nie korzystasz z usługodawcy internetowego, będziesz musiał odłączyć urządzenie, aby przesłać nowy szkic przez USB.Następnie użyj
AltSoftSerial
lubNeoSWSerial
do swoich instrukcji debugowania. Będziesz potrzebował adaptera szeregowego na USB TTL (inaczej FTDI) na wybranych pinach, aby połączyć się z komputerem.Serial Monitor
Lub inny emulator terminala będzie czytać z tego portu USB COM.źródło
NeoICSerial
po prostu dodajeattachInterrupt
metodę doAltSoftSerial
. Prawdopodobnie nie musisz obsługiwać każdej postaci w przerwie. Wystarczy użyćAltSoftSerial
i zadzwonić,available()
a następnie,read()
jeśli znak jest gotowy. PodobnieNeoHWSerial
dodaje tę samąattachInterrupt
funkcję do rdzeniaHardwareSerial
. JednakNeoSWSerial
jest to zupełnie inna klasa (posiada równieżattachInterrupt
funkcję).Oprogramowanie szeregowe emuluje port szeregowy, inny niż port macierzysty, który ma rejestr, aby zapisać wszystkie bity w kolejności i ustawiają flagę, aby wywoływać główną pętlę, oprogramowanie szeregowe nie ma nic z tego. Oprogramowanie szeregowe musi odbierać wszystkie bity, jeden po drugim, więc musisz odczytać port cyfrowy, odczekać określony czas i ponownie odczytać pin cyfrowy. Musisz zrobić to 10 razy (1 bit początkowy, 8 bitów danych i 1 bit końcowy). Czas jest bardzo ważny. Aby korzystać z oprogramowania szeregowego, musisz martwić się o wydajność.
Do pinu RX można użyć cyfrowego pinu przerywającego, dzięki czemu zostaniesz „wywołany” w dolnej granicy (bit startowy) i otrzymasz 8 bitów.
źródło