Hur man kontrollerar hushållsapparater med MATLAB?
Nättekniken för hemautomation utvecklades under de senare 90-talet och kommunikationsprotokollet som användes vid den tiden var X10. Sedan dess blir automatiseringsbegreppet alltmer populärt och de senaste protokollen har uppfunnits som ansvarar för kommunikationen mellan elektroniska enheter. Med tanke på automatiseringskonceptet tänkte jag varför inte styra alla hushållsapparater med den mest kända programvaran som kallas MATLAB. I det här projektet kommer vi att utforma ett automatiseringssystem och sedan kontrollera det genom att ge ett seriekommando. Programvara som kommer att användas för att driva detta system heter MATLAB och efter att ha slutfört detta projekt kommer vi att kunna styra våra elektriska apparater genom att bara sitta i soffan eller lägga sig på sängen.
Hur automatiserar du dina hushållsapparater med hjälp av MATLAB GUI?
Låt oss nu gå mot att samla in komponenterna, sätta ihop dem för att skapa en krets, skapa ett MATLAB grafiskt användargränssnitt (GUI) och skriva koden i MATLAB för att automatisera dina hushållsapparater.
Steg 1: Komponenter som behövs (hårdvara)
Det är alltid bättre att känna till komponenterna i detalj innan du startar projektet för att undvika besvär mitt i projektet. Nedan är listan över komponenter som vi ska använda:
Här använder vi en 8-relämodul eftersom vi bara kontrollerar åtta apparater. Om du vill automatisera ett antal apparater som du har kan du använda en annan relämodul. Det finns många relämoduler tillgängliga på marknaden till exempel, singel, 8-relä, 12-relä, etc.
Steg 2: Komponenter som behövs (programvara)
Efter att ha ordnat hårdvarukomponenterna letar vi efter programvaran som kommer att användas i projektet. Vi installerar den senaste versionen av MATLAB på vår bärbara dator eller PC som vi arbetar med. MATLAB 2019 är den senaste mjukvaran så det är bättre att ladda ner MATLAB 2019. Länken till den officiella webbplatsen för Mathworks finns tillgänglig nedan för nedladdning av programvaran. Hårdvarusupportpaketen finns i MATLAB 2019 för 32-bitars, 64-bitars Windows och 64-bitars Linux.
Efter att ha laddat ner Proteus 8 Professional, design kretsen på den. Jag har inkluderat programvarusimuleringar här så att det kan vara bekvämt för nybörjare att utforma kretsen och göra lämpliga anslutningar på hårdvaran.
Steg 3: Studera komponenterna
Nu när vi har gjort en lista över alla komponenter som vi ska använda i detta projekt. Låt oss gå ett steg längre och gå igenom en kort studie av alla de viktigaste hårdvarukomponenterna.
Arduino UNO:De Arduino UNO är ett mikrokontrollerkort som består av ett mikrochip ATMega 328P och är utvecklat av Arduino.cc. Detta kort har en uppsättning digitala och analoga datapinnar som kan anslutas till andra expansionskort eller kretsar. Detta kort har 14 digitala stift, 6 analoga stift och programmerbara med Arduino IDE (Integrated Development Environment) via en typ B USB-kabel. Det kräver 5V för att driva PÅ och en C-kodatt driva.
12V relämodul:En relämodul är en växlingsenhet. Den tar emot en signal och växlar alla elektroniska enheter eller apparater enligt ingångssignalen. Det fungerar i två lägen, Normalt öppen (NO) och Normalt stängd (NC).I normalt öppet läge bryts kretsen initialt när insignalen till reläet är LÅG. I Normalt stängt läge är kretsen initialt komplett när insignalen är LÅG.
RS232 till TTL-omvandlingsmodul för serieport: Denna modul används för seriekommunikation. Vårt Arduino UNO-kort har en seriell kommunikationsport som heter UART eller USART. Det finns två stift på Arduino-kortet som ansvarar för seriekommunikation TX och RX (stift 0 och stift 1). Dessa två stift finns också på RS232-modulen. Denna modul drivs av 5V Arduino och konverterar 5V till 12V för drift av olika apparater som arbetar på 12V. Vi använder den här modulen eftersom elektroniska apparater inte fungerar på 5V.
Steg 4: Förstå arbetsprincipen
Efter att ha slutfört detta projekt kommer vi att kunna styra apparater på distans genom att ge kommandot seriellt. Arduino-kortet används för seriekommunikation med RS232. Enheter är anslutna till relämodulen och RS232 är ansluten till TX- och RX-stiften på Arduino och när en tryckknapp trycks in på MATLAB genereras ett seriekommando och det skickas till den seriella porten på RS232 som i gengäld svänger PÅ eller AV apparaten. För det första är MATLAB gränssnitt med Arduino-kortet och sedan implementeras kretsen på hårdvaran. Om någon har problem med gränssnittet mellan MATLAB och Arduino kan han / hon hänvisa till min artikel HUR ANGÅR DU ARDUINO MED MATLAB? och då kommer han / hon att kunna implementera detta projekt på hårdvara. Efter att ha slutfört projektet installera det på en lämplig plats, den föredragna platsen är nära uttaget där apparaterna är anslutna så att relämodulen enkelt kan installeras där.
Steg 5: Kretsschema
Proteus-kretsschemat för projektet kommer att se ut så här. Anslut hårdvarukomponenterna enligt denna krets senare.
Steg 6: Komma igång med MATLAB
Efter att ha designat kretsen på Proteus Open MATLAB och skriv “guide”I kommandofönstret. En dialogruta öppnas och välj Tom GUI från den rutan. En komponentpalett visas till vänster och den visar de komponenter som du vill placera i ditt GUI.
Välj tryckknapp och placera 16 tryckknappar på panelen. Först placerar du PÅ-knappen och placerar sedan AV-knappen parallellt med den. Knapparnas färger och namn kan ändras genom att dubbelklicka på tryckknapparna. Efter att ha klickat på tryckknapparna öppnas inspektörsfönstret och vissa egenskaper hos knappen kan ändras där. För att ändra namn på knappen leta efter sträng alternativ skriv PÅ i den.
Ändra bakgrundsfärgen efter att knappen har ändrats. (Notera: Det här steget är valfritt och du kan hoppa över det om du inte vill ändra bakgrundsfärgen)
Placera 16 tryckknappar och gör ovanstående ändringar i inspektörsfönstret. För att namnge reläerna statisk text alternativet i det vänstra fältet används. Det sista utseendet på mitt GUI visas nedan:
Efter att ha gjort GUI öppet GUI-kod som skapas i backend och gör några ändringar i koden som anges som under.
Steg 7: MATLAB-kod för GUI:
funktion varargout = final (varargin)% FINAL MATLAB-kod för final.fig% FINAL, skapar i sig en ny FINAL eller höjer den befintliga% singleton *. %% H = FINAL returnerar handtaget till en ny FINAL eller handtaget till% den befintliga singleton *. %% FINAL ('CALLBACK', hObject, eventData, handles, ...) anropar den lokala% -funktionen som heter CALLBACK i FINAL.M med de angivna inmatningsargumenten. %% FINAL ('Property', 'Value', ...) skapar en ny FINAL eller höjer% existerande singleton *. Från och med vänster tillämpas fastighetsvärden% på GUI innan final_OpeningFcn anropas. Ett% okänt egendomsnamn eller ogiltigt värde gör att applikationen% stoppas. Alla ingångar skickas till final_OpeningFcn via varargin. %% * Se GUI-alternativ på GUIDE: s verktygsmeny. Välj "GUI tillåter bara en% instans att köras (singleton)". %% Se även: GUIDE, GUIDATA, GUIHANDLES% Redigera ovanstående text för att ändra svaret för att hjälpa final% Senast ändrad av GUIDE v2.5 25-aug-2019 13:10:11% Börja initialiseringskoden - REDIGERA INTE 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', []); om nargin && ischar (varargin {1}) gui_State.gui_Callback = str2func (varargin {1}); avsluta om nargout [varargout {1: nargout}] = gui_mainfcn (gui_State, varargin {:}); annars gui_mainfcn (gui_State, varargin {:}); slut% Avsluta initialiseringskoden - REDIGERA INTE% --- Körs precis innan final görs synlig. function final_OpeningFcn (hObject, eventdata, handles, varargin)% Den här funktionen har inga utdata args, se OutputFcn. % hObject-handtag för att räkna ut% eventdata reserverat - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA)% varargin-kommandoradsargument till final (se VARARGIN)% Välj standardkommandoradsutgång för sluthandtag .output = hObject; % Uppdatera handtagens strukturguide (hObject, handtag); % UIWAIT väntar slutligen på användarens svar (se UIRESUME)% uiwait (handles.figure1); % --- Utgångar från denna funktion returneras till kommandoraden. funktion varargout = final_OutputFcn (hObject, händelsesdata, handtag)% varargout cellmatris för att returnera utdata args (se VARARGOUT); % hObject handtag för att räkna ut% eventdata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA)% Få standard kommandoradsutdata från handtag struktur varargout {1} = handles.output; Rensa alla; global a; a = arduino; % --- Utför knapptryckning i tryckknapp1. funktion tryckknapp1_Callback (hObject, händelsesdata, handtag)% hObject handtag till tryckknapp1 (se GCBO)% händelsesdata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D6', 0); % --- Utför knapptryckning i tryckknapp2. funktion pushbutton2_Callback (hObject, eventdata, handtag)% hObject handtag till pushbutton2 (se GCBO)% eventdata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D6', 1); % --- Utför knapptryckning i tryckknapp3. funktion tryckknapp3_Callback (hObject, händelsedata, handtag)% hObject handtag till tryckknapp3 (se GCBO)% händelsesdata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D7', 0); % --- Utför knapptryckning i tryckknapp4. funktion tryckknapp4_Callback (hObject, händelsesdata, handtag)% hObject handtag till tryckknapp4 (se GCBO)% händelsesdata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D7', 1); \% --- Utför knapptryckning i tryckknapp5. funktion pushbutton5_Callback (hObject, eventdata, handtag)% hObject handtag till pushbutton5 (se GCBO)% eventdata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D8', 0); % --- Utför knapptryckning i tryckknapp6. funktion tryckknapp6_Callback (hObject, händelsedata, handtag)% hObject handtag till tryckknapp6 (se GCBO)% händelsedata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D8', 1); % --- Utför knapptryckning i tryckknapp7. funktion tryckknapp7_Callback (hObject, händelsedata, handtag)% hObject handtag till tryckknapp7 (se GCBO)% händelsesdata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D9', 0); % --- Utför knapptryckning i tryckknapp8. funktion pushbutton8_Callback (hObject, eventdata, handtag)% hObject handtag till pushbutton8 (se GCBO)% eventdata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D9', 1); % --- Utför knapptryckning i tryckknapp9. funktion tryckknapp9_Callback (hObject, händelsedata, handtag)% hObject handtag till tryckknapp9 (se GCBO)% händelsesdata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D10', 0); % --- Utför knapptryckning i tryckknapp10. funktion tryckknapp10_Callback (hObject, händelsesdata, handtag)% hObject handtag till tryckknapp10 (se GCBO)% händelsesdata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D10', 1); % --- Utför knapptryckning i tryckknapp11. funktion tryckknapp11_Callback (hObject, händelsesdata, handtag)% hObject handtag till tryckknapp11 (se GCBO)% händelsesdata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D11', 0); % --- Utför knapptryckning i tryckknapp12. funktion tryckknapp12_Callback (hObject, händelsesdata, handtag)% hObject handtag till tryckknapp12 (se GCBO)% händelsesdata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D11', 1); % --- Utför knapptryckning i tryckknapp13. funktion tryckknapp13_Callback (hObject, händelsedata, handtag)% hObject handtag till tryckknapp13 (se GCBO)% händelsesdata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D12', 0); % --- Utför knapptryckning i tryckknapp14. funktion tryckknapp14_Callback (hObject, händelsedata, handtag)% hObject handtag till tryckknapp14 (se GCBO)% händelsedata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D12', 1); % --- Utför knapptryckning i tryckknapp15. funktion tryckknapp15_Callback (hObject, händelsedata, handtag)% hObject handtag till tryckknapp15 (se GCBO)% händelsesdata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D13', 0); % --- Utför knapptryckning i tryckknapp16. funktion tryckknapp16_Callback (hObject, händelsedata, handtag)% hObject handtag till tryckknapp16 (se GCBO)% händelsedata reserverad - definieras i en framtida version av MATLAB% hanterar struktur med handtag och användardata (se GUIDATA) global a; skrivDigitalPin (a, 'D13', 1);
M-filen tillsammans med GUI-koden kan laddas ner härifrån.
Steg 8: Kodförklaring
När vi skapar MATLAB GUI-koden genereras automatiskt i backend och vi behöver bara göra några ändringar i koden. Det finns totalt 16 funktioner i koden. Åtta är för att vända PÅ reläerna och åtta är för svängning AV reläerna. För det första skapade vi en global variabel med namnet 'A'deklareras utanför funktionerna och sedan används den i alla villkor eftersom det är användbart när flera funktioner har åtkomst till samma data. Sedan skrev vi a = arduinoi koden eftersom vi gränsar Arduino med MATLAB. Alla de 16 funktioner som är utformade för tryckknappar i koden modifierades och vi skrev '0' för att stänga av reläet och '1' för att slå på reläet i dessa funktioner. Du måste lägga till dessa två rader i slutet av varje funktion och ändra dem i enlighet med detta:
global a; skrivDigitalPin (a, 'D13', 1);
Steg 9: Montera hårdvaran
Efter att ha skrivit koden kommer vi att börja montera hårdvarukomponenterna. För det första måste vi känna till relämodulens anslutning. Ta den positiva kabeln från apparaten och skär den. anslut ena änden till NEJ port och den andra änden till COM relämodulens port. Se bilden nedan och anslut alla fyra apparaterna till relämodulen enligt bilden. Se till att dra åt skruvarna på relämodulen så att anslutningen inte bryts senare.
Efter att ha anslutit NO- och COM-stiften på de åtta relämodulerna till åtta apparater ansluter vi modulens OUT-stift. Stift nr 6-13 i Arduino används för att ansluta OUT-stiften på relämodulen. Anslut OUT-stiftet på relä 1 till stift 6 på Arduino och gör sedan alla anslutningar enligt koden. Använd brädbräda för att göra gemensamma anslutningar av Vcc och Ground och sätt sedan ledningarna på dessa två stift i relämodulen i dessa anslutningar. Efter reläanslutningar ansluter du Vcc och Ground på RS232 till 5V respektive Ground för Arduino. Anslut Tx-stift på RS232 till RX-stift på Arduino och anslut Rx-stift på RS232 till Tx-stift på Arduino. Ta seriell DB9-hanadapter och anslut den ena sidan till Serial Port-omvandlarmodulen och den andra sidan till den bärbara datorn eller datorn som du använder.
Det är allt! Vi har slutfört vårt automatiseringsprojekt och nu kan vi styra våra apparater med hjälp av MATLAB. Det finns inget behov av att gå upp och sätta på apparaterna, vi kan slå PÅ och AV dem på distans. Den kan implementeras i bostäder och kontor, etc.