- Komponenter krävs
- Kretsschema
- Seriekommunikation med MATLAB kommandofönster
- Seriekommunikation med hjälp av MATLAB GUI
MATLAB är mångsidig programvara som kan användas för många olika applikationer. I tidigare handledning av MATLAB har vi förklarat hur man använder MATLAB för att styra likströmsmotor, servomotor och hushållsapparater. Här i denna handledning lär vi oss hur man använder MATLAB för seriekommunikation. För den mottagande änden av seriell kommunikation använder vi här Arduino.
Det finns två sätt att konfigurera seriell kommunikation mellan MATLAB och Arduino, det ena använder kommandofönstret och det andra använder MATLAB GUI. Arduino-koden för båda metoderna förblir densamma. Om du är ny på MATLAB rekommenderas det att komma igång med ett enkelt LED-blinkningsprogram med MATLAB och lära dig den grundläggande terminologi som används i MATLAB.
Komponenter krävs
- MATLAB installerad bärbar dator (preferens: R2016a eller högre versioner)
- Arduino UNO
- LED (vilken färg som helst)
- Motstånd (330 ohm)
Kretsschema
Ovanstående kretsschema kommer att förbli detsamma för båda sätten att etablera seriell kommunikation mellan MATLAB och Arduino.
Seriekommunikation med MATLAB kommandofönster
Detta är den enkla metoden för att ställa in seriell kommunikation mellan Arduino och MATLAB. Här skickar vi helt enkelt data från MATLAB till Arduino seriellt med hjälp av kommandofönstret och sedan läser Arduino inkommande seriell data. Sedan kan dessa seriellt överförda data användas för att kontrollera allt som är anslutet till Arduino. Här har vi anslutit en LED till Arduino, som kommer att slås på och av enligt de seriemottagna uppgifterna från Arduino.
Ladda först upp den givna Arduino-koden i Arduino UNO och börja sedan koda i MATLAB Editor-fönstret. För att öppna ett nytt redigeringsskript, klicka på ' Nytt skript' som visas i bilden nedan:
Kopiera och klistra sedan in den fullständiga MATLAB-koden nedan i redigeringsfönstret för seriekommunikation mellan MATLAB och Arduino.
% MATLAB-kod för seriekommunikation mellan Arduino och MATLAB x = seriell ('COM18', 'BAUD', 9600); fopen (x); gå = sant; medan gå a = ingång ('Tryck på 1 för att slå PÅ LED och 0 för att stänga AV:'); fprintf (x, a); om (a == 2) go = false; end end
I den angivna koden används kommandot nedan för att definiera seriekommunikationen i MATLAB. Se till att portportnumret är det portnummer som Arduino är anslutet till och att överföringshastigheten ska ställas in i både koder för Arduino och MATLAB.
x = seriell ('COM18', 'BAUD', 9600);
För att öppna serieport använder du kommandot nedan, fopen (x);
Kommandot nedan används för att skicka data från MATLAB till Arduino seriellt, där x är för att anropa seriell och a är det värde som användaren anger.
fprintf (x, a);
Vi har användning medan funktionen för att skapa en oändlig slinga och när användaren matar in siffran '2' kommer slingan att brytas.
medan gå a = ingång ('Tryck på 1 för att slå PÅ LED och 0 för att stänga AV:'); fprintf (x, a); om (a == 2) go = false; end end
När du har slutfört kodningen av MATLAB-redigeringsskriptet klickar du på ' KÖR ' för att köra ditt program enligt bilden nedan.
MATLAB tar några sekunder för att bearbeta koden och starta seriekommunikationen, vänta tills MATLAB visar meddelandet 'BUSY' längst ned till vänster på programvarans skärm, som visas i bilden nedan.
Nu ser du kommandofönstret för att skicka användarinmatningen, vi har ställt in standardmeddelandet, 'Tryck 1 för att sätta PÅ LED och 0 för att stänga AV:'
Skicka '1' för att slå på lysdioden, '0' för att stänga av lysdioden och '2' för att bryta driften. Du kan ställa in valfritt nummer för vilken uppgift som helst, allt du behöver göra är att bara ändra Arduino-koden i enlighet därmed. Komplett Arduino-kod ges i slutet.
Du kan kolla in videon nedan för att förstå hela processen för att skicka seriell data från MATLAB till Arduino med hjälp av kommandofönstret.
Seriekommunikation med hjälp av MATLAB GUI
För att visa seriekommunikationen med hjälp av MATLAB GUI skapar vi två grafiska knappar med MATLAB för att slå på och av LED-lampan som är ansluten till Arduino. Data kommer att skickas seriellt från MATLAB till Arduino genom att klicka på dessa knappar för att slå på och av lysdioden. Arduino kommer att innehålla koden för mottagning av seriell data från MATLAB och styrning av lysdioden i enlighet med mottagen seriell data. Arduino-koden kommer att förbli densamma som den tidigare, enda skillnad är att vi tidigare skickade seriell data '1' och '0' genom kommandofönstret i MATLAB, och nu kommer samma data att skickas vid klinkning på två grafiska knappar.
För att starta GUI, skriv kommandot nedan i kommandofönstret
guide
Ett popup-fönster öppnas och välj sedan nytt tomt GUI som visas i bilden nedan.
Nu välja två tryckknappar för att slå på och av LED, som visas nedan,
För att ändra storlek eller ändra knapparnas form, klicka bara på den så kan du dra hörnen på knappen. Genom att dubbelklicka på tryckknappen kan du ändra färg, sträng och tagg för just den knappen. Vi har anpassat två knappar som visas i bilden nedan.
Du kan anpassa knapparna enligt ditt val. Nu när du sparar detta kommer en kod att genereras i Editor-fönstret i MATLAB. Redigera den här koden enligt den uppgift du vill utföra av din Arduino med MATLAB GUI. Så nedan har vi redigerat MATLAB-koden. Du kan lära dig mer om kommandofönster, redigeringsfönster etc i Komma igång med MATLAB-handledning.
Komplett MATLAB-kod för att skapa seriell kommunikation mellan MATLAB och Arduino ges i slutet av detta projekt. Vidare inkluderar vi GUI-filen (.fig) och kodfilen (.m) här för nedladdning (högerklicka på länken och välj sedan "Spara länk som…"), med vilken du kan anpassa knapparna enligt ditt behov. Nedan följer några justeringar vi gjorde för att styra lysdioden ansluten till Arduino.
Kopiera och klistra in koden nedan på rad nr. 74 för att ställa in seriell port och baudhastighet.
Rensa alla; global x; x = seriell ('COM18', 'BAUD', 9600); % Se till att överföringshastigheten och COM-porten är % samma som i Arduino IDE fopen (x);
där, fopen (x) används för att öppna den seriella porten för seriell kommunikation.
När du rullar ner ser du att det finns två funktioner skapade för båda knapparna i GUI. Skriv nu koden i båda funktionerna enligt den uppgift du vill utföra med klick.
I LED-ON- knappens funktion, kopiera och klistra in koden nedan strax före slutet av funktionen för att sätta på LED-lampan. Som du ser i koden nedan används fprintf (x, 1) för att skicka seriell data från MATLAB till Arduino-serien. Här skickar vi '1' till Arduino-serien och om du kontrollerar Arduino-koden kommer du att upptäcka att Arduino kommer att lysa lysdioden genom att göra sin 13: e stift HÖG när den får '1' på sin serieport.
global x; fprintf (x, 1);
I LED-OFF- knappens funktion, kopiera och klistra in koden nedan strax före slutet av funktionen för att stänga av LED-lampan. Som du ser i koden nedan används fprintf (x, 0) för att skicka seriell data från MATLAB till Arduino-serien. I den här delen skickar vi '0' till Arduino-serien och om du kontrollerar Arduino-koden kommer du att upptäcka att Arduino stänger av lysdioden genom att göra sin 13: e stift LÅG när den får '0' på sin seriella port.
global x; fprintf (x, 0);
Efter att ha slutfört med MATLAB GUI-kodning och konfigurerat hårdvaran enligt kretsschemat, klicka bara på kör-knappen för att köra den redigerade koden i.m-filen.
MATLAB kan ta några sekunder att svara, klicka inte på någon GUI-knapp förrän MATLAB visar BUSY-indikering, vilket du kan se längst ned till vänster på skärmen som visas nedan,
När allt är klart klickar du på LED-ON och LED-OFF-knappen för att tända och stänga av LED-lampan. När du trycker på LED-ON-knappen går 13: e stift av Arduino HÖGT och LED som är ansluten till den här PIN-koden börjar glöda, och när du trycker på LED-OFF-knappen går 13: e stift av Arduino LOW vilket gör att LED-lampan släcks.
Du kan kolla in videon nedan för att förstå den fullständiga processen för att skicka seriell data från MATLAB till Arduino med hjälp av MATLAB GUI.