Mostrando postagens com marcador Arduino. Mostrar todas as postagens
Mostrando postagens com marcador Arduino. Mostrar todas as postagens

terça-feira, 1 de junho de 2010

Arduino Duemilanove com ATmega328

O Arduino Duemilanove ("2009") é uma placa de microcontrolador baseada no ATmega328 (datasheet). Ele possui 14 pinos de entrada/saída digital (dos quais 6 podem ser usados como saídas analógicas PWM), 6 entradas analógicas, um cristal oscilador de 16 MHz, uma conexão USB, uma entrada para alimentação, um cabeçalho ICSP e um botão de reset. Ele contém tudo que é necessário para que o microcontrolador funcione; para começar, apenas faça a conexão com um computador através de um cabo USB ou use uma fonte de alimentação de corrente contínua ou uma bateria.

"Duemilanove" significa 2009 em italiano e o nome foi escolhido pelo ano de lançamento. O Duemilanove é a mais recente de uma série de placas Arduino USB; para uma comparação com versões prévias veja o índice das placas Arduino.

Características

MicrocontroladorATmega328
Voltagem operacional5V
Voltagem de alimentação (recomendada)7-12V
Voltagem de alimentação (limites)6-20V
Pinos I/O digitais14 (dos quais 6 podem ser saídas PWM)
Pinos de entrada analógica6
Corrente contínua por pino I/O40 mA
Corrente contínua para o pino 3.3V50 mA
Memória flash32 KB (2KB usados para o bootloader)
SRAM2 KB
EEPROM1 KB
Velocidade de clock16 MHz

Alimentação

O Arduino Duemilanove pode ser alimentado pela conexão USB ou por qualquer fonte de alimentação externa. A fonte de alimentação é selecionada automaticamente.

Alimentação externa (não-USB) pode ser tanto de uma fonte ou de uma bateria. A fonte pode ser conectada com um plug de 2,1mm (centro positivo) no conector de alimentação. Cabos vindos de uma bateria podem ser inseridos nos pinos Gnd (terra) e Vin (entrada de voltagem) do conector de alimentação.

A placa pode operar com uma alimentação externa de 6 a 20 volts. Entretanto, se a alimentação for inferior a 7 volts o pino 5V pode fornecer menos de 5 volts e a placa pode ficar instável. Se a alimentação for superior a 12 volts o regulador de voltagem pode super-aquecer e avariar a placa. A alimentação recomendada é de 7 a 12 volts.

Os pinos de alimentação são:

  • VIN. Entrada de alimentação para a placa Arduino quando uma fonte externa for utilizada. Você pode fornecer alimentação por este pino ou, se usar o conector de alimentação, acessar a alimentação por este pino.
  • 5V. A fonte de alimentação utilizada para o microcontrolador e para outros componentes da placa. Pode ser proveniente do pino Vin através de um regulador on-board ou ser fornecida pelo USB ou outra fonte de 5 volts.
  • 3V3. Alimentação de 3,3 volts fornecida pelo chip FTDI. A corrente máxima é de 50 mA.
  • GND. Pino terra.

Memória

O ATmega328 tem 32 KB de memória flash para armazenar código (dos quais 2 KB são utilizados pelo bootloader), além de 2 KB de SRAM e 1 KB of EEPROM (que pode ser lida e escrita através da biblioteca EEPROM ).

Entrada e Saída

Cada um dos 14 pinos digitais do Duemilanove pode ser usado como entrada ou saída usando as funções de pinMode(),digitalWrite(), e digitalRead(). Eles operam com 5 volts. Cada pino pode fornecer ou receber um máximo de 40 mA e tem um resistor pull-up interno (desconectado por padrão) de 20-50 kOhms. Além disso, alguns pinos têm funções especializadas:

  • Serial: 0 (RX) e 1 (TX). Usados para receber (RX) e transmitir (TX) dados seriais TTL. Estes pinos são conectados aos pinos correspondentes do chip serial FTDI USB-to-TTL.
  • External Interrupts: 2 and 3. Estes pinos podem ser configurados para disparar uma interrupção por um baixo valor, uma elevação ou falling edge ou uma mudança de valor. Veja a função attachInterrupt() para mais detalhes.
  • PWM: 3, 5, 6, 9, 10, e 11. Fornecem uma saída analógica PWM de 8-bit com a função analogWrite().
  • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estes pinos suportam comunicação SPI, que embora compatível com o hardware, não está incluída na linguagem do Arduino.
  • LED: 13. Há um LED já montado e conectado ao pino digital 13. Quando o pino está no valor HIGH, o LED acende; quando o valor está em LOW, ele apaga.

O Duemilanove tem 6 entradas analógicas e cada uma delas tem uma resolução de 10 bits (i.e. 1024 valores diferentes). Por padrão, elas medem de 0 a 5 volts, embora seja possível mudar o limite superior usando o pino AREF e um pouco de código de baixo nível. Adicionalmente alguns pinos têm funcionalidades especializadas:

  • I2C: 4 (SDA) and 5 (SCL). Suportam comunicação I2C (TWI) usando a biblioteca Wire (documentação no site do WIRE).

Há ainda alguns outros pinos na placa:

  • AREF. Referência de voltagem para entradas analógicas. Usados com analogReference().
  • Reset. Envie o valor LOW para resetar o microcontrolador. Tipicamente utilizados para adicionar um botão de reset aos shields que bloqueiam o que há na placa.

Veja também mapeando entre os pinos do Arduino e as portas do ATmega 168 e referência do ATmega328.

Comunicação

Com o Arduino Duemilanove a comunicação com um computador, com outro Arduino ou com outros microcontroladores é muito simplificada. O ATmega328 permite comunicação serial no padrão UART TTL (5V), que está disponível nos pinos digitais 0 (RX) e 1 (TX). Um chip FTDI FT232RL na placa encaminha esta comunicação serial através do USB e os drives FTDI (incluído no software do Arduino) fornece uma porta COM virtual para o software no computador. O software Arduino inclui um monitor serial que permite que dados simples de texto sejam enviados à placa Arduino. Os LEDs RX e TX da placa piscam quando os dados estão sendo transferidos ao computador pelo chip FTDI e a conexão USB (mas não quando há comunicação serial pelos pinos 0 e 1).

A biblioteca SoftwareSerial permite comunicação serial por quaisquer dos pinos digitais do Duemilanove.

O ATmega328 também oferece suporte aos padrões de comunicação I2C (TWI) e SPI. O software do Arduino inclui uma biblioteca Wire para simplificar o uso do bus I2C; veja a documentação no site do Wiring para mais detalhes. Para usar a comunicação SPI veja a folha de informações do ATmega328.

Programação

O Arduino Duemilanove pode ser programado com o software Arduino (download). Para mais detalhes veja referência e tutoriais.

O ATmega328 no Arduino Duemilanove vem pré-gravado com um bootloader que permite enviar novos programas sem o uso de um programador de hardware externo. Ele se comunica utilizando o protocolo original STK500 (referência, C header files).

Você também pode programar o ATmega328 através do ICSP (In-Circuit Serial Programming) header; veja estas instruções para mais detalhes.

Reset automático (Software)

Algumas versões anteriores do Arduino requerem um reset físico (pressionando o botão de reset na placa) antes de carregar um sketch. O Arduino Duemilanove é projetado de modo a permitir que isto seja feito através do software que esteja rodando no computador conectado. Uma das linhas de controle de hardware (DTR) do FT232RL está conectada ao reset do ATmega328 via um capacitor de 100 nanofarads . Quando esta linha é resetada (ativo baixo) o sinal cai por tempo suficiente para resetar o chip. O software Arduino usa esta característica para permitir carregar o programa simplesmente pressionando o botão "upload" no ambiente Arduino. Isto significa que o "bootloader" pode ter um "timeout" mais curto, já que a ativação do DTR (sinal baixo) pode ser bem coordenada com o início do "upload".

Esta configuração tem outras implicações. Quando o Duemilanove está conectado a um computador rodando Mac OS X ou Linux, ele reseta toda vez que a conexão é feita por software (via USB). No próximo meio segundo aproximadamente, o bootloader estará rodando no Duemilanove. Considerando que é programado para ignorar dados espúreos (i.e. qualquer coisa a não ser um "upload" de um novo código), ele interceptará os primeiros bytes de dados sendo enviados para a placa depois que a conexão é aberta. Se um "sketch" rodando na placa recebe configuração de uma vez ou outros dados ao inicializar, assegure-se que o software que esteja comunicando espere um segundo depois de aberta a conexão antes de enviar estes dados.

O Duemilanove tem uma trilha que pode ser cortada para desabilitar o auto-reset e pode ser ressoldada para reativá-lo. É chamada de "RESET-EN". Você pode também desabilitar o auto-reset conectando um resistor de 110 ohms dos +5V até o sinal de reset; veja este fórum para detalhes.

Proteção contra sobrecorrente USB

O Arduino Duemilanove tem um polifusível resetável que protege a porta USB do seu computador contra curto-circuito e sobrecorrente. Apesar da maioria dos computadores possuírem proteção interna própria, o fusível proporciona uma proteção extra. Se mais de 500mA foram aplicados na porta USB, o fusível irá automaticamente interromper a conexão até que o curto ou a sobrecarga seja removida.

Características físicas

O comprimento e largura máximos do Duemilanove são 2,7" (68,50 mm) e 2,1" (53,34 mm) respectivamente, com o conector USB e o jack de alimentação indo um pouco além destas dimensões. Três furos de fixação permitem a montagem da placa numa superfície ou caixa. Note que a distância entre os pinos de entrada e saída digitais nº 7 e nº 8 é de 160 mil (milésimos de polegada), não é sequer múltiplo do espaçamento de 100 mil dos outros pinos.

Arduino - Microcontrolador

Arduino, por vezes traduzida ao português como Arduíno,[1] é um computador físico baseado numa simples plataforma de hardware livre, projetada com um microcontrolador de placa única, com suporte de entrada/saída embutido e umalinguagem de programação padrão,[2] na qual tem origem em Wiring, e é essencialmente C/C++.[3] O objetivo do projeto é criar ferramentas que são acessíveis, com baixo custo, flexíveis e fáceis de se usar por artistas e amadores. Principalmente para aqueles que não teriam alcance aos controladores mais sofisticados e de ferramentas mais complicadas.[4]

Pode ser usado para o desenvolvimento de independentes objetos interativos, ou ainda para ser conectado a um computador hospedeiro. Uma típica placa Arduino é composta por um controlador, algumas linhas de E/S digital e analógica, além de uma interface serial ou USB, para interligar-se ao hospedeiro, que é usado para o programar e o interagir em tempo real. Ele em si não possui qualquer recurso de rede, porém é comum combinar um ou mais Arduinos deste modo, usando extensões apropriadas chamadas de shield. A interface do hospedeiro é simples, podendo ser escrita em várias linguagens. A mais popular é a Processing, mas outras que podem comunicar-se com a conexão serial são: Max/MSP, Pure Data, SuperCollider, ActionScript e Java.[5]

Atualmente, seu hardware é feito através de um microcontrolador Atmel AVR, sendo que este não é um requerimento formal e pode ser estendido se tanto ele quanto a ferramenta alternativa suportarem a linguagem Arduino e forem aceitas por seu projeto.[2] Considerando esta característica, muitos projetos paralelos se inspiram em cópias modificadas com placas de expansões, e acabam recebendo seus próprios nomes.

Apesar do sistema poder ser montado pelo próprio usuário, os mantenedores atualmente possuem um serviço de venda do produto pré-montado, através deles próprios e também por distribuidores oficiais com pontos de venda mundiais.

O projeto iniciou-se na cidade de Ivrea, Itália, em 2005, com o intuito de interagir em projetos escolares de forma a ter um orçamento menor que outros sistemas de prototipagem disponíveis naquela época. Seu sucesso foi sinalizado com o recebimento de uma menção honrosa na categoria Comunidades Digitais em 2006, pela Prix Ars Electronica,[6][7] além da marca de mais de 50.000 placas vendidas até outubro de 2008.[8]

Índice

[esconder]


Plataforma


Hardware

Sua placa consiste em um microcontrolador Atmel AVR de 8 bits, com componentes complementares para facilitar a programação e incorporação para outros circuitos. Um importante aspecto é a maneira padrão que os conectores são expostos, permitindo o CPU ser interligado a outros módulos expansivos, conhecidos como shields. Os Arduinos originais utilizam a série de chips megaAVR, especialmente os ATmega8, ATmega168, ATmega328 e a ATmega1280; porém muitos outros processadores foram utilizados por clones deles.

A grande maioria de placas inclui um regulador linear de 5 volts e um oscilador de cristal de 16 MHz (Podendo haver variantes com um ressonador cerâmico), embora alguns esquemas como o LilyPad usam até 8 Mhz e dispensam um regulador de voltagem embutido, por ter uma forma específica de restrições de fator. Além de ser microcontrolador, o componente também é pré-programado com um bootloader que simplifica o carregamento de programas para o chip dememória flash embutido, comparado com outros aparelhos que usualmente necessitam de um chip programador externo.

Arduino conectado a umaprotoboard

Conceitualmente, quando seu software é utilizado, ele monta todas as placas sobre uma programação de conexão serial RS-232, mas a maneira que é implementado no hardware varia em cada versão. Suas placas serial contém um simples circuito inversor para converter entre os sinais dos níveis RS-232 eTTL. Atualmente, existem alguns métodos diferentes para realizar a transmissão dos dados, como por placas programáveis via USB, adicionadas através de um chip adaptador USB-para-Serial como o FTDI FT232. Algumas variantes, como o Arduino Mini e o não oficial Boarduino, usam um módulo, cabo adaptador USB, bluetooth ou outros métodos. Nestes casos, são usados com ferramentas microcontroladoras ao invés do Arduino IDE, utilizando assim a programação padrão AVR ISP.[9][10]

FTDI acoplado num Arduino NG

A maioria dos pinos de E/S dos microcontroladores são para uso de outros circuitos. A versão Diecimila, que foi substituída pela Duemilanove, por exemplo, disponibiliza 14 pinos digitais, 6 das quais podem produzir sinais MLP, além de 6 entradas analógicas. Estes estão disponíveis em cima da placa, através de conectores fêmeas de 0,1 polegadas(ou 0,25 centímetros).

O modelo Nano, Boarduino e placas compatíveis com estas, fornecem conectores machos na parte de baixo da placa, para serem plugados emprotoboards.


Software

O Arduino IDE é uma aplicação multi-plataforma escrita em Java na qual é derivada dos projetos Processing e Wiring.[11] É esquematizado para introduzir a programação a artistas e a pessoas não familiarizadas com o desenvolvimento de software. Inclui um editor de código com recursos derealce de sintaxe, parênteses correspondentes e identação automática, sendo capaz de compilar e carregar programas para a placa com um único clique. Com isso não há a necessidade de editar Makefiles ou rodar programas em ambientes de linha de comando.[4][12]

Tendo uma biblioteca chamada "Wiring", ele possui a capacidade de programar em C/C++. Isto permite criar com facilidade muitas operações de entrada e saída, tendo que definir apenas duas funções no pedido para fazer um programa funcional:

  • setup() – Inserida no inicio, na qual pode ser usada para inicializar configuração, e
  • loop() – Chamada para repetir um bloco de comandos ou esperar até que seja desligada.

Habitualmente, o primeiro programa que é executado tem a simples função de piscar um LED. No ambiente de desenvolvimento, o usuário escreve um programa exemplo como este:

# define LED_PIN 13   void setup () {     pinMode (LED_PIN, OUTPUT);  // habilita o pino 13 para saída digital (OUTPUT). }   void loop () {     digitalWrite (LED_PIN, HIGH);  // liga o LED.   delay (1000);                  // espera 1 segundo (1000 milissegundos).   digitalWrite (LED_PIN, LOW);   // desliga o LED.   delay (1000);                  // espera 1 segundo. } 

O código acima não seria visto pelo compilador como um programa válido, então quando o usuário tentar carregá-lo para a placa, uma cópia do código é escrita para um arquivo temporário com um cabeçalho extra incluído no topo, e uma simples função principal como mostrada abaixo:

# include "WProgram.h" # define LED_PIN 13   void setup () {     pinMode (LED_PIN, OUTPUT);     // habilita o pino 13 para saída digital (OUTPUT). }   void loop () {     digitalWrite (LED_PIN, HIGH);  // liga o LED.   delay (1000);                  // espera 1 segundo (1000 milissegundos).   digitalWrite (LED_PIN, LOW);   // desliga o LED.   delay (1000);                  // espera 1 segundo. }   int main(void) {     init();       setup();       for (;;)         loop();       return 0; } 

"WProgram.h" é um recurso para referenciar a biblioteca Wiring, e a função main() apenas faz três chamadas distintas: init(), definida em sua própria biblioteca, setup() e loop(), sendo as duas últimas configuradas pelo usuário.

O Arduino IDE usa o Conjunto de ferramentas GNU e o AVR Libc para compilar os programas, para depois, com o avrdude, enviar os programas para a placa.


Hardware oficial

Diecimila.

O Arduino original é fabricado pela companhia italiana Smart Projects, porém a estadunidense SparkFun Electronics também possui algumas marcas comerciais sob a mesma licença.

Até hoje foram produzidas comercialmente 11 versões do dispositivo:[13]

ModeloDescrição e tipo de conexão ao hospedeiroControlador
Serial ArduinoSerial DB9 para programaçãoATmega8
Arduino ExtremeUSB para programaçãoATmega8
Arduino MiniVersão em miniatura do Arduino utilizando montagem superficialATmega168
Arduino NanoVersão menor que o Arduino Mini, energizado por USB e conectado por montagem superficialATmega168
LilyPad ArduinoProjeto minimalista para aplicações portáteis, utilizando montagem superficialATmega168
Arduino NGUSB para programaçãoATmega8
Arduino NG plusUSB para programaçãoATmega168
Arduino BTinterface bluetooth para comunicaçãoATmega168
Arduino DiecimilaInterface USBAtmega168 em um pacote DIL28 (foto)
ArduinoDuemilanoveDuemilanove significa "2009" em italiano. É energizado via USB/DC, com alternação automáticaAtmega168 (Atmega328 para a versão mais nova)
Arduino MegaMontagem superficialATmega1280 para E/S adicionais e memória


Licenças de Hardware e Software

Os projetos e esquemas de hardwares são distribuídos sob a licença Creative Commons Attribution Share-Alike 2.5, e estão disponíveis em sua página oficial. Arquivos de layout e produção para algumas versões também estão hospedadas.[13] A código fonte para o IDE e a biblioteca de funções da placa são disponibilizadas sob a licença GPLv2 e hospedadas pelo projeto Google Code.[12]


Acessórios

Um shield de prototipagem, montado num Arduino.
O Arduino e clones fazem uso de shields (escudos, em inglês), nas quais são placas de circuito impresso normalmente fixados no topo do aparelho, através de uma conexão alimentada por pinos-conectores. Estes são expansões para ele, sendo que disponibilizam várias funções específicas, desde manipulação de motores até sistemas de rede sem fio.[14]

Por Exemplo (em inglês):


Clones

O documento de política oficial enfatiza que o projeto é aberto para a incorporação de trabalhos paralelos no produto original, e apesar de o hardware e software serem projetados sob licenças copyleft, os desenvolvedores vem expressando um desejo de que o nome "Arduino" (ou derivados dele) seja exclusivo para o produto oficial, e não seja usado para trabalhos de terceiros sem autorização.[15]

Devido a isso, um grupo de usuários criou um projeto alternativo, baseado na versão Diecimila, chamado de Freeduino, sendo que o nome não possui nenhum uso de direito autoral, e é livre para ser usado para qualquer fim.[16]

Alguns produtos compatíveis não oficiais que obtiveram êxito em lançamentos, possuem a terminação duino como forma de se referenciar ao dispositivo da qual derivaram.


Modelos Clone

As placas a seguir são quase ou totalmente compatíveis tanto com o hardware quanto com o software do Arduino, incluindo serem capazes de aceitarem placas derivadas do mesmo.

Metalab, local onde se desenvolve o Metaboard, clone do Arduino
ModeloDescrição
Freeduino SBFabricado e vendido como mini-kit pela Solarbotics Ltd.
Freeduino MaxSerialPlaca com porta padrão serial DB9, fabricado e vendido em pacote ou em partes pela Fundamental Logic.
Freeduino Through-HoleSuperfície montada, fabricada e vendida como um pacote pela NKC Electronics.
IlluminatoUtiliza ATMega645 ao invés de um ATMega168. Disponibiliza 64k de flash, 4K de RAM e 32 pinos gerais de E/S. O Hardware e firmware são código aberto. Projetada para ter uma aparência esbelta e tem 10 LEDs que podem ser controlados usando uma instrução "oculta" . é desenvolvida pela Liquidware.
metaboardProjetada para ter pouca complexidade e baixo preço. O hardware e firmware são código aberto. É desenvolvida pela Metalab, umhackerspace em Viena.
SeeeduinoDerivada da Diecimila.
eJackinoPacote da CQ no Japão. Similar ao Seeeduino, podendo utilizar placa universais como os shields. Na parte de trás, há uma "estação Akihabara" de seda, parecido com o do Arduino.
WiseduinoPlaca microcontroladora, incluindo um relógio de tempo real (RTC) DS1307, com bateria reserva, um chip EEPROM 24LC256 e um conector para adaptadores XBee.


Clones com bootloaders compatíveis

As placas a seguir são compatíveis com o software do Arduino mas não aceitam shields. Elas possuem diferentes conectores para energia e E/S, tais como uma série de pinos do lado de baixa da placa para facilitar o uso com protoboards, ou para conexões mais específicas.

ModeloDescriçãoChip Controlador
Oak Micros om328pArduino Duemilanove compactado até um dispositivo que seja capaz de ser prototificada (36mm x 18mm), que pode ser inserida em um socket padrão de 600mil e 28 pinos. Capacidade de USB e 6 LEDs embutidosATmega328p
BoarduinoUm clone inexpansivo da Diecimila feito para prototipagem, produzida pela AdafruitATmega328P
Bare Bones Board (BBB) (BBB) e Really Bare Bones Board(RBBB)Compacto e não expansivo, próprio para prototipagem. Feito pela Modern DeviceATmega168/328P
iDuinoPlaca USB para prototipagem, produzida e vendida como um pacote pela Fundamental LogicATmega/168/328
SanguinoClone de fonte livre do Arduino. Possui 64K de flash, 4K de RAM, 32 pinos de E/S gerais, um pino 40 DIP. É desenvolvido com o intuito de ser utilizado pelo Projeto RepRapATmega644P
LEDuinoPlaca reforçada com I²C, decodificador DCC e uma interface CAN-bus. Produzida utilizando montagem superficial vendida pronta pela Siliconrailway.NC
StickduinoPlaca não expansiva, similar a um pen driveATmega168
RoboduinoProjetado para robótica. Todas as suas conexões são distribuídas para que os sensores e servos possam facilmente serem anexados. Entradas adicionais para energia e comunicação serial também estão disponíveis. Desenvolvida pela Curious Inventor, L.L.C.NC
Wireless WidgetCompacto (35 mm x 70 mm), Baixa voltagem, bateria de energia igual ao do Arduino, e wireless capaz de alcançar até 120 metros de distância. Projetado para ser tanto portátil quanto a baixo custo, para aplicações RSSFATmega168V/328P
ZB1Placa que inclui Zigbee radio (XBee). Podendo ser energizado via USB, adaptador de parede ou uma fonte de bateria externa. Projetado para baixo custo em aplicações RSSFATmega168
NB1AInclui uma bateria reserva para relógio de tempo real e quatro canais DAC, sendo que a maioria dos clones de Arduino precisam de um shield para obter esta funçãoATmega328
NB2AInclui uma bateria reserva para relógio de tempo real e dois canais DAC. Possui o mesmo chip controlador do Sanguino, porém com memória adicional, linhas de E/S e um segundo UARTATmega644P


Placas sem ATmega

As seguintes placas aceitam placas extensoras para Arduino mas não utilizam os microcontroladores da ATmega . Sendo assim, eles são incompatíveis com o programa original, entretanto, por causa de terem os requerimentos para funcionar os shields, podem trabalhar com outras IDEs.

ModeloDescrição
ARMmitePROPlaca baseada em ARM, programável em BASIC ou C. Fabricada pela Coridium
CortinoSistema desenvolvido para ARM 32-bit, com um microprocessador Cortex M3
PinguinoPlaca baseada em um microcontrolador PIC, com suporte USB nativo e programável pelo programa oficial mais um IDE construída em Python