- Απαιτούμενα στοιχεία
- Διάγραμμα κυκλώματος
- Σειριακή επικοινωνία χρησιμοποιώντας το παράθυρο εντολών MATLAB
- Σειριακή επικοινωνία με χρήση του MATLAB GUI
Το MATLAB είναι ένα ευέλικτο λογισμικό που μπορεί να χρησιμοποιηθεί για μεγάλη ποικιλία εφαρμογών. Σε προηγούμενα μαθήματα του MATLAB, έχουμε εξηγήσει πώς να χρησιμοποιήσετε το MATLAB για τον έλεγχο κινητήρα DC, Servo motor και οικιακές συσκευές. Εδώ σε αυτό το σεμινάριο, θα μάθουμε πώς να χρησιμοποιούμε το MATLAB για σειριακή επικοινωνία. Για το τέλος λήψης της σειριακής επικοινωνίας, είμαστε εδώ χρησιμοποιώντας το Arduino.
Υπάρχουν δύο τρόποι ρύθμισης της σειριακής επικοινωνίας μεταξύ MATLAB και Arduino, ο ένας χρησιμοποιεί το παράθυρο εντολών και ο άλλος χρησιμοποιεί το MATLAB GUI. Ο κωδικός Arduino και για τις δύο μεθόδους θα παραμείνει ο ίδιος. Εάν είστε νέοι στο MATLAB, συνιστάται να ξεκινήσετε με ένα απλό πρόγραμμα αναλαμπής LED με MATLAB και να μάθετε τη βασική ορολογία που χρησιμοποιείται στο MATLAB.
Απαιτούμενα στοιχεία
- Εγκατεστημένος φορητός υπολογιστής MATLAB (Προτίμηση: R2016a ή νεότερες εκδόσεις)
- Arduino UNO
- LED (οποιοδήποτε χρώμα)
- Αντίσταση (330 ohm)
Διάγραμμα κυκλώματος
Το παραπάνω διάγραμμα κυκλώματος θα παραμείνει ίδιο και για τους δύο τρόπους για τη δημιουργία σειριακής επικοινωνίας μεταξύ MATLAB και Arduino.
Σειριακή επικοινωνία χρησιμοποιώντας το παράθυρο εντολών MATLAB
Αυτή είναι η απλή μέθοδος για τη ρύθμιση της σειριακής επικοινωνίας μεταξύ Arduino και MATLAB. Εδώ απλά θα στείλουμε τα δεδομένα από το MATLAB στο Arduino χρησιμοποιώντας το παράθυρο εντολών και στη συνέχεια το Arduino θα διαβάσει τα εισερχόμενα σειριακά δεδομένα. Στη συνέχεια, αυτά τα σειριακά μεταδιδόμενα δεδομένα μπορούν να χρησιμοποιηθούν για τον έλεγχο οτιδήποτε συνδέεται με το Arduino. Εδώ έχουμε συνδέσει ένα LED στο Arduino, το οποίο θα ανάβει και θα σβήνει σύμφωνα με τα σειριακά λαμβανόμενα δεδομένα από το Arduino.
Πρώτα, ανεβάστε τον δεδομένο κωδικό Arduino στο Arduino UNO και μετά ξεκινήστε την κωδικοποίηση στο παράθυρο επεξεργασίας MATLAB. Για να ανοίξετε ένα νέο σενάριο επεξεργαστή, κάντε κλικ στο « Νέο σενάριο» όπως φαίνεται στην παρακάτω εικόνα:
Στη συνέχεια, αντιγράψτε και επικολλήστε τον παρακάτω πλήρη κώδικα MATLAB στο παράθυρο επεξεργασίας για σειριακή επικοινωνία μεταξύ MATLAB και Arduino.
% Κωδικός MATLAB για σειριακή επικοινωνία μεταξύ Arduino και MATLAB x = σειριακό ('COM18', 'BAUD', 9600); fopen (x); go = αλήθεια; ενώ πηγαίνετε a = input ('Πατήστε 1 για να ανάψετε το LED & 0 για να απενεργοποιήσετε:'); fprintf (x, a); αν (a == 2) go = false; τέλος τέλος
Στον δεδομένο κώδικα, χρησιμοποιείται η παρακάτω εντολή για τον ορισμό της σειριακής επικοινωνίας στο MATLAB. Βεβαιωθείτε ότι ο αριθμός θύρας είναι ο αριθμός θύρας στον οποίο είναι συνδεδεμένο το Arduino και ότι ο ρυθμός baud πρέπει να είναι ίδιος και στους δύο κωδικούς Arduino και MATLAB.
x = σειριακό ("COM18", "BAUD", 9600);
Για να ανοίξετε τη σειριακή θύρα χρησιμοποιήστε την παρακάτω εντολή, fopen (x);
Η παρακάτω εντολή χρησιμοποιείται για την αποστολή δεδομένων από το MATLAB στο Arduino σειριακά, όπου το x είναι για κλήση σειριακό και το a είναι η τιμή που εισάγει ο χρήστης.
fprintf (x, a);
Έχουμε τη χρήση ενώ η λειτουργία για τη δημιουργία ενός άπειρου βρόχου και όποτε ο χρήστης εισάγει τον αριθμό «2» ο βρόχος θα σπάσει.
ενώ πηγαίνετε a = input ('Πατήστε 1 για να ανάψετε το LED & 0 για να απενεργοποιήσετε:'); fprintf (x, a); αν (a == 2) go = false; τέλος τέλος
Αφού ολοκληρώσετε την κωδικοποίηση του σεναρίου επεξεργαστή MATLAB κάντε κλικ στο « RUN » για να εκτελέσετε το πρόγραμμά σας όπως φαίνεται στην παρακάτω εικόνα,
Το MATLAB διαρκεί λίγα δευτερόλεπτα για την επεξεργασία του κώδικα και την έναρξη της σειριακής επικοινωνίας, περιμένετε έως ότου το MATLAB εμφανίσει το μήνυμα «BUSY» στην κάτω αριστερή γωνία της οθόνης του λογισμικού, όπως φαίνεται στην παρακάτω εικόνα.
Τώρα, θα δείτε το παράθυρο εντολής για την αποστολή της εισόδου χρήστη, έχουμε ορίσει το προεπιλεγμένο μήνυμα, "Πατήστε 1 για να ανάψετε το LED & 0 για να απενεργοποιήσετε:"
Στείλτε «1» για να ανάψετε το LED, «0» για να σβήσετε το LED και «2» για να διακόψετε τη λειτουργία. Μπορείτε να ορίσετε οποιοδήποτε αριθμό για οποιαδήποτε εργασία, το μόνο που έχετε να κάνετε είναι να αλλάξετε τον κωδικό Arduino ανάλογα. Ο πλήρης κωδικός Arduino δίνεται στο τέλος.
Μπορείτε να δείτε το παρακάτω βίντεο για να κατανοήσετε την πλήρη διαδικασία αποστολής σειριακών δεδομένων από MATLAB στο Arduino χρησιμοποιώντας το παράθυρο εντολών.
Σειριακή επικοινωνία με χρήση του MATLAB GUI
Για την επίδειξη της σειριακής επικοινωνίας χρησιμοποιώντας το MATLAB GUI, θα δημιουργήσουμε δύο κουμπιά γραφικών χρησιμοποιώντας το MATLAB για να ανάβουμε και να σβήσουμε το LED που είναι συνδεδεμένο στο Arduino. Τα δεδομένα θα σταλούν σειριακά από το MATLAB στο Arduino κάνοντας κλικ σε αυτά τα κουμπιά για να ανάψετε και να σβήσετε το LED. Το Arduino θα περιέχει τον κωδικό για τη λήψη σειριακών δεδομένων από το MATLAB και τον έλεγχο της LED σύμφωνα με τα σειριακά δεδομένα που λαμβάνονται. Ο κωδικός Arduino θα παραμείνει ίδιος με τον προηγούμενο, η μόνη διαφορά είναι ότι, προηγουμένως στέλναμε σειριακά δεδομένα «1» και «0» μέσω του παραθύρου εντολών του MATLAB και τώρα τα ίδια δεδομένα θα σταλούν κατά το clinking σε δύο κουμπιά γραφικών.
Για να ξεκινήσετε το GUI, πληκτρολογήστε την παρακάτω εντολή στο παράθυρο εντολών
οδηγός
Θα ανοίξει ένα αναδυόμενο παράθυρο και, στη συνέχεια, επιλέξτε νέο κενό GUI όπως φαίνεται στην παρακάτω εικόνα,
Τώρα επιλέξτε δύο κουμπιά για να ανάψετε και να σβήσετε το LED, όπως φαίνεται παρακάτω,
Για να αλλάξετε το μέγεθος ή να αλλάξετε το σχήμα των κουμπιών, απλώς κάντε κλικ πάνω του και θα μπορείτε να σύρετε τις γωνίες του κουμπιού. Κάνοντας διπλό κλικ στο κουμπί μπορείτε να αλλάξετε το χρώμα, τη συμβολοσειρά και την ετικέτα του συγκεκριμένου κουμπιού. Έχουμε προσαρμόσει δύο κουμπιά όπως φαίνεται στην παρακάτω εικόνα.
Μπορείτε να προσαρμόσετε τα κουμπιά σύμφωνα με την επιλογή σας. Τώρα, όταν το αποθηκεύσετε, θα δημιουργηθεί ένας κώδικας στο παράθυρο του προγράμματος επεξεργασίας του MATLAB. Επεξεργαστείτε αυτόν τον κωδικό σύμφωνα με την εργασία που θέλετε να εκτελέσετε από το Arduino χρησιμοποιώντας το MATLAB GUI. Παρακάτω έχουμε επεξεργαστεί τον κωδικό MATLAB. Μπορείτε να μάθετε περισσότερα σχετικά με το παράθυρο εντολών, το παράθυρο επεξεργασίας κ.λπ. στην ενότητα Ξεκινώντας με το μάθημα MATLAB.
Πλήρης κωδικός MATLAB, για τη δημιουργία Σειριακής Επικοινωνίας μεταξύ MATLAB και Arduino παρέχεται στο τέλος αυτού του έργου. Περαιτέρω συμπεριλαμβάνουμε το αρχείο GUI (.fig) και το αρχείο κώδικα (.m) εδώ για λήψη (κάντε δεξί κλικ στο σύνδεσμο και επιλέξτε «Αποθήκευση συνδέσμου ως…»), χρησιμοποιώντας τα οποία μπορείτε να προσαρμόσετε τα κουμπιά σύμφωνα με τις απαιτήσεις σας. Ακολουθούν μερικές τροποποιήσεις που κάναμε για τον έλεγχο των LED που συνδέονται με το Arduino.
Αντιγράψτε και επικολλήστε τον παρακάτω κώδικα στη γραμμή αρ. 74 για να ρυθμίσετε τη σειριακή θύρα και το ρυθμό baud.
τα καθαρίζω όλα; παγκόσμιο x; x = σειριακό ("COM18", "BAUD", 9600); % Βεβαιωθείτε ότι ο ρυθμός baud και η θύρα COM είναι % ίδιες με αυτές στο Arduino IDE fopen (x).
όπου, το fopen (x) χρησιμοποιείται για το άνοιγμα της σειριακής θύρας για σειριακή επικοινωνία.
Όταν κάνετε κύλιση προς τα κάτω, θα δείτε ότι δημιουργούνται δύο λειτουργίες και για τα δύο κουμπιά στο GUI. Τώρα γράψτε τον κώδικα και στις δύο λειτουργίες σύμφωνα με την εργασία που θέλετε να εκτελέσετε με κλικ.
Στη λειτουργία του κουμπιού LED-ON , αντιγράψτε και επικολλήστε τον παρακάτω κώδικα λίγο πριν από το τέλος της λειτουργίας για να ανάψετε το LED. Όπως βλέπετε στον παρακάτω κώδικα, το fprintf (x, 1) χρησιμοποιείται για την αποστολή σειριακών δεδομένων από το MATLAB στο Arduino serial. Εδώ στέλνουμε «1» στο Arduino σειριακή και αν επιλέξετε το Arduino κωδικό, θα διαπιστώσετε ότι Arduino θα ανάψει το LED κάνοντας 13 ου pin HIGH, όταν λαμβάνει «1» στην σειριακή θύρα του.
παγκόσμιο x; fprintf (x, 1);
Στη λειτουργία του κουμπιού LED-OFF , αντιγράψτε και επικολλήστε τον παρακάτω κώδικα λίγο πριν από το τέλος της λειτουργίας για να σβήσετε το LED. Όπως βλέπετε στον παρακάτω κώδικα, το fprintf (x, 0) χρησιμοποιείται για την αποστολή σειριακών δεδομένων από το MATLAB στο Arduino serial. Σε αυτό το πλαίσιο, στέλνουμε «0» στο Arduino σειριακή και αν επιλέξετε το Arduino κωδικό, θα διαπιστώσετε ότι Arduino θα σβήσει το LED, καθιστώντας 13 ου pin LOW, όταν λαμβάνει «0» στην σειριακή θύρα του.
παγκόσμιο x; fprintf (x, 0);
Αφού ολοκληρώσετε την κωδικοποίηση MATLAB GUI και ρυθμίστε το υλικό σύμφωνα με το διάγραμμα κυκλώματος, απλώς κάντε κλικ στο κουμπί εκτέλεσης για να εκτελέσετε τον επεξεργασμένο κώδικα σε αρχείο.m.
Το MATLAB μπορεί να χρειαστεί λίγα δευτερόλεπτα για να απαντήσει, μην κάνετε κλικ σε κανένα κουμπί GUI έως ότου το MATLAB εμφανίσει την ένδειξη BUSY, την οποία μπορείτε να δείτε στην κάτω αριστερή γωνία της οθόνης, όπως φαίνεται παρακάτω,
Όταν όλα είναι έτοιμα, κάντε κλικ στο κουμπί LED-ON και LED-OFF για να ανάψετε και να σβήσετε το LED. Όταν πατήσετε LED-ON κουμπί , 13 ου pin του Arduino πηγαίνει HIGH και LED συνδέεται με αυτό το PIN αρχίζει να λάμπει και όταν πατήσετε το κουμπί LED-OFF , 13 ου pin του Arduino πηγαίνει ΧΑΜΗΛΗ που κάνει το LED για να απενεργοποιήσετε.
Μπορείτε να δείτε το παρακάτω βίντεο για να κατανοήσετε την πλήρη διαδικασία αποστολής σειριακών δεδομένων από MATLAB στο Arduino χρησιμοποιώντας το MATLAB GUI.