Programando o Arduino no AtmelStudio 6 (completo)
Autor: Jonatas (JAF) | Publicado: 2012-12-06T18:35:00-02:00


 Manual de configuração do AtmelStudio 6 para o seu uso como ambiente de desenvolvimento do Arduimo


Baseado na vídeo-aula Tutorial Arduino + Atmel Studio 6 por Fernando Nunes José Leitão e
nos Tutoriais disponibilizados no site http://www.jayconsystems.com/ 






&nbsp;Jonatas
Augusto de Freitas

jaf@univali.br&nbsp;

automacaoerobotica.blogspot.com.br


&nbsp;
&nbsp;1. Introdução

O Arduino é um projeto que tem como objetivo o
desenvolvimento de uma plataforma opensource voltada à prototipação rápida,
tendo como base os microcontroladores pertencentes à família Atmel da AVR.

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; O
projeto Arduino é mais conhecido por seu hardware, porém também envolve o
desenvolvimento de um software de programação construído em Java e que permite
a programação do microcontrolador em uma linguagem derivada do C++. Tanto o
hardware como o software de programação são chamados de “Arduino.” A combinação
destas ferramentas permite criar sistemas utilizando sensores e atuadores para
controle do mundo físico. Além disso, há uma comunidade ativa relacionada ao
projeto Arduino fornecendo apoio acessível em todo o mundo através de fóruns
(MARGOLIS, 2011).

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; No
site oficial do Arduino é possível efetuar o download do ambiente de
desenvolvimento (IDE) oficial do projeto para desenvolver os sofwares de
controle (também conhecidos como sketches) para placa. Essa IDE possui um
design intuitivo e de fácil uso, sendo mais adequada para os iniciantes quando comparada
com as IDEs tradicionais no desenvolvimento de sistemas embarcados.



Figura 1 - IDE Arduino





Porém, para usuários mais avançados a IDE oficial do Arduino
se torna restritiva devido a sua simplicidade, especialmente por não possuir
uma função de Debug. Uma das soluções para desenvolvedores mais experientes é a
utilização de outras IDEs como por exemplo o Netbeans, o Eclipse e o
AtmelStudio. Entre estes, o AtmelStudio se destaca por ser a IDE oficial da
família de microcontroladores AVR, os mesmos utilizados no Arduino.

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Entre
outras vantagens do uso do AtmelStudio podemos citar:

-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Bibliotecas: compatibilidade com as bibliotecas opensource
disponíveis na comunidade em torno do Arduino;

-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Terminal: utilizado para comunicação Serial, podendo alterar o tipo de dado (entre
ASCII, Hex, Dec, Bin), não ficando restrito apenas ao modo ASCII da&nbsp; IDE
oficial;

-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Autocompletar: função que prevê os comandos enquanto estes
estão sendo digitados, agilizando a programação e evitando erros de sintaxe;

-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Debug: função que permite rodar passo a passo o programa, com o objetivo de
visualizar o comportamento do mesmo na manipulação de variáveis, flags do
processador, status das I/Os e da EEPROM; e

-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Disassembly: Acesso do código em Assembler, permitindo otimização.



Este tutorial é baseado na vídeo-aula Tutorial Arduino + Atmel Studio 6 por Fernando Nunes José Leitão e
nos Tutoriais disponibilizados no site http://www.jayconsystems.com/





2.
Requisitos&nbsp;




Antes de iniciar a configuração do AtmelStudio é necessário que o mesmo
já esteja instalado no computador, assim como a IDE oficial do Arduino. Ambos
podem ser descarregados através dos links abaixo:

-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
AtmelStudio 6: &nbsp;http://www.atmel.com/microsite/atmel_studio6/

-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Arduino Software: &nbsp;http://arduino.cc/en/Main/Software



Observação: Para utilização
do ArduinoMega, a versão do ArduinoSoftware deve ser anterior a 1.0. 



Após efetuar o download dos programas, os mesmos devem ser instalados seguindo
os&nbsp; procedimentos padrão de instalação, que
também podem ser encontrados nas respectivas página de download.

3.
Instalando a ferramenta Terminal Window (Serial)





A ferramenta Terminal Window permite enviar e receber dados através das portas
seriais do computador. Diferente do Monitor Serial da IDE oficial do Arduino,
que se comunica com o microcontrolador apenas no formato de caracteres ASCII, a
Terminal Window permite também a comunicação de dados no formato Hex, Dec e
Bin.

Passo-a-Passo

Na aba Tools, selecione a opção Extension Manager;
Seleciona no
     menu vertical à esquerda a opção Avaliable
     Downloads;
Selecione o
     componente Terminal Window;
Após a
     instalação o mesmo aparecerá na aba View.






4.
Configurando o compilador ARVDude







O AVRDUDE é uma aplicação de código aberto para gravar programas na
Flash de processadores AVR (como os utilizados na plataforma Arduino). 

Passo-a-Passo

Na aba Tools, selecione a opção
     External Tools;&nbsp; 
Na janela External Tools (Figura 2) será possível configurar os
     compiladores do Arduino:



Figura 2 - Janela External Tools


No campo Title digite o nome que deseja dar
     à ferramenta (exemplo: Upload Arduino);
No campo Command deve ser inserido o
     caminho para o aplicativo avrdude.exe,
     localizado dentro da pasta da IDE do Arduino no seguinte endereço /hardware/tools/avr/bin/avrdude.exe 
O campo Arguments fornece ao compilador o
     tipo de microcontrolador e a porta de comunicação (COM) de cada Arduino,
     podendo variar mesmo entre Arduinos idênticos. Os parâmetros podem ser
     obtidos através da IDE oficial. Para isto:

Execute a
      IDE oficial do Arduino;
Conecte o
      seu Arduino ao computador;



c.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Configure o modelo da placa e a porta COM na
aba Tools (ferramentas);



Abra um
      programa exemplo (ex.: Blink);
No menu File (Arquivo) &gt; Preferences, marque a caixa de
      seleção upload (carregar) e em
      seguida no botão OK;
Clique no
      botão Upload  e
      aguarde o fim da gravação.

Figura
3 – Parâmetros do ARVDUDE

 
&nbsp;Na área de retorno da IDE (parte com fundo
preto) serão apresentadas as operações do AVRDURE, sendo a primeira a
localização do mesmo, compatível com o endereço visto no passo anterior. A
instrução seguinte são os parâmetros (Figura 3).



Desta instrução será copiado o texto entre –C e
–Uflash:w:

h.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;O trecho final do parâmetro está relacionado
ao endereço do arquivo .hex do projeto, criado pelo compilador. Para permitir
que este caminho seja genérico você deve digitar após o w: o comando (incluindo as aspas)&nbsp;
"$(ProjectDir)Debug\$(ItemFileName).hex":i


Ficando o parâmetro desde exemplo assim:



-CD:\Documentos\Engenharia\Microcontroladores_e_Arduino\arduino-1.0.1-windows\arduino-1.0.1\hardware/tools/avr/etc/avrdude.conf
-v -v -v -v -patmega168p -carduino -P\\.\COM28 -b57600 -D
-Uflash:w:"$(ProjectDir)Debug\$(ItemFileName).hex":i




Marque a
     opção Use Output window para
     ter um retorno da gravação e clique em Apply &nbsp;e em seguida em OK. 




Está pronta a configuração
do AVRDUDE no AtmelStudio6 e a ferramenta de compilação estará disponível na
aba Tools.


5.
Importando a biblioteca arduino.h





É através da importação da biblioteca arduino.h que se torna possível a utilização da linguagem do
arduino dentro do AtmelStudio, abstraindo operações como a definição de
registradores e flags. Os passos a seguir devem ser executados logo após a
configuração do AVRDUDE.



Passo-a-Passo

Execute a IDE
     oficial do Arduino;
Conecte o seu
     Arduino ao computador;
Configure o
     modelo da placa e a porta COM na aba Tools
     (ferramentas);
Abra um
     programa exemplo (ex.: Blink);
No menu File (Arquivo) &gt; Preferences, marque a caixa de
     seleção Compilation (Compilação)
     e em seguida no botão OK;
Clique no
     botão Verify (verificar) e aguarde
     o fim da compilação;
Na área de
     retorno da IDE (área de fundo preto) serão exibidos os parâmetros da
     compilação. Entre estes parâmetros está o endereço do arquivo core.a criado no modo temporário a
     cada complicação (ao fechar a IDE este arquivo é excluído). Das linhas
     iniciando com Using previously
     compiled: &nbsp;copie o endereço até
     o .tmp , como na Figura 4;
Cole este
     endereço na barra de endereço do Windows Explorer para ter acesso aos
     arquivos da pasta;
Abre uma nova
     janela do Windows Explorer e crie uma pasta denominada ArduinoCore dentro da pasta Atmel Studio, localizada na pasta
     do sistema Documentos (Meus Documentos no WindowsXP);
Copie o
     arquivo core.a localizado na
     pasta visualizada no Passo 8 e renomeie-a para libcore.a;



Figura 4 – Localização da Core.a




A partir
     pasta da IDE do Arduino acesse as subpastas hardware/arduino/cores/arduino &nbsp;e copie todos os arquivos para a pasta ArduinoCore criada no passo 9;


12.&nbsp;
Na pasta ArduinoCore exclua todos os arquivos
com extensão .c e .cpp. Para facilitar esta operação selecione a opção de “Organizar Pastas
por Tipo”;

13.&nbsp;
O próximo
passo é a localização do arquivo que possui a configuração de pinos do Arduino.
Na pasta da IDE do Arduino acesse arduino/hardware/arduino/variants/
e copie a variant (versão) do seu Arduino. Caso não saiba qual a versão da sua variant você pode verificar no arquivo boards.txt dentro da pasta arduino/hardware/arduino/. A versão da
Variant pode ser encontrada na linha
uno.build.variant. Uma vez identificada a versão da variant, copie o
arquivo pins_arduino.h presente na
subpasta da versão correspondente para a pasta ArduinoCore criada no passo 9;


&nbsp;Com esses passos está concluída a etapa de
configuração do AtmelStudio, permitindo agora a programação do Arduino.



6. Criando um projeto





Passo-a-Passo

1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Na tela
principal do AtmelStudio, clique no menu File&gt;New&gt;Project
(tecla de atalho: Ctrl+Shift+N);

2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Selecione
a opção GCC C++ Executable Project;


 

  

   
  

   
   

Figura
4 – AtmelStudio: New Project


  

&nbsp;



3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
No campo Name digite o nome do seu projeto (lembre
de não usar caracteres especiais ou deixar espaços). Se desejar altere a
localização do seu projeto e o nome da solução. Clique em OK;

4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Na janela
seguinte (Device Selection), escolha
o microcontrolador do seu Arduino e clique em OK e aguarde a criação do projeto;

5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Após a
criação do projeto clique na aba Project&gt;Properties
&nbsp;para importar as bibliotecas do
Arduino para o seu projeto;

6.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Na aba da
esquerda escolha a opção Toolchain;



7.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Na arvore
de configurações escolha inicialmente a opção AVR/GNU C Complier&gt;Directories e clique no botão Add Item .


a.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Desmarque
a opção Relative Path (*importante desmarcar a opção antes de tentar
localizar a pasta ou o AtmelStudio irá travar)

b.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Clique no
botão [...] e localize a pasta ArduinoCore
que foi criada nos passos anteriores; 

8.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Na arvore
de configurações escolha a opção AVR/GNU
C Complier&gt;Optimization. No campo Optimization
Level selecione Optimize for size.
Marque também a caixa Prepare Functiond
for garbage collection;

9.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Em
seguida, escolha a opção AVR/GNU C++
Complier&gt;Directories e clique no botão Add Item .


a.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Desmarque
a opção Relative Path (*importante desmarcar a opção antes de tentar localizar a
pasta ou o AtmelStudio irá travar);

b.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Clique no
botão [...] e localize a pasta ArduinoCore
que foi criada nos passos anteriores; 

10.&nbsp;
Na arvore
de configurações escolha a opção AVR/GNU
C++ Complier&gt;Optimization. No campo Optimization
Level selecione Optimize for size.
Marque também a caixa Prepare Functiond
for garbage collection;

11.&nbsp;
Para
adicionar a função de core no
projeto selecione a opção AVR/GNU
Linker&gt;Libraries. 

a.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Na caixa
de texto Libraries clique no botão Add Item  e digite libcore;

b.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Em seguida
indique o caminho de biblioteca libcore.a;&nbsp; 

c.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Desmarque
a opção Relative Path (*importante desmarcar a opção antes de tentar localizar a
pasta ou o AtmelStudio irá travar);

d.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Clique no
botão [...] e localize a pasta ArduinoCore
que foi criada nos passos anteriores; 

12.&nbsp;
Para
adicionar a função de core no
projeto selecione a opção AVR/GNU
Linker&gt; Optimization. Marque a caixa Prepare Functiond for garbage collection;

13.&nbsp;
Clique em
salvar e feche esta tela;

14.&nbsp;
Apague
todos os comandos no arquivo .cpp e
adicione o seguinte cabeçalho:

 

  
#define F_CPU 16000000 //clock do processador

#define ARDUINO 101 //versão da biblioteca

#include “Arduino.h”&nbsp; //biblioteca
  base do Arduino

 


Ao fim destes passos você já tem o AtmelStudio
configurado e um projeto criado, pronto para receber todos os comando da
biblioteca base do Arduino, como estivesse programando na IDE original do
projeto.


7.
Código de Exemplo Blink – Testando a configuração




Para verificar se o procedimento foi executado
com sucesso podemos programar um programa simples que tem como função piscar o led onboard conectado ao pino de I/O
digital 13. Abaixo o código fonte:



 

  
#define F_CPU 16000000 //clock do processador

#define ARDUINO 101 //versão da biblioteca

#include “Arduino.h”&nbsp; //biblioteca base do Arduino

/*

&nbsp; Blink

&nbsp; Turns on an LED on for one
  second, then off for one second, repeatedly.

&nbsp;&nbsp; This example code is in the
  public domain.

&nbsp;*/

// Pin 13 has an LED connected on most Arduino boards.

// give it a name:

int led = 13;



// the setup routine runs once when you press reset:

void setup() {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  

&nbsp; // initialize the digital
  pin as an output.

&nbsp; pinMode(led, OUTPUT);&nbsp;&nbsp;&nbsp;&nbsp; 

}

// the loop routine runs over and over again forever:

void loop() {

&nbsp; digitalWrite(led,
  HIGH);&nbsp;&nbsp; // turn the LED on (HIGH is
  the voltage level)

&nbsp; delay(1000);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // wait for a second

&nbsp; digitalWrite(led,
  LOW);&nbsp;&nbsp;&nbsp; // turn the LED off by making
  the voltage LOW

&nbsp; delay(1000);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // wait for a second

}

 




Para compilar o projeto clique no botão Build Solution (tecla de atalho F7).
Após a compilação, na aba Tools execute
a ferramenta de upload criada nos passos anteriores. Lembrando que para cada
placa diferente (outro microcontrolador e/ou porta COM diferente) que você
conectar deverá ser criado uma “ferramenta externa” especifica.


8.
Adicionando outras bibliotecas



Adicionando as bibliotecas da IDE do Arduino ao seu projeto



Passo-a-passo

Copie a pasta
     da biblioteca (na subpasta Libraries
     da IDE).
Na pasta Documentos/Atmel Studio crie uma
     nova pasta (ex.: bibliotecasArduino)
     e copie as bibliotecas para dentro dela;
Na tela
     principal do AtmelStudio clique
     na aba Project&gt;... Properties;
Na aba da
     esquerda escolha a opção Toolchain;
Na arvore de
     configurações escolha inicialmente a opção AVR/GNU C Complier&gt;Directories e clique no botão Add Item .
     


a.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Desmarque
a opção Relative Path (*importante desmarcar a opção antes de tentar
localizar a pasta ou o AtmelStudio irá travar)

b.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Clique no
botão [...] e localize a pasta principal da biblioteca que deseja usar; 

Em seguida,
     escolha a opção AVR/GNU C++
     Complier&gt;Directories e clique no botão Add Item .
     


a.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Desmarque
a opção Relative Path (*importante desmarcar a opção antes de tentar localizar a
pasta ou o AtmelStudio irá travar);

b.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Clique no
botão [...] e localize a pasta principal da biblioteca que deseja usar; 

Salve as
     alterações (botão salvar); e
Insira o
     comando de Inclusão da biblioteca no cabeçalho do seu programa. Exemplo:


 

  
#define F_CPU 16000000 //clock do processador

#define ARDUINO 101 //versão da biblioteca

#include “Arduino.h”&nbsp; //biblioteca base do Arduino



#include “Servo.h”&nbsp; //biblioteca para controle de ServoMotores 



 







9.
Créditos

Este tutorial é baseado na vídeo-aula Tutorial Arduino + Atmel Studio 6 por Fernando Nunes José Leitão.

Fernando Nunes José Leitão é estudante do último ano do curso de Engenharia
Mecatrônica na Fundação Santo André (SP) e Garagista do Laboratório de Garagem.
Perfil do Fernando no LdG
&nbsp;---


10. Referências



&nbsp;MARGOLIS,
Michael. Arduino Cookbook. O’Reilly Media, Inc. 2011.

LEITÃO, Fernando N.J. Tutorial
Arduino + Atmel Studio 6. Disponível em 

&lt; http://youtu.be/qEcWR5EUNdk&gt;
e &lt;http://youtu.be/F74khQnh9pM&gt;