Sådan styres husholdningsapparater ved hjælp af MATLAB?
Hjemmeautomatiseringsnetværksteknologien blev udviklet i de senere 90'ere, og den kommunikationsprotokol, der blev brugt på det tidspunkt, var X10. Siden da er begrebet automatisering stadig mere populært, og de nyeste protokoller er opfundet, der er ansvarlige for kommunikation mellem elektroniske enheder. At holde konceptet med automatisering i betragtning Jeg tænkte, hvorfor ikke styre alle husholdningsapparater ved hjælp af den mest berømte software kendt som MATLAB. I dette projekt vil vi designe et automatiseringssystem og derefter kontrollere det ved at give en seriel kommando. Software, der vil blive brugt til at betjene dette system, hedder MATLAB, og efter afslutningen af dette projekt vil vi være i stand til at kontrollere vores elektriske apparater ved bare at sidde i sofaen eller lægge sig på sengen.
Hvordan automatiseres dine husholdningsapparater ved hjælp af MATLAB GUI?
Lad os nu bevæge os mod at samle komponenterne, samle dem for at skabe et kredsløb, lave et MATLAB grafisk brugergrænseflade (GUI) og skrive koden i MATLAB for at automatisere dine husholdningsapparater.
Trin 1: Nødvendige komponenter (hardware)
Det er altid bedre at kende komponenterne detaljeret, inden du starter projektet for at undgå gener i midten af projektet. Nedenfor er listen over komponenter, som vi skal bruge:
Her bruger vi et 8-relæmodul, fordi vi kun styrer otte apparater. Hvis du vil automatisere et antal apparater, du har, kan du bruge et andet relæmodul. Der er mange relæmoduler tilgængelige på markedet, for eksempel enkelt, 8-relæ, 12-relæ osv.
Trin 2: Nødvendige komponenter (software)
Efter at have arrangeret hardwarekomponenterne ser vi efter den software, der vil blive brugt i projektet. Vi installerer den nyeste version af MATLAB på vores bærbare eller pc, som vi arbejder på. MATLAB 2019 er den nyeste software, så det er bedre at downloade MATLAB 2019. Linket til Mathworks officielle hjemmeside er tilgængeligt nedenfor til download af softwaren. Hardware-supportpakkerne er tilgængelige i MATLAB 2019 til 32 bit, 64-bit Windows og 64-bit Linux.
Efter download af Proteus 8 Professional skal du designe kredsløbet på den. Jeg har inkluderet softwaresimuleringer her, så det kan være praktisk for begyndere at designe kredsløbet og foretage passende forbindelser på hardwaren.
Trin 3: Studere komponenterne
Nu da vi har lavet en liste over alle de komponenter, som vi skal bruge i dette projekt. Lad os gå et skridt videre og gennemgå en kort undersøgelse af alle de vigtigste hardwarekomponenter.
Arduino UNO:Det Arduino UNO er et mikrocontrollerkort, der består af et mikrochip ATMega 328P og er udviklet af Arduino.cc. Dette kort har et sæt digitale og analoge datapinde, der kan interfaces med andre udvidelseskort eller kredsløb. Dette kort har 14 digitale stifter, 6 analoge stifter og programmerbare med Arduino IDE (integreret udviklingsmiljø) via et type B USB-kabel. Det kræver 5V til strøm PÅ og en C-kodeat operere.
12V relæmodul:Et relæmodul er en omskifterenhed. Den modtager et signal og skifter ethvert elektronisk udstyr eller apparat i henhold til indgangssignalet. Det fungerer i to tilstande, Normalt åben (NO) og Normalt lukket (NC).I tilstanden Normalt åben brydes kredsløbet oprindeligt, når indgangssignalet til relæet er LAV. I tilstanden Normalt lukket er kredsløbet oprindeligt komplet, når indgangssignalet er LAV.
RS232 til TTL seriel portkonvertermodul: Dette modul bruges til seriel kommunikation. Vores Arduino UNO-kort har en seriel kommunikationsport, der hedder UART eller USART. Der er to ben på Arduino-kortet, der er ansvarlige for seriel kommunikation TX og RX (Pin 0 og pin 1). Disse to ben findes også på RS232-modulet. Dette modul drives af 5V Arduino, og det konverterer 5V til 12V til drift af forskellige apparater, der fungerer på 12V. Vi bruger dette modul, fordi elektroniske apparater ikke fungerer på 5V.
Trin 4: Forstå arbejdsprincippet
Efter at have afsluttet dette projekt vil vi være i stand til at styre apparater eksternt ved at give kommandoen serielt. Arduino-kort bruges til seriel kommunikation med RS232. Apparater er forbundet til relæmodulet, og RS232 er forbundet til TX- og RX-stifterne på Arduino, og når der trykkes på en trykknap på MATLAB, genereres en seriel kommando, og den sendes til den serielle port på RS232, som til gengæld drejer TÆND eller SLUK apparatet. For det første er MATLAB grænseflade med Arduino-kortet, og derefter implementeres kredsløbet på hardwaren. Hvis nogen har et problem med hensyn til grænsefladen mellem MATLAB og Arduino, kan han / hun henvise til min artikel, der hedder HVORDAN INTERFACE ARDUINO MED MATLAB? og så vil han / hun være i stand til at implementere dette projekt på hardware. Efter at have afsluttet dette projekt skal du installere det på et passende sted, den foretrukne placering er tæt på stikkontakten, hvor ledningerne til apparaterne er placeret, så relæmodulet let kan installeres der.
Trin 5: Kredsløbsdiagram
Projektets proteus kredsløbsdiagram vil se sådan ud. Tilslut hardwarekomponenterne i henhold til dette kredsløb senere.
Trin 6: Kom godt i gang med MATLAB
Efter at have designet kredsløbet på Proteus Åbn MATLAB og skriv “guide”I kommandovinduet. En dialogboks åbnes, og vælg Tom GUI fra denne boks. En komponentpalette vises til venstre, og den viser de komponenter, som du vil placere i din GUI.
Vælg trykknappen, og placer 16 trykknapper på panelet. Først skal du placere ON-knappen og derefter placere OFF-knappen parallelt med den. Knappernes farver og navne kan ændres ved at dobbeltklikke på trykknapperne. Efter at have klikket på trykknapperne åbnes inspektørvinduet, og nogle egenskaber ved knappen kan ændres der. Se efter for at ændre navnet på knappen snor mulighed skriv TIL i den.
Efter ændring af knapnavnet skal du ændre baggrundsfarven. (Bemærk: Dette trin er valgfrit, og du kan springe det over, hvis du ikke vil ændre baggrundsfarven)
Placer 16 trykknapper, og foretag ovenstående ændringer i inspektørvinduet. For navngivning af relæerne statisk tekst indstillingen i venstre bjælke bruges. Det sidste udseende af min GUI er vist nedenfor:
Efter at GUI har åbnet GUI-kode, der er oprettet i backend, og foretag nogle ændringer i koden, der er angivet som under.
Trin 7: MATLAB-kode for GUI:
funktion varargout = final (varargin)% FINAL MATLAB kode for final.fig% FINAL, i sig selv skaber en ny FINAL eller hæver den eksisterende% singleton *. %% H = FINAL returnerer håndtaget til en ny FINAL eller håndtaget til% den eksisterende singleton *. %% FINAL ('CALLBACK', hObject, eventData, handles, ...) kalder den lokale% -funktion ved navn CALLBACK i FINAL.M med de givne inputargumenter. %% FINAL ('Property', 'Value', ...) opretter en ny FINAL eller hæver% eksisterende singleton *. Fra venstre anvendes ejendomsværdipar% til GUI'en, før final_OpeningFcn bliver kaldt. Et% ukendt ejendomsnavn eller ugyldig værdi får ejendomsapplikationen til at stoppe. Alle input sendes til final_OpeningFcn via varargin. %% * Se GUI-indstillinger i GUIDE's menu Værktøjer. Vælg "GUI tillader kun at køre en% forekomst (singleton)". %% Se også: GUIDE, GUIDATA, GUIHANDLES% Rediger ovenstående tekst for at ændre svaret for at hjælpe final% Sidst ændret af GUIDE v2.5 25-aug-2019 13:10:11% Begynd initialiseringskoden - REDIGER IKKE gui_Singleton = 1; gui_State = struct ('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @final_OpeningFcn, ... 'gui_OutputFcn', @final_OutputFcn, ... 'gui_LayoutFc.' .. 'gui_Callback', []); hvis nargin && ischar (varargin {1}) gui_State.gui_Callback = str2func (varargin {1}); afslut hvis nargout [varargout {1: nargout}] = gui_mainfcn (gui_State, varargin {:}); ellers gui_mainfcn (gui_State, varargin {:}); slut% Afslut initialiseringskode - REDIGER IKKE% --- Udføres lige før den endelige er synlig. function final_OpeningFcn (hObject, eventdata, handles, varargin)% Denne funktion har ingen output args, se OutputFcn. % hObject-håndtag for at regne% eventdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA)% varargin kommandolinjeargumenter til endelig (se VARARGIN)% Vælg standardkommandolinieoutput til endelige håndtag .output = hObject; % Opdater håndtagets strukturvejledning (hObject, håndtag); % UIWAIT venter endeligt på brugersvar (se UIRESUME)% uiwait (håndtag. Figur 1); % --- Udgange fra denne funktion returneres til kommandolinjen. funktion varargout = final_OutputFcn (hObject, hændelsesdata, håndtag)% varargout celle array til returnering af output args (se VARARGOUT); % hObject-håndtag til figur% eventdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA)% Få standardkommandolinieoutput fra håndtag struktur varargout {1} = handles.output; Slet alt; global a; a = arduino; % --- Udfører ved tryk på knappen i trykknap1. funktion trykknap1_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap1 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D6', 0); % --- Udfører ved tryk på knappen i trykknap2. funktion pushbutton2_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap2 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D6', 1); % --- Udfører ved tryk på knappen i trykknap3. funktion pushbutton3_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap3 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D7', 0); % --- Udfører ved tryk på knappen i trykknap4. funktion trykknap4_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap4 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D7', 1); \% --- Udfører ved tryk på knappen i trykknap5. funktion trykknap5_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap5 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D8', 0); % --- Udfører ved tryk på knappen i trykknap6. funktion trykknap6_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap6 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D8', 1); % --- Udfører ved tryk på knappen i trykknap7. funktion pushbutton7_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap7 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D9', 0); % --- Udfører ved tryk på knap i trykknap8. funktion pushbutton8_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap8 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D9', 1); % --- Udfører ved tryk på knappen i trykknap9. funktion trykknap9_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap9 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D10', 0); % --- Udfører ved tryk på knappen i trykknap10. funktion trykknap10_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap10 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D10', 1); % --- Udfører ved tryk på knappen i trykknap11. funktion trykknap11_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap11 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D11', 0); % --- Udfører ved tryk på knappen i trykknap12. funktion trykknap12_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap12 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D11', 1); % --- Udfører ved tryk på knappen i trykknap13. funktion pushbutton13_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap13 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D12', 0); % --- Udfører ved tryk på knappen i trykknap14. funktion trykknap14_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap14 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D12', 1); % --- Udfører ved tryk på knappen i trykknap15. funktion trykknap15_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap15 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D13', 0); % --- Udfører ved tryk på knappen i trykknap16. funktion pushbutton16_Callback (hObject, hændelsesdata, håndtag)% hObject håndtag til trykknap16 (se GCBO)% hændelsesdata reserveret - defineres i en fremtidig version af MATLAB% håndterer struktur med håndtag og brugerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D13', 1);
M-filen sammen med GUI-koden kan downloades herfra.
Trin 8: Kode Forklaring
Når vi opretter MATLAB GUI-koden genereres automatisk i backend, og vi skal bare foretage nogle ændringer i koden. Der er i alt 16 funktioner i koden. Otte er til drejning PÅ relæerne og otte er til drejning AF relæerne. For det første oprettede vi en global variabel med navnet 'en'erklæres uden for funktionerne, og derefter bruges den i enhver tilstand, fordi det er nyttigt, når flere funktioner har adgang til de samme data. Så skrev vi a = arduinoi koden, fordi vi grænsefladen mellem Arduino og MATLAB. Alle de 16 funktioner, der er designet til trykknapper i koden, blev ændret, og vi skrev '0' for at slukke for relæet og '1' for at tænde relæet i disse funktioner. Du bliver nødt til at tilføje disse to linjer i slutningen af hver funktion og ændre dem i overensstemmelse hermed:
global a; skrivDigitalPin (a, 'D13', 1);
Trin 9: Samling af hardwaren
Efter at have skrevet koden begynder vi at samle hardwarekomponenterne. For det første er vi nødt til at kende relæmodulets tilslutning. Tag apparatets positive ledning og skær det. forbinde den ene ende til INGEN port og den anden ende til COM relæmodulets port. Se billedet nedenfor, og tilslut alle de fire apparater til relæmodulet som vist. Sørg for at stramme relæmodulets skruer, så forbindelsen ikke brydes senere.
Efter at have tilsluttet NO- og COM-stifterne på de otte relæmoduler med otte apparater, tilslutter vi modulets OUT-stifter. Stift nr. 6-13 i Arduino bruges til tilslutning af relæmodulets OUT-stifter. Sæt OUT-stiften på relæ 1 til stiften 6 på Arduino, og udfør derefter alle forbindelser i henhold til koden. Brug breadboard til at oprette fælles forbindelser mellem Vcc og Ground, og sæt derefter ledningerne på disse to ben i relæmodulet i disse forbindelser. Efter relæforbindelser tilsluttes Vcc og Ground på RS232 til henholdsvis 5V og Ground of Arduino. Tilslut Tx-stiften på RS232 til RX-stiften på Arduino og tilslut Rx-stiften på RS232 til Tx-stiften på Arduino. Tag Serial DB9-hanadapteren, og slut den ene side til Serial Port-konverteringsmodulet og den anden side til den bærbare eller pc, du bruger.
Det er det! Vi har afsluttet vores automatiseringsprojekt, og nu kan vi styre vores apparater ved hjælp af MATLAB. Det er ikke nødvendigt at stå op og tænde apparaterne, vi kan tænde og slukke dem eksternt. Det kan implementeres i hjem og såvel som kontorer osv.