Softwareerialbibliothek in Arduino

Softwareerialbibliothek in Arduino

Mit der Arduino -Plattform können Menschen verschiedene Projekte erstellen. Arduino ist eine benutzerfreundliche Plattform mit Unterstützung für eine Vielzahl von Bibliotheken, einschließlich der Softwareerialbibliothek. Der Softwareerialbibliothek Ermöglicht Ihnen, einen seriellen Port auf einem der digitalen Stifte auf Ihrem Arduino -Board zu erstellen.

In diesem Artikel werden wir tiefer in die Softwareerialbibliothek eintauchen und untersuchen, wie sie funktioniert.

Einführung in die Softwareerialbibliothek

Der Softwareerialbibliothek ist eine Standard -Arduino -Bibliothek, die eine serielle Kommunikation auf anderen digitalen Stiften als TX und RX ermöglicht. Die Bibliothek ermöglicht die Erstellung eines seriellen Software -Ports, mit dem Sie mit anderen Geräten wie anderen Mikrocontrollern, Computern oder sogar Bluetooth -Modulen kommunizieren können. Die Softwareerialbibliothek ist in der Arduino -IDE enthalten und kann mit jedem Arduino -Board verwendet werden.

Notiz: Allgemein, Tx Und Rx Pins werden für die serielle Kommunikation verwendet, aber mit dieser Bibliothek können wir der Arduino -Karte ermöglichen, die digitalen Stifte zu verwenden, um die TX- und RX -Stifte zu ersetzen.

Verständnis der Softwareerial -Bibliotheksfunktionen

Der Softwareerialbibliothek Sie haben mehrere Funktionen, mit denen Sie den seriellen Software -Port einrichten und steuern können. Hier sind einige der Hauptfunktionen, die Sie kennen sollten:

Softwareerial ()

Diese Funktion erstellt eine neue Instanz der Softwareerial Klasse. Diese Funktion hat zwei Argumente, den RX -Pin und den TX -Pin. Wenn Sie beispielsweise einen seriellen Software -Port auf Pins 2 und 3 erstellen möchten, verwenden Sie den folgenden Code:

SoftWareserial MySerial (2, 3); // rx, tx

Der Softwareerial () Methode wird verwendet, um eine neue Instanz von a zu erstellen Softwareerial Objekt. Es ermöglicht die Erstellung mehrerer Instanzen. Zu einem Zeitpunkt kann jedoch nur einer aktiv sein.

Syntax

Die Syntax für die Softwareerial () Methode ist wie folgt:

SoftWareserial (Rxpin, Txpin, Inverse_logic)

Parameter

Die Parameter für die Softwareerial () Sind

rxpin: Dieser Parameter gibt den PIN an, der zum Empfangen von seriellen Daten verwendet wird.

txpin: Dieser Parameter gibt den Pin an, mit dem serielle Daten übertragen werden sollen.

Inverse_logic: Dieser Parameter ist optional und kehrt eingehende Bits Sinn um. Der Standardwert ist falsch, was bedeutet, dass ein niedriger RX-Pin als 0-Bit und ein Hoch als 1-Bit interpretiert wird. Wenn es auf True gesetzt ist, dauert der niedrige RX-Pin nun 1-Bit und hoch wie 0-Bit.

Zurückkehren

Der Softwareerial () Gibt nichts zurück.

Arduino Softwareserial () Bibliotheksfunktionen

Arduino Softwareerial () hat eine Liste von Funktionen für die serielle Kommunikation zwischen Geräten. Einige der Hauptfunktionen werden hier besprochen:

  • Start()
  • verfügbar()
  • lesen()
  • schreiben()

Start()

Der Start() Die Funktion initialisiert den seriellen Software -Port mit einer Baudrate. Die Baudrate ist die Datenübertragungsgeschwindigkeit über den seriellen Anschluss. Um 9600 als Baud -Rate für die serielle Kommunikation festzulegen, verwenden Sie den folgenden Code:

MySerial.Beginnen Sie (9600);

verfügbar()

Der Verfügbar () fDie ONTICT gibt Bytes zurück, die für das Lesen am seriellen Software -Port verfügbar sind. Um beispielsweise zu überprüfen, ob Daten zur Verfügung stehen, würden Sie den folgenden Code verwenden:

if (myserial.Verfügbar ()> 0)
// Eingabedaten lesen
char Incomingbyte = myserial.lesen();

lesen()

Der lesen() Funktion liest das nächste Datenbyte aus dem seriellen Software -Port. Um beispielsweise ein Datenbyte zu lesen und auf den seriellen Monitor auszudrucken, verwenden Sie den folgenden Code:

char Incomingbyte = myserial.lesen();
Serie.println (IncomingByte);

schreiben()

Der schreiben() Funktion schreibt ein Daten Byte an den seriellen Software -Port. Zum Beispiel zum Senden des Briefes "A" Über den seriellen Software -Port verwenden Sie den folgenden Code:

MySerial.Schreib ein');

Arduino Softwareserial () Bibliotheksbeispielcode

Jetzt werden wir mit dieser Bibliothek zwischen zwei Arduino -Boards über die serielle Kommunikation kommunizieren. Nehmen Sie zwei Arduino -Boards und verbinden Sie sie wie im Bild unten gezeigt.

Verbinden D2 des Meisters Arduino Board mit D3 des Sklaven -Arduino -Boards verbinden sich ähnlich D3 von Meister Arduino mit D2 des Sklaven Arduino.

Notiz: Für die serielle Kommunikation die Tx Pin ist immer mit dem verbunden Rx Stift des gegenüberliegenden Arduino und der Rx Pin des Meisters ist immer mit dem verbunden Tx Anstecknadel des anderen Arduino.

Im Folgenden finden Sie die Hardware beider Arduino -Boards.

Hier ist ein Beispiel Arduino -Code, der zeigt, wie die Verwendung der verwendet wird Softwareerialbibliothek Kommunikation zwischen zwei Arduino -Boards festlegen:

Absender -Board -Code

Der folgende Code ist für den Absender Arduino, der eine Zeichenfolge an den Empfänger Arduino Board schreibt.

#enthalten
// Software -Serienobjekt einrichten
SoftWareserial MySerial (2, 3);
void setup ()
// Starten Sie die serielle Kommunikation
Serie.Beginnen Sie (9600);
während (!Serie)
; // Warten Sie, bis der serielle Anschluss eine Verbindung herstellt

// Starten Sie die serielle Software -Kommunikation
MySerial.Beginnen Sie (9600);

void Loop ()
// Senden Sie eine Nachricht über die serielle Softwareverbindung
MySerial.println ("Hallo, Empfängerboard!");
Verzögerung (1000);

Receiver Board Code

Der folgende Code ist für die Empfängerausschreibung vorhanden. Mit diesem Code empfängt Arduino die Zeichenfolge von einer anderen Board über serielle Kommunikation, die zwischen zwei Arduino -Boards festgelegt ist.

#enthalten
// Software -Serienobjekt einrichten
SoftWareserial MySerial (2, 3);
void setup ()
// Starten Sie die serielle Kommunikation
Serie.Beginnen Sie (9600);
während (!Serie)
; // Warten Sie, bis der serielle Anschluss eine Verbindung herstellt

// Starten Sie die serielle Software -Kommunikation
MySerial.Beginnen Sie (9600);

void Loop ()
// Überprüfen Sie, ob Daten in der seriellen Software -Verbindung verfügbar sind
if (myserial.verfügbar())
// Lesen Sie die Daten und drucken Sie sie auf den seriellen Monitor aus
Serie.println (myserial.ReadString ());

In diesem Beispiel schließen wir zuerst die ein Softwareerialbibliothek zu Beginn des Code. Dann erstellen wir eine Softwareerial Objekt namens “MySerial”Mit Stiften 2 und 3 als RX- bzw. TX -Stifte angegeben.

Im aufstellen() Funktion starten wir sowohl die Seriennerien Hardware als auch die serielle Software -Kommunikation mit einer Baudrate von 9600. Im Schleife() Funktion des Absendungsausschusses senden eine Nachricht über die serielle Softwareverbindung mit MySerial.println () Methode und warten Sie auf eine Sekunde, bevor Sie die nächste Nachricht senden.

In der Funktion der Loop () der Empfängerkarte prüft der Code auf serielle Datenverfügbarkeit in der seriellen Verbindung mit der Softwareverbindung unter Verwendung MySerial.verfügbar() Methode. Wenn Daten verfügbar sind, lesen wir die Daten mit MySerial.ReadString () -Methode und drucken Sie sie mit der seriellen Serienmonitor auf den Serienmonitor.println () Methode.

Einschränkungen der Softwareerial () -Bibliothek

Der Softwareerialbibliothek hat mehrere unterschiedliche Vorteile, hat aber auch einige Einschränkungen, von denen Benutzer sich bewusst sein sollten. Diese Einschränkungen umfassen

  • Unfähigkeit, Daten gleichzeitig zu übertragen und zu empfangen.
  • Bei Verwendung mehrerer serieller Software -Ports kann nur ein Port Daten gleichzeitig empfangen.
  • Die mit dieser Bibliothek erstellten Software-basierten seriellen Ports arbeiten zu niedrigeren Baudraten und sind nicht so zuverlässig wie hardware-basierte serielle Ports.
  • Einige Stifte auf den Mega- und Mega 2560 -Boards unterstützen keine Änderungs -Interrupts für RX und begrenzen, welche Stifte verwendet werden können.
  • In ähnlicher Weise können auf den Leonardo- und Micro -Boards aufgrund mangelnder Veränderungsstörungen nur bestimmte Stifte für RX verwendet werden.
  • Die maximale RX -Geschwindigkeit auf Arduino oder Genuino 101 Boards beträgt 57600 BPS.
  • RX funktioniert nicht auf Digital Pin 13 von Arduino oder Genuino 101 Boards.
Planke RX -Stifte
Mega & 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 & Micro 8, 9, 10, 11, 14 (Miso), 15 (SCK), 16 (Mosi).

Abschluss

Der Softwareerialbibliothek In Arduino ist ein nützliches Instrument zur Kommunikation mit Geräten mit seriellen Kommunikationsprotokollen. Es ermöglicht Entwicklern, softwarebasierte serielle Ports zu erstellen, die in Verbindung mit hardware-basierten seriellen Ports verwendet werden können. Diese Bibliothek hat einige Einschränkungen, da sie keine gleichzeitige Datenübertragung zulässt. Weitere Informationen finden Sie im obigen Artikel.