Tipos de Arduino

Guia Completo do Arduino Leonardo

Eletrogate 21 de janeiro de 2021

Introdução

O Arduino Leonardo foi uma adição à família Arduino que trouxe consigo novas características e funcionalidades ao mundo de projetos eletrônicos. O microcontrolador utilizado nesta placa é o ATmega32u4, ao invés do ATmega328, geralmente utilizado em placas mais antigas, como o próprio Arduino Uno. Uma vantagem desta placa é sua maior quantidade de pinos analógicos, digitais e de PWM. O ATmega32u4 também possui uma comunicação USB embutida, que elimina a necessidade de um processador secundário utilizado exclusivamente para cuidar desse tipo de comunicação.

Essas são apenas algumas razões para você considerar utilizar o Arduino Leonardo. Quer aprender mais? Então continue lendo nosso post e descubra todas as funcionalidades desta placa Arduino!


Por que o Arduino Leonardo?

A simplicidade e as novidades apresentadas pelo Arduino Leonardo empolgam qualquer programador ou amante de eletrônica. A seguir, vamos abordar as principais diferenças e vantagens que o Leonardo trás em relação a placa mais comum, a Uno.


Arduino Leonardo vs Arduino Uno

Há algumas diferenças cruciais entre as placas Arduino Leonardo e Uno que devem ser levadas em consideração quando for escolher qual usar em seu projeto. As mais importantes são detalhadas a seguir.

Crédito: Arduino

Processador único para sketches e comunicação USB

O Arduino Leonardo se diferencia de outras placas Arduino, como a Uno, no fato de possuir um único microcontrolador capaz de rodar os programas da IDE ao mesmo tempo que faz a comunicação USB com o computador. As outras placas possuem dois microcontroladores para realizar essas duas tarefas separadamente. Ao combinar as duas funções em um único componente, o Leonardo permite uma maior flexibilização na comunicação com o computador. Essa simplificação também ajuda a diminuir o custo da placa por remover um processador adicional.

Renumeração serial no reset

Levando em conta que as placas Arduino não têm um chip dedicado para lidar com a comunicação serial, isso significa que a porta serial é virtual – é uma rotina de software, tanto em seu sistema operacional quanto na própria placa. Assim como o computador cria uma instância do driver da porta serial quando o Arduino é conectado, o Leonardo cria uma instância serial sempre que executa seu bootloader. A placa é uma instância do driver Connected Device Class (CDC) do USB.

Isso significa que toda vez que você reinicializar a placa, a conexão serial USB será interrompida e restabelecida. A placa desaparecerá da lista de portas seriais e a lista será renumerada. Qualquer programa que tenha uma conexão serial aberta com o Leonardo perderá sua conexão. Isso contrasta com o Arduino Uno, com o qual é possível reinicializar o processador principal (o ATmega328P) sem fechar a conexão USB (que é mantida pelo processador ATmega8U2 ou ATmega16U2 secundário). Essa diferença tem implicações para a instalação, upload e comunicação do driver.

Não há reset quando a porta serial é aberta

Ao contrário do Arduino Uno, o Leonardo não reiniciará o sketch quando uma porta serial for aberta no computador. Isso significa que não é possível ver dados seriais que já foram mandados para o computador pela placa, incluindo, por exemplo, a maioria dos dados enviados pela função setup().

Essa mudança significa que se o programador estiver utilizando os comandos Serial print(), println() ou write() em seu setup, eles não apareceram quando o monitor serial for aberto. Uma maneira de contornar este problema é checar se a porta serial está aberta após chamar Serial.begin(), como mostrado abaixo.

Serial.begin(9600);

   // Enquanto a stream serial não estiver aberta, não faça nada:

   while (!Serial) ;

Emulação de teclado e mouse

Uma vantagem de usar um único chip para implementar o código e para usar o USB é o aumento da flexibilidade na comunicação com o computador. Embora a placa apareça como uma porta serial virtual para seu sistema operacional (também chamado de CDC) para programação e comunicação (como com o Arduino Uno), ela também pode se comportar como um teclado ou mouse (HID).

Uma aviso de cautela sobre o uso do mouse USB e bibliotecas de teclado: se a biblioteca do mouse ou teclado estiver em execução constante, será difícil programar sua placa. É recomendável usar um sistema de controle para ativar essa funcionalidade, como uma chave física ou apenas respondendo a uma entrada específica que você pode controlar.

Separação de USB e comunicação serial

No Leonardo, a classe Serial principal refere-se ao driver serial virtual da placa para conexão ao computador via USB. Ele não está conectado aos pinos físicos 0 e 1 como está nas placas Uno e anteriores. Para usar a porta serial do hardware (pinos 0 e 1, RX e TX), use Serial1.


Características

O Arduino Leonardo é uma placa de microcontrolador baseada no ATmega32u4 (datasheet). Ele possui 20 pinos digitais de entrada/saída (dos quais 7 podem ser usados como saída PWM e 12 como entrada analógica), um oscilador de cristal de 16 MHz, uma conexão micro USB, entrada para alimentação de energia, conjunto de pinos ICSP, e um botão reset. O ATmega32u4 tem 32 KB de memória (com 4 KB usados ​​para o bootloader). Também possui 2,5 KB de SRAM e 1 KB de EEPROM (que podem ser lidos e escritos com a biblioteca EEPROM). A placa contém o necessário para suportar o microcontrolador, basta simplesmente conectá-la ao computador com o cabo USB ou alimentá-la com um adaptador AC-DC ou utilizar uma bateria.

A seguir, é apresentado algumas especificações importantes sobre o Arduino Leonardo.

Microcontrolador ATmega32u4
Tensão de Operação 5v
Tensão de entrada (recomendada) 7-12v
Tensão de entrada (limites) 6-20v
Pinos de entrada/saída 20 (dos quais 7 podem ser PWM)
Pinos de entrada analógica 12
Corrente DC por pino I/O 40mA
Corrente DC para pino 3,3v 50mA
Memória Flash 32KB (dos quais 4KB são usados pelo Bootloader)
SRAM 2,5KB
EEPROM 1KB
Velocidade do Clock 16MHz

O Arduino Leonardo pode ser alimentado através da conexão micro USB ou com uma fonte de alimentação externa.

A alimentação externa (não USB) pode vir de um adaptador AC-DC ou bateria. O adaptador pode ser conectado ligando-se um plugue positivo central de 2,1 mm ao conector de alimentação da placa. Os fios de uma bateria podem ser inseridos nos cabeçotes de pino GND e VIN do conector POWER.

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

  • VIN. A tensão de entrada para a placa Arduino quando ela está usando uma fonte de alimentação externa (em oposição a 5 volts da conexão USB ou outra fonte de alimentação regulada). Você pode fornecer tensão por meio deste pino ou, se estiver fornecendo tensão por meio do conector de alimentação, acessá-la por meio deste pino.
  • 5V. A fonte de alimentação regulada usada para alimentar o microcontrolador e outros componentes da placa. Isso pode vir do VIN por meio de um regulador on-board ou ser fornecido por USB ou outra fonte de 5 V regulada.
  • 3V3. Uma alimentação de 3,3 volts gerada pelo regulador de bordo. O consumo máximo de corrente é 50 mA.
  • GND. Pinos de aterramento.
  • IOREF. A tensão na qual os pinos de I/O da placa estão operando (ou seja, VCC para a placa). Isso é 5V no Leonardo.

Pinout

Pinout da placa Leonardo.
Crédito: Arduino


Como fazer montagens

Cada um dos 20 pinos de I/O digital no Leonardo pode ser usado como uma entrada ou saída, usando as funções pinMode(), digitalWrite() e digitalRead(). Eles operam a 5 volts. Cada pino pode fornecer ou receber no máximo 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). Usado para receber (RX) e transmitir (TX) dados seriais TTL usando o recurso serial de hardware ATmega32U4. Observe que, no Leonardo, a classe Serial se refere à comunicação USB (CDC); para TTL serial nos pinos 0 e 1, use a classe Serial1.
  • TWI: 2 (SDA) e 3 (SCL). Suporte a comunicação TWI usando a biblioteca Wire.
  • Interrupções externas: 3 (interrupção 0), 2 (interrupção 1), 0 (interrupção 2), 1 (interrupção 3) e 7 (interrupção 4). Esses pinos podem ser configurados para disparar uma interrupção em um valor baixo, uma borda de subida ou descida ou uma mudança no valor. Veja a função attachInterrupt() para detalhes.
  • PWM: 3, 5, 6, 9, 10, 11 e 13. Fornece saída PWM de 8 bits com a função analogWrite().
  • SPI: no cabeçalho ICSP. Esses pinos oferecem suporte à comunicação SPI usando a biblioteca SPI. Observe que os pinos SPI não estão conectados a nenhum dos pinos de I/O digital, como estão no Uno. Eles só estão disponíveis no conector ICSP. Isso significa que se você tiver uma blindagem que usa SPI, mas NÃO possui um conector ICSP de 6 pinos que se conecta ao conector ICSP de 6 pinos do Leonardo, a blindagem não funcionará.
  • LED: 13. Há um LED embutido conectado ao pino digital 13. Quando o pino está com o valor ALTO, o LED está ligado, quando o pino está BAIXO, ele está desligado.
  • Entradas analógicas: A0-A5, A6 – A11 (nos pinos digitais 4, 6, 8, 9, 10 e 12). O Leonardo tem 12 entradas analógicas, marcadas de A0 a A11, todas as quais também podem ser usadas como I/O digital. Os pinos A0-A5 aparecem nos mesmos locais que no Uno; as entradas A6-A11 estão nos pinos de I/O digital 4, 6, 8, 9, 10 e 12 respectivamente. Cada entrada analógica fornece 10 bits de resolução (ou seja, 1024 valores diferentes). Por padrão, as entradas analógicas medem do aterramento a 5 volts, embora seja possível alterar a extremidade superior de sua faixa usando o pino AREF e a função analogReference().

Existem alguns outros pinos na placa:

  • AREF. Tensão de referência para as entradas analógicas. Usado com analogReference().
  • Reset. Quando seu estado estiver em LOW, o microcontrolador reinicia. Normalmente usado para adicionar um botão de reinicialização aos escudos que bloqueiam o botão da placa.

Como enviar programas

O Leonardo possui vários recursos para se comunicar com um computador, através de 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 a comunicação serial (CDC) via USB e aparece como uma porta de comunicação virtual para o software no computador. O chip também atua como um dispositivo USB 2.0 de velocidade total, usando drivers COM USB padrão. No Windows, um arquivo .inf é necessário. O software Arduino inclui um monitor serial que permite que dados textuais simples sejam enviados de e para a placa Arduino. Os LEDs RX e TX na placa piscarão quando os dados estiverem sendo transmitidos através da conexão USB para o computador (mas não para comunicação serial nos pinos 0 e 1). Uma biblioteca SoftwareSerial permite a comunicação serial em qualquer um dos pinos digitais do Leonardo. O ATmega32U4 também suporta comunicação I2C (TWI) e SPI. O software Arduino inclui uma biblioteca Wire para simplificar o uso do barramento I2C. Para comunicação SPI, use a biblioteca SPI. O Leonardo aparece como um teclado e mouse genéricos e pode ser programado para controlar esses dispositivos de entrada usando as classes Teclado e Mouse.

Após a conexão ter sido feita entre o Arduino e o computador através do cabo USB, é necessário configurar o ambiente da IDE para que possa enviar corretamente os dados para o Leonardo. Se ainda não possui este ambiente em seu computador ou não sabe como programar um Arduino, confira nosso post sobre Programação em Arduino – Parte 1 (link) e Parte 2 (link). Continuando, para confirar a IDE, basta seguir os seguintes passos ilustrados na figura abaixo. Clique em Ferramentas->Placa: “Arduino …”->Arduino AVR Boards->Arduino Leonardo.

Pronto! Agora, basta programar!


Programa teste

Existem dois programas testes super simples que podem ser utilizados no Arduino Leonardo, ou basicamente em qualquer Arduino. O primeiro sendo o projeto Blink. Basicamente, o programa irá fazer o LED embutido neste Arduino piscar a cada segundo. Ele pode ser encontrado nos projetos exemplos da IDE, basta apenas clicar em Arquivo->Exemplos->Basics->Blink.

Ou, se preferir, basta apenas copiar o código abaixo.

/*
  Blink

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

  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
  the correct LED pin independent of which board is used.
  If you want to know what pin the on-board LED is connected to on your Arduino
  model, check the Technical Specs of your board at:
  https://www.arduino.cc/en/Main/Products

  modified 8 May 2014
  by Scott Fitzgerald
  modified 2 Sep 2016
  by Arturo Guadalupi
  modified 8 Sep 2016
  by Colby Newman

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/Blink
*/

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Um outro programa teste consiste em imprimir na tela do computador via Serial Monitor qualquer frase desejada. Para isso, copie o código abaixo e cole em sua IDE.

void setup() {
  Serial.begin(9600);
}
 
void loop() {
  Serial.println("Arduino Leonardo");
  delay(1000);
}

Considerações Finais

Espero que tenha gostado do post. O objetivo aqui foi apenas iniciar sua jornada de conhecimento sobre o Arduino Leonardo, porém há ainda muito a aprender. Confira nossos outros post no blog para ficar por dentro de tudo que o Arduino pode nos proporcionar.

Quer saber mais sobre outros tipos de Arduino? Confira os post abaixo e aprenda mais!

Avalie o post e deixe um comentário sobre seu interesse em Arduino e se esse artigo te ajudou a descobrir mais sobre essa plataforma.

Siga-nos também no Instagram para receber conteúdos diários sobre Arduino e eletrônica: @eletrogate.

Até mais!


Sobre o Autor


Ricardo Lousada
@ricardo_lousada

Graduando em Engenharia de Controle e Automação pela UFMG. Ocupo meu tempo aprendendo cada vez mais sobre eletrônica e programação, áreas que mais gosto. Meus hobbies são cinema e livros.


Eletrogate

21 de janeiro de 2021

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!