Làm thế nào để kiểm soát các thiết bị gia dụng bằng MATLAB?
Công nghệ mạng tự động hóa gia đình được phát triển vào những năm 90 sau đó và giao thức truyền thông được sử dụng vào thời điểm đó là X10. Kể từ đó, khái niệm tự động hóa ngày càng phổ biến và các giao thức mới nhất đã được phát minh có nhiệm vụ giao tiếp giữa các thiết bị điện tử. Giữ khái niệm tự động hóa trong quan điểm, tôi nghĩ tại sao không kiểm soát tất cả các thiết bị gia dụng bằng phần mềm nổi tiếng nhất được gọi là MATLAB. Trong dự án này, chúng tôi sẽ thiết kế một hệ thống Tự động hóa và sau đó điều khiển nó bằng cách đưa ra một lệnh Serial. Phần mềm sẽ được sử dụng để vận hành hệ thống này được đặt tên là MATLAB và sau khi hoàn thành dự án này, chúng tôi sẽ có thể điều khiển các thiết bị điện của mình bằng cách chỉ cần ngồi trên ghế dài hoặc đặt trên giường.
Làm thế nào để Tự động hóa Thiết bị Gia dụng của Bạn bằng MATLAB GUI?
Bây giờ, hãy tiến tới việc thu thập các thành phần, lắp ráp chúng lại với nhau để tạo thành một mạch, tạo Giao diện người dùng đồ họa MATLAB (GUI) và viết mã trong MATLAB để tự động hóa các thiết bị gia dụng của bạn.
Bước 1: Các thành phần cần thiết (Phần cứng)
Tốt hơn hết là bạn nên biết về các thành phần chi tiết trước khi bắt đầu dự án để tránh bất kỳ sự bất tiện nào ở giữa dự án. Dưới đây là danh sách các thành phần mà chúng tôi sẽ sử dụng:
Ở đây, chúng tôi đang sử dụng mô-đun 8 rơle vì chúng tôi sẽ chỉ điều khiển tám thiết bị. Nếu bạn muốn tự động hóa một số thiết bị mà bạn có, bạn có thể sử dụng một mô-đun rơle khác. Có nhiều mô-đun rơ le có sẵn trên thị trường, ví dụ, rơ le đơn, 8 rơ le, 12 rơ le, v.v.
Bước 2: Các thành phần cần thiết (Phần mềm)
Sau khi sắp xếp các thành phần phần cứng, chúng tôi sẽ tìm kiếm phần mềm sẽ được sử dụng trong dự án. Chúng tôi sẽ cài đặt phiên bản MATLAB mới nhất trên máy tính xách tay hoặc PC mà chúng tôi đang làm việc. MATLAB 2019 là phần mềm mới nhất vì vậy tốt hơn hết bạn nên tải xuống MATLAB 2019. Liên kết đến trang web chính thức của Mathworks có sẵn bên dưới để tải xuống phần mềm. Các gói Hỗ trợ phần cứng có sẵn trong MATLAB 2019 cho Windows 32 bit, 64 bit và Linux 64 bit.
Sau khi tải xuống Proteus 8 Professional, hãy thiết kế mạch trên đó. Tôi đã đưa các mô phỏng phần mềm vào đây để có thể thuận tiện cho những người mới bắt đầu thiết kế mạch và tạo các kết nối thích hợp trên phần cứng.
Bước 3: Nghiên cứu các thành phần
Bây giờ chúng ta đã lập danh sách tất cả các thành phần mà chúng ta sẽ sử dụng trong dự án này. Hãy để chúng tôi tiến thêm một bước và đi qua một nghiên cứu ngắn gọn về tất cả các thành phần phần cứng chính.
Arduino UNO:Các Arduino UNO là một bảng vi điều khiển bao gồm một vi mạch ATMega 328P và được phát triển bởi Arduino.cc. Bo mạch này có một tập hợp các chân dữ liệu kỹ thuật số và tương tự có thể được giao tiếp với các bảng hoặc mạch mở rộng khác. Bo mạch này có 14 chân Digital, 6 chân Analog và có thể lập trình với Arduino IDE (Môi trường phát triển tích hợp) thông qua cáp USB loại B. Nó yêu cầu 5V để cấp nguồn TRÊN và một Mã Cvận hành.
Mô-đun chuyển tiếp 12V:Mô-đun chuyển tiếp là một thiết bị chuyển mạch. Nó nhận tín hiệu và chuyển đổi bất kỳ thiết bị điện tử hoặc thiết bị nào theo tín hiệu đầu vào. Nó hoạt động ở hai chế độ, Thường mở (KHÔNG) và Thường đóng (NC).Ở chế độ Thường mở, ban đầu mạch bị đứt khi tín hiệu đầu vào cho rơle ở mức THẤP. Ở chế độ thường đóng, mạch hoàn thành ban đầu khi tín hiệu đầu vào THẤP.
Mô-đun chuyển đổi cổng nối tiếp RS232 sang TTL: Mô-đun này được sử dụng cho giao tiếp nối tiếp. Bo mạch Arduino UNO của chúng tôi có một cổng giao tiếp nối tiếp được đặt tên là UART hoặc USART. Có hai chân trên bảng Arduino chịu trách nhiệm giao tiếp nối tiếp TX và RX (Chân 0 và chân 1). Hai chân này cũng có mặt trên mô-đun RS232. Mô-đun này được cấp nguồn bởi 5V của Arduino và nó chuyển đổi 5V thành 12V để vận hành các thiết bị khác nhau hoạt động trên 12V. Chúng tôi sử dụng mô-đun này vì các thiết bị điện tử không hoạt động trên nguồn 5V.
Bước 4: Tìm hiểu nguyên tắc làm việc
Sau khi hoàn thành dự án này, chúng tôi sẽ có thể điều khiển các thiết bị từ xa bằng cách đưa ra lệnh nối tiếp. Bảng Arduino được sử dụng để giao tiếp nối tiếp với RS232. Các thiết bị được kết nối với mô-đun Relay và RS232 được kết nối với các chân TX và RX của Arduino và khi nhấn nút nhấn trên MATLAB, một lệnh nối tiếp sẽ được tạo và nó được gửi đến cổng nối tiếp của RS232. BẬT hoặc TẮT thiết bị. Đầu tiên, MATLAB được giao tiếp với bảng Arduino và sau đó mạch được thực hiện trên phần cứng. Nếu ai gặp vấn đề về giao diện MATLAB với Arduino, họ có thể tham khảo bài viết của tôi có tên LÀM THẾ NÀO ĐỂ GIAO DIỆN ARDUINO VỚI MATLAB? và sau đó anh ấy / cô ấy sẽ có thể thực hiện dự án này trên phần cứng. Sau khi hoàn thành dự án này, hãy lắp đặt nó vào một nơi thích hợp, vị trí ưu tiên là gần ổ cắm, nơi đặt hệ thống dây điện của các thiết bị để có thể dễ dàng lắp đặt mô-đun Rơle ở đó.
Bước 5: Sơ đồ mạch
Sơ đồ mạch proteus của dự án sẽ như thế này. Kết nối các thành phần phần cứng theo mạch này sau này.
Bước 6: Bắt đầu với MATLAB
Sau khi thiết kế mạch trên Proteus Mở MATLAB và gõ “hướng dẫn”Trên cửa sổ lệnh. Một hộp thoại sẽ mở ra và từ hộp đó chọn GUI trống. Một bảng thành phần sẽ xuất hiện ở bên trái và nó sẽ liệt kê các thành phần mà bạn muốn đặt trong GUI của mình.
Chọn nút nhấn và đặt 16 nút nhấn trên bảng điều khiển. Đầu tiên, đặt nút BẬT và sau đó đặt nút TẮT song song với nó. Màu sắc và tên của các nút có thể được sửa đổi bằng cách nhấp đúp vào các nút nhấn. Sau khi nhấp vào các nút, cửa sổ thanh tra sẽ mở ra và một số thuộc tính của nút có thể được sửa đổi ở đó. Để thay đổi tên của nút, hãy tìm chuỗi tùy chọn ghi ON trong đó.
Sau khi thay đổi tên nút thay đổi màu nền. (Ghi chú: Bước này là tùy chọn và bạn có thể bỏ qua nếu không muốn thay đổi màu nền)
Đặt 16 nút bấm và thực hiện các thay đổi trên trong cửa sổ thanh tra. Để đặt tên cho Rơle, văn bản tĩnh tùy chọn nằm ở thanh bên trái được sử dụng. Giao diện cuối cùng của GUI của tôi được hiển thị bên dưới:
Sau khi tạo GUI, hãy mở GUI Mã được tạo ở phần phụ trợ và thực hiện một số thay đổi trong mã được nêu dưới đây.
Bước 7: Mã MATLAB của GUI:
function varargout = final (varargin)% FINAL MATLAB mã cho final.fig% FINAL, tự nó, tạo một FINAL mới hoặc tăng% singleton * hiện có. %% H = FINAL trả về xử lý thành FINAL mới hoặc xử lý thành% singleton hiện có *. %% FINAL ('CALLBACK', hObject, eventData, handle, ...) gọi hàm% cục bộ có tên CALLBACK trong FINAL.M với các đối số đầu vào đã cho. %% FINAL ('Thuộc tính', 'Giá trị', ...) tạo một FINAL mới hoặc tăng% singleton hiện có *. Bắt đầu từ bên trái, các cặp giá trị thuộc tính% được áp dụng cho GUI trước khi final_OpeningFcn được gọi. Tên thuộc tính% không được công nhận hoặc giá trị không hợp lệ làm cho ứng dụng thuộc tính% dừng lại. Tất cả các đầu vào được chuyển đến final_OpeningFcn thông qua varargin. %% * Xem Tùy chọn GUI trên menu Công cụ của HƯỚNG DẪN. Chọn "GUI chỉ cho phép một% phiên bản chạy (singleton)". %% Xem thêm: GUIDE, GUIDATA, GUIHANDLES% Chỉnh sửa văn bản ở trên để sửa đổi phản hồi nhằm giúp sửa đổi cuối cùng% Last Modified by GUIDE v2.5 25-08-2019 13:10:11% Bắt đầu mã khởi tạo - KHÔNG CHỈNH SỬA gui_Singleton = 1; gui_State = struct ('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @final_OpeningFcn, ... 'gui_OutputFcn', @final_OutputFcn, ... 'gui_LayoutFcn. .. 'gui_Callback', []); if nargin && ischar (varargin {1}) gui_State.gui_Callback = str2func (varargin {1}); end if nargout [varargout {1: nargout}] = gui_mainfcn (gui_State, varargin {:}); else gui_mainfcn (gui_State, varargin {:}); end% Kết thúc mã khởi tạo - KHÔNG CHỈNH SỬA% --- Các thực thi ngay trước khi hiển thị cuối cùng. function final_OpeningFcn (hObject, eventdata, handle, varargin)% Hàm này không có args đầu ra, hãy xem OutputFcn. % hObject xử lý thành figure% eventdata dành riêng - được xác định trong phiên bản tương lai của MATLAB% cấu trúc xử lý với các điều khiển và dữ liệu người dùng (xem GUIDATA)% varargin đối số dòng lệnh đến cuối cùng (xem VARARGIN)% Chọn đầu ra dòng lệnh mặc định cho các điều khiển cuối cùng .output = hObject; % Cập nhật điều khiển hướng dẫn cấu trúc (hObject, handle); % UIWAIT thực hiện chờ đợi phản hồi cuối cùng của người dùng (xem UIRESUME)% uiwait (handle.figure1); % --- Kết quả đầu ra từ hàm này được trả về dòng lệnh. function varargout = final_OutputFcn (hObject, eventdata, handle) mảng ô varargout% để trả về các args đầu ra (xem VARARGOUT); % hObject xử lý thành figure% eventdata dành riêng - sẽ được xác định trong phiên bản tương lai của MATLAB% cấu trúc xử lý có xử lý và dữ liệu người dùng (xem GUIDATA)% Nhận đầu ra dòng lệnh mặc định từ cấu trúc xử lý varargout {1} = handle.output; Làm sạch tất cả; toàn cầu a; a = arduino; % --- Thực hiện khi nhấn nút trong nút nhấn1. function pushbutton1_Callback (hObject, eventdata, handle)% hObject xử lý thành pushbutton1 (xem GCBO)% eventdata dành riêng - được xác định trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D6', 0); % --- Thực hiện khi nhấn nút trong nút nhấn2. function pushbutton2_Callback (hObject, eventdata, handle)% hObject xử lý thành pushbutton2 (xem GCBO)% eventdata dành riêng - được xác định trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D6', 1); % --- Thực hiện khi nhấn nút trong nút nhấn3. function pushbutton3_Callback (hObject, eventdata, handle)% hObject xử lý thành pushbutton3 (xem GCBO)% eventdata dành riêng - được xác định trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D7', 0); % --- Thực hiện khi nhấn nút trong nút nhấn4. function pushbutton4_Callback (hObject, eventdata, handle)% hObject xử lý thành pushbutton4 (xem GCBO)% eventdata dành riêng - được định nghĩa trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D7', 1); \% --- Thực hiện khi nhấn nút trong nút nhấn5. function pushbutton5_Callback (hObject, eventdata, handle)% hObject xử lý thành pushbutton5 (xem GCBO)% eventdata dành riêng - được định nghĩa trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D8', 0); % --- Thực hiện khi nhấn nút trong nút nhấn6. function pushbutton6_Callback (hObject, eventdata, handle)% hObject xử lý đến pushbutton6 (xem GCBO)% eventdata dành riêng - được xác định trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D8', 1); % --- Thực hiện khi nhấn nút trong nút nhấn7. function pushbutton7_Callback (hObject, eventdata, handle)% hObject xử lý tới pushbutton7 (xem GCBO)% eventdata dành riêng - được định nghĩa trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D9', 0); % --- Thực hiện khi nhấn nút trong nút nhấn8. function pushbutton8_Callback (hObject, eventdata, handle)% hObject xử lý thành pushbutton8 (xem GCBO)% eventdata dành riêng - được định nghĩa trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D9', 1); % --- Thực hiện khi nhấn nút trong nút nhấn9. function pushbutton9_Callback (hObject, eventdata, handle)% hObject xử lý thành pushbutton9 (xem GCBO)% eventdata dành riêng - được định nghĩa trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D10', 0); % --- Thực hiện khi nhấn nút trong nút nhấn10. function pushbutton10_Callback (hObject, eventdata, handle)% hObject xử lý thành pushbutton10 (xem GCBO)% eventdata dành riêng - được định nghĩa trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D10', 1); % --- Thực hiện khi nhấn nút trong nút nhấn11. function pushbutton11_Callback (hObject, eventdata, handle)% hObject xử lý thành pushbutton11 (xem GCBO)% eventdata dành riêng - được định nghĩa trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D11', 0); % --- Thực hiện khi nhấn nút trong nút nhấn12. function pushbutton12_Callback (hObject, eventdata, handle)% hObject xử lý tới pushbutton12 (xem GCBO)% eventdata dành riêng - được xác định trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D11', 1); % --- Thực hiện khi nhấn nút trong nút nhấn13. function pushbutton13_Callback (hObject, eventdata, handle)% hObject xử lý thành pushbutton13 (xem GCBO)% eventdata dành riêng - được định nghĩa trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D12', 0); % --- Thực hiện khi nhấn nút trong nút nhấn14. function pushbutton14_Callback (hObject, eventdata, handle)% hObject xử lý thành pushbutton14 (xem GCBO)% eventdata dành riêng - được định nghĩa trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D12', 1); % --- Thực hiện khi nhấn nút trong nút nhấn15. function pushbutton15_Callback (hObject, eventdata, handle)% hObject xử lý tới pushbutton15 (xem GCBO)% eventdata dành riêng - được định nghĩa trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D13', 0); % --- Thực hiện khi nhấn nút trong nút bấm16. function pushbutton16_Callback (hObject, eventdata, handle)% hObject xử lý thành pushbutton16 (xem GCBO)% eventdata dành riêng - được định nghĩa trong phiên bản tương lai của MATLAB% xử lý cấu trúc với các tay cầm và dữ liệu người dùng (xem GUIDATA) global a; writeDigitalPin (a, 'D13', 1);
Tệp m cùng với Mã GUI có thể được tải xuống từ Đây.
Bước 8: Giải thích mã
Khi chúng tôi tạo MATLAB GUI mã được tạo tự động ở phần phụ trợ và chúng tôi chỉ cần thực hiện một số thay đổi trong Mã. Có tổng cộng 16 chức năng trong mã. Tám là để quay TRÊN rơ le và tám là để quay TẮT các rơ le. Đầu tiên, chúng tôi đã tạo một biến toàn cục có tên ‘A’được khai báo bên ngoài các hàm và sau đó nó được sử dụng trong mọi điều kiện vì nó hữu ích khi nhiều hàm đang truy cập cùng một dữ liệu. Sau đó, chúng tôi đã viết a = arduinotrong Mã vì chúng tôi đang giao tiếp Arduino với MATLAB. Tất cả 16 chức năng được thiết kế cho các nút bấm trong Mã đã được sửa đổi và chúng tôi đã viết ‘0’ để TẮT rơ le và ‘1’ để BẬT rơ le trong các chức năng đó. Bạn sẽ phải thêm hai dòng này vào cuối mỗi hàm và sửa đổi chúng cho phù hợp:
toàn cầu a; writeDigitalPin (a, 'D13', 1);
Bước 9: Lắp ráp phần cứng
Sau khi viết Code, chúng ta sẽ bắt đầu lắp ráp các thành phần phần cứng. Trước tiên, chúng ta cần biết kết nối mô-đun chuyển tiếp. Lấy dây dương của thiết bị và cắt nó. kết nối một đầu với KHÔNG cổng và đầu kia tới COM cổng của mô-đun rơle. Xem hình ảnh bên dưới và kết nối tất cả bốn thiết bị với mô-đun rơle như hình minh họa. Đảm bảo bạn đã vặn chặt các vít của mô-đun tiếp điện để kết nối không bị đứt sau này.
Sau khi kết nối các chân NO và COM của tám mô-đun rơ le với tám thiết bị, chúng tôi sẽ kết nối các chân OUT của mô-đun. Chân số 6-13 của Arduino được sử dụng để kết nối các chân OUT của mô-đun rơle. Cắm chân OUT của Relay 1 vào chân 6 của Arduino rồi thực hiện tất cả các kết nối theo Code. Sử dụng breadboard để tạo các kết nối chung của Vcc và Ground và sau đó đặt dây của hai chân này của mô-đun Relay vào các kết nối đó. Sau khi thực hiện kết nối Relay, hãy kết nối Vcc và Ground của RS232 với 5V và Ground của Arduino tương ứng. Kết nối chân Tx của RS232 với chân RX của Arduino và kết nối chân Rx của RS232 với chân Tx của Arduino. Lấy bộ điều hợp đực Serial DB9 và kết nối một bên với mô-đun chuyển đổi Cổng nối tiếp và một bên với máy tính xách tay hoặc PC mà bạn đang sử dụng.
Đó là nó! Chúng tôi đã hoàn thành dự án tự động hóa của mình và bây giờ chúng tôi có thể điều khiển các thiết bị của mình bằng cách sử dụng MATLAB. Không cần phải đứng dậy và BẬT các thiết bị mà chúng ta có thể BẬT và TẮT chúng từ xa. Nó có thể được thực hiện trong nhà và cũng như văn phòng, v.v.