- Componentes necessários
- Diagrama de circuito
- Comunicação serial usando a janela de comando MATLAB
- Comunicação serial usando MATLAB GUI
MATLAB é um software versátil que pode ser usado para uma ampla variedade de aplicações. Em tutoriais anteriores do MATLAB, explicamos como usar o MATLAB para controlar o motor DC, servo motor e eletrodomésticos. Aqui neste tutorial, aprenderemos como usar o MATLAB para comunicação serial. Para a extremidade receptora da comunicação serial, estamos usando o Arduino.
Existem duas maneiras de configurar a comunicação serial entre o MATLAB e o Arduino, uma é usando a janela de comando e a outra usando a GUI do MATLAB. O código do Arduino para ambos os métodos permanecerá o mesmo. Se você é novo no MATLAB, é recomendável começar com o programa simples de piscar de LED com MATLAB e aprender a terminologia básica usada no MATLAB.
Componentes necessários
- Laptop instalado com MATLAB (preferência: R2016a ou versões superiores)
- Arduino UNO
- LED (qualquer cor)
- Resistor (330 ohm)
Diagrama de circuito
O diagrama de circuito acima permanecerá o mesmo para as duas maneiras de estabelecer comunicação serial entre o MATLAB e o Arduino.
Comunicação serial usando a janela de comando MATLAB
Este é o método simples para configurar a comunicação serial entre o Arduino e o MATLAB. Aqui, simplesmente enviaremos os dados do MATLAB para o Arduino em série usando a janela de comando e, em seguida, o Arduino lerá os dados seriais de entrada. Então, esses dados transmitidos em série podem ser usados para controlar qualquer coisa conectada ao Arduino. Aqui conectamos um LED ao Arduino, que será ligado e desligado de acordo com os dados recebidos em série pelo Arduino.
Primeiro, carregue o código do Arduino fornecido no Arduino UNO e, em seguida, comece a codificar na janela do editor MATLAB. Para abrir um novo script de editor, clique em ' Novo Script' conforme mostrado na imagem abaixo:
Em seguida, copie e cole o código MATLAB completo abaixo na janela do editor para comunicação serial entre o MATLAB e o Arduino.
% Código MATLAB para comunicação serial entre Arduino e MATLAB x = serial ('COM18', 'BAUD', 9600); fopen (x); go = true; enquanto vá a = entrada ('Pressione 1 para ligar o LED e 0 para desligar:'); fprintf (x, a); if (a == 2) go = false; fim fim
No código fornecido, o comando abaixo é usado para definir a comunicação serial no MATLAB. Certifique-se de que o número da porta de comunicação seja o número da porta na qual o Arduino está conectado e a taxa de transmissão deve ser definida da mesma forma nos códigos do Arduino e MATLAB.
x = serial ('COM18', 'BAUD', 9600);
Para abrir a porta serial, use o comando abaixo, fopen (x);
O comando abaixo é usado para enviar dados do MATLAB para o Arduino serialmente, onde x é para chamar serial e a é o valor inserido pelo usuário.
fprintf (x, a);
Usamos a função while para criar um loop infinito e sempre que o usuário inserir o número '2', o loop será interrompido.
enquanto vá a = entrada ('Pressione 1 para ligar o LED e 0 para desligar:'); fprintf (x, a); if (a == 2) go = false; fim fim
Depois de concluir a codificação do script do editor MATLAB, clique em ' RUN ' para executar o programa conforme mostrado na imagem abaixo,
O MATLAB leva alguns segundos para processar o código e iniciar a comunicação serial, aguarde até que o MATLAB mostre a mensagem 'BUSY' no canto inferior esquerdo da tela do software, conforme mostrado na imagem abaixo.
Agora, você verá a janela de comando para enviar a entrada do usuário, definimos a mensagem padrão, 'Pressione 1 para ligar o LED e 0 para desligar:'
Envie '1' para ligar o LED, '0' para desligar o LED e '2' para interromper a operação. Você pode definir qualquer número para qualquer tarefa, tudo o que você precisa fazer é apenas alterar o código do Arduino de acordo. O código Arduino completo é fornecido no final.
Você pode conferir o vídeo abaixo para entender o processo completo de envio de dados seriais do MATLAB para o Arduino usando a janela de comando.
Comunicação serial usando MATLAB GUI
Para demonstrar a comunicação serial usando MATLAB GUI, criaremos dois botões gráficos usando MATLAB para ligar e desligar o LED conectado ao Arduino. Os dados serão enviados em série do MATLAB para o Arduino ao clicar nesses botões para ligar e desligar o LED. O Arduino conterá o código para receber dados seriais do MATLAB e controlar o LED de acordo com os dados seriais recebidos. O código do Arduino permanecerá o mesmo que o anterior, a única diferença é que, anteriormente estávamos enviando dados seriais '1' e '0' através da janela de comando do MATLAB, e agora os mesmos dados serão enviados ao tilintar de dois botões gráficos.
Para iniciar a GUI, digite o comando abaixo na janela de comando
guia
Uma janela pop-up será aberta, selecione uma nova GUI em branco, conforme mostrado na imagem abaixo,
Agora escolha dois botões para ligar e desligar o LED, conforme mostrado abaixo,
Para redimensionar ou alterar a forma dos botões, basta clicar sobre ele e você poderá arrastar os cantos do botão. Ao clicar duas vezes no botão, você pode alterar a cor, a string e a marca desse botão específico. Nós personalizamos dois botões conforme mostrado na imagem abaixo.
Você pode personalizar os botões de acordo com sua escolha. Agora, ao salvar isso, um código será gerado na janela do Editor do MATLAB. Edite este código de acordo com a tarefa que você deseja executar em seu Arduino usando a GUI do MATLAB. Abaixo, editamos o código MATLAB. Você pode aprender mais sobre a janela de comando, janela do editor etc. no tutorial de Introdução ao MATLAB.
O código completo do MATLAB, para estabelecer a comunicação serial entre o MATLAB e o Arduino, é fornecido no final deste projeto. Além disso, estamos incluindo o arquivo GUI (.fig) e o arquivo de código (.m) aqui para download (clique com o botão direito no link e selecione 'Salvar link como…'), usando o qual você pode personalizar os botões de acordo com sua necessidade. Abaixo estão alguns ajustes que fizemos para controlar o LED conectado ao Arduino.
Copie e cole o código abaixo na linha no. 74 para configurar a porta serial e a taxa de baud.
limpar tudo; global x; x = serial ('COM18', 'BAUD', 9600); % Certifique-se de que a taxa de transmissão e a porta COM são as mesmas do Arduino IDE fopen (x);
onde, fopen (x) é usado para abrir a porta serial para comunicação serial.
Ao rolar para baixo, você verá que há duas funções criadas para ambos os botões na GUI. Agora escreva o código em ambas as funções de acordo com a tarefa que deseja executar no clique.
Na função do botão LED-ON , copie e cole o código abaixo pouco antes do final da função para ligar o LED. Como você vê no código a seguir, fprintf (x, 1) é usado para enviar dados seriais do MATLAB para o Arduino serial. Aqui estamos enviando '1' para a série Arduino e se você verificar o código Arduino, você vai achar que Arduino vai brilhar o LED, fazendo seu 13 º pin ALTA, quando recebe '1' em sua porta serial.
global x; fprintf (x, 1);
Na função do botão LED-OFF , copie e cole o código abaixo antes de terminar a função para desligar o LED. Como você vê no código a seguir, fprintf (x, 0) é usado para enviar dados seriais do MATLAB para o Arduino serial. Nesta parte, estamos enviando '0' para a série Arduino e se você verificar o código Arduino, você vai achar que Arduino vai desligar o LED, fazendo seu 13 º LOW pin, quando recebe '0' na sua porta serial.
global x; fprintf (x, 0);
Depois de concluir a codificação MATLAB GUI e configurar o hardware de acordo com o diagrama de circuito, basta clicar no botão Executar para executar o código editado no arquivo.m.
O MATLAB pode levar alguns segundos para responder, não clique em nenhum botão da GUI até que o MATLAB mostre a indicação BUSY, que você pode ver no canto inferior esquerdo da tela, conforme mostrado abaixo,
Quando tudo estiver pronto, clique no botão LED-ON e LED-OFF para ligar e desligar o LED. Quando você pressiona LED-ON botão , 13 th pino de Arduino vai ALTO e LED ligado a este PIN começa a brilhante, e quando você pressiona o botão LED-OFF , 13 th pino de Arduino vai baixa, o que faz com que o LED para desligar.
Você pode conferir o vídeo abaixo para entender o processo completo de envio de dados seriais do MATLAB para o Arduino usando a GUI do MATLAB.