MATLAB은 다양한 응용 프로그램에 사용할 수있는 다목적 소프트웨어입니다. 이전 MATLAB 자습서에서는 MATLAB을 사용하여 DC 모터, 서보 모터 및 가전 제품을 제어하는 방법을 설명했습니다. 이 튜토리얼에서는 직렬 통신에 MATLAB을 사용하는 방법을 배웁니다. 직렬 통신의 수신단을 위해 Arduino를 사용하고 있습니다.
MATLAB과 Arduino간에 직렬 통신 을 설정 하는 방법에는 두 가지가 있습니다. 하나는 명령 창을 사용하는 것이고 다른 하나는 MATLAB GUI를 사용하는 것입니다. 두 방법의 Arduino 코드는 동일하게 유지됩니다. MATLAB을 처음 사용하는 경우 MATLAB으로 간단한 LED 깜박임 프로그램을 시작하고 MATLAB에서 사용되는 기본 용어를 배우는 것이 좋습니다.
필요한 구성 요소
- MATLAB이 설치된 노트북 (기본 설정: R2016a 이상 버전)
- Arduino UNO
- LED (모든 색상)
- 저항기 (330ohm)
회로도
위의 회로도는 MATLAB과 Arduino 간의 직렬 통신을 설정하는 두 가지 방법에 대해 동일하게 유지됩니다.
MATLAB 명령 창을 사용한 직렬 통신
이것은 Arduino와 MATLAB 간의 직렬 통신을 설정하는 간단한 방법입니다. 여기서는 명령 창을 사용하여 MATLAB에서 Arduino로 데이터를 직렬로 전송 한 다음 Arduino가 들어오는 직렬 데이터를 읽습니다. 그런 다음이 직렬 전송 데이터를 사용하여 Arduino에 연결된 모든 것을 제어 할 수 있습니다. 여기서 우리는 Arduino에 LED를 연결했으며 Arduino에서 직렬로 수신 한 데이터에 따라 켜지고 꺼집니다.
먼저 주어진 Arduino 코드를 Arduino UNO에 업로드 한 다음 MATLAB 편집기 창에서 코딩을 시작하십시오. 새 편집기 스크립트를 열려면 아래 이미지와 같이 ' 새 스크립트' 를 클릭하십시오.
그런 다음 MATLAB과 Arduino 간의 직렬 통신을 위해 편집기 창에 아래의 전체 MATLAB 코드를 복사하여 붙여 넣습니다.
Arduino와 MATLAB 간의 직렬 통신을위한 % MATLAB 코드 x = serial ('COM18', 'BAUD', 9600); fopen (x); 이동 = 사실; while go a = input ('1을 누르면 LED가 켜지고 0을 누르면 꺼집니다:'); fprintf (x, a); if (a == 2) go = false; 끝 끝
주어진 코드에서 아래 명령은 MATLAB에서 직렬 통신을 정의하는 데 사용됩니다. com 포트 번호가 Arduino가 연결된 포트 번호인지 확인하고 Arduino 및 MATLAB 코드에서 보오율을 동일하게 설정해야합니다.
x = serial ('COM18', 'BAUD', 9600);
직렬 포트를 열려면 아래 명령을 사용하십시오.
fopen (x);
아래 명령은 MATLAB에서 Arduino로 직렬로 데이터를 보내는 데 사용됩니다. 여기서 x는 직렬 호출 용 이고 a는 사용자가 입력 한 값입니다.
fprintf (x, a);
무한 루프를 생성하기 위해 while 함수를 사용 하며 사용자가 숫자 '2'를 입력 할 때마다 루프가 중단됩니다.
while go a = input ('1을 누르면 LED가 켜지고 0을 누르면 꺼집니다:'); fprintf (x, a); if (a == 2) go = false; 끝 끝
MATLAB 편집기 스크립트 코딩을 완료 한 후 ' RUN '을 클릭하여 아래 이미지와 같이 프로그램을 실행하십시오.
MATLAB은 코드를 처리하고 직렬 통신을 시작하는 데 몇 초가 걸립니다. 아래 이미지와 같이 MATLAB이 소프트웨어 화면의 왼쪽 하단에 'BUSY'메시지가 표시 될 때까지 기다립니다.
이제 사용자 입력을 보내기위한 명령 창이 표시됩니다. 기본 메시지를 설정했습니다.
'LED를 켜려면 1을, 끄려면 0을 누르십시오.'
LED를 켜려면 '1'을, LED를 끄려면 '0'을, 작동을 중단하려면 '2'를 보냅니다. 모든 작업에 대해 임의의 숫자를 설정할 수 있으며, 그에 따라 Arduino 코드를 변경하기 만하면됩니다. 마지막에 완전한 Arduino 코드 가 제공됩니다.
아래 비디오 를 통해 명령 창을 사용하여 MATLAB에서 Arduino로 직렬 데이터를 보내는 전체 프로세스를 이해할 수 있습니다.
MATLAB GUI를 사용한 직렬 통신
MATLAB GUI를 사용하여 직렬 통신을 시연하기 위해 MATLAB 을 사용 하여 Arduino에 연결된 LED를 켜고 끄는 두 개의 그래픽 버튼을 만듭니다. 이 버튼을 클릭하여 LED를 켜고 끄면 데이터가 MATLAB에서 Arduino로 직렬로 전송됩니다. Arduino는 MATLAB에서 직렬 데이터를 수신하고 수신 된 직렬 데이터에 따라 LED를 제어하는 코드를 포함합니다. Arduino 코드는 이전 코드와 동일하게 유지되지만 차이점은 이전에는 MATLAB의 명령 창을 통해 직렬 데이터 '1'과 '0'을 전송했지만 이제는 두 개의 그래픽 버튼을 클릭하면 동일한 데이터가 전송된다는 것입니다.
GUI를 시작하려면 명령 창에 아래 명령을 입력하십시오.
안내서
팝업 창이 열리면 아래 이미지와 같이 새로운 빈 GUI 를 선택하십시오.
이제 아래 그림과 같이 LED를 켜고 끄는 두 개의 푸시 버튼을 선택 합니다.
버튼의 크기를 조정하거나 모양을 변경하려면 버튼을 클릭하기 만하면 버튼의 모서리를 드래그 할 수 있습니다. 푸시 버튼을 더블 클릭하면 특정 버튼의 색상, 문자열 및 태그를 변경할 수 있습니다. 아래 그림과 같이 두 개의 버튼을 사용자 정의했습니다.
원하는대로 버튼을 사용자 지정할 수 있습니다. 이제 이것을 저장하면 MATLAB 의 편집기 창 에 코드가 생성됩니다. MATLAB GUI를 사용하여 Arduino에서 수행하려는 작업에 따라이 코드를 편집하십시오. 그래서 아래에서 MATLAB 코드를 편집했습니다. MATLAB 시작하기 튜토리얼에서 명령 창, 편집기 창 등에 대해 자세히 알아볼 수 있습니다.
이 프로젝트의 끝에 MATLAB과 Arduino 간의 직렬 통신을 설정하기위한 완전한 MATLAB 코드 가 제공됩니다. 또한 여기에 다운로드 할 GUI 파일 (.fig) 및 코드 파일 (.m)이 포함되어 있습니다 (링크를 마우스 오른쪽 버튼으로 클릭 한 다음 '다른 이름으로 링크 저장…'선택).이 파일을 사용하여 요구 사항에 따라 버튼을 사용자 지정할 수 있습니다. 아래는 Arduino와 연결된 LED를 제어하기 위해 수행 한 몇 가지 조정입니다.
아래 코드를 복사하여 번호에 붙여 넣으십시오. 직렬 포트 및 전송 속도를 설정하려면 74.
모두 지우기; 글로벌 x; x = serial ('COM18', 'BAUD', 9600); % 전송 속도와 COM 포트가 Arduino IDE fopen (x) 에서와 동일한 지 확인하십시오 .
여기서 fopen (x) 은 직렬 통신을 위해 직렬 포트를 여는 데 사용됩니다.
아래로 스크롤하면 GUI의 두 버튼에 대해 두 가지 기능이 생성 된 것을 볼 수 있습니다. 이제 클릭시 수행하려는 작업에 따라 두 기능 모두에 코드를 작성하십시오.
에서 LED-ON의 버튼의 기능, 복사 및 LED를 켜려면 그냥 기능이 끝나기 전에 코드 아래에 붙여 넣습니다. 아래 코드에서 볼 수 있듯이 fprintf (x, 1) 는 MATLAB에서 Arduino 직렬로 직렬 데이터를 전송하는 데 사용됩니다. 여기서 우리는 Arduino 직렬에 '1'을 보내고 Arduino 코드를 확인하면 Arduino 가 직렬 포트에서 '1'을 수신 할 때 13 번째 핀을 HIGH 로 만들어 LED를 켜는 것을 알 수 있습니다.
글로벌 x; fprintf (x, 1);
에서 LED-OFF의 버튼의 기능, 복사 및 LED를 끄려면 단지 기능이 끝나기 전에 코드 아래에 붙여 넣습니다. 아래 코드에서 볼 수 있듯이 fprintf (x, 0) 는 MATLAB에서 Arduino 직렬로 직렬 데이터를 전송하는 데 사용됩니다. 우리는 아두 이노 시리얼에 '0'을 보내고있는 당신은 아두 이노 코드를 확인하면, 당신은 아두 이노는 13함으로써 LED를 끌 것이라는 점을 것을을 발견 할 것이다이 부분에서 일 이 시리얼 포트에 '0'을 수신 할 때, 핀 LOW를.
글로벌 x; fprintf (x, 0);
MATLAB GUI 코딩을 완료하고 회로도에 따라 하드웨어를 설정 한 후 실행 버튼을 클릭하기 만하면.m 파일에서 편집 된 코드가 실행됩니다.
MATLAB이 응답하는 데 몇 초가 걸릴 수 있습니다. MATLAB이 BUSY 표시를 표시 할 때까지 GUI 버튼을 클릭하지 마십시오. 이는 아래와 같이 화면의 왼쪽 하단 모서리에 표시됩니다.
모든 준비가 완료되면 LED-ON 및 LED-OFF 버튼을 클릭하여 LED를 켜고 끕니다. 당신이 키를 누르면 LED-ON 버튼 , 13 일 아두 이노의 핀은 HIGH 간다 빛나는 시작이 핀에 연결된 LED, 당신은 누르면 LED-OFF 버튼을 , 13 일 아두 이노의 핀은 LED가 꺼지고하게 LOW 간다.
아래 비디오 를 통해 MATLAB GUI를 사용하여 MATLAB에서 Arduino로 직렬 데이터를 전송 하는 전체 프로세스를 이해할 수 있습니다.