Hvordan kontrollere husholdningsapparater ved hjelp av MATLAB?
Hjemmeautomatiseringsnettverksteknologien ble utviklet på de senere 90-tallet, og kommunikasjonsprotokollen som ble brukt på den tiden var X10. Siden da har begrepet automatisering fått popularitet, og de nyeste protokollene er oppfunnet som er ansvarlige for kommunikasjon mellom elektroniske enheter. Med tanke på automatiseringsbegrepet tenkte jeg hvorfor ikke kontrollere alle husholdningsapparater ved hjelp av den mest kjente programvaren kjent som MATLAB. I dette prosjektet vil vi designe et automatiseringssystem og deretter kontrollere det ved å gi en seriekommando. Programvare som skal brukes til å betjene dette systemet heter MATLAB, og etter å ha fullført dette prosjektet, vil vi kunne kontrollere våre elektriske apparater ved å bare sitte på sofaen eller legge oss på sengen.
Hvordan automatiserer du husholdningsapparater ved hjelp av MATLAB GUI?
La oss nå gå mot å samle komponentene, samle dem for å lage en krets, lage et MATLAB grafisk brukergrensesnitt (GUI) og skrive koden i MATLAB for å automatisere husholdningsapparater.
Trinn 1: Nødvendige komponenter (maskinvare)
Det er alltid bedre å vite om komponentene i detalj før du starter prosjektet, for å unngå ulemper midt i prosjektet. Nedenfor er listen over komponenter som vi skal bruke:
Her bruker vi en 8-relémodul fordi vi bare vil kontrollere åtte apparater. Hvis du vil automatisere et antall apparater du har, kan du bruke en annen relémodul. Det er mange relémoduler tilgjengelig i markedet, for eksempel enkelt, 8-relé, 12-relé, etc.
Trinn 2: Nødvendige komponenter (programvare)
Etter å ha ordnet maskinvarekomponentene vil vi se etter programvaren som skal brukes i prosjektet. Vi installerer den nyeste versjonen av MATLAB på den bærbare eller PC-en som vi jobber med. MATLAB 2019 er den nyeste programvaren, så det er bedre å laste ned MATLAB 2019. Lenken til det offisielle nettstedet til Mathworks er tilgjengelig nedenfor for nedlasting av programvaren. Hardware Support-pakkene er tilgjengelige i MATLAB 2019 for 32-biters, 64-biters Windows og 64-biters Linux.
Etter å ha lastet ned Proteus 8 Professional, design kretsen på den. Jeg har tatt med programvaresimuleringer her, slik at det kan være praktisk for nybegynnere å designe kretsen og lage passende tilkoblinger på maskinvaren.
Trinn 3: Studere komponentene
Nå som vi har laget en liste over alle komponentene vi skal bruke i dette prosjektet. La oss gå et skritt videre og gå gjennom en kort studie av alle de viktigste maskinvarekomponentene.
Arduino UNO:De Arduino UNO er et mikrokontrollerkort som består av et mikrochip ATMega 328P og er utviklet av Arduino.cc. Dette kortet har et sett med digitale og analoge datapinner som kan grensesnittes med andre utvidelseskort eller kretser. Dette kortet har 14 digitale pinner, 6 analoge pinner og programmerbare med Arduino IDE (Integrated Development Environment) via en USB-kabel type B. Det krever 5V for strøm PÅ og en C-kodeå operere.
12V relémodul:En relémodul er en koblingsenhet. Den mottar et signal og bytter alle elektroniske enheter eller apparater i henhold til inngangssignalet. Det fungerer i to moduser, Normalt åpen (NO) og Normalt stengt (NC).I normalt åpen modus brytes kretsen først når inngangssignalet til reléet er LAV. I Normalt lukket modus er kretsen i utgangspunktet fullført når inngangssignalet er LAV.
RS232 til TTL Serial Port Converter Module: Denne modulen brukes til seriell kommunikasjon. Arduino UNO-kortet vårt har en seriell kommunikasjonsport som heter UART eller USART. Det er to pinner på Arduino-kortet som er ansvarlige for seriekommunikasjon TX og RX (Pin 0 og pin 1). Disse to pinnene er også til stede på RS232-modulen. Denne modulen drives av 5V Arduino og konverterer 5V til 12V for drift av forskjellige apparater som fungerer på 12V. Vi bruker denne modulen fordi elektroniske apparater ikke fungerer på 5V.
Trinn 4: Forstå arbeidsprinsippet
Etter å ha fullført dette prosjektet, vil vi kunne styre apparater eksternt ved å gi kommandoen serielt. Arduino-kort brukes til seriell kommunikasjon med RS232. Husholdningsapparater er koblet til relémodulen og RS232 er koblet til TX- og RX-pinnene på Arduino, og når en trykknapp trykkes på MATLAB, genereres en seriekommando og den sendes til serieporten på RS232, som til gjengjeld svinger PÅ eller AV apparatet. For det første er MATLAB grensesnittet med Arduino-kortet, og deretter implementeres kretsen på maskinvaren. Hvis noen har et problem angående grensesnittet mellom MATLAB og Arduino, kan han / hun referere til artikkelen min HVORDAN GRensesnitt ARDUINO MED MATLAB? og da vil han / hun kunne implementere dette prosjektet på maskinvare. Etter å ha fullført dette prosjektet, installer det på et passende sted, det foretrukne stedet er nær kontakten der ledningene til apparatene er plassert slik at relémodulen enkelt kan installeres der.
Trinn 5: Kretsdiagram
Proteus-kretsskjemaet til prosjektet vil se slik ut. Koble maskinvarekomponentene i henhold til denne kretsen senere.
Trinn 6: Komme i gang med MATLAB
Etter å ha designet kretsen på Proteus Open MATLAB og skriv “guide”I kommandovinduet. En dialogboks åpnes, og velg Tom GUI fra den ruten. En komponentpalett vises til venstre, og den viser komponentene du vil plassere i GUI-en.
Velg trykknapp og plasser 16 trykknapper på panelet. For det første plasserer du PÅ-knappen og deretter AV-knappen parallelt med den. Fargene og navnene på knappene kan endres ved å dobbeltklikke på trykknappene. Etter å ha klikket på trykknappene åpnes inspektørvinduet, og noen egenskaper til knappen kan endres der. For å endre navnet på knappen, se etter streng alternativ skriv PÅ i den.
Etter endring av knappens navn, endre bakgrunnsfargen. (Merk: Dette trinnet er valgfritt, og du kan hoppe over det hvis du ikke vil endre bakgrunnsfargen)
Plasser 16 trykknapper og gjør endringene ovenfor i inspektørvinduet. For å navngi reléene statisk tekst alternativet i venstre linje brukes. Det endelige utseendet på GUI-en min er vist nedenfor:
Etter å ha gjort GUI-en åpen GUI-kode som er opprettet i backend, og gjør noen endringer i koden som er oppgitt som under.
Trinn 7: MATLAB-kode for GUI:
funksjon varargout = final (varargin)% FINAL MATLAB-kode for final.fig% FINAL, i seg selv, skaper en ny FINAL eller hever den eksisterende% singleton *. %% H = FINAL returnerer håndtaket til en ny FINAL eller håndtaket til% den eksisterende singleton *. %% FINAL ('CALLBACK', hObject, eventData, handles, ...) kaller den lokale% -funksjonen kalt CALLBACK i FINAL.M med de angitte inngangsargumentene. %% FINAL ('Eiendom', 'Verdi', ...) oppretter en ny FINAL eller hever% eksisterende singleton *. Fra venstre blir eiendomsverdipar% brukt på GUI før final_OpeningFcn blir ringt. Et% ukjent eiendomsnavn eller ugyldig verdi gjør at applikasjonen% stopper. Alle innganger sendes til final_OpeningFcn via varargin. %% * Se GUI-alternativer på GUIDEs Verktøy-meny. Velg "GUI tillater bare en% forekomst å kjøre (singleton)". %% Se også: GUIDE, GUIDATA, GUIHANDLES% Rediger teksten ovenfor for å endre svaret for å hjelpe final% Sist endret av GUIDE v2.5 25-aug-2019 13:10:11% Begynn initialiseringskoden - IKKE REDIGER 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}); slutt hvis nargout [varargout {1: nargout}] = gui_mainfcn (gui_State, varargin {:}); annet gui_mainfcn (gui_State, varargin {:}); slutt% Avslutt initialiseringskode - IKKE REDIGER% --- Utfører rett før final blir synlig. function final_OpeningFcn (hObject, eventdata, handles, varargin)% Denne funksjonen har ingen argumenter for utdata, se OutputFcn. % hObject-håndtak for å regne ut% eventdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA)% varargin kommandolinjeargumenter til endelig (se VARARGIN)% Velg standard kommandolinjeutgang for endelige håndtak .output = hObject; % Oppdater håndtakets strukturveiledning (hObject, håndtak); % UIWAIT venter på brukerrespons (se UIRESUME)% uiwait (håndtak. Figur1); % --- Utganger fra denne funksjonen returneres til kommandolinjen. funksjon varargout = final_OutputFcn (hObject, hendelsesdata, håndtak)% varargout cellematrise for å returnere output args (se VARARGOUT); % hObject-håndtak for å regne ut% eventdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA)% Få standard kommandolinjeproduksjon fra håndtakets struktur varargout {1} = handles.output; slett alt; global a; a = arduino; % --- Utfører ved trykk på knappen i trykknapp1. funksjon trykknapp1_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp1 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D6', 0); % --- Utfører ved trykk på knappen i trykknapp2. funksjon trykknapp2_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp2 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D6', 1); % --- Utfører ved å trykke på knappen i trykknapp3. funksjon trykknapp3_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp3 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D7', 0); % --- Utfører ved trykk på knappen i trykknapp4. funksjon trykknapp4_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp4 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D7', 1); \% --- Utfører knappetrykk på trykknapp 5. funksjon trykknapp5_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp5 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D8', 0); % --- Utfører knappetrykk i trykknapp 6. funksjon trykknapp6_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp6 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D8', 1); % --- Utfører ved å trykke på knappen i trykknapp7. funksjon trykknapp7_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp7 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D9', 0); % --- Utfører ved trykk på knapp i trykknapp 8. funksjon trykknapp8_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp 8 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D9', 1); % --- Utfører knappetrykk på trykknapp 9. funksjon trykknapp9_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp 9 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D10', 0); % --- Utfører ved trykk på knappen i trykknapp10. funksjon trykknapp10_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp 10 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D10', 1); % --- Utfører ved å trykke på knappen i trykknapp11. funksjon trykknapp11_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp11 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D11', 0); % --- Utfører knappetrykk i trykknapp12. funksjon trykknapp12_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp12 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D11', 1); % --- Utfører ved trykk på knappen i trykknapp13. funksjon trykknapp13_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp 13 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D12', 0); % --- Utfører ved trykk på knappen i trykknapp14. funksjon trykknapp14_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp14 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D12', 1); % --- Utfører ved trykk på knappen i trykknapp 15. funksjon trykknapp15_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp 15 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D13', 0); % --- Utfører ved trykk på knappen i trykknapp 16. funksjon trykknapp16_Callback (hObject, hendelsesdata, håndtak)% hObjekt håndtak til trykknapp16 (se GCBO)% hendelsesdata reservert - defineres i en fremtidig versjon av MATLAB% håndterer struktur med håndtak og brukerdata (se GUIDATA) global a; skrivDigitalPin (a, 'D13', 1);
M-filen sammen med GUI-koden kan lastes ned herfra.
Trinn 8: Kode Forklaring
Når vi oppretter MATLAB GUI-koden genereres automatisk i backend, og vi trenger bare å gjøre noen endringer i koden. Det er totalt 16 funksjoner i koden. Åtte er for å snu PÅ stafettene og åtte er til sving AV stafettene. For det første opprettet vi en global variabel med navnet 'en'blir erklært utenfor funksjonene, og deretter brukes den i alle forhold fordi den er nyttig når flere funksjoner får tilgang til de samme dataene. Så skrev vi a = arduinoi koden fordi vi grensesnitt Arduino med MATLAB. Alle de 16 funksjonene som er designet for trykknapper i koden ble endret, og vi skrev '0' for å slå AV reléet og '1' for å slå PÅ reléet i disse funksjonene. Du må legge til disse to linjene på slutten av hver funksjon og endre dem deretter:
global a; skrivDigitalPin (a, 'D13', 1);
Trinn 9: Montere maskinvaren
Etter å ha skrevet koden, begynner vi å montere maskinvarekomponentene. For det første må vi kjenne tilkoblingen til relémodulen. Ta den positive ledningen til apparatet og klipp den av. koble den ene enden til NEI port og den andre enden til COM porten på relémodulen. Se bildet nedenfor og koble alle de fire apparatene til relémodulen som vist. Forsikre deg om at du strammer til skruene på relémodulen slik at forbindelsen ikke brytes senere.
Etter å ha koblet NO- og COM-pinnene til de åtte relémodulene til åtte apparater, kobler vi OUT-pinnene til modulen. Pinne nr 6-13 av Arduino brukes til å koble til OUT-pinnene på relémodulen. Koble OUT-pinnen til relé 1 til pinnen 6 på Arduino, og gjør deretter alle tilkoblingene i henhold til koden. Bruk breadboard for å lage vanlige tilkoblinger av Vcc og Ground, og sett deretter ledningene til disse to pinnene i relémodulen i disse tilkoblingene. Etter at du har laget relétilkoblinger, kobler du Vcc og Ground på RS232 til henholdsvis 5V og Ground of Arduino. Koble Tx-pinnen på RS232 til RX-pinnen på Arduino og koble Rx-pinnen på RS232 til Tx-pinnen på Arduino. Ta Serial DB9 hannadapter og koble den ene siden til Serial Port-omformermodulen og den andre siden til den bærbare eller PC-en du bruker.
Det er det! Vi har fullført automatiseringsprosjektet vårt, og nå kan vi kontrollere apparatene våre ved hjelp av MATLAB. Det er ikke nødvendig å stå opp og slå på apparatene, vi kan slå dem på og av eksternt. Det kan implementeres i hjem og i tillegg til kontorer etc.