Posts com Tag ‘hardware’

dreamstimefree_256428-660x439

 

.

Introdução

Medir grandezas físicas, tais como temperatura, umidade, pressão, vazão, corrente, tensão etc. é um grande desafio para o projetista eletrônico. Para a nossa sorte, existem sensores ou transdutores que convertem essas grandezas em sinais elétricos. O problema é que a linearidade, a amplitude do sinal elétrico e o tipo, tensão ou corrente, também variam muito. Neste artigo serão abordados alguns recursos e técnicas para resolver alguns desses problemas, e condicionar e trazer esses sinais até os processadores de forma que eles possam ser digitalizados e processados por software depois.

 .

Instrumentos para Automação

Instrumentos de automação são recursos muito úteis e confiáveis, pois têm que atender a padrões de qualidade para aplicações industriais. Tratam-se dos transmissores, indicadores e controladores. Pode-se observar alguns desses instrumentos na Figura 1.

.

Instrumentos

Figura 1 – Transmissores e indicador para automação

.

A grande vantagem de se utilizar esse tipo de recurso é que o instrumento realiza todo o condicionamento do sinal analógico e o entrega linearizado e transformado em saídas padronizadas, sendo as mais comuns em corrente, de 0 a 20 mA ou 4 a 20 mA, ou então em tensão, de o a 5 V, de 1 a 5 V ou 0 a 10 V. Muitos instrumentos também possuem interface de comunicação digital, USB, RS-485 ou outras, para serem utilizadas como interface de programação, monitoramento ou controle remoto.

As desvantagens da utilização dos instrumentos de automação podem ser o preço e seu tamanho físico. Se o projeto for para um projeto de pesquisa, ou uma instalação com poucas unidades, vale a pena considerar esses instrumentos como parte da solução. Isso permite que se possa ganhar tempo e focar seu trabalho na solução de engenharia ou no objeto do seu estudo. Se o seu projeto for de um equipamento que será produzido de forma seriada em grandes quantidades, será necessário embarcar o condicionamento dos sinais analógicos no seu projeto.

.

Condicionando sinais analógicos

É necessário observar e definir alguns parâmetros para que os sinais analógicos de sensores possam ser transformados e conduzidos até o seu processador:

Sensor

  • Excursão do sinal elétrico que será utilizado na sua aplicação (em Volts ou Amperes);
  • O sinal deve ser acoplado em CC  (corrente contínua) ou CA (corrente alternada)?
  • A máxima frequência de operação, se em CA;
  • A impedância de saída do sensor.

Conversor A/D

  • A máxima excursão do sinal na entrada do conversor A/D;
  • A impedância de entrada do conversor A/D do seu processador, ou projeto.
  • A máxima impedância de saída do sensor que pode ser aplicada ao conversor A/D para que o conversor possa trabalhar dentro das suas especificações;
  • Taxa de amostragem do conversor A/D;
  • Resolução e precisão do conversor A/D.

.

Na Figura 2 pode-se observar um condicionador de sinais genérico. É frequente a necessidade de se somar ou subtrair uma tensão constante, amplificar ou reduzir o sinal para que sua amplitude abranja a maior faixa possível dentro da faixa de entrada do conversor A/D, aplicar um filtro passa-baixas de anti-aliasing[1] e finalmente, se necessário, ainda ajustar a impedância de saída do circuito para otimizar a operação do conversor A/D.

.

Condicionamento_Esquema_Geral

Figura 2 – Esquema genérico para condicionamento de sinais analógicos

.

A seguir serão desenvolvido um exemplo para ilustrar como que é realizado esse cálculo.

.

Exemplo

Suponhamos que o nosso desejo seja, utilizando um ARDUINO, medir temperaturas entre 10 e 60 ºC, com uma precisão de ± 1 ºC dentro dessa faixa. Um sensor de temperatura bastante popular e adequado para essa função é o LM35[2] de fabricação da Texas Instruments. Ele possui uma função linear de transferência na saída de 0 + 10 mV/ºC. No nosso exemplo, a excursão do sinal de saída do sensor será de 100 a 600 mV. O sensor, no encapsulamento TO-92(3), está ilustrado na Figura 3.

.

LM35

Figura 3 – Sensor LM35DZ no encapsulamento TO-92(3)

.

Na Figura 4 pode-se observar um resumo das especificações do sensor. Note que a impedância de saída desse sensor é de 0,1 Ω para uma carga de 1 mA.

.

Especificacoes LM35

Figura 4 – Resumo das especificações do LM35

.

A melhor forma de iniciar os cálculos para o condicionamento dos sinais é partir do conversor A/D para o sensor. Nesse exemplo abordaremos o processador ATMEGA328P-PU [3], microprocessador de 8 bits fabricado pela ATMEL, utilizado nos populares ARDUINOs UNO, PRO, PRO Mini e Nano. As tensões de alimentação desses ARDUINOs é de 5V ou 3,3V, conforme o modelo. Para o nosso exemplo adotaremos a tensão de alimentação de 5 Vcc. A referência interna do conversor A/D adotada para o nosso exemplo será de 5V, ou seja, a excursão total do sinal na entrada do conversor A/D, para que se aproveite ao máximo a sua resolução, deverá ser entre 0 e 5V. Confira os detalhes das entradas analógicas do ARDUINO no artigo técnico Arduino – Entradas Analógicas[9].

Observação: Note que nas especificações do conversor A/D existe uma opção para que se utilize uma referência interna de 1,1 V do ATMEGA328, o que para esse caso específico seria bem melhor, uma vez que a excursão da saída do sensor se aproxima muito faixa de entrada do conversor A/D. Mas foi adotado Vcc (% Vcc) para que se possa ilustrar melhor uma das situações bastante frequentes de condicionamento nesse tipo de projeto.

Observe na Figura 5, a arquitetura interna do conversor A/D do processador ATMEGA328P.

.

Esquema-do-ADC

Figura 5 – Esquema do conversor A/D do ATMEGA328P

.

Na Figura 5 pode-se observar que existem 8 canais de entradas analógicas multiplexadas na entrada do conversor A/D. Nos projetos do ARDUINO são utilizadas apenas 6 (Destaque do ARDUINO UNO na Figura 6).

.

ARDUINO UNO

Figura 6 – Esquema elétrico do ARDUINO UNO com as entradas analógicas em destaque

.

Na Figura 7 pode-se observar um resumo das principais especificações do conversor A/D do ATMEGA328. Note que o conversor tem 10 bits de resolução, uma precisão de 8 bits e taxa máxima de amostragem de 76,9 kSPS (kiloAmostras por segundo – 8 bits).

.

ADC-especificações

Figura 7 – Resumo das especificações do conversor A/D do ATMEGA328P

.

Os 10 bits de resolução definem que a faixa de entrada de 5 Vcc pode ser dividida em 1024 degraus discretos de medição (quantização [4]), ou seja, 5 V/1024 ≅ 0,0049 V (4,9 mV), porém a precisão do conversor A/D está nos 8 bits, se não forem calculadas médias. Isso implica que a unidade discreta de medição é de 5 V/256 ≅ 0,020 V ( 20 mV). A esses valores calculados se dá o nome de sensibilidade. Qualquer sinal que seja uma fração desse valor não pode ser medido pelo conversor.

Se avançarmos um pouco mais nas especificações do conversor A/D do ATMEGA328, encontramos que as operações de amostragem e S/H foram otimizadas para impedâncias de saída do circuito, que for conectado ao pino do conversor A/D, de 10 kΩ ou menos. Circuitos com baixa impedância de saída só deverão ser utilizados para sinais que variam lentamente.  Outra informação muito importante é a ênfase que o manual dá para a necessidade de se utilizar um filtro analógico de anti-alising [1]. Veja o destaque na Figura 8.

.

ATMEGA_SH

Figura 8 – Descrição do circuito de entrada do conversor A/D do ATMEGA328P

.

Colocados todos esses dados, podemos iniciar os cálculos para o acoplamento do sensor ao conversor A/D. A excursão total do sensor para as nossas especificações é de 600 mV – 100 mV = 500 mV. Ou seja, a saída do sensor terá 100 mV de offset, mais uma excursão total de 500 mV. Observando  a Figura 2, pode-se concluir que é necessário subtrair 100 mV da saída do sensor e amplificar a saída em 10 vezes para se obter uma excursão útil de 5 V na saída do conjunto e otimizar a conversão A/D.

A maneira mais direta de fazer isso é utilizar um amplificador operacional numa configuração não inversora com bias ou offset. Confira a formulação genérica na Figura 9, extraída do documento MAS.836 – HOW TO BIAS AN OP-AMP[5], texto de um curso do MIT.

.

Spli Bias MIT_2

Figura 9 – Esquema genérico para adequar o sinal de temperatura à entrada do conversor A/D

.

Da Figura 9 temos: O ganho do circuito não inversor simples é G = 1 + R2/R1, o que para o nosso caso deve ser  G = 10. Passando para a aplicação de um offset ao amplificador, usando 5 Vcc como tensão para gerar o offset e renomeando os resistores, obtemos:

.

  •  (1) Voffset = [R2 / (R1 + R2)] * Vcc;
  •  (2) G = 1 + [R3 / (R1 // R2)] onde (R1 // R2) quer dizer a resistência equivalente aos resistores em paralelo .

.

Substituindo por nossos dados, obtemos de (1) :

.

100 mV = [R2 / (R1 + R2)] * Vcc  => 0,1 = [R2 / (R1 + R2)] * 5

rearranjando, fica:  [(R1 + R2) / R2] = 50 ou seja R1 + R2 = 50 * R2

(3) R1 = 49 * R2

.

De (2):

.

10 = 1 + [R3 / (R1 // R2)], ou seja 9 = [R3 / (R1 // R2)]

=> (4) R3 = 9 * (R1 // R2)

.

Substituindo R1 por (3):  R1 // R2 = (R1 * R2) / (R1 + R2) = (49 * R2 * R2) / (49 * R2 + R2) = (49 / 50) * R2

(5)  R1 // R2 = 0,98 * R2

.

Substituindo em (4):

R3 = 9 * 0,98 * R2

(6)  R3 = 8,82 * R2

.

O próximo desafio é a partir dos resultados acima e chegar a valores comerciais dos resistores. Normalmente isso é feito por tentativa e erro. Por exemplo:

Suponhamos que R1 = 100 k.  Isso implica que R2 = 100 k / 49 = 2,0408 k e R3 = 8,82 * 2,0408 k = 18 k. Se utilizarmos resistores de 1 %, os valores comerciais mais próximos são:

.

(7) R1 = 100 kΩ 1%, R2 = 2,05 kΩ 1% e R3 = 18,2 kΩ 1%

.

Quaisquer que sejam os resistores utilizados, é sempre interessante o projetista prever no seu projeto uma operação de aferição ou calibração das medidas, se for desejada uma precisão maior, uma vez que raramente conseguimos encontrar os valores e tolerâncias dos resistores calculados e existem outros erros decorrentes de tensões de offset do  operacional etc. Nesse caso isso poderia ser feito expondo o sensor a temperaturas controladas e precisas e realizar as compensações por software, se necessário. A aferição mais comum nesse caso seria a de se aferir o offset na temperatura mínima e o ganho na temperatura máxima.

O amplificador operacional, que pode ser utilizado nesse caso, deve ter as seguintes especificações:

  • Single supply (5Vcc)
  • Rail-to-rail output
  • low cost

.

Alguns exemplos:

  • LMV321 [6]
  • MCP6271 [7]
  • etc.

.

O último item a ser projetado é o filtro anti-aliasing, que nesse caso pode ser um simples circuito RC do tipo passa-baixas. Veja na Figura 10 o circuito típico e sua resposta em frequência.

.

RC2

Figura 10 – Circuito RC passa-baixas e sua resposta em frequência

.

A frequência de corte do circuito RC => Fc = 1/(2*π *RC). Se projetarmos a frequência de corte em 100 Hz, a equação fica assim:

RC = 1/(2*π * 100), ou seja RC =  1,5 * 10 -3.

.

Das especificações do conversor A/D temos que o resistor deve ser menor ou igual a 10 kΩ. Vamos escolher arbitrariamento 4,7 kΩ.

=> C = 1,5 * 10 -3 / 4,7 * 10 +3, ou seja C = 3,3 * 10-7 = 330 nF.

O filtro deverá ter os seguintes componentes R = 4,7 kΩ e C = 330 nF.

.

Antes de montar o seu circuito é bom realizar uma simulação com ele, para se certificar de que não foi cometido algum erro grosseiro nos cálculos. O circuito mostrado na Figura 11, pode ser simulado no Paul Falstad’s Circuit Simulator Applet [8], um simulador online de circuitos muito simples de se usar. “Clicke” na figura para visualizar a simulação completa.

.

Simulacao

Figura 11 – Simulação do circuito de condicionamento do sensor

.

Com isso fechamos o nosso exercício de condicionamento de sinais analógicos. Como já foi mencionado antes, se nesse caso fosse utilizada a referência interna do conversor A/D de 1,1 V, seria possível conectar o LM35 sem manipular a sua saída diretamente na entrada do conversor A/D. Seria recomendável mesmo nesse caso utilizar o filtro passivo passa-baixas calculado para o projeto.

.

Conclusões

Condicionar sinais analógicos, para que possam ser digitalizados, requer alguns cuidados que foram abordados neste artigo técnico. A sequencia de operações sugerida é um bom começo para que se possa calcular e resolver esse acoplamento. Não se esqueça que sempre há diversas soluções alternativas para o mesmo problema. Requer um pouco de arte e determinação para que se encontre a melhor solução de compromisso que atenda às especificações e necessidades do projeto

.

Artigos da série “Trazendo o mundo real para dentro do processador – Condicionamento de sinais analógicos”

.

Referências

[1] Processamento Digital de Sinais – DSP – Parte 2

[2] Datasheet do LM35

[3] Datasheet do ATMEGA328P-PU

[4] Trazendo o mundo real para dentro do processador – Conversor A/D

[5] MAS.836 – HOW TO BIAS AN OP-AMP

[6] Datasheet do amplificador operacional LMV321

[7] Datasheet do amplificador operacional MCP6271

[8] Simulador de circuitos on-line – Paul Falstad’s Circuit Simulator Applet

[9] Arduino – Entradas Analógicos

Crédito para a Figura 1Novus Produtos Eletrônicos

Crédito para a figura destacada – Beauty of Fading Autumn – Olgalis | Dreamstime Stock Photos

Licença Creative Commons
Esta obra, “ Trazendo o mundo para dentro do seu processador – Condicionamento de sinais analógicos“, de Henrique Frank W. Puhlmann, foi licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada.

Caro(a) Colega,

o artigo Anatomia de um Sistema Linux embarcado foi publicado originalmente no site Embarcados e é de autoria de Diego Sueiro. É um ótimo artigo introdutório sobre esse assunto. Aproveite!

Abraço,

Henrique

consulte sempre um engenheiro eletrônico

==========================================

Anatomia de um Sistema Linux embarcado

 Pinguim

Um sistema Linux embarcado não se difere, no quesito sistêmico, de um sistema Linux desktop. A mesma estrutura e conceitos são aplicados em ambos os domínios. A principal diferença está nos requisitos de processamento, armazenamento, consumo de energia e confiabilidade. Na maioria dos sistemas Linux embarcado, os recursos disponíveis são limitados e muitas vezes a interface com usuário é bastante limitada ou simplesmente não existe.

Seguem alguns exemplos de sistemas embarcados que utilizam o Linux como sistema operacional:

  • Roteador;
  • Setup-box;
  • Smart TV;
  • Controlador Lógico Programável (CLP);
  • Câmera Digital.

.

Arquitetura Básica

Na arquitetura básica de um sistema Linux podemos identificar cinco componentes básicos:

arq_bas_linux_emb

 

  1. Hardware: o seu produto;
  2. Bootloader: iniciado pelo hardware, responsável pela inicialização básica, carregamento e execução do kernel Linux;
  3. Kernel Linux: núcleo do sistema operacional. Gerencia CPU, memória e I/O, exportando serviços para as aplicações do usuário;
  4. Rootfs: sistema de arquivos principal. Possui as bibliotecas do sistema para uso dos serviços exportados pelo kernel, além das bibliotecas e aplicações do usuário;
  5. Toolchain: conjunto de ferramentas para gerar os artefatos de software do sistema.

 .

Hardware

Vamos considerar um roteador Wi-Fi doméstico como exemplo de plataforma de hardware:

hw_linux_emb

.

O Linux kernel é capaz de rodar em mais de 20 arquiteturas de CPU diferentes. Como por exemplo: x86, ia64, ARM, PowerPC, MIPS, SuperH, Blackfin, Coldfire, Microbalze.

Tem suporte à arquiteturas de 32 e 64 bits e arquiteturas que não possuem MMU (Memory Management Unit).

Suporta armazenamento em memórias NAND, FLASH, MMC e hard disks.

No nosso exemplo, um sistema básico pode funcionar com até 8MB de RAM e 2MB de armazenamento, uma vez que, poucos drivers, funcionalidades do kernel e bibliotecas e aplicativos são necessárias para que o sistema desempenhe as funções desejadas.

 .

Toolchain

Conjunto de ferramentas de programação usadas para gerar determinado produto, seja um software ou mesmo um sistema completo. Quando a plataforma de desenvolvimento (host) é diferente da plataforma alvo (target), chamamos o toolchain de cross-compiling toolchain.

toolchain_linux_emb-660x284

Componentes principais:

  • Compilador (gcc);
  • Assembler e Linker (binutils);
  • Biblioteca C padrão (glibc, uclibc, dietlibc, musl, etc).

Algumas opções de toolchains prontas;

 .

Artefatos de software de um Sistema Linux embarcado

Os artefatos de software principais de um sistema Linux embarcado são: Bootloader, Kernel e Rootfs. Tomando-se como base o hardware proposto, estes artefatos estão organizados na memória flash da seguinte maneira:

flash_linux_emb

.

Bootloader

Toda CPU possui um mecanismo de inicialização, que é responsável por carregar e executar o bootloader. Em algumas arquiteturas de CPU é necessário o uso de um bootloader de primeiro estágio, no qual é carregado pelo processador e executado a partir de sua memória interna. Em alguns casos esse bootloader de primeiro estágio está concatenado junto ao bootaloader.

As principais funcionalidades do bootloader são:

  • Inicializar o hardware antes de executar o kernel como, por exemplo, configurar a controladora de SDRAM;
  • Passar parâmetros para o kernel;
  • Prover mecanismos para carregar e gravar o kernel e o sistema de arquivos na memória flash ou cartão SD;
  • Inicializar via rede ou pelo cartão SD;
  • Rotinas de diagnóstico de hardware.

Principais bootloaders utilizados em sistemas embarcados:

  • x86:
    • LILO;
    • Grub;
    • Syslinux.
  • ARM, MIPS, PPC e outras arquiteturas:
    • U-Boot;
    • Barebox;
    • Redboot.

 .

Kernel

O Kernel é o coração do nosso sistema. No boot ele é responsável por:

  • Inicializar CPU, memória e barramentos;
  • Configurar a memória virtual (se tiver MMU);
  • Inicializar os device drivers;
  • Iniciar o escalonador de tarefas;
  • Iniciar threads do kernel;
  • Montar sistema de arquivos principal (rootfs) e chamar o processo init.

Como principais características podemos apontar:

  • Gerencia execução de processos e controla acesso à memória e I/O;
  • Gerenciamento do kernel space X user space;
  • Interface de user space com kernel space via chamadas do sistema (system calls);
  • Acesso ao hardware via arquivos de dispositivo;
  • Gerenciamento dinâmico dos módulos do kernel.

 .

Rootfs

Após ter sido montado pelo kernel e ter o processo init (PID = 1) iniciado, o rootfs utiliza seu mecanismo de inicialização (ex.: SysVinit, Systemd etc) para inicializar os processos e aplicações do sistema. É responsável por prover as bibliotecas de sistema e de usuário.

Alguns exemplos de aplicações para sistemas embarcados:

  • Dropbear: cliente e servidor SSH;
  • Thttpd: servidor web;
  • DirectFB: biblioteca gráfica;
  • SQLite: banco de dados;
  • Busybox: o canivete suíço de sistemas embarcados com Linux.

 .

Referência

Material do Treinamento Desenvolvendo Sistemas Linux Embarcado da Embedded Labworks.

Caro(a) Colega,

Arduino é certamente um tema que despertou o interesse de muitos. Assim, para enriquecer o conteúdo técnico do nosso blog, resolvi publicar um excelente artigo técnico introdutório sobre esse assunto. Esse artigo foi publicado originalmente no site Embarcados e é de autoria de Fábio Souza. Outros artigos sobre esse assunto você pode conferir no  site Embarcados ou no site FBS Eletrônica (A eletrônica ao alcance de todos).

Aproveite! Abraço,

Henrique

consulte sempre um engenheiro eletrônico

==================================================================================================

logo-Arduino_1

Arduino é uma plataforma de código aberto (hardware e software) criada em 2005 pelo italiano Massimo Banzi (e outros colaboradores) para auxiliar no ensino de eletrônica para estudantes de design e artistas. O objetivo principal foi o de criar uma plataforma de baixo custo, para que os estudantes pudessem desenvolver seus protótipos com o menor custo possível. Outro ponto interessante do projeto, foi a proposta de criar uma plataforma de código aberto, disponível para a comunidade o que ajudou em muito no seu desenvolvimento.

site da plataforma Arduino o define como:

“O Arduino é uma plataforma de prototipagem eletrônica open-source que se baseia em hardware e software flexíveis e fáceis de usar. É destinado a artistas, designers, hobbistas e qualquer pessoa interessada em criar objetos ou ambientes interativos.

O Arduino pode sentir o estado do ambiente que o cerca por meio da recepção de sinais de sensores e pode interagir com os seus arredores, controlando luzes, motores e outros atuadores. O microcontrolador na placa é programado com a linguagem de programação Arduino, baseada na linguagem Wiring, e o ambiente de desenvolvimento Arduino, baseado no ambiente Processing. Os projetos desenvolvidos com o Arduino podem ser autônomos ou podem comunicar-se com um computador para a realização da tarefa, com uso de software específico (ex: Flash, Processing, MaxMSP).”

Plataforma de desenvolvimento Arduino

O Arduino é formado por dois componentes principais: Hardware e Software.

hardware é composto por uma placa de prototipagem na qual são construídos os projetos.

software é uma IDE, que é executado em um computador onde é feita a programação, conhecida como sketch, na qual será feita upload para a placa de prototipagem Arduino, através de uma comunicação serial. O sketch feito pelo projetista dirá à placa o que deve ser executado durante o seu funcionamento.

Hardware do Arduino

Existem diversas placas oficiais de Arduino e muitas outras não oficiais. Vamos abordar a placa Arduino Uno nesse artigo. A seguir é exibida a placa Arduino Uno REV3:


Arduino_2

Conforme visto na imagem acima a placa Arduino UNO possui diversos conectores que servem para interface com o mundo externo. Vejamos como estão organizados os pinos na placa:

  • 14 pinos de entra e saída digital (pinos 0-13):
    • Esses pinos podem ser utilizados como entradas ou saídas digitais de acordo com a necessidade do projeto e conforme foi definido no sketch criado na IDE.
  • 6 pinos de entradas analógicas (pinos A0 – A5):
    • Esses pinos são dedicados a receber valores analógicos, por exemplo, a tensão de um sensor. O valor a ser lido deve estar na faixa de 0 a 5 V onde serão convertidos para valores entre 0 e 1023.
  • 6 pinos de saídas analógicas (pinos 3, 5, 6, 9, 10 e 11):
    • São pinos digitais que podem ser programados para ser utilizados como saídas analógicas, utilizando modulação PWM.

A alimentação da placa pode ser feita a partir da porta USB do computador ou através de um adaptador AC. Para o adaptador AC recomenda-se uma tensão de 9 a 12 volts.

Software do Arduino

O software para programação do Arduino é uma IDE que permite a criação de sketches para a placa Arduino.  A linguagem de programação é modelada a partir da linguagem Wiring . Quando pressionado o botão upload da IDE, o código escrito é traduzido para a linguagem C e é transmitido para o compilador avr-gcc, que realiza a tradução dos comandos para uma linguagem que pode ser compreendida pelo microcontrolador.

A IDE apresenta um alto grau de abstração, possibilitando o uso de um microcontrolador sem que o usuário conheça o mesmo, nem como deve ser usado os registradores internos de trabalho.

A IDE do Arduino possui uma linguagem própria baseada na linguagem C e C++.

O Ciclo de programação do Arduino pode ser dividido da seguinte maneira:

  1. Conexão da placa a uma porta USB do computador;
  2. Desenvolvimento de um sketch com comandos para a placa;
  3. Upload do sketch para a placa, utilizando a comunicação USB.
  4. Aguardar a reinicialização, após ocorrerá à execução do sketch criado.

A partir do momento que foi  feito o upload o Arduino não precisa mais do computador: o Arduino executará o sketch criado, desde que seja ligado a uma fonte de energia.

IDE do Arduino

A IDE pode ser baixada gratuitamente no site do Arduino, onde pode ser escolhida a melhor opção de download conforme plataforma utilizada.

Quando se abre o IDE do Arduino, será exibido algo semelhante à figura abaixo:


Arduino_3

O IDE é dividido em três partes: A Toolbar no topo, o código ou a Sketch Window no centro, e a janela de mensagens na base, conforme é exibido na figura anterior.

Na Toolbar há uma guia, ou um conjunto de guias, com o nome do sketch. Ao lado direito há um botão que habilita o serial monitor. No topo há uma barra de menus, com os itens File, Edit, Sketch, Tools e Help. Os botões na Toolbar fornecem acesso rapido às funções mais utilizadas dentro desses menus.

Abaixo são identificados os ícones de atalho da IDE:

  • Verify
    • Verifica se existe erro no código digitado.
  • Upload
    • Compila o código e grava na placa Arduino se corretamente conectada;
  • New
    • Cria um novo sketch em branco.
  • Open
    • Abre um sketch, presente no sketchbook.
  • Save
    • Salva o sketch ativo
  • Seria monitor
    • Abre o monitor serial.

Os demais comandos presentes na barra de menus podem ser consultados através do menu <help><Environment>.

Após a conexão do Arduino ao computador, é atribuído a placa uma COM. A primeira vez que o programa Arduino for executado deve-se selecionar o modelo de placa utilizado, no nosso caso escolheremos Arduino Uno, conforme figura abaixo:


Arduino_4

Após a definição do modelo, deve-se selecionar em qual COM a placa foi atribuída:

Arduino_5

Após estas configurações o ambiente está preparado para uso e pode-se testar qualquer um dos exemplos que acompanham a IDE ou até mesmo com um novo sketch.

“Hello World” – Blink

O exemplo mais simples para iniciar a programação do Arduino, que pode ser considerado como o conhecido “Hello World” das linguagens de programação, consiste em acionar um LED através de uma saída digital.

A placa Arduino Uno já possui um Led ligado ao pino digital 13 que pode ser utilizado para o teste, e na IDE podemos carregar o exemplo Blink:


Arduino_6

Para verificar de o código está correto deve-se clicar no ícone verify, após a compilação é exibida uma mensagem de status da operação e caso esteja tudo certo será exibida a quantidade de bytes gerados pelo programa:


Arduino_7

Para grava o código na memória flash do microcontrolador é necessário clicar no ícone Upload, será transferido o código para a placa e após alguns segundos o LED ligado ao pino 13 começará a piscar em intervalos de 1 segundo.

Analisando o Código

O código do exemplo Blink é relativamente simples, porém apresenta a estrutura básica de um programa desenvolvido na IDE Arduino. Inicialmente nota-se que existem duas funções obrigatórias em um programa Arduino, setup() e loop().

A função setup () é executada na inicialização do programa e é responsável pelas configurações iniciais do microcontrolador, tal como definição dos pinos de I/O, inicialização da comunicação serial, entre outras.

A função loop () será onde ocorrerá o laço infinito da programação, ou seja, onde será inserido o código que será executado continuamente pelo microcontrolador.

Dentro do loop principal está o código que fará o led ligado pino 13 piscar em intervalos de 1 segundo.

A função digitalWrite(led, HIGH); coloca o pino em nível lógico 1, ligando o led.

A função delay(1000); aguarda o tempo de 1000 ms, ou seja, 1 segundo para que possa ser executada a próxima instrução.

A função digitalWrite(led, LOW); coloca o pino em nível lógico 0, desligando o led.

E novamente é esperado 1 segundo com a função delay();

O loop é repetido infinitamente enquanto a placa estiver ligada.

A referência da linguagem Arduino pode ser acessada através do menu <help>:


Arduino_8

Testar outros exemplos básicos, é um bom começo para aprender mais sobre a plataforma Arduino.

Referências

http://arduino.cc/

http://playground.arduino.cc//Portugues/HomePage

Licença Creative Commons
Arduino – Primeiros Passos. por Fábio Souza. Esta obra está licenciado com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.