O Arduino Uno tem 2 microcontroladores!

E vou te mostrar como usá-los :)

Tópicos neste artigo


Introdução

O Arduino é uma plataforma de eletrônica de baixo custo, open source, baseada em hardware e software fáceis de usar.

As placas do Arduino são capazes de ler entradas - luz em um sensor, um dedo em um botão, uma mensagem no Twitter - e transformá-las em uma saída - ativando um motor, ligando um LED, publicando algo online.

Por padrão, a programação é feita utilizando uma linguagem baseada em C/C++, sem a necessidade de equipamentos extras além de um cabo USB.

O que vamos tratar neste artigo demanda um conhecimento intermediário de Arduíno, mas se você se interessou e quiser entender mais sobre o assunto, dá uma olhada nesse material sensacional sobre o assunto no Manual do Mundo.

Bom… bora começar!

As vezes focamos em algo principal e nos esquecemos dos detalhes.
O Arduino Uno tem como microcontrolador principal o ATmega328p, assim como o Mega tem o Mega2560, certo?
Mas eles também têm um outro microcontrolador, o 16u2, que geralmente ignoramos, pois achamos que “ele só serve pra fazer a comunicação USB com o computador”.
Bom… na verdade se olharmos para o Arduino Pro Micro e o Leonardo por exemplo, notamos que eles usam o 32u4, que é um microcontrolador similar ao 16u2 que vem com o Uno/ Mega, sendo que este último tem menos memória, pinos, e outros recursos, porém é um microcontrolador totalmente funcional e também podemos usá-lo!
O que quero dizer é que é possível ter 2 microcontroladores trabalhando ao mesmo tempo e de forma independente na mesma placa. É como se tivéssemos uma versão mais simples do Arduino Leonardo/ Micro embutido no Arduino Uno/ Mega!!!
Pra ter acesso a esse microcontrolador (16u2) pela IDE do Arduino vamos precisar alterar o Bootloader padrão (que é o DFU no Uno/Mega e CDC no Leonardo/Micro) por um Bootloader CDC + Fast USB-Serial tudo junto, o Hoodloader2.

*Só verifique, pois, alguns Arduinos usam o CH340G, que é apenas conversor serial para ser mais barato.
Aí não funciona 🙁

Instalação do Hoodloader2

Para fazer uso do 16u2 usamos o próprio ATmega328p para configurá-lo. Mudando o bootloader, não o firmware. Pra isso basta usar o próprio Arduino, 1 cabo USB, 4 fios e um capacitor de 100nF.

  1. Prepare o seu arduino: Não deixe nenhum componente ou fiação.

  2. Faça download do sketch de instalação clicando no link.

  1. Descompacte o conteúdo e abra o sketch Installation_Sketch.ino na IDE do Arduino.

  2. Se necessário mude a configuração HEXFILE para a sua placa.

  1. Conecte o cabo USB, selecione a sua placa normalmente (como faz para descarregar qualquer sketch) e carregue o sketch para a placa.

  2. Espere até aparecer “Done uploading“. Vai demorar um tempinho.

  3. Desconecte o cabo USB do Arduino.

  4. Conecte os cabos e componentes no Arduino conforme imagem:

*É a mesma configuração para o Mega2560

Capacitor 100nF:
328/2560 RESET - GND

Conexões dos pinos:
328/2560 - 16u2
MOSI     - MOSI
MISO     - MISO
SCK      - SCK
PIN 10   - 16u2 RESET
  1. Sobrescreva o bootloader:

Uma vez que o microcontrolador principal estiver com o sketch, nós estamos aptos a sobrescrever o bootloader para o 16u2.

Este processo acontece sem a interação do usuário!

Verifique novamente se as conexões estão corretas, plugue o arduino na porta USB e espere.

O led vai piscar lentamente por 10 segundos, tentar sobrescrever o bootloader e depois piscar rapidamente (a cada 100ms). Espere pelo menos 30 segundos antes de remover o cabo USB, para ter certeza que tudo ocorreu como deveria.

Caso tenha problemas, consulte o FAQ oficial (em inglês).

Desconecte o capacitor e fiações e pode começar a utilizar os 2 microcontroladores!

Utilizando os 2 microcontroladores

Sobre o Hardware.. Como fica a pinagem?

No 16u2 Nós passamos a ter acesso a 7 pinos (fundo cor creme na imagem acima):

D1 – PB1 PCINT1 SCLK D2 – PB2 PCINT2 MOSI D3 – PB3 PCINT3 MISO D4 – PB4 PCINT4 D5 – PB5 PCINT5 D6 – PB6 PCINT6 ~D7 – PB7 PCINT7 TIMER1C PWM …

Dica: Para facilitar o uso, gosto de soldar conectores nos pinos PB4, PB5, PB6 e PB7:

Configurando a IDE do Arduino A instalação de novos drivers não é necessária para Windows10/ MacOS/ Linux. Mas se estiver usando Windows 7/ 8 siga as etapas de instalação dos drivers CDC.

  1. Abra as preferências da IDE e adicione o endereço a seguir no campo “URLs Adicionais para Gerenciadores de Placas”
https://raw.githubusercontent.com/NicoHood/HoodLoader2/master/package_NicoHood_HoodLoader2_index.json

  1. Instale o Hoodloader2 pelo Gerenciador de Placas (Ferramentas > Placa > Gerenciador de Placas)

Certo! E como descarrego meus Sketches?

Depois de configurado na IDE do Arduino e alterado o Bootloader do 16u2, basta selecionar se quer descarregar o Sketch para o 16u2 ou para o ATmega328p (ou Mega2560).

Para ter os 2 sketches rodando descarregue primeiro do ATmega328p/ Mega2560 e somente depois o do 16u2. Se descarregar ao contrário ele vai considerar apenas o que foi pro ATmega328p/ Mega2560.

Ah!… e uma coisa bacana do 16u2 é que, assim como os Arduinos Leonardo e Pro Micro, ele pode funcionar como uma conexão plug n’ play com o USB do PC, da TV, do Android, do videogame (Conhecido como HID – Human interface Device), … Ou seja, sem precisar de driver de instalação, assim como os teclados, mouses e joysticks fazem.

Pronto! Agora utilize sua criatividade para tirar vantagem do uso dos 2 microcontroladores simultaneamente!

Alguns exemplos de aplicação:

HID-Project

Simple HID Bridge

USB-Serial

Run Bootloader

Blink

PWM Fade

Serial Keyboard

Referências

https://github.com/NicoHood/HoodLoader2


  • Compartilhar publicação:

Escrito por:
Alexandre Alvaro

comments powered by Disqus