- Componenten vereist
- Schakelschema
- Seriële communicatie met behulp van MATLAB-opdrachtvenster
- Seriële communicatie met behulp van MATLAB GUI
MATLAB is veelzijdige software die voor een breed scala aan toepassingen kan worden gebruikt. In eerdere tutorials van MATLAB hebben we uitgelegd hoe je MATLAB kunt gebruiken om DC-motoren, servomotoren en huishoudelijke apparaten te besturen. Hier in deze tutorial zullen we leren hoe we MATLAB kunnen gebruiken voor seriële communicatie. Voor het ontvangende einde van seriële communicatie gebruiken we hier Arduino.
Er zijn twee manieren om seriële communicatie tussen MATLAB en Arduino in te stellen, de ene gebruikt het opdrachtvenster en de andere gebruikt MATLAB GUI. De Arduino-code voor beide methoden blijft hetzelfde. Als je nieuw bent bij MATLAB, is het aan te raden om met MATLAB aan de slag te gaan met een eenvoudig LED-knipperprogramma en de basisterminologie te leren die in MATLAB wordt gebruikt.
Componenten vereist
- MATLAB geïnstalleerde laptop (voorkeur: R2016a of hogere versies)
- Arduino UNO
- LED (elke kleur)
- Weerstand (330 ohm)
Schakelschema
Het bovenstaande schakelschema blijft hetzelfde voor beide manieren om seriële communicatie tussen MATLAB en Arduino tot stand te brengen.
Seriële communicatie met behulp van MATLAB-opdrachtvenster
Dit is de eenvoudige methode om seriële communicatie tussen Arduino en MATLAB op te zetten. Hier zullen we de gegevens van MATLAB eenvoudig serieel naar de Arduino sturen met behulp van het opdrachtvenster en vervolgens zal Arduino de inkomende seriële gegevens lezen. Vervolgens kunnen deze serieel verzonden gegevens worden gebruikt om alles te besturen dat op de Arduino is aangesloten. Hier hebben we een LED op Arduino aangesloten, die aan en uit gaat volgens de serieel ontvangen data van de Arduino.
Upload eerst de gegeven Arduino-code in de Arduino UNO en begin vervolgens met coderen in het MATLAB Editor-venster. Om een nieuw editor-script te openen, klikt u op ' Nieuw script' zoals weergegeven in onderstaande afbeelding:
Kopieer en plak vervolgens de onderstaande volledige MATLAB-code in het editorvenster voor seriële communicatie tussen MATLAB en Arduino.
% MATLAB-code voor seriële communicatie tussen Arduino en MATLAB x = serieel ('COM18', 'BAUD', 9600); fopen (x); go = waar; while go a = input ('Druk op 1 om LED AAN te zetten & 0 om UIT te schakelen:'); fprintf (x, a); if (a == 2) go = false; einde einde
In de gegeven code wordt het onderstaande commando gebruikt voor het definiëren van de seriële communicatie in MATLAB. Zorg ervoor dat het com-poortnummer het poortnummer is waarop Arduino is aangesloten en dat de baudrate hetzelfde moet zijn ingesteld in de codes van zowel Arduino als MATLAB.
x = serieel ('COM18', 'BAUD', 9600);
Gebruik de onderstaande opdracht om de seriële poort te openen:
fopen (x);
Het onderstaande commando wordt gebruikt om gegevens serieel van MATLAB naar Arduino te verzenden, waarbij x is voor het aanroepen van serieel en a de waarde is die door de gebruiker is ingevoerd.
fprintf (x, a);
We hebben de while- functie voor het maken van een oneindige lus en wanneer de gebruiker het nummer '2' invoert, zal de lus breken.
while go a = input ('Druk op 1 om LED AAN te zetten & 0 om UIT te schakelen:'); fprintf (x, a); if (a == 2) go = false; einde einde
Na het voltooien van het coderen van het MATLAB-editor-script, klikt u op ' RUN ' om uw programma uit te voeren, zoals weergegeven in onderstaande afbeelding,
MATLAB heeft enkele seconden nodig om de code te verwerken en de seriële communicatie te starten, wacht tot MATLAB het bericht 'BUSY' toont in de linkerbenedenhoek van het softwarescherm, zoals weergegeven in onderstaande afbeelding.
Nu ziet u het opdrachtvenster voor het verzenden van de gebruikersinvoer, we hebben het standaardbericht ingesteld, 'Druk op 1 om LED aan te zetten en 0 om uit te schakelen:'
Stuur '1' om de LED in te schakelen, '0' om de LED UIT te schakelen en '2' om de bewerking te onderbreken. U kunt voor elke taak een willekeurig nummer instellen, u hoeft alleen maar de Arduino-code dienovereenkomstig te wijzigen. De volledige Arduino-code wordt aan het einde gegeven.
U kunt de onderstaande video bekijken om het volledige proces te begrijpen van het verzenden van seriële gegevens van MATLAB naar Arduino met behulp van het opdrachtvenster.
Seriële communicatie met behulp van MATLAB GUI
Om de seriële communicatie met MATLAB GUI te demonstreren, zullen we twee grafische knoppen maken met MATLAB om de LED die op de Arduino is aangesloten in en uit te schakelen. De gegevens worden serieel van MATLAB naar Arduino gestuurd door op deze knoppen te klikken om de LED in en uit te schakelen. Arduino bevat de code voor het ontvangen van seriële gegevens van MATLAB en het besturen van de LED op basis van ontvangen seriële gegevens. Arduino-code blijft hetzelfde als de vorige, het enige verschil is dat we voorheen seriële gegevens '1' en '0' stuurden via het opdrachtvenster van MATLAB, en nu zullen dezelfde gegevens worden verzonden op rammelende op twee grafische knoppen.
Om de GUI te starten, typt u de onderstaande opdracht in het opdrachtvenster
gids
Er wordt een pop-upvenster geopend en selecteer vervolgens een nieuwe lege GUI zoals weergegeven in de onderstaande afbeelding,
Kies nu twee drukknoppen om de LED AAN en UIT te zetten, zoals hieronder getoond,
Om de grootte van de knoppen te wijzigen of om de vorm van de knoppen te wijzigen, klikt u erop en kunt u de hoeken van de knop slepen. Door op de knop te dubbelklikken kunt u de kleur, string en tag van die specifieke knop wijzigen. We hebben twee knoppen aangepast, zoals weergegeven in onderstaande afbeelding.
U kunt de knoppen naar eigen keuze aanpassen. Wanneer u dit nu opslaat, wordt er een code gegenereerd in het editorvenster van MATLAB. Bewerk deze code volgens de taak die u met uw Arduino wilt uitvoeren met behulp van de MATLAB GUI. Dus hieronder hebben we de MATLAB-code bewerkt. U kunt meer leren over het opdrachtvenster, het editorvenster, enz. In Aan de slag met MATLAB-zelfstudie.
Volledige MATLAB-code, voor het tot stand brengen van seriële communicatie tussen MATLAB en Arduino, wordt aan het einde van dit project gegeven. Verder voegen we hier het GUI-bestand (.fig) en het codebestand (.m) toe om te downloaden (klik met de rechtermuisknop op de link en selecteer 'Link opslaan als…'), waarmee u de knoppen naar wens kunt aanpassen. Hieronder staan enkele aanpassingen die we hebben gedaan voor het besturen van de LED die is verbonden met Arduino.
Kopieer en plak de onderstaande code op regel nr. 74 om de seriële poort en baudrate in te stellen.
wis alles; globaal x; x = serieel ('COM18', 'BAUD', 9600); % Zorg ervoor dat de baudrate en de COM-poort % hetzelfde zijn als in Arduino IDE fopen (x);
waar fopen (x) wordt gebruikt om de seriële poort te openen voor seriële communicatie.
Als u naar beneden scrolt, ziet u dat er twee functies zijn gemaakt voor beide knoppen in de GUI. Schrijf nu de code in beide functies volgens de taak die u met een klik wilt uitvoeren.
In LED-ON functie knop, kopieer en plak de onderstaande code net voor het einde van de functie die de LED ON te zetten. Zoals je in de onderstaande code ziet, wordt fprintf (x, 1) gebruikt voor het verzenden van seriële gegevens van MATLAB naar Arduino-serie. Hier zijn we het verzenden van '1' om de Arduino seriële en als je de Arduino code te controleren, zult u merken dat Arduino de LED zal gloeien door het maken van haar 13 ste Pin High, bij ontvangst van '1' op de seriële poort.
globaal x; fprintf (x, 1);
In LED-OFF -functie knop, kopieer en plak de onderstaande code net voor het einde van de functie die de LED uit te schakelen. Zoals je in de onderstaande code ziet, wordt fprintf (x, 0) gebruikt voor het verzenden van seriële gegevens van MATLAB naar Arduino-serie. In dit deel, we sturen '0' om de Arduino seriële en als je de Arduino code te controleren, zult u merken dat Arduino van de LED wordt door het maken van haar 13 ste pin LOW, bij ontvangst van '0' op de seriële poort.
globaal x; fprintf (x, 0);
Nadat u de MATLAB GUI-codering hebt voltooid en de hardware hebt ingesteld volgens het schakelschema, klikt u op de knop Uitvoeren om de bewerkte code in.m-bestand uit te voeren.
Het kan enkele seconden duren voordat MATLAB reageert, klik niet op een GUI-knop totdat MATLAB de indicatie BUSY toont, die u in de linker benedenhoek van het scherm kunt zien, zoals hieronder weergegeven,
Als alles klaar is, klikt u op LED-AAN en LED-UIT om de LED AAN en UIT te zetten. Wanneer u op LED-ON knop , 13 th pin van Arduino gaat HIGH en LED aangesloten op deze PIN begint te gloeien, en als u op LED-UIT-knop , 13 th pin van Arduino gaat LOW waardoor de LED uit te schakelen.
U kunt de onderstaande video bekijken om het volledige proces te begrijpen van het verzenden van seriële gegevens van MATLAB naar Arduino met behulp van MATLAB GUI.