SoftwareSerial Library w Arduino

Softwareserial Library W Arduino



Platforma Arduino umożliwia ludziom tworzenie różnych projektów. Arduino to przyjazna dla użytkownika platforma z obsługą szerokiej gamy bibliotek, w tym Biblioteka SoftwareSerial . The Biblioteka SoftwareSerial pozwala na utworzenie portu szeregowego na dowolnym styku cyfrowym na płycie Arduino.

W tym artykule zagłębimy się w bibliotekę SoftwareSerial i zbadamy, jak to działa.







Wprowadzenie do biblioteki SoftwareSerial

The Biblioteka SoftwareSerial to standardowa biblioteka Arduino, która umożliwia komunikację szeregową na pinach cyfrowych innych niż TX i RX. Biblioteka umożliwia stworzenie programowego portu szeregowego, za pomocą którego można komunikować się z innymi urządzeniami, takimi jak inne mikrokontrolery, komputery, a nawet moduły Bluetooth. Biblioteka SoftwareSerial jest dołączona do Arduino IDE i może być używana z dowolną płytą Arduino.



Notatka: Ogólnie, TX I RX piny są używane do komunikacji szeregowej, ale za pomocą tej biblioteki możemy umożliwić płytce Arduino użycie dowolnych pinów cyfrowych w celu zastąpienia pinów TX i RX.



Zrozumienie funkcji biblioteki SoftwareSerial

The Biblioteka SoftwareSerial ma kilka funkcji, które umożliwiają skonfigurowanie i sterowanie portem szeregowym oprogramowania. Oto niektóre z głównych funkcji, które powinieneś znać:





OprogramowanieSerial()

Ta funkcja tworzy nową instancję pliku OprogramowanieSerial klasa. Ta funkcja ma dwa argumenty, pin RX i pin TX. Na przykład, jeśli chcesz utworzyć programowy port szeregowy na pinach 2 i 3, użyjesz następującego kodu:

SoftwareSerial mySerial ( 2 , 3 ) ; // RX, Teksas



The OprogramowanieSerial() Metoda służy do tworzenia nowej instancji a OprogramowanieSerial obiekt. Pozwala na tworzenie wielu instancji, jednak w danym momencie tylko jedna może być aktywna.

Składnia

Składnia dla OprogramowanieSerial() metoda jest następująca:

OprogramowanieSerial ( rxPin, txPin, odwrócona_logika )

Parametry

Parametry dot OprogramowanieSerial() Czy

rxPin: Ten parametr określa pin, który będzie używany do odbierania danych szeregowych.

txPin: Ten parametr określa pin, który będzie używany do przesyłania danych szeregowych.

odwrotna_logika: Ten parametr jest opcjonalny i odwraca sens nadchodzących bitów. Domyślną wartością jest fałsz, co oznacza, że ​​stan NISKI na pinie RX jest interpretowany jako bit 0, a stan WYSOKI jako 1-bitowy. Jeśli ustawione na true, stan NISKI na pinie RX będzie teraz przyjmował wartość 1-bitową, a stan WYSOKI jako wartość 0-bitową.

Powrót

The OprogramowanieSerial() nic nie zwraca.

Oprogramowanie ArduinoSerial() Funkcje biblioteki

Arduino OprogramowanieSerial() zawiera listę funkcji komunikacji szeregowej pomiędzy urządzeniami. Niektóre z głównych funkcji są omówione tutaj:

zaczynać()

The zaczynać() funkcja inicjuje port szeregowy oprogramowania z szybkością transmisji. Szybkość transmisji to prędkość transmisji danych przez port szeregowy. Na przykład, aby ustawić 9600 jako szybkość transmisji dla komunikacji szeregowej, należy użyć następującego kodu:

mySerial.begin ( 9600 ) ;

dostępny()

The dostępny() f unction zwraca bajty dostępne do odczytu na porcie szeregowym oprogramowania. Na przykład, aby sprawdzić, czy są dostępne dane do odczytu, użyjesz następującego kodu:

Jeśli ( mójSerial.available ( ) > 0 ) {
// Czytać dane wejściowe
char incomingByte = mySerial.read ( ) ;
}

Czytać()

The Czytać() funkcja odczytuje kolejny bajt danych z portu szeregowego oprogramowania. Na przykład, aby odczytać bajt danych i wydrukować go na monitorze szeregowym, należy użyć następującego kodu:

char incomingByte = mySerial.read ( ) ;
Serial.println ( przychodzący bajt ) ;

pisać()

The pisać() funkcja zapisuje bajt danych do portu szeregowego oprogramowania. Na przykład, aby wysłać list 'A' przez port szeregowy oprogramowania, użyjesz następującego kodu:

mójSerial.write ( 'A' ) ;

Przykładowy kod biblioteki Arduino SoftwareSerial().

Teraz będziemy komunikować się między dwiema płytami Arduino przez komunikację szeregową za pomocą tej biblioteki. Weź dwie płytki Arduino i połącz je, jak pokazano na poniższym obrazku.

Łączyć D2 płyty Master Arduino z D3 płytki Slave Arduino, podobnie podłącz D3 Master Arduino z D2 podrzędnego Arduino.

Notatka: Do komunikacji szeregowej, TX pin jest zawsze podłączony do RX pin przeciwnego Arduino i RX pin Master jest zawsze podłączony do TX pin drugiego Arduino.

Poniżej znajduje się sprzęt obu płyt Arduino.

Oto przykładowy kod Arduino, który pokazuje, jak używać Biblioteka SoftwareSerial aby nawiązać komunikację między dwiema płytami Arduino:

Kod tablicy nadawcy

Poniższy kod dotyczy nadawcy Arduino, który zapisze ciąg znaków na płycie Arduino odbiornika.

#include

// Skonfiguruj programowy obiekt szeregowy
SoftwareSerial mySerial ( 2 , 3 ) ;

unieważnić konfigurację ( ) {
// Rozpocznij komunikację szeregową
Serial.początek ( 9600 ) ;
chwila ( ! Seryjny ) {
; // Czekać Do port szeregowy do podłączenia
}

// Uruchom programową komunikację szeregową
mySerial.begin ( 9600 ) ;
}

pusta pętla ( ) {
// Wyślij wiadomość przez programowe połączenie szeregowe
mySerial.println ( 'Witaj, tablica odbiorcza!' ) ;
opóźnienie ( 1000 ) ;
}

Kod tablicy odbiorczej

Poniższy kod dotyczy płyty odbiornika. Korzystając z tego kodu, Arduino otrzyma ciąg z innej płyty przez komunikację szeregową ustanowioną między dwiema płytami Arduino.

#include

// Skonfiguruj programowy obiekt szeregowy
SoftwareSerial mySerial ( 2 , 3 ) ;

unieważnić konfigurację ( ) {
// Rozpocznij komunikację szeregową
Serial.początek ( 9600 ) ;
chwila ( ! Seryjny ) {
; // Czekać Do port szeregowy do podłączenia
}

// Uruchom programową komunikację szeregową
mySerial.begin ( 9600 ) ;
}

pusta pętla ( ) {
// Sprawdzać Jeśli dane są dostępne w programowym połączeniu szeregowym
Jeśli ( mójSerial.available ( ) ) {
// Odczytaj dane i wydrukuj je na monitorze szeregowym
Serial.println ( mySerial.readString ( ) ) ;
}
}

W tym przykładzie najpierw uwzględniamy Biblioteka SoftwareSerial na początku kodu. Następnie tworzymy a OprogramowanieSerial obiekt o nazwie „ mójSerial ” ze stykami 2 i 3 określonymi odpowiednio jako styki RX i TX.

w organizować coś() uruchamiamy zarówno sprzętową, jak i programową komunikację szeregową z szybkością 9600 bodów pętla() funkcji tablicy nadawczej, wysyłamy wiadomość przez programowe połączenie szeregowe za pomocą metody mySerial.println() i czekamy sekundę przed wysłaniem następnej wiadomości.

W funkcji loop() na płycie odbiornika kod sprawdzi dostępność danych szeregowych w oprogramowaniu do połączenia szeregowego mySerial.available() metoda. Jeśli dane są dostępne, odczytujemy je metodą mySerial.readString() i drukujemy na monitorze szeregowym metodą Serial.println().

Ograniczenia biblioteki SoftwareSerial().

The Biblioteka SoftwareSerial ma kilka różnych zalet, ale ma też pewne ograniczenia, o których użytkownicy powinni wiedzieć. Ograniczenia te obejmują

  • Niemożność jednoczesnego przesyłania i odbierania danych.
  • W przypadku korzystania z wielu portów szeregowych oprogramowania tylko jeden port może jednocześnie odbierać dane.
  • Oparte na oprogramowaniu porty szeregowe utworzone przy użyciu tej biblioteki działają z mniejszą szybkością transmisji i nie są tak niezawodne, jak porty szeregowe oparte na sprzęcie.
  • Niektóre piny na płytach Mega i Mega 2560 nie obsługują przerwań zmiany dla RX, ograniczając liczbę pinów, które mogą być użyte.
  • Podobnie na płytkach Leonardo i Micro tylko niektóre piny mogą być używane do RX ze względu na brak przerwań zmian.
  • Maksymalna prędkość RX na płytach Arduino lub Genuino 101 wynosi 57600 bps.
  • RX nie działa na cyfrowym pinie 13 płytek Arduino lub Genuino 101.
Tablica Piny RX
Mega i Mega 2560 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).

Leonardo i mikrofon 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

Wniosek

The Biblioteka SoftwareSerial w Arduino jest przydatnym narzędziem do komunikacji z urządzeniami za pomocą protokołów komunikacji szeregowej. Umożliwia programistom tworzenie portów szeregowych opartych na oprogramowaniu, które mogą być używane w połączeniu ze sprzętowymi portami szeregowymi. Ta biblioteka ma pewne ograniczenia, ponieważ nie pozwala na jednoczesny transfer danych. Aby uzyskać więcej informacji, przeczytaj artykuł powyżej.