Criando aplicações gráficas com Arduino e LabVIEW 48

LabVIEW (Laboratory Virtual Instrument Engineering Workbench), do fabricante National Instruments, é um ambiente de desenvolvimento de programas industriais de forma gráfica. A programação é chamada linguagem “G”. Foi originalmente lançado em 1986 para ser usado com o Macintosh da Apple mas atualmente está disponível para diversas plataformas como Windows e Linux, sendo possível também usar o Arduino e LabVIEW. É amplamente utilizado em ambientes industriais para aquisição de dados, controle de instrumentos e automação industrial.

Interface LabVIEW

Com LabVIEW é possível criar aplicações gráficas para controlar os periféricos do Arduino com controles e indicadores. Neste tutorial iremos mostrar os primeiros passos de criação de um projeto no LabVIEW, instalação do Arduino Toolkit e um pequeno exemplo para ligar e desligar um LED conectado ao Arduino.

Instalação do LabVIEW

Neste tutorial sobre a utilização do Arduino e LabView utilizaremos Windows como ambiente de desenvolvimento.

É possível instalar a versão gratuita do LabVIEW para avaliação. Entre no link abaixo e escolha a versão LabVIEW 2017.

http://www.ni.com/pt-br/shop/labview/download.html

Baixar LabVIEW

Siga normalmente a instalação conforme as instruções do instalador.

Instalação do VIPM e Arduino Toolkit

Para instalar o pacote que habilita a utilização do Arduino e LabVIEW, iremos usar o VI Package Manager.

Primeiramente baixe o VIMP aqui: http://www.ni.com/gate/gb/GB_EVALTLKTLVARDIO/US

Após a instalação execute o VIPM e pesquise por “arduino” na barra de pesquisas. Selecione “LabVIEW interface for Arduino” e clique em instalar pacotes (Ícone com setinha verde).

Package Manager LabVIEW

Instalação do Firmware LabVIEW no Arduino

O Arduino precisa ser gravado com um firmware específico para funcionar juntamente com o LabVIEW. Tenha seu Arduino em mãos e a IDE Arduino já instalada.

Abra a IDE Arduino e procure pelo firmware LIFA_Base.ino na pasta:

C:\Program Files (x86)\National Instruments\LabVIEW 2017\vi.lib\LabVIEW Interface for Arduino\Firmware\LIFA_Base

Então carregue o firmware no Arduino.

Criação do primeiro projeto no LabVIEW

Execute o LabVIEW e selecione create project.

Criar projeto LabVIEW

Selecione então Blank VI.

Blank VI

Ao abrir o novo projeto Blank VI você verá duas janelas. Uma será usada para montagem do diagrama de blocos e o outra para o painel frontal. Coloque as janelas lado a lado para facilitar o desenvolvimento.

Painéis LabVIEW

Na janela da direita (janela painel frontal)  clique com o botão direito do mouse para abrir o painel de controles. Nesse painel você encontra vários blocos de controle.

Controles LabVIEW

Selecione a categoria Boolean e você verá vários tipos de chaves, indicadores LED e botões. Escolha uma chave liga/desliga e arraste para o painel. Escolha também um LED.

É possível ajustar o tamanho e renomear os elementos.

Controles LabVIEW

Note que ao posicionarmos os elementos de controle no painel, apareceram dois elementos no diagrama de blocos.

Blocos LabVIEW

Com esses componentes do diagrama de blocos faremos a “programação” de modo gráfico. Note a pequena seta nos blocos. No bloco Chave a seta está a direita indicando que o elemento possui uma saída. No bloco LED a seta está a esquerda indicando uma entrada.

Conecte agora os dois elementos clicando na seta da chave e depois clicando na seta do LED. Você deverá ver uma pequena linha pontilhada indicando a conexão.

Conexão Componentes

Para ver o programa em funcionamento execute a aplicação em modo loop.

Funcionamento Aplicação

Projeto Arduino e LabVIEW

No pequeno exemplo anterior, usamos os blocos chamados de controle. Para este exemplo utilizaremos outros blocos de função que fazem parte do painel de diagrama de blocos. Os blocos de função possuem entrada e saída da mesma forma como os blocos de controle. Clique com botão direto na janela de diagrama de blocos e selecione a seção Arduino.

Funções LabVIEW

Segue abaixo uma breve descrição de cada bloco que iremos utilizar.

Bloco Init

Bloco Init

Abre a conexão com a placa Arduino com baudrate default de 115200.

Bloco Close

Bloco Close

Fecha a conexão com a placa Arduino liberando a porta serial.

Bloco Set Digital Pin Mode

Bloco Digital Pin

Configura o modo de trabalho do pino escolhido como entrada ou saída digital.

Bloco Digital Write Pin

Bloco Digital Write Pin

Escreve um valor digital do pino (liga/desliga).

Outros blocos que utilizaremos são os seguintes:

While Loop

Programming -> Structures -> While Loop

Bloco While Loop

Bloco que envolve outros blocos com os quais se deseja realizar um loop no programa.

Boolean To (0,1)

Mathemathics -> Numeric -> Conversion -> Boolean To (0,1)

Bloco Boolean

Converte um valor booleano para um inteiro.

Dica: caso tenha dúvida sobre a função de algum bloco, clique com botão direito em cima do bloco e então clique em Help. Irá abrir uma janela explicando o funcionamento daquele bloco.

Para adicionar valores de entrada nos blocos, é possível clicar na entrada com o botão direito, então create -> constant. Assim colocamos o valor 13 e um enumerador com valores Input e Output.

Diagrama

No painel frontal, iremos colocar uma chave liga/desliga e um botão STOP.

Componentes

Note que foram criados no painel de funções seus respectivos blocos.

Diagrama While Loop

A chave será conectada ao conversor booleano que por sua vez é conectado a entrada do bloco Digital Write. O botão STOP é conectado ao componente de parada do While Loop.

A conexão completa dos blocos ficou da seguinte maneira:

Arduino e LabVIEW

Agora clique no botão Run e veja o projeto em funcionamento

Desafio! Fica como tarefa de casa montar o exemplo deste vídeo.

Referências

Baixar labview
http://www.ni.com/pt-br/shop/labview/download.html

Baixar VI Package manager
http://www.ni.com/gate/gb/GB_EVALTLKTLVARDIO/US

Instalação arduino toolkit
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000PAS1SAO

Instalação Firmware LIFA
http://digital.ni.com/public.nsf/allkb/8C07747189606D148625789C005C2DD6?

Fazendo um pisca com bloco indicador de LED
https://www.youtube.com/watch?v=_SBbsab83sI

Gostou? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial. 

Faça seu comentário

Acesse sua conta e participe

48 Comentários

  1. Olá, boa noite. Testei aqui com a versão 2020, aparentemente carregou tudo do firmware no arduino, fiz como esta no labview, mas não deu certo, averiguei alguns comentários, e tentei colocar a com no VI de “Init.vi”, mas também não ocorreu efeito. Não sei o que esta faltando para mim, fiz igualzinho esta no tutorial, seria por causa da versão 2020?

    1. Percebi so agora que o TX e RX estão apagados, diferente do gif do tutorial acima.

    2. Felipe,

      Pode ser que tenha alguma incompatibilidade.

      Abraços!
      Diogo – Equipe MakerHero

  2. Bom dia

    Por favor,a conexão entre meu arduino e o labview apresenta o erro 5002.
    No site da NI ele fala para atualizar o drive NI Visa para a ultima versão.
    Saberia me informar se isso tem algum custo?

    att

    1. Olá Lucas,

      Acredito que não tenha nenhum custo atualizar para uma nova versão.

      Abraço!
      Rosana – Equipe MakerHero

  3. Gostei muito. Me ajudou a entender como incluir o Arduíno no Labview. Agora tem o Linx que trouxe algumas facilidades, que instalei graças às explicações aqui. Mas tenho uma dúvida, preciso ler a tensão de alimentação do Arduíno, nessa tarefa, uso um comando _bv(MUX1), mas poderia ser bit(). Mas direto na IDE do Arduíno. Tem estes comandos no Labview? Não achei nada a respeito, até agora.

    1. Este é o código inteiro para ler a tensão de alimentação no arduino:

      long readVcc() {
      ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
      delay(2); // Wait for Vref to settle
      ADCSRA |= _BV(ADSC); // Start conversion
      while (bit_is_set(ADCSRA,ADSC)); // measuring
      uint8_t low = ADCL; // must read ADCL first – it then locks ADCH
      uint8_t high = ADCH; // unlocks both
      long result = (high << 8) | low;
      result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
      return result; // Vcc in millivolts
      }

      void setup () { Serial.begin(9600);}
      void loop () { Serial.println( readVcc(), DEC); delay(1000); }

      Pelo que entendi, ele lê diretamente os registros do ATMEGA328P.
      Descobri que o caminho é compilar no arduino ide (.hex), mas ainda não consegui rodar no Labview.
      Alguém tem alguma dica?

  4. Ótimo tutorial, só tive alguns problemas para estabelecer a comunicação entre arduino e labview, e já que finalmente consegui resolver, vim aqui pra ajudar possíveis pessoas que estejam passando por isso também. Eu fiz tudo certo, mas acabava dando os erros 5002 e/ou 5003, resolvi trocando a versão do arduino IDE, vi em um post que as versões novas estão com esse problema, então baixei a versão 1.0.1 e parou de dar os erros 5002 e 5003, só que apareceu um erro 5005 que resolvi colocando uma constante na porta COM5 (meu caso) na entrada VISA resource do bloco do arduino INIT.

    Obs: vi que baixar o NI VISA resolveu pra uma pessoa então acabei baixando, mas continuou dando os erros, mas de qualquer forma eu fiquei com ele instalado no pc, e não sei se teve influencia na solução, de qualquer forma deixo aqui essa informação.

    1. Olá, Carlos!

      Obrigado por compartilhar!

      Abraços!
      Diogo – Equipe MakerHero

  5. Vc sabe se é possível fazer algo do tipo com o esp32?

    1. Douglas,

      Em tese seria possível, mas para controlar o ESP32 através do LabVIEW teria que ser feitos algumas adaptações para a utilização da API de forma funcional.

      Abraços!
      Diogo – Equipe MakerHero

  6. Muito obrigado seu tutorial me ajudou bastante

    1. Olá Bruno,

      É muito bom saber que o nosso trabalho pode te ajudar 😉

      Abraço!
      Rosana – Equipe MakerHero

  7. Boa tarde amigo, estou com dificuldades de efetuar comunicação i2c. Quando envio dados para mais de um arduino escravo, acaba ocorrendo uma confusão de dados, por exemplo envio numero 200 para o arduino A e 150 para o arduino B e os valores acabam se trocando, como o arduino A mostra que recebeu 150 e o arduino B recebeu 200 e as vezes os dados são recebidos de forma correta. Gostaria de saber se isso é alguma limitação de hardware. Não sei se consegui ser claro na minha duvida.

    1. Olá Rafael,

      Como você está fazendo a comunicação com o Arduino?

      Abraço!
      Rosana – Equipe MakerHero

  8. Bom dia, Parabéns pelo artigo muito bem elaborado.

  9. Olá Giovanni! Tudo bem?

    Tentei fazer o tutorial mas tive um pouco de dificuldade no reconhecimento das portas. Depois que instalei o NI VISA, funcionou.

    Você já tinha o VISA instalado ou não?

    Abraços, att

    1. Oi Gedeane!

      Não me lembro de instalar o VISA não. Mas pode ser sim que tenha alguma coisa a ver.

      https://www.ni.com/visa/

      Mas se funcionou tá valendo! Abraço!
      Qualquer coisa posta aí

  10. Daria pra fazer o mesmo com o Labview nxg?

    1. Olá Adeldivo!

      Infelizmente não temos essa informação.

  11. Oi amigo, eu gostaria de saber se você poderia me ajudar ou me indicar algum lugar que eu possa aprender mais sobre o labview com o arduino.

    Eu preciso fazer um projeto com o MQ-2, e preciso usar o labview para apresentar as informações do sensor.

    Eu ja fiz com um DHT22 para medir a temperatura, só que imagino que seja bem diferente a programação para o MQ-2

    1. Olá Marcelo!

      infelizmente ainda não temos um tutorial sobre isso.

      Mas achei uma discussão em um fórum que pode te ajudar:
      https://forums.ni.com/t5/LabVIEW/How-to-read-Serial-Data-from-Arduino-using-labview-VISA/td-p/1497866

      Basicamente você precisaria usar comunicação serial e enviar os dados de temperatura do Arduino para o LabView via serial(serial digo via cabo USB).

      Espero que ajude!

      1. Sim sim, na questão do sensor de temperatura está OK!

        Está funcionando certinho. O problema agora, é que eu preciso fazer uma interface para o MQ2.

        Só que eu não sei como fazer = (

  12. Boa noite!

    Preciso urgente de entrar em contato com um dos responsáveis por esse projeto. Peço que por favor, me respondam ao mais rápido possível.

    Obrigado!

    1. Olá Josué!

      Qual sua dúvida? Na medida do possível podemos ajudar.

      Abraço!

      1. Boa tarde, Giovanni!

        Teria como você entrar em contato comigo por e-mail?

        1. Olá Josué!

          Infelizmente não fornecemos esse tipo de serviço.
          Não desenvolvemos projetos, hardware, software ou qualquer outro tipo de serviço customizado para clientes.

          Apenas ajudamos na medida do possível com dúvidas sobre nossos tutoriais ou produtos.

          O tutorial serve como base para o senhor desenvolver seus projetos específicos.

          Fornecemos também nosso fórum onde pessoas da comunidade podem se ajudar em questões técnicas diversas e compartilhar projetos.

          Se tiver alguma pergunta específica sobre este tutorial pode perguntar por aqui mesmo que podemos ajudar na medida do possível.

          Abraço!

          1. Boa tarde, Giovanni!

            O motivo de querer entrar em contato com você por e-mail, é porque estou com projeto de automatizar a parte de calibração aqui na empresa onde trabalho, só que não faço ideia de como e por onde eu vou começar esse projeto. O modelo de LabVIEW que temos aqui é NI PXI-1033.

            Você pode me dar uma clareza para eu começar esse projeto?

        2. Olá Josué,

          Infelizmente não trabalhamos com o PXI-1033. Favor contactar o fabricante National Instruments para dúvidas.

          Como já expliquei anteriormente. Infelizmente não fornecemos esse tipo de serviço. Não desenvolvemos projetos, hardware, software ou qualquer outro tipo de serviço customizado para clientes.

          Fique a vontade para perguntar também em nosso fórum, as vezes aparece algum freelancer por lá que pode fazer esse serviço para você.

          Abraço e sucesso nos projetos!

          1. Giovanni

            Muito obrigado pela atenção, desejo o mesmo pra você.
            Abraço!!!!!

  13. Olá. Quando abro o VIPM ele não localiza nenhum complemento. O que pode ser?

    1. Olá André,

      Não encontramos esse problema.

      Veja se fazendo a reinstalação do LabView e VIPM não funciona.

      A instalação do LabView ocorreu tudo bem? A sua conexão com a internet está OK?

      Abraço!

  14. Boa noite amigo, é possível fazer uma comunicação via internet com Arduíno utilizando o Ethernet shield e lab view como supervisório?

  15. Olá, gostaria de saber se tenho que gravar algum programa no Arduino. Tipo Firmata.

    Não consigo reconhecer ele na porta serial.

    Obrigado e até mais…

    1. Olá Wellington!

      Precisa gravar um programa específico no Arduino. Essas intruções vocẽ encontra no post acima com o título:

      Instalação do Firmware LabVIEW no Arduino

      O Arduino precisa ser gravado com um firmware específico para funcionar juntamente com o LabVIEW. Tenha seu Arduino em mãos e a IDE Arduino já instalada.

      Abra a IDE Arduino e procure pelo firmware LIFA_Base.ino na pasta:

      C:\Program Files (x86)\National Instruments\LabVIEW 2017\vi.lib\LabVIEW Interface for Arduino\Firmware\LIFA_Base

      Então carregue o firmware no Arduino.

      Abraço!

      1. Olá, vcs já testaram no Labview 2018?

        1. Olá Alan,

          Ainda não testamos. Mas quando testarmos a gente conta aqui!
          E se você testar e funcionar, conta pra gente 😀

          Abraço!
          Rosana – Equipe MakerHero

  16. Basta carregar o firmware no Arduino e executar o programa do Labview? Fiz todos os passos e não funcionou :/

    1. Boa tarde
      Tive dificuldade em implementar o exemplo. Não sei se o procedimento q executei está correto mas no Init.vi foi necessário incluir uma constante I/O para declarar o porta USB utilizada.
      Desta forma consegui implementar o exemplo.
      De qq forma, parabéns pelo post!!!

      1. Fiz isso e me ajudou a resolver o problema, obrigado

  17. Apenas o que eu estava procurando, obrigado!

    1. Valeu amigo! Espero ter ajudado. Abraço!

      1. Não ajudou nada cara! Só complicou

        1. Qual sua dúvida?

        2. Tente descomplicar nos falando o que complicou?

          Marcelo Cardoso de Oliveira
      2. Muito bom.agradeco por difundir conhecimento

        1. É pra isso que estamos aqui! Lembre-se de continuar explorando o #movimentoMaker!

          Abraços!
          Diogo – Equipe MakerHero