Código: ARD0010635
R$ 152,00

O Arduino Leonardo é um microcontrolador baseado no ATmega32u4 (datasheet). Ele tem 20 pinos de entrada e saída digital (dos quais 7 podem ser utilizadas como saídas PWM e 12 como entradas analógicas), um cristal oscilador de 16MHz, uma conexão micro USB, um conector de alimentação, um barramento ICSP e um botão de reset. Ele contém tudo o que é necessário para dar suporte ao microcontrolador. Simplesmente o conecte a um computador com um cabo USB ou o alimente com uma fonte e já está pronto para dar os primeiros passos.

O Leonardo difere de todas as placas precedentes por que o ATmega32u4 tem comunicação USB embarcada, eliminando a necessidade de um segundo processador. Isto permite ao Leonardo aparecer em um computador conectado como um mouse ou um teclado além de uma porta COM virtual (CDC) serial. Isto tem outras implicações no comportamento de uma placa, que estão detalhados na página de primeiros passos (em inglês).

Características:

MicrocontroladorATmega32u4
Voltagem operacional
5V
Voltagem de entrada (recomendada)7-12V
Voltagem de entrada (limites)6-20V
Pinos E/S digitais20
Canais PWM
7
Canais de entrada analógica
12
Corrente CC por pino E/S40 mA
Corrente CC para o pino 3,3V50 mA
Flash Memory32 KB (ATmega32u4) dos quais 4 KB são utilizados pelo bootloader
SRAM2.5 KB (ATmega32u4)
EEPROM1 KB (ATmega32u4)
Velocidade de Clock16 MHz

Esquema e referência de Design

EAGLE files: arduino-leonardo-reference-design.zip

Schematic: arduino-leonardo-schematic-rev3b.pdf

Alimentação

O Arduino Leonardo pode ser alimentado pela conexão micro USB ou com uma fonte externa. A entrada de alimentação é selecionada automaticamente.

Alimentação externa (não USB) pode ser tanto de um adaptador CA para CC ou bateria. Há um conector para alimentação de 2,1mm com o positivo no centro. Cabos vindos de uma bateria podem ser inseridos diretamente nos pinos Gnd e Vin do conector de alimentação.

Esta placa pode funcionar com uma fonte de alimentação externa de 6 a 20 volts. No entanto se a alimentação for inferior a 7V, o pino 5V pode fornecer menos de cinco volts e a placa pode se mostrar instável. E se a alimentação for maior do que 12V o regulador de voltagem pode superaquecer e danificar a placa. A faixa recomendada é de 7 a 12 volts.

Os pinos de alimentação são os seguintes:

  • VIN. A entrada de alimentação para a placa Arduino quando se está utilizando uma fonte de alimentação externa (em oposição à conexão USB ou outra fonte de alimentação regulada). Você pode fornecer alimentação através deste pino, ou se estiver utilizando o conector de alimentação, acessar esta voltagem aqui.
  • 5V. A fonte de alimentação regulada usada para o microcontrolador e para outros componentes na placa. Pode vir tanto do VIN, através do regulador embarcado, ou da conexão USB ou outra fonte regulada em 5V.
  • 3V3. Uma fonte de 3,3V gerada pelo regulador embarcado. A corrente máxima suportada é de 50mA.
  • GND. Pinos terra.
  • IOREF. A voltagem na qual os pinos de entrada e saída da placa estão operando (i.e. VCC da placa). Esta voltagem é de 5V no Leonardo.

Memória

O ATmega32u4 tem 32KB (dos quais 4KB são utilizados pelo bootloader). Tem também 2,5KB de SRAM e 1KB de EEPROM (que pode ser lido ou gravado com a biblioteca EEPROM).

Entrada e Saída

Cada um dos 20 pinos de entrada e saída digital podem ser utilizados como uma entrada ou uma saída utilizando as funções pinMode(), digitalWrite(), e digitalRead(). Eles operam a 5V. Cada pino pode fornecer ou receber um máximo de 40mA e tem um resistor pull-up interno (desconectado por padrão) de 20-50kΩ. Além disso alguns pinos tem funções especializadas:

  • Serial: 0 (RX) e 1 (TX). Usados para receber (RX) e transmitir (TX) dados seriais TTL utilizando as capacidades de hardware do ATmega32U4. Note que no Leonardo a classe Serial se refere à comunicação USB (CDC); para comunicação serial TTL pelos pinos 0 e 1 utilize a classe Serial1.
  •   TWI: 2 (SDA) e 3 (SCL). Suporte à comunicação TWI utilizando a bibliotaca Wire.
  • Interruptores Externos: 2 e 3. Estes pinos podem ser configurados para disparar uma interrupção de acordo com alguma variação sensível pelo circuito. Veja a função attachInterrupt() para mais detalhes.
  •  PWM: 3, 5, 6, 9, 10, 11 e 13. Fornecem uma saída analógica PWM de 8-bit com a função  analogWrite().
  •  SPI: no barramento ICSP. Estes pinos dão suporte à comunicação SPI utilizando a biblioteca SPI. Note que os pinos SPI não estão conectados a nenhum dos pinos de entrada e saída digital como no Uno. Eles somente estão disponíveis no barramento ICSP. Isto significa que se você tiver um shield que utiliza SPI mas que não tenha um barramento ICSP que se conecte ao do Leonardo este shield não funcionará.
  • 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.
  • Entradas analógicas: A0-A5, A6-A11 (nos pinos digitais 4,6,8,9,10 e 12). O Leonardo tem 12 entradas analógicas nomeadas de A0 a A11, todas elas também podem ser utilizadas como entradas e saídas digitais. Os pinos de A0 a A5 estão na mesma posição que no Uno, e as entradas A6 a A11 estão nos pinos digitais 4,6,8,9,10 e 12 respectivamente. Cada entrada analógica tem 10 bits de resolução (i.e. 1024 valores diferentes). Por padrão as entradas analógicas realizam medidas de terra (0V) a 5V, embora seja possível alterar o limte superior utilizando o pino AREF e a função analogReference().

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 o mapemamento entre os pinos do Arduino e as portas do ATmega32u4.

Comunicação

O Leonardo possui uma série de facilidades para se comunicar com um computador, outro Arduino, ou outros microcontroladores. O ATmega32U4 fornece comunicação serial UART TTL (5V) que está disponível nos pinos digitais 0 (RX) e 1 (TX). O 32u4 também permite comunicação serial (CDC) através da USB e aparece como uma porta virtual para o computador. Este chip também atua como um dispositivo USB 2.0 de velocidade total utilizando drives USB COM padrão. Em Windows um arquivo .inf é necessário. O software do Arduino inclui um monitor serial que permite dados textuais ser enviados e recebidos da placa. LEDs conectados ao RX e TX piscarão enquanto dados estiverem sido transmitidos pelo chip USB-para-serial e pela conexão USB (mas não para comunicação serial nos pinos 0 e 1).

Uma biblioteca de SoftwareSerial permite comunicação serial em qualquer dos pinos digitais do Leonardo.

O ATmega32U4 também suporta 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 para mais detalhes. Para comunicação SPI utilize a biblioteca SPI.

O Leonardo aparece como um mouse ou teclado padrão, e pode se programado para controlar estes dispositvos utilzando as classes Keyboard e Mouse .

Programação

O Arduino Leonardo pode ser programado com o software Arduino (download). Simplesmente selecione "Arduino Leonardo" no menu Tools > Board.

O ATmega32U4 no Arduino Leonardo vem pré-gravado com um bootloader que permite a você enviar código novo para ele, sem a utilização de um programador de hardware externo. Ele se comunica utilizando o protocolo originalAVR109.

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

Reset automático por software

Ao invés de necessitar do pressionamento físico de um botão antes de um upload, o Arduino Leonardo é desenvolvido de modo que permita esta operação ser feita por meio do software rodando em um computador. O reset é disparado quando a porta serial virtual (CDC) é aberta a 1200 baud e depois fechada. Quando isto ocorre o processador é ressetado interrompendo a comunicação USB (isto significa que a porta serial virtual COM desaparece). Após o reset o bootloader roda ficando ativo por aproximadamente 8 segundos. O bootloader também pode ser inicializado precionando-se o botão de reset do Leonardo. Note que quando a placa é inicialmente alimentada ela rodará imediatamente a sketch do usuário, caso esteja presente, ao invés de iniciar o bootloader.

Devido ao modo como o Leonardo lida com o reset é melhor deixar o software Arduino tentar iniciar o reset antes de enviar um novo scketch, especialmente se você tiver o hábito de pressionar o botão de reset antes de fazer upload. Se o software falhar em resetar a placa, você sempre pode iniciar o bootloader pressionando o botão de reset.

Proteção contra sobre-corrente na USB

O Leonardo possui um polyfuse resetável que protege a porta USB do seu computador contra sobre-corrente e curtos circuitos. Embora muitos computadores tenham sua própria proteção interna, o fusível fornece um grau a mais de proteção. Se mais de 500mA forem aplicados à porta USB, ele automaticamente irá interromper a conexão até que o curto ou a sobrecarga sejam removidos.

Características físicas

A largura e o comprimento máximos do PCB do Leonardo são 68,58 e 53,34mm respectivamente (2,7" x 2,1"), com os conectores USB e de alimentação extendendo-se além destas dimensões. Quatro orifícios para parafusos permitem que a placa seja fixada a uma superfície ou encapsulamento. Verifique que a distância entre os pinos digitais 7 e 8 é de 160mil (milésimos de polegada ou 0,16"), não é nem mesmo um múltiplo dos 100mil que separam os outros pinos.