Programando o Arduino no AtmelStudio 6 (completo)

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/




 Jonatas Augusto de Freitas
 
 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.
            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).
            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.
            Entre outras vantagens do uso do AtmelStudio podemos citar:
-        Bibliotecas: compatibilidade com as bibliotecas opensource disponíveis na comunidade em torno do Arduino;
-        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  IDE oficial;
-        Autocompletar: função que prevê os comandos enquanto estes estão sendo digitados, agilizando a programação e evitando erros de sintaxe;
-        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
-        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 


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:
-        AtmelStudio 6:  http://www.atmel.com/microsite/atmel_studio6/
-        Arduino Software:  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  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
  1. Na aba Tools, selecione a opção Extension Manager;
  2. Seleciona no menu vertical à esquerda a opção Avaliable Downloads;
  3. Selecione o componente Terminal Window;
  4. 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
  1. Na aba Tools, selecione a opção External Tools; 
  2. Na janela External Tools (Figura 2) será possível configurar os compiladores do Arduino:
Figura 2 - Janela External Tools
  1. No campo Title digite o nome que deseja dar à ferramenta (exemplo: Upload Arduino);
  2. 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
  3. 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:
    1. Execute a IDE oficial do Arduino;
    2. Conecte o seu Arduino ao computador;
c.       Configure o modelo da placa e a porta COM na aba Tools (ferramentas);

    1. Abra um programa exemplo (ex.: Blink);
    2. No menu File (Arquivo) > Preferences, marque a caixa de seleção upload (carregar) e em seguida no botão OK;
    3. Clique no botão Upload e aguarde o fim da gravação.
      Figura 3 – Parâmetros do ARVDUDE
    4.  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.       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)  "$(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

  1. Marque a opção Use Output window para ter um retorno da gravação e clique em Apply  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
  1. Execute a IDE oficial do Arduino;
  2. Conecte o seu Arduino ao computador;
  3. Configure o modelo da placa e a porta COM na aba Tools (ferramentas);
  4. Abra um programa exemplo (ex.: Blink);
  5. No menu File (Arquivo) > Preferences, marque a caixa de seleção Compilation (Compilação) e em seguida no botão OK;
  6. Clique no botão Verify (verificar) e aguarde o fim da compilação;
  7. 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:  copie o endereço até o .tmp , como na Figura 4;
  8. Cole este endereço na barra de endereço do Windows Explorer para ter acesso aos arquivos da pasta;
  9. 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);
  10. 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

  1. A partir pasta da IDE do Arduino acesse as subpastas hardware/arduino/cores/arduino  e copie todos os arquivos para a pasta ArduinoCore criada no passo 9;
12.  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.  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;
 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.      Na tela principal do AtmelStudio, clique no menu File>New>Project (tecla de atalho: Ctrl+Shift+N);
2.      Selecione a opção GCC C++ Executable Project;


Figura 4 – AtmelStudio: New Project
 
3.      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.      Na janela seguinte (Device Selection), escolha o microcontrolador do seu Arduino e clique em OK e aguarde a criação do projeto;
5.      Após a criação do projeto clique na aba Project>Properties  para importar as bibliotecas do Arduino para o seu projeto;
6.      Na aba da esquerda escolha a opção Toolchain;

7.      Na arvore de configurações escolha inicialmente a opção AVR/GNU C Complier>Directories e clique no botão Add Item .
a.       Desmarque a opção Relative Path (*importante desmarcar a opção antes de tentar localizar a pasta ou o AtmelStudio irá travar)
b.      Clique no botão [...] e localize a pasta ArduinoCore que foi criada nos passos anteriores;
8.      Na arvore de configurações escolha a opção AVR/GNU C Complier>Optimization. No campo Optimization Level selecione Optimize for size. Marque também a caixa Prepare Functiond for garbage collection;
9.      Em seguida, escolha a opção AVR/GNU C++ Complier>Directories e clique no botão Add Item .
a.       Desmarque a opção Relative Path (*importante desmarcar a opção antes de tentar localizar a pasta ou o AtmelStudio irá travar);
b.      Clique no botão [...] e localize a pasta ArduinoCore que foi criada nos passos anteriores;
10.  Na arvore de configurações escolha a opção AVR/GNU C++ Complier>Optimization. No campo Optimization Level selecione Optimize for size. Marque também a caixa Prepare Functiond for garbage collection;
11.  Para adicionar a função de core no projeto selecione a opção AVR/GNU Linker>Libraries.
a.       Na caixa de texto Libraries clique no botão Add Item e digite libcore;
b.      Em seguida indique o caminho de biblioteca libcore.a; 
c.       Desmarque a opção Relative Path (*importante desmarcar a opção antes de tentar localizar a pasta ou o AtmelStudio irá travar);
d.      Clique no botão [...] e localize a pasta ArduinoCore que foi criada nos passos anteriores;
12.  Para adicionar a função de core no projeto selecione a opção AVR/GNU Linker> Optimization. Marque a caixa Prepare Functiond for garbage collection;
13.  Clique em salvar e feche esta tela;
14.  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”  //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”  //biblioteca base do Arduino
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
   This example code is in the public domain.
 */
// 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() {               
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);    
}
// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // 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
  1. Copie a pasta da biblioteca (na subpasta Libraries da IDE).
  2. Na pasta Documentos/Atmel Studio crie uma nova pasta (ex.: bibliotecasArduino) e copie as bibliotecas para dentro dela;
  3. Na tela principal do AtmelStudio clique na aba Project>... Properties;
  4. Na aba da esquerda escolha a opção Toolchain;
  5. Na arvore de configurações escolha inicialmente a opção AVR/GNU C Complier>Directories e clique no botão Add Item .
a.       Desmarque a opção Relative Path (*importante desmarcar a opção antes de tentar localizar a pasta ou o AtmelStudio irá travar)
b.      Clique no botão [...] e localize a pasta principal da biblioteca que deseja usar;
  1. Em seguida, escolha a opção AVR/GNU C++ Complier>Directories e clique no botão Add Item .
a.       Desmarque a opção Relative Path (*importante desmarcar a opção antes de tentar localizar a pasta ou o AtmelStudio irá travar);
b.      Clique no botão [...] e localize a pasta principal da biblioteca que deseja usar;
  1. Salve as alterações (botão salvar); e
  2. 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”  //biblioteca base do Arduino

#include “Servo.h”  //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
 ---
10. Referências

 MARGOLIS, Michael. Arduino Cookbook. O’Reilly Media, Inc. 2011.
LEITÃO, Fernando N.J. Tutorial Arduino + Atmel Studio 6. Disponível em

Nenhum comentário:

Postar um comentário