- Komponen Diperlukan
- Rajah Litar
- Komunikasi Bersiri menggunakan Tetingkap Perintah MATLAB
- Komunikasi Bersiri menggunakan MATLAB GUI
MATLAB adalah perisian serba boleh yang dapat digunakan untuk pelbagai aplikasi. Dalam tutorial MATLAB sebelumnya, kami telah menerangkan cara menggunakan MATLAB untuk mengawal motor DC, motor Servo dan perkakas rumah. Di sini dalam tutorial ini, kita akan belajar bagaimana menggunakan MATLAB untuk Serial Communication. Untuk akhir komunikasi bersiri, kami di sini menggunakan Arduino.
Terdapat dua cara untuk mengatur komunikasi bersiri antara MATLAB dan Arduino, satu menggunakan tetingkap arahan dan yang lain menggunakan MATLAB GUI. Kod Arduino untuk kedua kaedah akan tetap sama. Sekiranya anda baru menggunakan MATLAB maka disarankan untuk memulakan program LED berkedip sederhana dengan MATLAB dan pelajari terminologi asas yang digunakan dalam MATLAB.
Komponen Diperlukan
- Laptop terpasang MATLAB (Keutamaan: R2016a atau versi di atas)
- Arduino UNO
- LED (warna apa pun)
- Perintang (330 ohm)
Rajah Litar
Gambarajah litar di atas akan tetap sama untuk kedua-dua cara untuk mewujudkan komunikasi bersiri antara MATLAB dan Arduino.
Komunikasi Bersiri menggunakan Tetingkap Perintah MATLAB
Ini adalah kaedah mudah untuk mengatur komunikasi bersiri antara Arduino dan MATLAB. Di sini kita hanya akan menghantar data dari MATLAB ke Arduino secara bersiri menggunakan tetingkap arahan dan kemudian Arduino membaca data bersiri yang masuk. Kemudian data yang dihantar secara bersiri ini dapat digunakan untuk mengawal apa sahaja yang terhubung ke Arduino. Di sini kita telah menyambungkan LED ke Arduino, yang akan dihidupkan dan dimatikan sesuai dengan data yang diterima secara bersiri oleh Arduino.
Pertama, muat naik kod Arduino yang diberikan di Arduino UNO dan kemudian mulakan pengekodan di Tetingkap Editor MATLAB. Untuk membuka skrip editor baru, klik ' Skrip Baru' seperti yang ditunjukkan dalam gambar di bawah:
Kemudian, salin dan tampal kod MATLAB lengkap di bawah ini di tetingkap penyunting untuk komunikasi bersiri antara MATLAB dan Arduino.
% MATLAB Code untuk Serial Communication antara Arduino dan MATLAB x = bersiri ('COM18', 'BAUD', 9600); fopen (x); pergi = benar; sambil pergi a = input ('Tekan 1 untuk menghidupkan LED & 0 untuk mematikan:'); fprintf (x, a); jika (a == 2) go = false; hujung akhir
Dalam kod yang diberikan, perintah di bawah digunakan untuk menentukan komunikasi bersiri dalam MATLAB. Pastikan nombor port com adalah nombor port di mana Arduino disambungkan dan kadar baud harus ditetapkan sama dalam kedua-dua kod Arduino dan MATLAB.
x = bersiri ('COM18', 'BAUD', 9600);
Untuk membuka port bersiri gunakan arahan di bawah ini, fopen (x);
Perintah di bawah digunakan untuk mengirim data dari MATLAB ke Arduino secara bersiri, di mana x adalah untuk memanggil siri dan a adalah nilai yang dimasukkan oleh pengguna.
fprintf (x, a);
Kami menggunakan fungsi sementara untuk membuat gelung tanpa batas dan setiap kali pengguna memasukkan nombor '2' gelung akan pecah.
sambil pergi a = input ('Tekan 1 untuk menghidupkan LED & 0 untuk mematikan:'); fprintf (x, a); jika (a == 2) go = false; hujung akhir
Setelah selesai mengekod skrip editor MATLAB klik pada ' RUN ' untuk menjalankan program anda seperti yang ditunjukkan dalam gambar di bawah,
MATLAB mengambil masa beberapa saat untuk memproses kod dan memulakan komunikasi bersiri, tunggu sehingga MATLAB menunjukkan mesej 'BUSY' di sudut kiri bawah skrin perisian, seperti yang ditunjukkan dalam gambar di bawah.
Sekarang, anda akan melihat tetingkap arahan untuk mengirim input pengguna, kami telah menetapkan pesan lalai
'Tekan 1 untuk menghidupkan LED & 0 untuk mematikan:'
Hantarkan '1' untuk menghidupkan LED, '0' untuk mematikan LED dan '2' untuk menghentikan operasi. Anda boleh menetapkan nombor apa pun untuk tugas apa pun, yang perlu anda lakukan hanyalah menukar kod Arduino dengan sewajarnya. Kod Arduino lengkap diberikan pada akhir.
Anda boleh melihat video di bawah ini untuk memahami proses lengkap Menghantar Data Bersiri dari MATLAB ke Arduino menggunakan Window Perintah.
Komunikasi Bersiri menggunakan MATLAB GUI
Untuk menunjukkan Komunikasi Bersiri menggunakan MATLAB GUI, kami akan membuat dua butang grafik menggunakan MATLAB untuk menghidupkan dan mematikan LED yang disambungkan ke Arduino. Data akan dihantar secara bersiri dari MATLAB ke Arduino apabila mengklik butang ini untuk menghidupkan dan mematikan LED. Arduino akan mengandungi kod untuk menerima data bersiri dari MATLAB dan mengawal LED mengikut data siri yang diterima. Kod Arduino akan tetap sama seperti yang sebelumnya, cuma bezanya, sebelum ini kami mengirim data bersiri '1' dan '0' melalui tetingkap arahan MATLAB, dan sekarang data yang sama akan dikirimkan pada klinking pada dua butang grafik.
Untuk melancarkan GUI, ketik perintah di bawah ini di tetingkap arahan
panduan
Tetingkap pop timbul akan terbuka, kemudian pilih GUI kosong baru seperti yang ditunjukkan dalam gambar di bawah,
Sekarang pilih dua butang tekan untuk menghidupkan dan mematikan LED, seperti gambar di bawah,
Untuk mengubah saiz atau mengubah bentuk butang, cukup klik padanya dan anda akan dapat menyeret sudut butang. Dengan mengklik dua kali pada butang tekan, anda boleh menukar warna, tali dan tanda butang tersebut. Kami telah menyesuaikan dua butang seperti yang ditunjukkan pada gambar di bawah.
Anda boleh menyesuaikan butang mengikut pilihan anda. Sekarang apabila anda menyimpan ini, kod akan dihasilkan di tetingkap Editor MATLAB. Edit kod ini mengikut tugas yang ingin anda laksanakan oleh Arduino anda menggunakan MATLAB GUI. Jadi di bawah ini kami telah mengedit kod MATLAB. Anda boleh mengetahui lebih lanjut mengenai tetingkap Perintah, tetingkap editor dan lain-lain dalam Bermula dengan tutorial MATLAB.
Kod MATLAB yang lengkap, untuk mewujudkan Komunikasi Bersiri antara MATLAB dan Arduino diberikan pada akhir projek ini. Selanjutnya kami menyertakan file GUI (.fig) dan fail kod (.m) di sini untuk diunduh (klik kanan pada pautan kemudian pilih 'Simpan pautan sebagaiā¦'), dengan mana Anda dapat menyesuaikan butang sesuai dengan keperluan anda. Berikut adalah beberapa perubahan yang kami lakukan untuk mengawal LED yang disambungkan dengan Arduino.
Salin dan tampal kod di bawah pada baris no. 74 untuk menetapkan port bersiri dan kadar baud.
kosongkan semua; global x; x = bersiri ('COM18', 'BAUD', 9600); % Pastikan kadar baud dan port COM sama seperti di Arduino IDE fopen (x);
di mana, fopen (x) digunakan untuk membuka port bersiri untuk komunikasi bersiri.
Semasa anda menatal ke bawah, anda akan melihat bahawa terdapat dua fungsi yang dibuat untuk kedua-dua Butang di GUI. Sekarang tuliskan kod dalam kedua fungsi sesuai dengan tugas yang ingin anda lakukan dengan klik.
Dalam fungsi butang LED-ON , salin dan tampal kod di bawah ini sebelum akhir fungsi untuk menghidupkan LED. Seperti yang anda lihat dalam kod di bawah, fprintf (x, 1) digunakan untuk mengirim data bersiri dari MATLAB ke siri Arduino. Di sini kami mengirim '1' ke siri Arduino dan jika anda memeriksa kod Arduino, anda akan dapati Arduino akan menyala LED dengan menjadikan pin ke- 13 TINGGI, ketika menerima '1' pada port bersiri.
global x; fprintf (x, 1);
Dalam fungsi butang LED-OFF , salin dan tampal kod di bawah ini sebelum akhir fungsi untuk mematikan LED. Seperti yang anda lihat dalam kod di bawah, fprintf (x, 0) digunakan untuk mengirim data bersiri dari MATLAB ke siri Arduino. Pada bahagian ini, kami menghantar '0' ke siri Arduino dan jika anda memeriksa kod Arduino, anda akan dapati Arduino akan mematikan LED dengan membuat pin ke- 13 RENDAH, ketika menerima '0' pada port bersiri.
global x; fprintf (x, 0);
Setelah selesai dengan pengkodan MATLAB GUI dan menyiapkan perkakasan mengikut gambarajah litar, cukup klik pada butang jalankan untuk menjalankan kod yang diedit dalam fail.m.
MATLAB mungkin mengambil masa beberapa saat untuk bertindak balas, jangan mengklik butang GUI sehingga MATLAB menunjukkan petunjuk BUSY, yang dapat anda lihat di sudut kiri bawah skrin seperti yang ditunjukkan di bawah,
Apabila semuanya sudah siap, klik pada butang LED-ON dan LED-OFF untuk menghidupkan dan mematikan LED. Apabila anda menekan butang LED-ON , pin ke- 13 Arduino menjadi TINGGI dan LED yang disambungkan ke PIN ini mulai bercahaya, dan apabila anda menekan butang LED-OFF , pin ke- 13 Arduino menjadi RENDAH yang menjadikan LED mati.
Anda boleh melihat video di bawah ini untuk memahami proses lengkap Menghantar Data Bersiri dari MATLAB ke Arduino menggunakan MATLAB GUI.