We kennen allemaal het woord 'Automation', waarbij de menselijke interactie minimaal is en dingen automatisch of op afstand kunnen worden bediend. Domotica is een zeer populair en veeleisend concept op het gebied van elektronica, en we doen ook ons best om dit concept begrijpelijk en beheersbaar te maken als elektronicaprojecten. We hebben eerder verschillende soorten Home Automation-projecten ontwikkeld met een werkende video en code, kijk hiervoor:
- DTMF-gebaseerde domotica
- GSM-gebaseerde domotica met behulp van Arduino
- PC-gestuurde huisautomatisering met Arduino
- Bluetooth-gestuurde huisautomatisering met 8051
- IR-afstandsbediende huisautomatisering met Arduino
En in dit project gaan we ons volgende domoticaproject bouwen met MATLAB en Arduino, een GUI-gebaseerd huisautomatiseringssysteem met Arduino en MATLAB.
Componenten:
- Arduino UNO
- USB-kabel
- ULN2003
- Relais 5 volt
- Lamp met houder
- Draden aansluiten
- Laptop
- Stroomvoorziening
- PVT
Werkende uitleg:
In dit project gebruiken we MATLAB met Arduino om de huishoudelijke apparaten te besturen via een grafische gebruikersinterface in de computer. Hier hebben we bedrade communicatie gebruikt voor het verzenden van gegevens van de computer (MATLAB) naar Arduino. Aan de computerzijde hebben we GUI in MATLAB gebruikt om enkele knoppen te maken voor het bedienen van huishoudelijke apparaten. Voor communicatie tussen Arduino en MATLAB moeten we eerst de " MATLAB en Simulink Support for Arduino " of " Arduino IO Package " installeren. Volg hiervoor de onderstaande stappen of bekijk de onderstaande video:
- Download hier het Arduino IO-pakket. U moet zich aanmelden voordat u kunt downloaden.
- Brand / upload vervolgens het adioe.pde-bestand naar de Arduino met Arduino IDE. Dit adioe.pde-bestand is te vinden in Arduino IO Package - ArduinoIO \ pde \ adioe \ adioe.pde
- Open vervolgens de MATLAB-software, doorloop de Arduino IO-map, open het bestand install_arduino.m en voer het uit in Matlab. U zult een bericht zien van “Arduino-mappen toegevoegd aan het pad” in het opdrachtvenster van MATLAB, wat betekent dat het MATLAB-pad is bijgewerkt naar Arduino-mappen.
Dat is hoe we de Arduino maken, communiceren met MATLAB. De bovenstaande methode is geschikt voor "MATLAB R2013b of eerdere versies", als u de hogere versie van MATLAB gebruikt (zoals R2015b of R2016a), kunt u direct klikken op het tabblad Add-ons in MATLAB en vervolgens klikken op "Get Hardware Support Packages", van waaruit u Arduino-pakketten voor MATLAB kunt installeren.
Na het installeren van bestanden, kunt u nu een GUI voor Home Automation Project maken. In wezen maken we in GUI drukknoppen om de huishoudelijke apparaten vanaf de computer te bedienen. Knoppen kunnen worden gemaakt door naar "Grafische gebruikersinterface" te gaan in het menu "Nieuw" in MATLAB. Verder kunnen we de naam en kleuren van deze knoppen instellen, we hebben 8 knoppen gemaakt, waarin zes voor AAN en UIT drie huishoudelijke apparaten en twee knoppen voor AAN en UIT alle apparaten tegelijkertijd.
Als u nu na het maken van de knoppen op de knop Uitvoeren in dat GUI-venster klikt, wordt u gevraagd om dit GUI-bestand (met extensie.fig) op te slaan, ook wel bekend als ' fig-bestand'. Zodra u het bestand heeft opgeslagen, zal het automatisch een codebestand aanmaken (met extensie.m), ook wel ' M-bestand' genoemd (zie onderstaande schermafbeelding), waar u de code kunt plaatsen (gegeven in het gedeelte Code hieronder). U kunt het GUI-bestand en het codebestand voor dit project hier downloaden: Home_Automation_system.fig en Home_Automation_system.m (klik met de rechtermuisknop en selecteer Link opslaan als…), of u kunt ze zelf maken zoals we hebben uitgelegd.
Na het coderen kunt u nu eindelijk het.m-bestand starten vanuit het codevenster, u ziet "Proberen verbinding.." in het opdrachtvenster. Als alles goed gaat, verschijnt er een bericht "Arduino succesvol aangesloten". En tot slot ziet u de eerder gemaakte GUI (knoppen) in het GUI-venster, van waaruit u de huishoudelijke apparaten kunt bedienen door op de knoppen in uw computer te klikken. Zorg ervoor dat Arduino via een USB-kabel op Arduino is aangesloten. Hier in dit project hebben we 3 gloeilampen gebruikt voor demonstratie, die Fan, Light en TV aangeven.
De werking van het hele project, van het installeren van het Arduino MATLAB-ondersteuningspakket tot het in- of uitschakelen van het apparaat, kan worden begrepen in de video aan het einde.
Circuit uitleg:
Circuit van dit project is heel eenvoudig. Hier hebben we een Arduino UNO-bord en Relay Driver ULN2003 gebruikt voor het aansturen van relais. Drie SPDT-relais van 5 volt zijn verbonden met Arduino-pin nummer 3, 4 en 5, via relaisstuurprogramma ULN2003, voor het besturen van respectievelijk LIGHT, FAN en TV.
Programmering Toelichting:
Wanneer we op een knop in het GUI-venster drukken, stuurt het enkele opdrachten naar Arduino en vervolgens voert Arduino die bewerking uit. Na het installeren van het Arduino MATLAB IO-ondersteuningspakket, hebben we toegang tot Arduino vanuit de MATLAB door dezelfde Arduino-functies te gebruiken, met wat kleine variatie, zoals:
Om een pin HOOG te maken in Arduino schrijven we code als digitalWrite (pin, HIGH)
In MATLAB zullen we deze functie gebruiken met behulp van een object of variabele zoals, en zo verder.
Voordat we dit doen, moeten we de variabele als volgt initialiseren:
In dit project is er geen Arduino-code behalve de Arduino MATLAB-ondersteuningspakketcode of -bestand. Zoals eerder uitgelegd, wordt dat codebestand (.m-bestand) automatisch gegenereerd tijdens het opslaan van het GUI-bestand (.fig-bestand). Er is al een code voorgeschreven in het.m-bestand. In feite zijn dit terugbelfuncties voor drukknoppen, wat inhoudt dat we kunnen definiëren wat er moet gebeuren als op deze drukknoppen wordt geklikt.
In MATLAB-code initialiseren we eerst de seriële poort en maken we er een object van door een variabele te gebruiken. En dan kunnen we beginnen met programmeren zoals Arduino met behulp van de variabele.
duidelijk ar; globale ar; ar = arduino ('COM13'); ar.pinMode (3, 'OUTPUT'); ar.pinMode (4, 'OUTPUT'); ar.pinMode (5, 'OUTPUT'); ar.pinMode (13, 'OUTPUT');
In de call-back-functie van elke knop hebben we de gerelateerde code geschreven voor AAN of UIT van de respectievelijke huishoudelijke apparaten, verbonden met Arduino via Relay. Zoals bijvoorbeeld de terugbelfunctie voor Licht AAN wordt hieronder gegeven:
functie light_on_Callback (hObject, eventdata, handles)% hObject handle naar light_on (zie GCBO)% eventdata gereserveerd - te definiëren in een toekomstige versie van MATLAB% handvatten structuur met handvatten en gebruikersgegevens (zie GUIDATA) globale ar; ar.digitalWrite (3, 1); ar.digitalWrite (13, 1);
Evenzo kunnen we de code schrijven in de terugbelfuncties van alle knoppen, om de andere aangesloten huishoudelijke apparaten te bedienen, controleer de volledige MATLAB-code hieronder (.m-bestand).