Nội Dung Bài Viết
Phần mềm Matlab là một phần mềm đa năng được sử dụng rộng rãi, được dùng để tính toán, mô phỏng hệ thống, tạo giao diện GUI, giao tiếp Vi Điều Khiển,…. Bài viết này sẽ giới thiệu đến bạn đọc, một số đoạn code Matlab thiết lập giao tiếp Arduino qua cổng Serial Port.
Thiết lập thuộc tính serial port
Để thiết lập các thuộc tính serial port cho giao tiếp nối tiếp giữa Matlab và Arduino chúng ta cần:
- Khai báo cổng COM kết nối Arduino
- Thiết lập baudrate, parity, databits, stopbit
Thiết lập những thuộc tính trên dùng đoạn code sau:
1 2 3 4 5 6 7 | clc global arduino; arduino=serial('COM13'); % assign serial port object set(arduino, 'BaudRate', 9600); % set BaudRate to 9600 set(arduino, 'Parity', 'none'); % set Parity Bit to None set(arduino, 'DataBits', 8); % set DataBits to 8 set(arduino, 'StopBit', 1); % set StopBit to 1 |
Mở cổng serial port
Sau khi thiết lập thuộc tính serial port, chúng ta cần câu lệnh để mở cổng serial mới có thể giao tiếp matlab với arduino. Dùng câu lệnh sau để mở serial port:
1 | fopen(arduino); % Open Serial Port Object |
Đóng cổng serial port
Trong giao tiếp matlab với arduino qua serial port, có những lúc cần truyền dữ liệu thì chúng ta dùng lệnh để mở serial port. Thế những lúc không cần dùng, cần đóng serial port thì làm sao? Sau đây là câu lệnh để đóng serial port:
1 | fclose(arduino); |
Truyền dữ liệu từ Matlab
Sau khi thiết lập và mở cổng serial port để giao tiếp. Thế khi cần truyền dữ liệu từ matlab qua arduino thì dùng lệnh gì?
1 | fwrite(arduino,'S'); %Print character ‘S’ to the serial port |
Tham khảo thêm: https://www.mathworks.com/help/matlab/ref/fwrite.html
hoặc
1 | fprintf(arduino,'%s\n','S'); %Print character ‘S’ to the serial port |
Tham khảo thêm: https://www.mathworks.com/help/matlab/ref/fprintf.html
Nhận dữ liệu gửi từ Arduino
Trong giao tiếp matlab với arduino, không thể nào mà chỉ truyền dữ liệu từ matlab qua arduino. Chúng ta cũng phải cần nhận dữ liệu được gửi từ arduino.
1 | fscanf(arduino,'%s'); % must define the input % d or %s, etc. |
Tham khảo thêm: https://www.mathworks.com/help/matlab/ref/fscanf.html
Code demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | clc global arduino; disp('Welcome to SVTDHNLU'); disp(''); disp('https://svtdhnlu.com'); disp(''); arduino=serial('COM13'); % assign serial port object set(arduino, 'BaudRate', 9600); % set BaudRate to 9600 set(arduino, 'Parity', 'none'); % set Parity Bit to None set(arduino, 'DataBits', 8); % set DataBits to 8 set(arduino, 'StopBit', 1); % set StopBit to 1 %display the properties of serial port object in MATLAB Window disp(get(arduino,{'Type','Name','Port','BaudRate','Parity','DataBits','StopBits'})); fopen(arduino); % Open Serial Port Object disp('Serial port is opened'); fclose(arduino); disp('Serial port is closed'); |
Kết quả đoạn code
Kết nối arduino với máy tính và nhấn RUN chạy chương trình, sẽ được kết quả:
Download file
Bài viết các bạn có thể tham khảo: