- Thành phần bắt buộc
- Sơ đồ mạch
- Giao tiếp nối tiếp sử dụng Cửa sổ lệnh MATLAB
- Giao tiếp nối tiếp sử dụng MATLAB GUI
MATLAB là phần mềm đa năng có thể được sử dụng cho nhiều ứng dụng. Trong các hướng dẫn trước của MATLAB, chúng tôi đã giải thích cách sử dụng MATLAB để điều khiển động cơ DC, động cơ Servo và Thiết bị gia dụng. Ở đây trong hướng dẫn này, chúng ta sẽ học cách sử dụng MATLAB cho Giao tiếp nối tiếp. Đối với kết thúc nhận của giao tiếp nối tiếp, chúng tôi đang sử dụng Arduino.
Có hai cách để thiết lập giao tiếp nối tiếp giữa MATLAB và Arduino, một là sử dụng cửa sổ lệnh và cách khác là sử dụng MATLAB GUI. Mã Arduino cho cả hai phương pháp sẽ được giữ nguyên. Nếu bạn chưa quen với MATLAB thì bạn nên bắt đầu với chương trình nhấp nháy đèn LED đơn giản với MATLAB và học các thuật ngữ cơ bản được sử dụng trong MATLAB.
Thành phần bắt buộc
- Máy tính xách tay đã cài đặt MATLAB (Tùy chọn: phiên bản R2016a trở lên)
- Arduino UNO
- LED (bất kỳ màu nào)
- Điện trở (330 ohm)
Sơ đồ mạch
Sơ đồ mạch trên sẽ vẫn giữ nguyên cho cả hai cách thiết lập giao tiếp nối tiếp giữa MATLAB và Arduino.
Giao tiếp nối tiếp sử dụng Cửa sổ lệnh MATLAB
Đây là phương pháp đơn giản để thiết lập giao tiếp nối tiếp giữa Arduino và MATLAB. Ở đây, chúng tôi sẽ gửi dữ liệu từ MATLAB đến Arduino một cách tuần tự bằng cửa sổ lệnh và sau đó Arduino đọc dữ liệu nối tiếp đến. Sau đó, dữ liệu được truyền nối tiếp này có thể được sử dụng để điều khiển bất kỳ thứ gì được kết nối với Arduino. Ở đây chúng tôi đã kết nối một đèn LED với Arduino, đèn LED sẽ được bật và tắt theo dữ liệu nhận được nối tiếp bởi Arduino.
Đầu tiên, tải lên mã Arduino đã cho trong Arduino UNO và sau đó bắt đầu viết mã trong Cửa sổ biên tập MATLAB. Để mở một tập lệnh biên tập mới, hãy nhấp vào ' Tập lệnh mới' như được hiển thị trong hình ảnh dưới đây:
Sau đó, sao chép và dán mã MATLAB hoàn chỉnh bên dưới vào cửa sổ trình soạn thảo để giao tiếp nối tiếp giữa MATLAB và Arduino.
% MATLAB Mã cho giao tiếp nối tiếp giữa Arduino và MATLAB x = serial ('COM18', 'BAUD', 9600); fopen (x); go = true; while go a = input ('Nhấn phím 1 để BẬT LED & 0 để TẮT:'); fprintf (x, a); if (a == 2) go = false; kết thúc cuối cùng
Trong đoạn mã đã cho, lệnh dưới đây được sử dụng để xác định giao tiếp nối tiếp trong MATLAB. Đảm bảo số cổng com là số cổng mà Arduino được kết nối và tốc độ truyền phải được đặt giống nhau trong cả mã của Arduino và MATLAB.
x = nối tiếp ('COM18', 'BAUD', 9600);
Để mở cổng nối tiếp, hãy sử dụng lệnh dưới đây, fopen (x);
Lệnh dưới đây được sử dụng để gửi dữ liệu từ MATLAB đến Arduino theo thứ tự, trong đó x là để gọi nối tiếp và a là giá trị được nhập bởi người dùng.
fprintf (x, a);
Chúng tôi sử dụng hàm while để tạo một vòng lặp vô hạn và bất cứ khi nào người dùng nhập số '2', vòng lặp sẽ bị phá vỡ.
while go a = input ('Nhấn phím 1 để BẬT LED & 0 để TẮT:'); fprintf (x, a); if (a == 2) go = false; kết thúc cuối cùng
Sau khi hoàn thành mã hóa tập lệnh biên tập MATLAB, nhấp vào ' RUN ' để chạy chương trình của bạn như thể hiện trong hình ảnh bên dưới,
MATLAB mất vài giây để xử lý mã và bắt đầu giao tiếp nối tiếp, hãy đợi cho đến khi MATLAB hiển thị thông báo 'BUSY' ở góc dưới cùng bên trái của màn hình phần mềm, như thể hiện trong hình ảnh bên dưới.
Bây giờ, bạn sẽ thấy cửa sổ lệnh để gửi đầu vào của người dùng, chúng tôi đã đặt thông báo mặc định, 'Nhấn 1 để BẬT LED & 0 để TẮT:'
Gửi '1' để bật đèn LED, '0' để TẮT đèn LED và '2' để ngắt hoạt động. Bạn có thể đặt bất kỳ số nào cho bất kỳ tác vụ nào, tất cả những gì bạn phải làm chỉ là thay đổi mã Arduino cho phù hợp. Mã Arduino hoàn chỉnh được đưa ra ở cuối.
Bạn có thể xem video dưới đây để hiểu toàn bộ quá trình Gửi dữ liệu nối tiếp từ MATLAB sang Arduino bằng Command Window.
Giao tiếp nối tiếp sử dụng MATLAB GUI
Để trình diễn Giao tiếp nối tiếp bằng MATLAB GUI, chúng tôi sẽ tạo hai nút đồ họa sử dụng MATLAB để bật và tắt đèn LED được kết nối với Arduino. Dữ liệu sẽ được gửi tuần tự từ MATLAB đến Arduino khi nhấp vào các nút này để bật và tắt đèn LED. Arduino sẽ chứa mã để nhận dữ liệu nối tiếp từ MATLAB và điều khiển đèn LED theo dữ liệu nối tiếp nhận được. Mã Arduino sẽ vẫn giống như trước, chỉ khác ở chỗ, trước đây chúng ta đã gửi dữ liệu nối tiếp '1' và '0' thông qua cửa sổ lệnh của MATLAB, và bây giờ dữ liệu tương tự sẽ được gửi khi nhấp nháy trên hai nút đồ họa.
Để khởi chạy GUI, hãy nhập lệnh dưới đây vào cửa sổ lệnh
hướng dẫn
Một cửa sổ bật lên sẽ mở ra, sau đó chọn GUI trống mới như được hiển thị trong hình ảnh bên dưới,
Bây giờ chọn hai nút để BẬT và TẮT đèn LED, như hình dưới đây,
Để thay đổi kích thước hoặc thay đổi hình dạng của các nút, chỉ cần nhấp vào nó và bạn sẽ có thể kéo các góc của nút. Bằng cách nhấp đúp vào nút bấm, bạn có thể thay đổi màu sắc, chuỗi và thẻ của nút cụ thể đó. Chúng tôi đã tùy chỉnh hai nút như thể hiện trong hình dưới đây.
Bạn có thể tùy chỉnh các nút theo sự lựa chọn của mình. Bây giờ khi bạn lưu nó, một đoạn mã sẽ được tạo ra trong cửa sổ Editor của MATLAB. Chỉnh sửa mã này theo tác vụ bạn muốn thực hiện bởi Arduino của mình bằng MATLAB GUI. Vì vậy, dưới đây chúng tôi đã chỉnh sửa mã MATLAB. Bạn có thể tìm hiểu thêm về Cửa sổ lệnh, cửa sổ trình soạn thảo, v.v. trong hướng dẫn Bắt đầu với MATLAB.
Mã MATLAB hoàn chỉnh, để thiết lập Giao tiếp nối tiếp giữa MATLAB và Arduino được đưa ra ở cuối dự án này. Hơn nữa, chúng tôi đang bao gồm tệp GUI (.fig) và tệp mã (.m) tại đây để tải xuống (nhấp chuột phải vào liên kết sau đó chọn 'Lưu liên kết thành…'), sử dụng mà bạn có thể tùy chỉnh các nút theo yêu cầu của mình. Dưới đây là một số tinh chỉnh chúng tôi đã thực hiện để điều khiển đèn LED được kết nối với Arduino.
Sao chép và dán đoạn mã dưới đây vào dòng số. 74 để thiết lập cổng nối tiếp và tốc độ truyền.
Làm sạch tất cả; toàn cầu x; x = nối tiếp ('COM18', 'BAUD', 9600); % Đảm bảo tốc độ truyền và cổng COM là % giống như trong Arduino IDE fopen (x);
trong đó, fopen (x) được sử dụng để mở cổng nối tiếp cho giao tiếp nối tiếp.
Khi cuộn xuống, bạn sẽ thấy có hai chức năng được tạo cho cả hai Nút trong GUI. Bây giờ viết mã trong cả hai chức năng theo tác vụ bạn muốn thực hiện khi nhấp chuột.
Trong chức năng của nút BẬT LED , hãy sao chép và dán đoạn mã dưới đây ngay trước khi kết thúc chức năng để BẬT đèn LED. Như bạn thấy trong đoạn mã dưới đây, fprintf (x, 1) được sử dụng để gửi dữ liệu nối tiếp từ MATLAB sang nối tiếp Arduino. Ở đây chúng tôi đang gửi '1' đến nối tiếp Arduino và nếu bạn kiểm tra mã Arduino, bạn sẽ thấy rằng Arduino sẽ phát sáng đèn LED bằng cách đặt chân thứ 13 của nó CAO, khi nó nhận được '1' trên cổng nối tiếp của nó.
toàn cầu x; fprintf (x, 1);
Trong chức năng của nút TẮT LED , hãy sao chép và dán đoạn mã dưới đây ngay trước khi kết thúc chức năng để TẮT đèn LED. Như bạn thấy trong đoạn mã dưới đây, fprintf (x, 0) được sử dụng để gửi dữ liệu nối tiếp từ MATLAB đến nối tiếp Arduino. Trong phần này, chúng tôi đang gửi '0' đến nối tiếp Arduino và nếu bạn kiểm tra mã Arduino, bạn sẽ thấy rằng Arduino sẽ tắt đèn LED bằng cách đặt chân thứ 13 của nó THẤP, khi nó nhận được '0' trên cổng nối tiếp của nó.
toàn cầu x; fprintf (x, 0);
Sau khi hoàn thành với mã hóa MATLAB GUI và thiết lập phần cứng theo sơ đồ mạch, chỉ cần nhấp vào nút chạy để chạy mã đã chỉnh sửa trong tệp.m.
MATLAB có thể mất vài giây để phản hồi, không nhấp vào bất kỳ nút GUI nào cho đến khi MATLAB hiển thị chỉ báo BẬN, bạn có thể thấy ở góc dưới bên trái của màn hình như hình dưới đây,
Khi mọi thứ đã sẵn sàng, hãy nhấp vào nút LED-ON và LED-OFF để BẬT và TẮT đèn LED. Khi bạn nhấn nút LED-ON , chân thứ 13 của Arduino sẽ ở mức CAO và đèn LED được kết nối với mã PIN này bắt đầu phát sáng và khi bạn nhấn nút LED-OFF , chân thứ 13 của Arduino sẽ ở mức THẤP làm cho đèn LED tắt.
Bạn có thể xem video dưới đây để hiểu toàn bộ quy trình Gửi dữ liệu nối tiếp từ MATLAB sang Arduino bằng MATLAB GUI.