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!
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.
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.
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.
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.
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) ;
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.
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.
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:
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:
Existem alguns outros pinos na placa:
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!
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); }
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!
Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.
|
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!