38
Manual do Usuário Toolkit LabINO Ferramenta de Programação Gráfica para Arduino Uberlândia-MG 01/2013

Manual lab ino

Embed Size (px)

Citation preview

                                           

Manual do Usuário

Toolkit LabINO Ferramenta de Programação

Gráfica para Arduino

Uberlândia-MG 01/2013

1. Apresentação

O LabINO é um kit de ferramentas destinado a programação gráfica para Arduino via comunicação assíncrona RS-232/USB. O toolkit foi desenvolvido na plataforma de programação LabVIEW, utilizando as diversas opções de ferramentas disponíveis no software. O LabINO possui suporte a vários tipos de sensores analógicos, atuadores, motores, Display LCD 16x2 ou 20x4, dois sensores ultra-sônicos, atuar como Arduino master e ter até 10 Arduinos Slave. A programação textual, como a linguagem C, é compilada e executada linha por linha, já a programação com o LabINO é gráfica utilizando blocos de funções, a linguagem é interpretada e compilada e sua execução é por fluxo de dados, essa execução traz muitos benefícios que podem ser logo percebidos na programação, por exemplo, a facilidade de criar códigos com execução paralela, sem ter todas as dificuldades da linguagem textual. O Arduino é controlado via Cabo e comunicação RS-232 Serial ou alguma comunicação sem fio Serial. Para que ele possa funcionar, a comunicação entre ele e o computador deve ser constante e sem interferências, podendo utilizar os mais diversos hardwares de comunicação tal seja o boud rate de 115200. Para comunicarem entre si, foi criado um protocolo de comunicação, o protocolo permite que o usuário sinta que todos os comandos estejam executando ao mesmo tempo. Utilizar um computador para fazer o controle do Arduino é muito interessante em várias áreas da computação e engenharia, o arduino por natureza necessita de outas placas (Shields) para executar tarefas que ele não possui, como acessar a internet, enviar e-mails, painel gráfico, dados do mouse, teclado e joystick, salvar arquivos de texto, entre outros. É vasta a gama de aplicações do LabINO/LabVIEW com o arduino.

2. Instalação

2.1 Versões LabVIEW

O toolkit foi desenvolvido na plataforma LabVIEW versão 2010, a instalação do toolkit somente é possível se o LabVIEW instalado em sua maquina for versão 2010 ou superior.

1) Execute o pacote de instalação.

Clique 2 vezes no ícone: Logo após o menu de instalação irá aparecer.

Para instalar, clique no botão instalar, logo outra tela irá aparecer.

2) Leia os Termos de Uso e caso esteja de acordo, selecione a caixa “Li e aceito os termos de uso”. Os termos de uso são importantes, assumir o compromisso é assumir que irá realmente seguir com os termos. OBS: O software de instalação é compilado e construído para cada usuário tendo assim a necessidade de informar o CPF no momento da validação, isso é uma forma de evitar pirataria. 3) Informe o CPF e a Chave de Acesso que foi informada. O local de instalação já é definido automaticamente, não altere, a não ser que esse local não exista. 4) Clique em Instalar.

Apos a instalação uma mensagem será exibida.

Se essa mensagem aparecer um sua tela, o toolkit foi instalado normalmente. 5) Clique em Ok. Uma nova tela irá aparecer. 6) Clique em Instalar.

Uma mensagem irá aparecer em sua tela, clique em Ok e Concluir. A instalação foi bem sucedida. Para começar a utilizar o LabINO inicie o LabVIEW e vá no diagrama de blocos, com botão direito clique na parte branca da tela.

Após a instalação, temos que fazer o upload do firmware LabINO para o Arduino. Clique no arquivo zipado “IDE LabINO” que foi copiado em sua área de trabalho, descompacte ele e clique em “arduino.exe”.

No software Arduino abra o menu: “FILE > Examples > LabINO >FirmewareMaster” A seguinte tela irá se abrir.

Clique em Upload (seta indicada pelo circulo vermelho). Caso peça qual porta serial o Arduino esteja conectado, informe-a. Apos alguns segundos o upload foi efetuado.

Para se utilizar Arduinos no modo slave, tende-se fazer o upload do firmeware. O suporte a arduino slave é feito por endereçamento, cada arduino possui seu endereço, que varia de 0 a 9. No total são 10 Arduinos slaves e 1 master. Siga os mesmos passos anteriores, mas dessa vez clique em FirmewareSlave. “FILE > Examples > LabINO >FirmewareSlave” O primeiro Arduino possui o endereço 0, os outros são de 1 a 9. Lembre-se de sempre alterar o endereço antes de fazer o upload ou a ligação dos terminais.

0  a  9  

2.2 Ligação Paralera I2C Arduinos Slaves

Para ligar os arduinos em paralelo é preciso utilizar alguns componentes fáceis de encontrar no mercado. Materiais: - 6 x Jumpers - 2 x Resistores 1k5 Ohms Os jumpers vão variar pela quantidade de Arduinos Slaves você utilizar, são 2 jumpers por Arduino. Veja de forma ilustrada o esquema de ligação:

3. Conhecendo o LabVIEW

A ferramenta LabVIEW, podemos considerar assim, é extremamente segura de erros e bugs, ela é utilizada principalmente por engenheiros, cientistas e estudantes. Sua programação é feita em forma gráfica, utilizando blocos de funções para realizar o controle ou aquisição do arduino. Vamos lá!

A tela inicial do LabVIEW é bastante simples e funcional, do lado esquerdo temos o menu de projetos, e lado direito algumas informações úteis, suporte online, entre outros.

Para iniciar um projeto, clique em Blank VI. Durante o texto irá aparecer a seguinte sigla: VI VI significa em inglês Virtual Instrument (Instrumento Virtual), isso se deve a capacidade que o LabVIEW tem de criar instrumentos com seus componentes e blocos de funções.

O labVIEW possui duas telas fundamentais, são elas o Painel Frontal e o Diagrama de Blocos. O painel frontal é a parte visual e interativo Homem Maquina, é onde os componentes visuais são inseridos. Há uma vasta gama de componentes visuais, com vários formatos e designe.

Clicando com o botão direito na tela, uma caixa irá aparecer. Esses são os componentes visuais do LabVIEW, são vários os tipos de variáveis. Na paleta Numeric são os componentes visuais numéricos, na paleta boolean são os componentes booleanos e assim por diante. O Diagrama de Blocos é a parte de programação gráfica, algumas vezes reconhecidas como Linguagem G (G de Gráfica). Então podemos entender que o programa em geral é um equipamento, que possui sua estrutura externa com controles e no interior os componentes que fazem o equipamento funcionar.

Com o botão direito, clique na parte branca da tela e irá aparecer a caixa de funções, cada versão e licença do LabVIEW possui sua caixa de funções, geralmente cada versão possui a sua. Na caixa de Funções estão os blocos principais para criar seus códigos, como estruturas loop, for loop, case, entre outros. Vamos a paleta Structures:

Vamos entender as Structures: 1 – For loop Quantas vezes vai executar o laço FOR Indica quantas rodadas o laço FOR executou Condição para finalizar o laço FOR 2 – While loop Indica quantas rodadas o laço While Loop executou Condição para finalizar o laço While Loop 3 – Timed Structure While Loop Controlar frequência,

1   2   3  

4   5   6  

7   8  

9  

Terminal de erros Saída de erros quando loop for finalizado Condição para finalizar o laço 4 – Case Variável que define o comportamento do caso

Caso true executa um código, caso false executa outro código

5 – Flat Sequence Executa os códigos em sequência como linguagem textual 6 – Math Script É uma estrutura de suporte a códigos do Matlab Input   Output 7- Event Structure Executa código com determinados eventos, como pressionar um botão, ou mudar uma aba de uma pagina. 8 - In Place Element Forma fácil de acessar Arrays e clusters, onde é necessário “abrir” a linha de fluxo e separar os elementos para fazer eventuais modificações. 9- Formula Node Executa códigos textuais, é uma linguagem desenvolvida pela NI.

Paleta  Cluster,  Class  e  Variant    É  uma  paleta  de  clusters,  cluster  é  uma  forma  de  unir  várias   variáveis   em   uma   única   linha,   facilitando   o  transporte  e  organização  visual  dos  códigos.  

Paleta  Numeric    É  a  pelara  que  contém  os  blocos  matemáticos  do  labVIEW.  

Paleta  Boolean    Contém  os  blocos  de  lógica  booleana.  

Paleta  String    Essa  paleta  trata  do  processamento  de  Strings  (palavras,  caracteres,   ...).  Conversão  de  String  para  numéricos,  entre  outros.  

Paleta  de  Comparações    Faz   comparações   entre   duas   variáveis   e  retorna   valores   booleanos:   verdadeiro   ou  falso.  

 

Paleta  Time    Possui  componentes  relacionados  ao  tempo,  como  data,  hora,  Delay,  Wait,  entre  outros.  

Paleta  Graphics  e  sound    Paleta  contem  elementos  para  criar  gráficos,  figuras,  imagens,   emissão   de   beep,   captura   de   som   de  microfones,  gravação  e  reprodução.  

4. Introdução ao LabINO

O LabINO é uma ferramenta de programação desenvolvida para o Arduino, foi projetada para todos os tipos de usuários, alunos, hobbystas ou profissionais. Surgiu a ideia em 2012, de se criar uma programação de fácil entendimento e com vários recursos, o LabVIEW possui todas essas qualidades e foi escolhido para ser a plataforma de desenvolvimento, sua linguagem é gráfica e de fácil visualização/interpretação. O Arduino é uma plataforma de desenvolvimento destinados a todos os tipos de pessoas, sua facilidade de programação e desenvolvimento de hardware proporciona ao os usuários um entendimento da parte funcional do software/hardware. Possui várias bibliotecas com suporte a vários tipos de sensores e atuadores. Vamos descobrir um pouco do Arduino: Existem vários modelos de Arduinos, o toolkit foi desenvolvido com base no microcontrolador Atmega 328PU, qualquer placa de desenvolvimento com esse microcontrolador possui suporte ao Firmeware do LabINO. Características do Arduino com Atmega 328: -12 Entradas e Saídas Digitais -6 Entradas Analógicas de 10 bits -6 Portas PWM de 8 bits -1 Comunicação Serial (TX e RX) -Memória de 30000 byte

Comunicação

A comunicação entre Arduino/Computador/LabVIEW é muito importante para boa utilização. A comunicação entre si é feita por RS-232 de 115200 boud rate, a velocidade de comunicação máxima aceita pelo Arduino, o controle é feito por protocolo de comunicação e apenas funciona com a comunicação limpa entre computador e Arduino, independentemente do tipo de transmissão dos dados. Isso quer dizer que; para o Arduino funcionar, sempre ele deve estar conectado ao computador com a velocidade de 115200, via cabo ou sem fio. Caso o Arduino seja desconectado indevidamente, um erro pode ocorrer.

A paleta LabINO

Essa é a Paleta LabINO, na primeira pagina temos os blocos principais; Configuração, Iniciar, e Finalizar. Logo, temos as pastas de outras funções.

Paleta/Sub-Paleta Blocos Conteúdo Função

LabINO

Config Close Init

Config: Configurar o comportamento do Arduino. Close: Finalizar a comunicação com Arduino. Init: Iniciar comunicação com o Arduino.

Digital & Analog

Analog Read Analog Write Digital Read Digital Write PWM Write

Analog Read: Leitura Analog. Analog Write: Escrita Alanog. Digital Read: Leitura Digital. Digital Write: Escrita Digital. PWM Write : Escrita PWM.

Sensores

LDR LM35 Ultrasonic

LDR: Conversão analógica para Lux. LM35: Conversão analógica para Temperatura. Ultrasonic: Leitura de Distância (cm).

LCD

Blink Clear Display Print Scroll

Blink: Piscar Indicador. Clear: Limpar Display. Display: Ligar ou desligar. Print: Escrever na tela. Scroll: Mover para os lados

Joy Stick

Init Close Read

Init: Iniciar Joy Stick. Close: Finalizar Joy Stick. Read: Ler Joy Stick.

Mouse

Init Close Read

Init: Iniciar Mouse. Close: Finalizar Mouse. Read: Ler Mouse.

Teclado

Init Close Read

Init: Iniciar Teclado. Close: Finalizar Teclado. Read: Ler Teclado.

Servo

Servo Read Servo Write

Servo Read: Ler Ângulo Atual. Servo Write: Envia Ângulo.

EEPROM

Clear Read Write

Clear: Limpa toda Memória Read: Ler Memória Write: Escreve na Memória

Atuadores

Speaker Speaker: Beep na porta PWM

Rede

Ping Apple Ping Windows Send e-mail

Ping Apple: Retorna tempo. Ping Windows: Retorna tempo. Send e-mail: Envia e-mail com todas características.

Bluetooth

Init, Close Read Write

Init, Close: Inicia/Finaliza. Read: Ler String. Write: Escreve String.

Tabela de Blocos de Funções do LabINO

Serial

Read Write

Read: Ler String. Write: Escreve String.

Fila

Read Bool Read Num Read String Insert Bool Insert Num Insert String Init Exit Flush

Read Bool: Ler valores bool. Read Num: Ler valores num. Read String: Ler String. Insert Bool: Insere bool. Insert Num: Insere num. Insert String: Insere String. Init: Inicia fila. Exit: Finaliza fila. Flush: Limpa fila.

String

Char to Num Num to Char Save txt

Char to Num: Converte Num to Char: Converte Save txt: Salva arquivos .txt.

Cálculos

Analog to V Conv. Temp Map Memoria Stat. PID Random

Analog to V: Converte valores analógicos em volts. Conv. Temp: Converte temperatura. Map: Mapeia um valor numérico. Memoria Stat.: Dados sobre a memória do PC. PID: Proporcional Integral Derivativo. Random: Gera números Randomicos.

Exp. Arduino

Config Init

Config: Configurar Expansão Init: Iniciar Expansão

Digital & Analog

Analog Read Analog Write Digital Read Digital Write PWM Write

Analog Read: Leitura Analog. Analog Write: Escrita Alanog. Digital Read: Leitura Digital. Digital Write: Escrita Digital. PWM Write : Escrita PWM.

LCD Grafico

Clear Set Title Set Value

Clear: Limpar Gráfico LCD. Set Title: Informar Titulo. Set Value: Enviar valor.

Servo

Write Write: Enviar Ângulo

Tabela de Delay Natural Alguns dos blocos de funções do LabINO e no Arduino possui algum tipo de Delay (Atraso), isso se deve a comunicação entre PC e Arduino que causa algum tipo de atraso na transmissão dos dados, nada de alarmante, isso é natural da modelo de transmissão. Veja a tabela:

Tabela de Delay (Atrasos)

Nome Bloco Delay (ms)

Analog Read

20

Digital Read

20

Ultra-sonic Read

1

Servo Read

20

EEPROM Read

20

Bluetooth Read

20

Serial Read

20

Analog Read

20

Digital Read

20

5. Programação

Agora vamos ver como se programar com o kit de ferramentas LabINO. Vou mostrar a vocês os exemplos que estão junto ao toolkit, esses exemplos são fáceis de programar e se conseguir o hardware para realiza-los. Lembrando a programação na linguagem C do Arduino, temos duas funções fundamentais para programa-lo, são o void setup() e o void loop(). O void setup() configura os parâmetros e comportamento, iniciar sensores, comunicação, atuadores entre outros. O void loop() executa os códigos infinitamente até algo o pare, esses códigos são ordens que você passou para o Arduino realizar. Com o LabINO é praticamente igual, existe quatro partes fundamentais, CONFIGURAR > INICIAR > EXECUTAR > FINALIZAR.

A forma que o código é executado e os dados são transportados podemos dizer que é por fluxo, o fluxo sempre ocorre da esquerda para direita e de cima para baixo. Para controla e visualizar informações existem dois tipos de componentes, Control e Indicator.

CONFIGURAR INICIAR EXECUTAR FINALIZAR

Inicio  

Vamos ao primeiro Exemplo Básico, Leitura Analógica:

Para realizarmos a leitura analógica precisamos dos seguintes componentes: 1 x potenciômetro 10k Ohms 1 x protoboard 3 x jumpers A ligação dos terminais é feita da seguinte forma: No Painel Frontal: 1 x Waveforma graph 1 x Dial 1 x Botão stop (inclui automaticamente durante programação)

1 x Visa resource name (inclui automaticamente durante programação)

1 x Raised box (para acabamento)

No diagrama de Blocos:

I. Utilizando a paleta LabINO, selecione o bloco CONFIG e coloque-o na tela.

II. Selecione o bloco INIT e coloque-o na tela. III. Interligue os dois pela Saída de Configuração e Entrada de

Configuração. IV. No bloco INIT clique com botão direito no terminal Porta Serial

Arduino, vá até Create/Control. Isso criará no Painel Frontal um Visa Resource Name, onde é selecionado a porta Serial que o Arduino está conectado.

V. Na paleta Structures, selecione a estrutura While Loop e modele-a na tela depois logo após o bloco INIT.

VI. Na paleta LabINO, entre na sub-paleta Digital & Analog e selecione o bloco Analog Read, coloque-o dentro do While Loop.

VII. Interligue a saída do bloco INIT na entrada do bloco ANALOG READ, e da mesma forma a Saída de Erro na Entrada de Erro.

VIII. No bloco Analog Read, com o botão direito clique no terminal Porta Analógica, logo em Create, depois Constante. Selecione a Porta Analógica 0.

IX. Arraste para dentro do While Loop, o ícone do gráfico e do Dial. X. Interligue o gráfico e dial na saída do bloco Analog Read -> Valor

Analógico. XI. Na paleta LabINO selecione Destroy e coloque-o fora do While Loop. XII. Interligue os terminais de Saída Arduino é Saída Erro no bloco Destroy. XIII. Na paleta Clusters selecione Unblundle By Name e coloque-o dentro

do loop e conecte-o com a linha de erros depois do bloco Analog Read, selecione no Unbundle “Status”.

XIV. Na paleta Boolean selecione a porta lógica AND e interligue a saída do Unbundle em um dos dois terminais de entrada da porta lógica.

XV. Na porta lógica, em um dos terminais de entrada, clique com botão direito, vá em Create, e crie um novo Control. Esse botão vai servir para finalizar o loop, ou então se houver algum erro, automaticamente o loop será finalizado, posteriormente o programa.

Pronto, o programa está feito! Para ter certeza que tudo está interligado perfeitamente e sem nenhum erro, você pode recorrer ao

controle , que fica do lado esquerdo e na parte de cima, caso ele esteja com uma seta branca, seu programa está pronto para ser

executado, caso esteja assim seu código possui um erro. Para visualizar o erro clique na seta e uma nova tela irá aparecer com os erros, clique duas vezes e automaticamente irá te levar ao local do erro.

Vamos ver como ficou o código:

Vamos ao segundo Exemplo Básico, Leitura Digital:

Bom, neste exemplo vamos criar um código para leitura Digital, a leitura digital apenas retorna dois tipos de valores: true (verdadeiro) ou false (falso). É como ligar uma lâmpada, quando estiver acessa é true, se estiver desligada é false. Já que o programa anterior é parecido com esse, apenas vou indicar os componentes a serem usados neste exemplo: 1 x push button 1 x resistor de 330 Ohms 3 x Jumpers A ligação dos terminais é feita da seguinte forma:

No Painel Frontal: 1 x Visa resource name (inclui automaticamente durante

programação) 1 x LED 1 x Botão stop (inclui automaticamente durante programação) No Diagrama de Blocos:

Vamos ao terceiro Exemplo Básico, Blink:

Neste exemplo vamos aprender como piscar um LED do arduino, parece bem simples e na verdade é. Bom, mas temos que começar sempre de exemplos básicos e chegar aos complexos, vamos ver como se configura o pino digital para ser saída ou entrada, os parâmetros do bloco Digital Write e bloco Delay. Vamos precisar dos seguintes componentes: 1 x LED 2 x Jumpers Ou se preferir, apenas ligar o LED no terminal 13. A ligação dos terminais é feita da seguinte forma: No Painel Frontal: 1 x Visa resource name (inclui automaticamente durante

programação) 1 x Botão stop (inclui automaticamente durante programação)

No Diagrama de Blocos:

I. Coloque no Diagrama de Blocos, os blocos principais, interligue os como na imagem acima.

II. No bloco Config, passe o mouse no terminal do Pino Digital 13 e clique com botão direito, vá em Create, e depois Contante,

III. Na constante que apareceu, clique e mude para Saída. Os terminais do arduino são padronizados como Entrada, isso evita que queime algum componente caso uma ligação fique errada.

IV. O bloco Digital Write possui alguns parâmetros que podem ser cruciais em um programa para que a comunicação seja fluente. Os parâmetros são: qual pino Digital e o modo de envio. No terminal Pino Digital, crie uma constante e selecione o Pino 13, e no Modo crie uma constante e coloque Reenviar, isso é para enviar sempre a variável true (1 ou verdadeiro) ou false (0 ou false) a cada rodada do loop, se colocar Não Reenviar, apenas vai ser enviado quando o valores booleano forem trocado. Ex. De true para false ou vice-versa.

V. No terminal High/Low criar uma constante, passe-a para True. VI. Na paleta Time, selecione o bloco Time Delay. Quando coloca-lo no

diagrama de blocos, uma tela irá aparecer. A unidade está em segundos (1,000), se desejar colocar em micro-segundos basta apenar colocar nas centenas depois da virgula o tempo em ms. Ex. (0,050) 50 ms.

VII. Faça novamente o IV e V, apenas alterando a variável High/Low para False.

VIII. Termine de interligar os terminais.

Vamos ao quarto Exemplo Básico, Fade:

Neste exemplo vamos aprender como variar a luminosidade de um LED pela porta PWM. Para isso vamos utilizar a estrutura FOR e um pouco de programação em paralelo. Vamos precisar dos seguintes componentes: 1 x LED 2 x Jumpers Ou se preferir, apenas ligar o LED no terminal 10. A ligação dos terminais é feita da seguinte forma: No Painel Frontal: 1 x Visa resource name (inclui automaticamente durante

programação) 1 x Botão stop (inclui automaticamente durante programação) 1 x Slide

No diagrama de Blocos: Vamos entender: No primeiro for loop, temos o bloco PWM com a porta PWM 10 selecionada, e o valor PWM indicado pela quantidade de loop que será executado, que é 255 vezes. 255 é o valor de 8 bits suportado pelas portas PWM (0 a 255). Dentro do primeiro for, também tem um delay de 10 ms conectado a linha de erro e uma variável local Armaz. Outra variável local stop. Para criar uma variável local, primeiro é necessário colocar no Painel Frontal um elemento numérico para controle, no diagrama de blocos clique com botão direito no ícone do elemento numérico e vá até Create, local variable. Para mudar sua forma clique com o botão direito e vá até Change To Write, ou Change To Read. O outro for loop é praticamente a mesma coisa, o for vai executar 255 vezes, só que dessa vez dai decrementando o valor PWM, para isso temos que fazer uma conta simples, que é: valor = (255 – loops rodados), isso é 255 – 0 = 255 , 255 – 1 = 254 e assim por diante, até o loop finalizar. Logo, existe outro While loop, que executa paralelamente ao o While loop maior, isso é bom pois um não depende o fluxo do outro para ser executado. Esse loop foi criado apenas para indicar no Painel frontal, qual intensidade de luz está sendo aplicado ao LED. Utilizando uma variável local, um delay de 1 ms, e outra variável local do stop, pode-se informar os valores.

Outros Exemplos Já vimos anteriormente 4 exemplos de programação com LabINO e já temos uma noção como programar em blocos. Nos próximos exemplos a explicação vai ficar cada vez menor e você irá entender normalmente.

JoyStick + Servo Neste exemplo vamos ver como controlar um servo motor utilizando um JoyStick de computador: Componentes: 1 x JoyStick de Computador 1 x Servo Motor Jumpers Esquema de conexão: No Painel Frontal:

Diagrama de Blocos:

Display LCD Esse exemplo mostra como conectar e programar um Display LCD. Esquema de conexão:

Painel Frontal: Diagrama de Blocos:

Expansão + Display LCD + LCD Nokia + LDR + Microphone Esquema de Conexão:

Painel Frontal:

Diagrama de Blocos:

Contato: Para adquirir o toolkit envie um e-mail de solicitação para: [email protected] Para Informações, duvidas, erros ou contato com o desenvolvedor, envie um e-mail para: [email protected] Informações sobre o toolkit LabINO no site: http://www.labinobrasil.com Referências: National Instruments LabVIEW: http://www.ni.com/labview/pt/ Arduino: http://arduino.cc LabINO: http://www.labinobrasil.com

Toolkit LabINO Desenvolvendo Ferramentas para o Sucesso

1-2013 Uberlândia-MG