Wie steuere ich Haushaltsgeräte mit MATLAB?
Die Heimautomation-Netzwerktechnologie wurde in den späten 90er Jahren entwickelt und das damals verwendete Kommunikationsprotokoll wurde verwendet X10. Seitdem gewinnt das Konzept der Automatisierung an Popularität und es wurden die neuesten Protokolle erfunden, die für die Kommunikation zwischen elektronischen Geräten verantwortlich sind. Um das Konzept der Automatisierung im Auge zu behalten, überlegte ich mir, warum ich nicht alle Haushaltsgeräte mit der bekanntesten Software namens MATLAB steuern sollte. In diesem Projekt werden wir ein Automatisierungssystem entwerfen und es dann steuern, indem wir einen seriellen Befehl erteilen. Die Software, mit der dieses System betrieben wird, heißt MATLAB. Nach Abschluss dieses Projekts können wir unsere Elektrogeräte steuern, indem wir einfach auf der Couch sitzen oder auf dem Bett liegen.
Wie automatisieren Sie Ihre Haushaltsgeräte mithilfe der MATLAB-Benutzeroberfläche?
Lassen Sie uns nun die Komponenten zusammenfassen, zu einer Schaltung zusammenfügen, eine grafische Benutzeroberfläche (GUI) für MATLAB erstellen und den Code in MATLAB schreiben, um Ihre Haushaltsgeräte zu automatisieren.
Schritt 1: Erforderliche Komponenten (Hardware)
Es ist immer besser, die Komponenten im Detail zu kennen, bevor Sie mit dem Projekt beginnen, um Unannehmlichkeiten in der Mitte des Projekts zu vermeiden. Unten finden Sie eine Liste der Komponenten, die wir verwenden werden:
Hier verwenden wir ein 8-Relais-Modul, da wir nur acht Geräte steuern werden. Wenn Sie eine Reihe von Geräten automatisieren möchten, die Sie haben, können Sie ein anderes Relaismodul verwenden. Es gibt viele Relaismodule auf dem Markt, zum Beispiel Einzel-, 8-Relais-, 12-Relais- usw.
Schritt 2: Erforderliche Komponenten (Software)
Nach dem Anordnen der Hardwarekomponenten suchen wir nach der Software, die im Projekt verwendet wird. Wir werden die neueste Version von MATLAB auf unserem Laptop oder PC installieren, an dem wir arbeiten. Das MATLAB 2019 ist die neueste Software, daher ist es besser, MATLAB 2019 herunterzuladen. Der Link zur offiziellen Website von Mathworks steht unten zum Herunterladen der Software zur Verfügung. Die Hardware-Support-Pakete sind in MATLAB 2019 für 32-Bit-, 64-Bit-Windows- und 64-Bit-Linux verfügbar.
Entwerfen Sie nach dem Herunterladen des Proteus 8 Professional die Schaltung darauf. Ich habe hier Softwaresimulationen eingefügt, damit Anfänger die Schaltung bequem entwerfen und entsprechende Verbindungen auf der Hardware herstellen können.
Schritt 3: Studieren der Komponenten
Jetzt haben wir eine Liste aller Komponenten erstellt, die wir in diesem Projekt verwenden werden. Lassen Sie uns noch einen Schritt weiter gehen und eine kurze Untersuchung aller wichtigen Hardwarekomponenten durchführen.
Arduino UNO:Das Arduino UNO ist eine Mikrocontroller-Karte, die aus einem Mikrochip ATMega 328P besteht und von Arduino.cc entwickelt wurde. Diese Karte verfügt über einen Satz digitaler und analoger Datenpins, die mit anderen Erweiterungskarten oder -schaltungen verbunden werden können. Diese Karte verfügt über 14 digitale Pins, 6 analoge Pins und kann mit der Arduino IDE (Integrated Development Environment) über ein USB-Kabel vom Typ B programmiert werden. Für die Stromversorgung sind 5 V erforderlich AUF und ein C-Codezu bedienen.
12V Relaismodul:Ein Relaismodul ist ein Schaltgerät. Es empfängt ein Signal und schaltet jedes elektronische Gerät oder Gerät entsprechend dem Eingangssignal. Es funktioniert in zwei Modi: Normalerweise geöffnet (NEIN) und Normalerweise geschlossen (NC).Im normalerweise offenen Modus wird der Stromkreis anfangs unterbrochen, wenn das Eingangssignal zum Relais NIEDRIG ist. Im normal geschlossenen Modus ist die Schaltung zunächst abgeschlossen, wenn das Eingangssignal LOW ist.
RS232 zu TTL Serial Port Converter Modul: Dieses Modul wird für die serielle Kommunikation verwendet. Unsere Arduino UNO-Karte verfügt über einen seriellen Kommunikationsanschluss mit der Bezeichnung UART oder USART. Auf der Arduino-Karte befinden sich zwei Pins, die für die serielle Kommunikation TX und RX verantwortlich sind (Pin 0 und Pin 1). Diese beiden Pins sind auch am RS232-Modul vorhanden. Dieses Modul wird mit 5 V Arduino betrieben und wandelt 5 V in 12 V um, um verschiedene Geräte zu betreiben, die mit 12 V betrieben werden. Wir verwenden dieses Modul, da elektronische Geräte nicht mit 5 V betrieben werden.
Schritt 4: Das Arbeitsprinzip verstehen
Nach Abschluss dieses Projekts können wir Appliances fernsteuern, indem wir den Befehl seriell erteilen. Die Arduino-Karte wird für die serielle Kommunikation mit dem RS232 verwendet. Geräte werden an das Relaismodul angeschlossen, und der RS232 wird an die TX- und RX-Pins des Arduino angeschlossen. Wenn ein Druckknopf auf MATLAB gedrückt wird, wird ein serieller Befehl generiert und an die serielle Schnittstelle von RS232 gesendet, die sich wiederum dreht Gerät ein- oder ausschalten. Zuerst wird MATLAB mit der Arduino-Karte verbunden und dann wird die Schaltung auf der Hardware implementiert. Wenn jemand ein Problem mit der Schnittstelle von MATLAB mit Arduino hat, kann er sich auf meinen Artikel mit dem Namen beziehen WIE MAN ARDUINO MIT MATLAB SCHNITTSTELLT? und dann kann er / sie dieses Projekt auf Hardware implementieren. Nachdem Sie dieses Projekt abgeschlossen haben, installieren Sie es an einem geeigneten Ort. Der bevorzugte Ort befindet sich in der Nähe der Steckdose, an der die Verkabelung der Geräte angebracht ist, damit das Relaismodul dort problemlos installiert werden kann.
Schritt 5: Schaltplan
Das Proteus-Schaltbild des Projekts sieht folgendermaßen aus. Schließen Sie die Hardwarekomponenten später gemäß dieser Schaltung an.
Schritt 6: Erste Schritte mit MATLAB
Nachdem Sie die Schaltung auf Proteus entworfen haben, öffnen Sie MATLAB und geben Sie „leiten”Im Befehlsfenster. Ein Dialogfeld wird geöffnet und in diesem Feld wählen Sie Leere GUI. Links wird eine Komponentenpalette angezeigt, in der die Komponenten aufgelistet sind, die Sie in Ihrer GUI platzieren möchten.
Wählen Sie den Druckknopf und platzieren Sie 16 Druckknöpfe auf dem Bedienfeld. Platzieren Sie zuerst die EIN-Taste und dann die AUS-Taste parallel dazu. Die Farben und Namen der Schaltflächen können durch Doppelklicken auf die Drucktasten geändert werden. Nach dem Klicken auf die Drucktasten wird das Inspektorfenster geöffnet und einige Eigenschaften der Schaltfläche können dort geändert werden. Um den Namen der Schaltfläche zu ändern, suchen Sie nach Zeichenfolge Option darauf schreiben.
Ändern Sie nach dem Ändern des Schaltflächennamens die Hintergrundfarbe. ((Hinweis: Dieser Schritt ist optional und kann übersprungen werden, wenn Sie die Hintergrundfarbe nicht ändern möchten.)
Platzieren Sie 16 Drucktasten und nehmen Sie die obigen Änderungen im Inspektorfenster vor. Zur Benennung der Relais die statischer Text Die Option in der linken Leiste wird verwendet. Das endgültige Aussehen meiner GUI ist unten dargestellt:
Nachdem Sie die GUI erstellt haben, öffnen Sie den GUI-Code, der im Backend erstellt wurde, und nehmen Sie einige Änderungen am Code vor, die unter angegeben sind.
Schritt 7: MATLAB-Code der GUI:
Funktion varargout = final (varargin)% FINAL MATLAB-Code für final.fig% FINAL erstellt selbst ein neues FINAL oder löst den vorhandenen% singleton * aus. %% H = FINAL gibt das Handle an ein neues FINAL oder das Handle an% den vorhandenen Singleton * zurück. %% FINAL ('CALLBACK', hObject, eventData, handle, ...) ruft die lokale% -Funktion mit dem Namen CALLBACK in FINAL.M mit den angegebenen Eingabeargumenten auf. %% FINAL ('Eigenschaft', 'Wert', ...) erstellt ein neues FINAL oder erhöht den% vorhandenen Singleton *. Von links beginnend werden Eigenschaftswertpaare% auf die GUI angewendet, bevor final_OpeningFcn aufgerufen wird. Ein% nicht erkannter Eigenschaftsname oder ein ungültiger Wert bewirkt, dass die Eigenschaftsanwendung% gestoppt wird. Alle Eingaben werden über varargin an final_OpeningFcn übergeben. %% * Siehe GUI-Optionen im Menü Extras der GUIDE. Wählen Sie "GUI lässt nur eine% Instanz laufen (Singleton)". %% Siehe auch: GUIDE, GUIDATA, GUIHANDLES% Bearbeiten Sie den obigen Text, um die Antwort zu ändern 1; gui_State = struct ('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @final_OpeningFcn, ... 'gui_OutputFcn', @final_OutputFcn, ... 'gui_LayoutFc'. .. 'gui_Callback', []); wenn nargin && ischar (varargin {1}) gui_State.gui_Callback = str2func (varargin {1}); end if nargout [varargout {1: nargout}] = gui_mainfcn (gui_State, varargin {:}); sonst gui_mainfcn (gui_State, varargin {:}); Ende% Ende Initialisierungscode - NICHT BEARBEITEN% --- Wird ausgeführt, kurz bevor final sichtbar gemacht wird. function final_OpeningFcn(hObject, eventdata, handles, varargin) % Diese Funktion hat keine Ausgabeargumente, siehe OutputFcn. % hObject-Handle, um% eventdata reserviert darzustellen - wird in einer zukünftigen Version von MATLAB definiert.% Handles-Struktur mit Handles und Benutzerdaten (siehe GUIDATA)% varargin-Befehlszeilenargumente bis final (siehe VARARGIN)% Wählen Sie die Standardbefehlszeilenausgabe für die endgültigen Handles .output = hObject; % Update behandelt Strukturrichtlinien (hObject, Handles); % UIWAIT wartet endgültig auf Benutzerantwort (siehe UIRESUME)% uiwait (handle.figure1); % --- Ausgaben dieser Funktion werden an die Befehlszeile zurückgegeben. Funktion varargout = final_OutputFcn (hObject, eventdata, handle)% varargout-Zellenarray für die Rückgabe von Ausgabeargumenten (siehe VARARGOUT); % hObject-Handle zur Abbildung% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert.% Handles-Struktur mit Handles und Benutzerdaten (siehe GUIDATA)% Standard-Befehlszeilenausgabe von Handles-Struktur abrufen varargout {1} = handle.output; alles löschen; global a; a = Arduino; % --- Wird beim Drücken der Taste in Drucktaste1 ausgeführt. Funktion pushbutton1_Callback (hObject, eventdata, handle)% hObject handle to pushbutton1 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D6', 0); % --- Wird beim Drücken der Taste in der Taste 2 ausgeführt. Funktion pushbutton2_Callback (hObject, eventdata, handle)% hObject handle to pushbutton2 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D6', 1); % --- Wird beim Drücken der Taste auf Drucktaste3 ausgeführt. Funktion pushbutton3_Callback (hObject, eventdata, handle)% hObject handle to pushbutton3 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D7', 0); % --- Wird bei Tastendruck auf Drucktaste4 ausgeführt. Funktion pushbutton4_Callback (hObject, eventdata, handle)% hObject handle to pushbutton4 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D7', 1); \% --- Wird beim Drücken der Taste auf Drucktaste5 ausgeführt. Funktion pushbutton5_Callback (hObject, eventdata, handle)% hObject handle to pushbutton5 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D8', 0); % --- Wird beim Drücken der Taste in der Taste6 ausgeführt. Funktion pushbutton6_Callback (hObject, eventdata, handle)% hObject handle to pushbutton6 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D8', 1); % --- Wird beim Drücken der Taste in der Taste 7 ausgeführt. Funktion pushbutton7_Callback (hObject, eventdata, handle)% hObject handle to pushbutton7 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D9', 0); % --- Wird beim Drücken der Taste in der Taste8 ausgeführt. Funktion pushbutton8_Callback (hObject, eventdata, handle)% hObject handle to pushbutton8 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D9', 1); % --- Wird beim Drücken der Taste in der Taste 9 ausgeführt. Funktion pushbutton9_Callback (hObject, eventdata, handle)% hObject handle to pushbutton9 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D10', 0); % --- Wird beim Drücken der Taste in der Taste 10 ausgeführt. Funktion pushbutton10_Callback (hObject, eventdata, handle)% hObject handle to pushbutton10 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D10', 1); % --- Wird beim Drücken der Taste in der Taste 11 ausgeführt. Funktion pushbutton11_Callback (hObject, eventdata, handle)% hObject handle to pushbutton11 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D11', 0); % --- Wird beim Drücken der Taste in der Taste 12 ausgeführt. Funktion pushbutton12_Callback (hObject, eventdata, handle)% hObject handle to pushbutton12 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D11', 1); % --- Wird beim Drücken der Taste in der Taste 13 ausgeführt. Funktion pushbutton13_Callback (hObject, eventdata, handle)% hObject handle to pushbutton13 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D12', 0); % --- Wird beim Drücken der Taste in der Taste 14 ausgeführt. Funktion pushbutton14_Callback (hObject, eventdata, handle)% hObject handle to pushbutton14 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D12', 1); % --- Wird beim Drücken der Taste in der Taste 15 ausgeführt. Funktion pushbutton15_Callback (hObject, eventdata, handle)% hObject handle to pushbutton15 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D13', 0); % --- Wird beim Drücken der Taste in der Taste 16 ausgeführt. Funktion pushbutton16_Callback (hObject, eventdata, handle)% hObject handle to pushbutton16 (siehe GCBO)% eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert% Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) global a; writeDigitalPin (a, 'D13', 1);
Die M-Datei zusammen mit dem GUI-Code kann von hier heruntergeladen werden.
Schritt 8: Code-Erklärung
Wenn wir den MATLAB-GUI-Code erstellen, wird er automatisch im Backend generiert und wir müssen nur einige Änderungen am Code vornehmen. Der Code enthält insgesamt 16 Funktionen. Acht sind zum Wenden AUF Die Relais und acht dienen zum Drehen AUS die Relais. Zunächst haben wir eine globale Variable mit dem Namen erstellt 'ein'wird außerhalb der Funktionen deklariert und dann in jeder Bedingung verwendet, da dies nützlich ist, wenn mehrere Funktionen auf dieselben Daten zugreifen. Dann haben wir geschrieben a = Arduinoim Code, weil wir das Arduino mit MATLAB verbinden. Alle 16 Funktionen, die im Code für Drucktasten vorgesehen sind, wurden geändert, und wir haben "0" zum Ausschalten des Relais und "1" zum Einschalten des Relais in diesen Funktionen geschrieben. Sie müssen diese beiden Zeilen am Ende jeder Funktion hinzufügen und entsprechend ändern:
global a; writeDigitalPin (a, 'D13', 1);
Schritt 9: Zusammenbau der Hardware
Nach dem Schreiben des Codes beginnen wir mit dem Zusammenbau der Hardwarekomponenten. Zunächst müssen wir die Konnektivität des Relaismoduls kennen. Nehmen Sie den positiven Draht des Geräts und schneiden Sie ihn ab. Verbinden Sie ein Ende mit dem NEIN Hafen und das andere Ende zum COM Anschluss des Relaismoduls. Sehen Sie sich das Bild unten an und schließen Sie alle vier Geräte wie gezeigt an das Relaismodul an. Stellen Sie sicher, dass Sie die Schrauben des Relaismoduls festziehen, damit die Verbindung später nicht unterbrochen wird.
Nach dem Verbinden der NO- und COM-Pins der acht Relaismodule mit acht Geräten verbinden wir die OUT-Pins des Moduls. Pin Nr. 6-13 von Arduino werden zum Verbinden der OUT-Pins des Relaismoduls verwendet. Stecken Sie den OUT-Pin von Relais 1 in den Pin 6 von Arduino und stellen Sie dann alle Verbindungen gemäß dem Code her. Verwenden Sie ein Steckbrett, um gemeinsame Verbindungen von Vcc und Masse herzustellen, und stecken Sie dann die Drähte dieser beiden Stifte des Relaismoduls in diese Verbindungen. Nachdem Sie Relaisverbindungen hergestellt haben, verbinden Sie Vcc und Masse des RS232 mit 5 V bzw. Masse des Arduino. Verbinden Sie den Tx-Pin des RS232 mit dem RX-Pin des Arduino und den Rx-Pin des RS232 mit dem Tx-Pin des Arduino. Nehmen Sie den Serial DB9-Steckeradapter und verbinden Sie ihn auf der einen Seite mit dem Serial Port-Konvertermodul und auf der anderen Seite mit dem von Ihnen verwendeten Laptop oder PC.
Das ist es! Wir haben unser Automatisierungsprojekt abgeschlossen und können jetzt unsere Geräte mit MATLAB steuern. Sie müssen nicht aufstehen und die Geräte einschalten, sondern können sie aus der Ferne ein- und ausschalten. Es kann in Privathaushalten sowie in Büros usw. implementiert werden.