Die Arduino-Plattform ermöglicht es Menschen, verschiedene Projekte zu erstellen. Arduino ist eine benutzerfreundliche Plattform mit Unterstützung für eine Vielzahl von Bibliotheken, einschließlich der SoftwareSerial-Bibliothek . Der SoftwareSerial-Bibliothek ermöglicht es Ihnen, einen seriellen Anschluss an einem der digitalen Pins auf Ihrem Arduino-Board zu erstellen.
In diesem Artikel werden wir tiefer in die SoftwareSerial-Bibliothek eintauchen und untersuchen, wie sie funktioniert.
Einführung in die SoftwareSerial Library
Der SoftwareSerial-Bibliothek ist eine Standard-Arduino-Bibliothek, die eine serielle Kommunikation auf anderen digitalen Pins als TX und RX ermöglicht. Die Bibliothek ermöglicht die Erstellung eines seriellen Software-Ports, der zur Kommunikation mit anderen Geräten wie anderen Mikrocontrollern, Computern oder sogar Bluetooth-Modulen verwendet werden kann. Die SoftwareSerial-Bibliothek ist in der Arduino IDE enthalten und kann mit jedem Arduino-Board verwendet werden.
Notiz: Allgemein, Senden Und Empfang Pins werden für die serielle Kommunikation verwendet, aber mit dieser Bibliothek können wir dem Arduino-Board ermöglichen, einen der digitalen Pins zu verwenden, um die TX- und RX-Pins zu ersetzen.
Die Funktionen der SoftwareSerial Library verstehen
Der SoftwareSerial-Bibliothek verfügt über mehrere Funktionen, mit denen Sie die serielle Schnittstelle der Software einrichten und steuern können. Hier sind einige der wichtigsten Funktionen, die Sie kennen sollten:
SoftwareSerial()
Diese Funktion erstellt eine neue Instanz der SoftwareSerial Klasse. Diese Funktion hat zwei Argumente, den RX-Pin und den TX-Pin. Wenn Sie beispielsweise einen seriellen Software-Port an den Pins 2 und 3 erstellen möchten, würden Sie den folgenden Code verwenden:
SoftwareSerial mySerial ( 2 , 3 ) ; // RX, TX
Der SoftwareSerial() -Methode wird verwendet, um eine neue Instanz von a zu erstellen SoftwareSerial Objekt. Es ermöglicht die Erstellung mehrerer Instanzen, jedoch kann jeweils nur eine aktiv sein.
Syntax
Die Syntax für die SoftwareSerial() Methode ist wie folgt:
SoftwareSerial ( rxPin, txPin, inverse_Logik )
Parameter
Die Parameter für die SoftwareSerial() Sind
Empfangspin: Dieser Parameter gibt den Pin an, der zum Empfangen serieller Daten verwendet wird.
txPin: Dieser Parameter gibt den Pin an, der zur Übertragung serieller Daten verwendet wird.
inverse_logik: Dieser Parameter ist optional und invertiert den Sinn eingehender Bits. Der Standardwert ist falsch, was bedeutet, dass ein LOW am RX-Pin als 0-Bit und ein HIGH als 1-Bit interpretiert wird. Wenn auf wahr gesetzt, nimmt LOW am RX-Pin jetzt 1 Bit und HIGH 0 Bit an.
Zurückkehren
Der SoftwareSerial() gibt nichts zurück.
Arduino SoftwareSerial() Bibliotheksfunktionen
Arduino SoftwareSerial() hat eine Liste von Funktionen für die serielle Kommunikation zwischen Geräten. Einige der Hauptfunktionen werden hier besprochen:
Start()
Der Start() Die Funktion initialisiert den seriellen Software-Port mit einer Baudrate. Die Baudrate ist die Datenübertragungsgeschwindigkeit über die serielle Schnittstelle. Um beispielsweise 9600 als Baudrate für die serielle Kommunikation festzulegen, würden Sie den folgenden Code verwenden:
meineSerial.begin ( 9600 ) ;
verfügbar()
Der verfügbar() f Funktion gibt Bytes zurück, die zum Lesen an der seriellen Schnittstelle der Software verfügbar sind. Um beispielsweise zu prüfen, ob Daten zum Lesen verfügbar sind, würden Sie den folgenden Code verwenden:
Wenn ( mySerial.verfügbar ( ) > 0 ) {// lesen Eingabedaten
char eingehendesByte = mySerial.read ( ) ;
}
lesen()
Der lesen() liest das nächste Datenbyte von der seriellen Schnittstelle der Software. Um beispielsweise ein Datenbyte zu lesen und auf dem seriellen Monitor auszugeben, würden Sie den folgenden Code verwenden:
char eingehendesByte = mySerial.read ( ) ;Serial.println ( eingehendesByte ) ;
schreiben()
Der schreiben() Die Funktion schreibt ein Datenbyte an die serielle Schnittstelle der Software. Zum Beispiel, um den Brief zu versenden 'A' über die serielle Schnittstelle der Software würden Sie den folgenden Code verwenden:
mySerial.write ( 'A' ) ;
Beispielcode für die Arduino SoftwareSerial()-Bibliothek
Jetzt werden wir mit dieser Bibliothek zwischen zwei Arduino-Boards über serielle Kommunikation kommunizieren. Nehmen Sie zwei Arduino-Boards und verbinden Sie sie wie im Bild unten gezeigt.
Verbinden D2 des Master-Arduino-Boards mit D3 des Slave-Arduino-Boards ähnlich anschließen D3 von Meister Arduino mit D2 des Sklaven Arduino.
Notiz: Für die serielle Kommunikation ist die Senden Pin ist immer mit dem verbunden Empfang Pin des gegenüberliegenden Arduino und der Empfang Pin des Masters ist immer mit dem verbunden Senden Pin des anderen Arduino.
Es folgt die Hardware beider Arduino-Boards.
Hier ist ein Beispiel-Arduino-Code, der die Verwendung von demonstriert SoftwareSerial-Bibliothek um die Kommunikation zwischen zwei Arduino-Boards herzustellen:
Sender-Board-Code
Der folgende Code ist für das Sender-Arduino, das eine Zeichenfolge an das Empfänger-Arduino-Board schreibt.
#include// Richten Sie das serielle Objekt der Software ein
SoftwareSerial mySerial ( 2 , 3 ) ;
ungültige Einrichtung ( ) {
// Starten Sie die serielle Kommunikation
Serial.begin ( 9600 ) ;
während ( ! Seriell ) {
; // Warten für serielle Schnittstelle zum Verbinden
}
// Starten Sie die serielle Kommunikation der Software
meineSerial.begin ( 9600 ) ;
}
Leere Schleife ( ) {
// Senden Sie eine Nachricht über die serielle Verbindung der Software
mySerial.println ( 'Hallo, Empfängerplatine!' ) ;
Verzögerung ( 1000 ) ;
}
Code der Empfängerplatine
Der folgende Code ist für die Empfängerplatine. Mit diesem Code empfängt Arduino die Zeichenfolge von einem anderen Board über die serielle Kommunikation zwischen zwei Arduino-Boards.
#include// Richten Sie das serielle Objekt der Software ein
SoftwareSerial mySerial ( 2 , 3 ) ;
ungültige Einrichtung ( ) {
// Starten Sie die serielle Kommunikation
Serial.begin ( 9600 ) ;
während ( ! Seriell ) {
; // Warten für serielle Schnittstelle zum Verbinden
}
// Starten Sie die serielle Kommunikation der Software
meineSerial.begin ( 9600 ) ;
}
Leere Schleife ( ) {
// Überprüfen Wenn Daten sind über die serielle Verbindung der Software verfügbar
Wenn ( mySerial.verfügbar ( ) ) {
// Lesen Sie die Daten und drucken Sie sie auf dem seriellen Monitor aus
Serial.println ( mySerial.readString ( ) ) ;
}
}
In diesem Beispiel schließen wir zuerst die ein SoftwareSerial-Bibliothek am Anfang des Codes. Dann erstellen wir eine SoftwareSerial Objekt namens „ meineSerial “, wobei die Pins 2 und 3 als RX- bzw. TX-Pins festgelegt sind.
Im aufstellen() Funktion starten wir sowohl die serielle Hardware- als auch die serielle Software-Kommunikation mit einer Baudrate von 9600. In der Schleife() Funktion der Senderplatine senden wir eine Nachricht über die serielle Verbindung der Software mit der Methode mySerial.println() und warten eine Sekunde, bevor wir die nächste Nachricht senden.
In der Funktion loop() der Empfängerplatine prüft der Code die Verfügbarkeit serieller Daten auf der seriellen Softwareverbindung mit meineSerial.verfügbar() Methode. Wenn Daten verfügbar sind, lesen wir die Daten mit der Methode mySerial.readString() und geben sie mit der Methode Serial.println() auf dem seriellen Monitor aus.
Einschränkungen der SoftwareSerial()-Bibliothek
Der SoftwareSerial-Bibliothek hat verschiedene Vorteile, aber auch einige Einschränkungen, die Benutzer beachten sollten. Zu diesen Einschränkungen gehören
- Unfähigkeit, Daten gleichzeitig zu senden und zu empfangen.
- Bei Verwendung mehrerer serieller Software-Ports kann nur ein Port gleichzeitig Daten empfangen.
- Die mit dieser Bibliothek erstellten softwarebasierten seriellen Ports arbeiten mit niedrigeren Baudraten und sind nicht so zuverlässig wie hardwarebasierte serielle Ports.
- Einige Pins auf den Mega- und Mega 2560-Boards unterstützen keine Change-Interrupts für RX, was die verwendbaren Pins einschränkt.
- Ebenso können auf den Leonardo- und Micro-Boards aufgrund fehlender Change-Interrupts nur bestimmte Pins für RX verwendet werden.
- Die maximale RX-Geschwindigkeit auf Arduino- oder Genuino-101-Boards beträgt 57600 bps.
- RX funktioniert nicht auf dem digitalen Pin 13 von Arduino- oder Genuino 101-Boards.
Planke | RX-Pins |
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 & Mic | 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI). |
Abschluss
Der SoftwareSerial-Bibliothek in Arduino ist ein nützliches Werkzeug für die Kommunikation mit Geräten, die serielle Kommunikationsprotokolle verwenden. Es ermöglicht Entwicklern, softwarebasierte serielle Ports zu erstellen, die in Verbindung mit hardwarebasierten seriellen Ports verwendet werden können. Diese Bibliothek hat einige Einschränkungen, da sie keine gleichzeitige Datenübertragung zulässt. Für weitere Details lesen Sie den Artikel oben.