Tutorial: Programando o Arduino no AtmelStudio 6

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

jaf@univali.br , jonatas.engcomp@gmail.com


 1. Introduçã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 5 – 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

a href="http://youtu.be/qEcWR5EUNdk">http://youtu.be/qEcWR5EUNdk> e a href="http://youtu.be/F74khQnh9pM">http://youtu.be/F74khQnh9pM>

Exibições: 3164

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Douglas em 10 dezembro 2012 às 2:41

Muito bom seu tutorial, obrigado por compartilhar.

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço