- Erforderliche Komponenten
- Schaltplan
- Serielle Kommunikation über das MATLAB-Befehlsfenster
- Serielle Kommunikation über die MATLAB-Benutzeroberfläche
MATLAB ist eine vielseitige Software, die für eine Vielzahl von Anwendungen verwendet werden kann. In früheren Tutorials von MATLAB haben wir erklärt, wie MATLAB zur Steuerung von Gleichstrommotoren, Servomotoren und Haushaltsgeräten verwendet wird. Hier in diesem Tutorial erfahren Sie, wie Sie MATLAB für die serielle Kommunikation verwenden. Für den Empfang der seriellen Kommunikation verwenden wir hier Arduino.
Es gibt zwei Möglichkeiten, die serielle Kommunikation zwischen MATLAB und Arduino einzurichten: Die eine verwendet das Befehlsfenster und die andere die MATLAB-GUI. Der Arduino-Code für beide Methoden bleibt gleich. Wenn Sie mit MATLAB noch nicht vertraut sind, wird empfohlen, mit MATLAB mit einem einfachen LED-Blinkprogramm zu beginnen und die in MATLAB verwendete grundlegende Terminologie zu erlernen.
Erforderliche Komponenten
- MATLAB installierter Laptop (Voreinstellung: R2016a oder höhere Versionen)
- Arduino UNO
- LED (beliebige Farbe)
- Widerstand (330 Ohm)
Schaltplan
Der obige Schaltplan bleibt für beide Möglichkeiten zum Herstellen einer seriellen Kommunikation zwischen MATLAB und Arduino gleich.
Serielle Kommunikation über das MATLAB-Befehlsfenster
Dies ist die einfache Methode zum Einrichten der seriellen Kommunikation zwischen Arduino und MATLAB. Hier senden wir einfach die Daten von MATLAB seriell über das Befehlsfenster an das Arduino und dann liest Arduino die eingehenden seriellen Daten. Diese seriell übertragenen Daten können dann verwendet werden, um alles zu steuern, was mit dem Arduino verbunden ist. Hier haben wir eine LED an Arduino angeschlossen, die gemäß den vom Arduino seriell empfangenen Daten ein- und ausgeschaltet wird.
Laden Sie zuerst den angegebenen Arduino-Code in die Arduino UNO hoch und beginnen Sie dann mit der Codierung im MATLAB-Editor-Fenster. Um ein neues Editor-Skript zu öffnen, klicken Sie auf " Neues Skript" (siehe Abbildung unten):
Kopieren Sie anschließend den folgenden vollständigen MATLAB-Code und fügen Sie ihn in das Editorfenster für die serielle Kommunikation zwischen MATLAB und Arduino ein.
% MATLAB-Code für die serielle Kommunikation zwischen Arduino und MATLAB x = seriell ('COM18', 'BAUD', 9600); fopen (x); go = true; while go a = Eingang ('Drücken Sie 1, um die LED einzuschalten, und 0, um sie auszuschalten:'); fprintf (x, a); if (a == 2) go = false; Ende Ende
Im angegebenen Code wird der folgende Befehl zum Definieren der seriellen Kommunikation in MATLAB verwendet. Stellen Sie sicher, dass die COM-Port-Nummer die Portnummer ist, an die Arduino angeschlossen ist, und dass die Baudrate in den Codes von Arduino und MATLAB gleich eingestellt sein sollte.
x = seriell ('COM18', 'BAUD', 9600);
Verwenden Sie den folgenden Befehl, um die serielle Schnittstelle zu öffnen:
fopen (x);
Der folgende Befehl wird verwendet, um Daten von MATLAB seriell an Arduino zu senden, wobei x für den seriellen Aufruf und a für den vom Benutzer eingegebenen Wert steht.
fprintf (x, a);
Wir haben die while- Funktion zum Erstellen einer Endlosschleife und wenn der Benutzer die Zahl '2' eingibt, wird die Schleife unterbrochen.
while go a = Eingang ('Drücken Sie 1, um die LED einzuschalten, und 0, um sie auszuschalten:'); fprintf (x, a); if (a == 2) go = false; Ende Ende
Nachdem Sie das MATLAB-Editor-Skript codiert haben, klicken Sie auf ' RUN ', um Ihr Programm wie in der Abbildung unten gezeigt auszuführen.
MATLAB benötigt einige Sekunden, um den Code zu verarbeiten und die serielle Kommunikation zu starten. Warten Sie, bis MATLAB in der unteren linken Ecke des Softwarebildschirms die Meldung 'BUSY' anzeigt (siehe Abbildung unten).
Nun sehen Sie das Befehlsfenster zum Senden der Benutzereingaben. Wir haben die Standardnachricht festgelegt.
'Drücken Sie 1, um die LED einzuschalten, und 0, um sie auszuschalten:'
Senden Sie '1', um die LED einzuschalten, '0', um die LED auszuschalten, und '2', um den Vorgang zu unterbrechen. Sie können für jede Aufgabe eine beliebige Nummer festlegen. Sie müssen lediglich den Arduino-Code entsprechend ändern. Der vollständige Arduino-Code wird am Ende angegeben.
Sie können das folgende Video ansehen, um den gesamten Prozess des Sendens serieller Daten von MATLAB an Arduino mithilfe des Befehlsfensters zu verstehen.
Serielle Kommunikation über die MATLAB-Benutzeroberfläche
Um die serielle Kommunikation mithilfe der MATLAB-Benutzeroberfläche zu demonstrieren, erstellen wir mit MATLAB zwei grafische Schaltflächen zum Ein- und Ausschalten der mit dem Arduino verbundenen LED. Daten werden seriell von MATLAB an Arduino gesendet, wenn Sie auf diese Schaltflächen klicken, um die LED ein- und auszuschalten. Arduino enthält den Code zum Empfangen serieller Daten von MATLAB und zum Steuern der LED gemäß den empfangenen seriellen Daten. Der Arduino-Code bleibt derselbe wie der vorherige. Der einzige Unterschied besteht darin, dass wir zuvor die seriellen Daten '1' und '0' über das Befehlsfenster von MATLAB gesendet haben und jetzt dieselben Daten beim Klicken auf zwei grafische Schaltflächen gesendet werden.
Geben Sie zum Starten der GUI den folgenden Befehl in das Befehlsfenster ein
leiten
Ein Popup-Fenster wird geöffnet. Wählen Sie dann eine neue leere Benutzeroberfläche aus (siehe Abbildung unten).
Nun wählen Sie zwei Tasten für Ein- und Ausschalten der LED, wie unten gezeigt,
Um die Größe der Schaltflächen zu ändern oder ihre Form zu ändern, klicken Sie einfach darauf und Sie können die Ecken der Schaltfläche ziehen. Durch Doppelklicken auf die Drucktaste können Sie die Farbe, die Zeichenfolge und das Tag dieser bestimmten Schaltfläche ändern. Wir haben zwei Schaltflächen angepasst, wie im folgenden Bild gezeigt.
Sie können die Schaltflächen nach Ihren Wünschen anpassen. Wenn Sie dies speichern, wird im Editorfenster von MATLAB ein Code generiert. Bearbeiten Sie diesen Code entsprechend der Aufgabe, die Ihr Arduino über die MATLAB-GUI ausführen möchte. Also haben wir unten den MATLAB-Code bearbeitet. Weitere Informationen zum Befehlsfenster, zum Editorfenster usw. finden Sie im Tutorial Erste Schritte mit MATLAB.
Der vollständige MATLAB-Code zum Herstellen der seriellen Kommunikation zwischen MATLAB und Arduino wird am Ende dieses Projekts angegeben. Außerdem stellen wir hier die GUI-Datei (.fig) und die Codedatei (.m) zum Download bereit (klicken Sie mit der rechten Maustaste auf den Link und wählen Sie dann 'Link speichern unter…'), mit der Sie die Schaltflächen gemäß Ihren Anforderungen anpassen können. Im Folgenden finden Sie einige Verbesserungen, die wir zur Steuerung der mit Arduino verbundenen LED vorgenommen haben.
Kopieren Sie den folgenden Code und fügen Sie ihn in Zeile Nr. 74, um die serielle Schnittstelle und die Baudrate einzurichten.
alles löschen; globales x; x = seriell ('COM18', 'BAUD', 9600); % Stellen Sie sicher, dass die Baudrate und der COM-Port % mit denen in Arduino IDE fopen (x) übereinstimmen.
Dabei wird fopen (x) verwendet, um die serielle Schnittstelle für die serielle Kommunikation zu öffnen.
Wenn Sie nach unten scrollen, werden Sie feststellen, dass für beide Schaltflächen in der GUI zwei Funktionen erstellt wurden. Schreiben Sie nun den Code in beide Funktionen entsprechend der Aufgabe, die Sie beim Klicken ausführen möchten.
In LED-ON - Taste der Funktion, zu kopieren und die folgenden Code kurz vor dem Ende der Funktion einfügen, um die LED einzuschalten. Wie Sie im folgenden Code sehen, wird fprintf (x, 1) zum Senden serieller Daten von MATLAB an Arduino serial verwendet. Hier senden wir ‚1‘an dem Arduino seriellen und wenn Sie den Arduino - Code überprüfen, werden Sie feststellen, dass Arduino die LED, indem sie ihr 13 glühen th Stift HOCH, wenn es ‚1‘auf der seriellen Schnittstelle empfängt.
globales x; fprintf (x, 1);
In LED-OFF - Taste der Funktion, zu kopieren und die folgenden Code kurz vor dem Ende der Funktion, um die LED auszuschalten einfügen. Wie Sie im folgenden Code sehen, wird fprintf (x, 0) zum Senden serieller Daten von MATLAB an Arduino serial verwendet. In diesem Teil senden wir ‚0‘an dem Arduino seriellen und wenn Sie den Arduino - Code überprüfen, werden Sie feststellen, dass Arduino die LED erlischt durch seinen 13 macht th Stift LOW, wenn es ‚0‘auf der seriellen Schnittstelle empfängt.
globales x; fprintf (x, 0);
Nachdem Sie die MATLAB-GUI-Codierung abgeschlossen und die Hardware gemäß Schaltplan eingerichtet haben, klicken Sie einfach auf die Schaltfläche Ausführen, um den bearbeiteten Code in der.m-Datei auszuführen.
Es kann einige Sekunden dauern, bis MATLAB reagiert. Klicken Sie nicht auf eine GUI-Schaltfläche, bis MATLAB die BUSY-Anzeige anzeigt, die Sie in der linken unteren Ecke des Bildschirms sehen können (siehe Abbildung unten).
Wenn alles fertig ist, klicken Sie auf die LED-EIN- und LED-AUS-Taste, um die LED ein- und auszuschalten. Wenn Sie die Taste LED-ON - Taste , 13 th Stift von Arduino auf HOCH geht und diese PIN verbunden LED beginnt zu glühen, und wenn Sie drücken LED-OFF - Taste , 13 th Stift von Arduino LOW geht, die die auszuschalten LED macht.
In dem folgenden Video können Sie den gesamten Prozess des Sendens serieller Daten von MATLAB an Arduino mithilfe der MATLAB-Benutzeroberfläche verstehen.