Softwarová sériová knihovna v Arduinu

Softwarova Seriova Knihovna V Arduinu



Platforma Arduino umožňuje lidem vytvářet různé projekty. Arduino je uživatelsky přívětivá platforma s podporou široké škály knihoven, včetně SoftwareSériová knihovna . The SoftwareSériová knihovna umožňuje vytvořit sériový port na libovolném z digitálních pinů na vaší desce Arduino.

V tomto článku se ponoříme hlouběji do knihovny SoftwareSerial a prozkoumáme, jak funguje.







Úvod do SoftwareSerial Library

The SoftwareSériová knihovna je standardní knihovna Arduino, která umožňuje sériovou komunikaci na digitálních pinech jiných než TX a RX. Knihovna umožňuje vytvoření softwarového sériového portu, pomocí kterého lze komunikovat s dalšími zařízeními, jako jsou jiné mikrokontroléry, počítače nebo třeba moduly Bluetooth. Knihovna SoftwareSerial je součástí Arduino IDE a lze ji použít s jakoukoli deskou Arduino.



Poznámka: Obvykle, TX a RX piny se používají pro sériovou komunikaci, ale pomocí této knihovny můžeme umožnit desce Arduino používat jakýkoli z digitálních pinů k nahrazení pinů TX a RX.



Porozumění funkcím knihovny SoftwareSerial

The SoftwareSériová knihovna má několik funkcí, které vám umožňují nastavit a ovládat softwarový sériový port. Zde jsou některé z hlavních funkcí, které byste měli znát:





SoftwareSerial()

Tato funkce vytvoří novou instanci souboru Software Serial třída. Tato funkce má dva argumenty, pin RX a pin TX. Pokud například chcete vytvořit softwarový sériový port na pinech 2 a 3, použijte následující kód:

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



The SoftwareSerial() metoda se používá k vytvoření nové instance a Software Serial objekt. Umožňuje vytvoření více instancí, avšak současně může být aktivní pouze jedna.

Syntax

Syntaxe pro SoftwareSerial() metoda je následující:

Software Serial ( rxPin, txPin, inverzní_logika )

Parametry

Parametry pro SoftwareSerial() jsou

rxPin: Tento parametr určuje pin, který bude použit pro příjem sériových dat.

txPin: Tento parametr určuje pin, který bude použit pro přenos sériových dat.

inverzní_logika: Tento parametr je volitelný a invertuje smysl příchozích bitů. Výchozí hodnota je false, což znamená, že LOW na pinu RX je interpretováno jako 0-bit a HIGH jako 1-bit. Pokud je nastaveno na hodnotu true, LOW na pinu RX bude nyní brát jako 1-bit a HIGH jako 0-bit.

Vrátit se

The SoftwareSerial() nic nevrací.

Funkce knihovny Arduino SoftwareSerial().

Arduino SoftwareSerial() má seznam funkcí pro sériovou komunikaci mezi zařízeními. Některé z hlavních funkcí jsou diskutovány zde:

začít()

The začít() funkce inicializuje softwarový sériový port s přenosovou rychlostí. Přenosová rychlost je rychlost přenosu dat přes sériový port. Chcete-li například nastavit 9600 jako přenosovou rychlost pro sériovou komunikaci, použijte následující kód:

mySerial.begin ( 9600 ) ;

dostupný()

The k dispozici() f unction vrací bajty dostupné pro čtení na softwarovém sériovém portu. Chcete-li například zkontrolovat, zda jsou k dispozici nějaká data ke čtení, použijte následující kód:

-li ( mySerial.k dispozici ( ) > 0 ) {
// číst vstupní data
char incomingByte = mySerial.read ( ) ;
}

číst()

The číst() funkce čte další bajt dat ze sériového portu softwaru. Chcete-li například přečíst bajt dat a vytisknout je na sériový monitor, použijte následující kód:

char incomingByte = mySerial.read ( ) ;
Serial.println ( příchozíByte ) ;

napsat()

The napsat() funkce zapíše bajt dat na sériový port softwaru. Například poslat dopis 'A' přes sériový port softwaru byste použili následující kód:

mySerial.write ( 'A' ) ;

Příklad kódu knihovny Arduino SoftwareSerial().

Nyní budeme komunikovat mezi dvěma deskami Arduino přes sériovou komunikaci pomocí této knihovny. Vezměte dvě desky Arduino a připojte je, jak je znázorněno na obrázku níže.

Připojit D2 desky Master Arduino s D3 desky Slave Arduino, připojte obdobně D3 Master Arduino s D2 Slave Arduino.

Poznámka: Pro sériovou komunikaci, TX kolík je vždy připojen k RX pin protějšího Arduina a RX pin Master je vždy připojen k TX pin druhého Arduina.

Následuje hardware obou desek Arduino.

Zde je příklad kódu Arduino, který ukazuje, jak používat SoftwareSériová knihovna k navázání komunikace mezi dvěma deskami Arduino:

Kód desky odesílatele

Níže uvedený kód je pro odesílatele Arduino, který zapíše řetězec na desku Arduino přijímače.

#include

// Nastavit softwarový sériový objekt
SoftwareSerial mySerial ( 2 , 3 ) ;

neplatné nastavení ( ) {
// Spusťte sériovou komunikaci
Serial.begin ( 9600 ) ;
zatímco ( ! Seriál ) {
; // Počkejte pro sériový port pro připojení
}

// Spusťte softwarovou sériovou komunikaci
mySerial.begin ( 9600 ) ;
}

prázdná smyčka ( ) {
// Odešlete zprávu přes sériové připojení softwaru
mySerial.println ( 'Dobrý den, přijímač!' ) ;
zpoždění ( 1000 ) ;
}

Kód desky přijímače

Níže uvedený kód je pro desku přijímače. Pomocí tohoto kódu bude Arduino přijímat řetězec z jiné desky prostřednictvím sériové komunikace mezi dvěma deskami Arduino.

#include

// Nastavit softwarový sériový objekt
SoftwareSerial mySerial ( 2 , 3 ) ;

neplatné nastavení ( ) {
// Spusťte sériovou komunikaci
Serial.begin ( 9600 ) ;
zatímco ( ! Seriál ) {
; // Počkejte pro sériový port pro připojení
}

// Spusťte softwarovou sériovou komunikaci
mySerial.begin ( 9600 ) ;
}

prázdná smyčka ( ) {
// Šek -li data jsou k dispozici na sériovém připojení softwaru
-li ( mySerial.k dispozici ( ) ) {
// Přečtěte si data a vytiskněte je na sériový monitor
Serial.println ( mySerial.readString ( ) ) ;
}
}

V tomto příkladu nejprve zahrneme SoftwareSériová knihovna na začátku kódu. Poté vytvoříme a Software Serial objekt s názvem „ mySerial s kolíky 2 a 3 specifikovanými jako kolíky RX a TX.

V založit() spouštíme hardwarovou sériovou i softwarovou sériovou komunikaci s přenosovou rychlostí 9600 smyčka() funkce desky odesílatele odešleme zprávu přes softwarové sériové připojení pomocí metody mySerial.println() a před odesláním další zprávy počkáme sekundu.

Ve funkci loop() na desce přijímače kód zkontroluje dostupnost sériových dat při použití sériového připojení softwaru mySerial.available() metoda. Pokud jsou k dispozici data, načteme je pomocí metody mySerial.readString() a vytiskneme je na sériový monitor pomocí metody Serial.println().

Omezení knihovny SoftwareSerial().

The SoftwareSériová knihovna má několik různých výhod, ale má také určitá omezení, kterých by si uživatelé měli být vědomi. Tato omezení zahrnují

  • Neschopnost současně vysílat a přijímat data.
  • Při použití více softwarových sériových portů může pouze jeden port přijímat data najednou.
  • Softwarové sériové porty vytvořené pomocí této knihovny pracují s nižší přenosovou rychlostí a nejsou tak spolehlivé jako hardwarové sériové porty.
  • Některé piny na deskách Mega a Mega 2560 nepodporují přerušení změn pro RX, což omezuje, které piny lze použít.
  • Podobně na deskách Leonardo a Micro lze pro RX použít pouze určité piny kvůli nedostatku přerušení změn.
  • Maximální rychlost RX na deskách Arduino nebo Genuino 101 je 57600 bps.
  • RX nefunguje na digitálním pinu 13 desek Arduino nebo Genuino 101.
Deska RX kolíky
Mega a 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 & Mic 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

Závěr

The SoftwareSériová knihovna v Arduinu je užitečný nástroj pro komunikaci se zařízeními používajícími sériové komunikační protokoly. Umožňuje vývojářům vytvářet softwarové sériové porty, které lze použít ve spojení s hardwarovými sériovými porty. Tato knihovna má určitá omezení, protože neumožňuje simultánní přenos dat. Pro více podrobností si přečtěte článek výše.